domingo, 12 de agosto de 2018

Organização Estruturada de Computador

                   Introdução 

O computador :é uma máquina de solução de problemas executa programas - Conjunto de instruções que descrevem como realizar uma tarefa.Os circuitos de um computador (Hardware) reconhecem e executam um conjunto limitado e simples de instruções (linguagem de máquina- binária) exemplo: soma, comparação, transferência de dados de uma parte da memória para outra parte Instruções da linguagem de máquina (decidida pelos projetistas de computadores) devem:
ser simples ser compatível com o uso da máquina ser compatível com a performance requerida ter custo e complexidade da eletrônica reduzidos (aplicação) A linguagem de máquina (binária-baixo nível) está muito distante de uma linguagem natural (humana-alto nível) O que as pessoas precisam fazer é complexo X o conjunto de instruções do computador é simples Exemplo: o usuário quer calcular a correção trajetória de um foguete até a lua Como o usuário pode fazer isso em linguagem de máquina? Trabalho difícil e tedioso para os humanos Solução: Criar uma hierarquia de abstrações de níveis mais altos baseadas nos níveis mais baixos. Criar uma organização estruturada de computadores para facilitar a comunicação homem-máquina.

Linguagens, Níveis e Máquinas Virtuais

Supondo a existência das linguagens:
  • L1: linguagem natural, do usuário (alto nível e complexa)
  • L0: linguagem da máquina (baixo nível e simples)
    Como compatibilizar L1 com L0? Temos 2 soluções:
  • usar um tradutor
  • usar um interpretador
TRADUTOR
  • Cada instrução de L1 é substituída por um conjunto de instruções equivalents de L0
  • Processador executa programa em L0
  • Todo programa em L0 é carregado em memória e é executado
  • Programa pode ser traduzido uma única vez e executado várias vezes
    INTERPRETADOR
    • Cada instrução de L1 é substituída por um conjunto de instruções equivalents de L0
    • Processador executa instrução de L1 (transformada para L0) antes de executar próxima instrução. 
    • Cada instrução de L1, transformada para L0, é carregada na memória e executada
    • Não é criado um programa em L0
    • Programa deve ser novamente interpretado para ser executado
       Ao invés de pensar em tradução ou interpretação, pode-se imaginar a existência de um computador hipotético, ou de uma máquina virtual M1, cuja linguagem de máquina seja L1 (e uma máquina real M0com linguagem L0)

          Os programas poderiam ser escritos em L1, para a máquina M1 e:
      1. serem executados diretamente em M1 se esta máquina fosse de custo de construção baixo, ou
      2. serem  traduzidos ou interpretados para L0 e executados em M0
          Na prática se implementa a solução 2 acima. As pessoas escrevem programas para máquinas virtuais como se elas realmente existissem.

          Muitos níveis de máquinas virtuais podem ser implementados. Cada linguagem usa a sua linguagem antecessora como base, de modo que um computador que use essa técnica pode ser visto como um conjunto de camadas ou níveis um em cima do outro como mostra a figura que segue.
    • Máquinas Multiníveis Contemporâneas

      A grande maioria dos computadores modernos é formada por 2 ou mais níveis. A Figura abaixo mostra o esquema de um computador com 6 níveis:


      Figura 1.2 Computador com 6 níveis. O método por meio do qual cada nível é suportado aparece indicado abaixo do nível (junto com o nome do nível que o suporta). (Obtida do material, disponível na internet, do livro do Tanenbaum, 2001)

       Nível 0: Nível da Lógica Digital
      • Nível mais baixo da estrutura
      • Objetos de interesse são conhecidos como portas lógicas
      • Cada porta lógica tem 1 ou mais entradas digitais (aceitam 0 ou 1) e calculam funções lógicas simples sobre essas entradas. Exemplo: AND, OR, XOR,...
      • Portas lógicas são combinadas para formar o Processador - principal dispositivo do computador

         Nível 1: Nível da Microarquitetura
        • Enxergamos uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética Lógica) que realiza operações aritméticas muito simples
        • Os registradores são conectados a UAL formando o caminho dos dados
        • Operações são controladas por um microprograma ou diretamente por hardware
        • Microprograma é um interpretador para as instruções do nível 2. (ver exemplo no livro)

           Nível 2: Nível da Arquitetura do Conjunto de Instruções (nível ISA - Instruction Set Architeture
          • Definida pelo fabricante e dependente da arquitetura da máquina
          • Fabricantes disponibilizam "Manual de Referência da Linguagem de Máquina" ou "Princípios de operação do Computador Modelo XYZ4W),  ou algo similar.
          • Manuais descrevem como as instruções são executadas interpretativamente pelo microprograma ou como elas são executadas diretamente pelo hardware.
          • Essas informações são necessárias para os desenvolvedores de sistemas operacionais.

            Nível 3: Nível do Sistema Operacional
            • Instruções da linguagem deste nível também podem conter instruções do nível ISA.
            • Suporta uma organização diferente de memória
            • Suporta capacidade de rodar 2 ou mais programas simultaneamente
            • Suporta sistemas de comandos ou de janelas (windows)
            • Programadores deste nível, e também dos níveis mais baixos, são conhecidos como programadores de sistema. Os programadores dos níveis mais altos que este são chamados programadores deaplicação.
                Nível 4: Nível da linguagem do montador ou de montagem (Assembly language)
            • Linguagem de montagem: forma simbólica de representação das linguagens do nível mais baixo.
            • Programas nessa linguagem são primeiro traduzidos para as linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina virtual apropriada ou pela própria máquina real.
            • Programa que realiza essa tradução é chamado de montador
                Nível 5: Nível das linguagens orientadas para solução dos problemas
            • Conhecidas como linguagens de alto nível. Exemplos Basic, C, Pascal, Java, LISP, ....
            • Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores 
            • Alguns são interpretados: Exemplo: programas em Java, MatLab, ...
              Observações finais importantes:
            • Computadores são projetados como uma série de níveis, cada um deles construídos em cima de seus precursores.
            • Cada nível representa uma abstração distinta, com diferntes objetos e operações
            • A abstração permite ignorar, "abstrair", temporariamente detalhes irrelevantes, de níveis mais baixos, reduzindo uma questão complexa a algo muito mais fácil de ser entendido.
            • O conjunto de tipos de dados, operações e características de cada um dos níveis é chamado arquitetura do nível.
            • São parte da arquitetura, as características que um programador do nível deve enxergar, por exemplo, a disponibilidade de memória.
Share:

0 comentários:

Postar um comentário

Total de Visitas