Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores Aula 01 Prof.ª Larissa 2016 Sumário • Bibliografia adotada • Introdução – Definições – Algoritmo x Programa – Digital binário • Organização estruturada de computador: – Tradutor x Interpretador – Linguagens – Níveis – Máquinas virtuais Bibliografia adotada TANENBAUM, A. S. Organização estruturada de computadores. 5.ed. Rio de Janeiro, Pearson, 2007. Principal livro-texto adotado Bibliografia adotada MONTEIRO, M. A. Introdução à organização de computadores. 5.ed. Rio de Janeiro, LTC, 2010. Bibliografia adotada • WEBER, R. F. Fundamentos de arquitetura de computadores. 3.ed. V. 8. São Paulo, Bookman, 2008. • MURDOCCA, M.J. Introdução à arquitetura de computadores. Rio de Janeiro, Campus: 2001. • STALLINGS, W. Arquitetura e organização de computadores. 5.ed, São Paulo, Pearson: 2002. • HENNESSSY, J. L.; PATTERSON, D. A.; LARUS, J. R. Organização e projeto de computadores: a interface hardware software. 2.ed. Rio de Janeiro: LTC, 2000. • PIVA. J. D.; PANNAIN, R.; BEHREINS, F. H. Organização básica de computadores e linguagem de montagem. Rio de Janeiro. Campus. 2012. • CARTER, N. Arquitetura de computadores, São Paulo, Bookman, 2003. Introdução • O que é um computador? Um computador é uma máquina digital capaz de resolver problemas executando instruções que lhe foram dadas, com precisão e agilidade. (Tanenbaum, 2007) Um computador é uma máquina (conjunto de partes eletrônicas e eletromecânicas) capaz de sistematicamente coletar, manipular e fornecer os resultados da manipulação de informações para um ou mais objetivos. (Monteiro, 2010) Introdução • O que é um algoritmo? • O que é um programa? Um algoritmo é uma sequência de instruções que descrevem como realizar determinada tarefa. É um algoritmo implementado em uma linguagem de programação. É um algoritmo transformado em algo “concreto”. Portanto, computadores resolvem problemas executando programas que contêm as instruções sobre como resolvê-los. Introdução • Problema: Calcular o índice de massa corporal (IMC) de uma pessoa que mede 1,78m e tem massa de 75kg. Segundo a OMS, o algoritmo para calcular o IMC de uma pessoa é: 1) medir a altura da pessoa. 2) medir a sua massa. 3) IMC = massa / (altura x altura) Uma possível implementação para o problema acima é o programa: Adaptado de: < http://tl.di.fc.ul.pt/hp/?s=1-9-2 > Introdução • No entanto, os circuitos eletrônicos de cada computador podem reconhecer e executar diretamente somente um conjunto limitado de instruções simples. • Para que os programas possam ser executados, todos devem antes ser convertidos nestas instruções básicas. • Estas instruções raramente são mais complicadas do que: Some dois números. Verifique um número para ver se ele é igual a zero. Copie dados de uma parte da memória do computador para outra. Disponível em: <http://www.slideteam.net/0914-electronic-circuit-board-with-processor-stock-photo.html> Introdução • Juntas, as instruções primitivas de um computador formam uma linguagem com a qual as pessoas podem se comunicar com ele. Essa linguagem é chamada de linguagem de máquina (linguagem binária, representada por 0’s e 1’s). • Para que um programa de alto nível (como um programa em C) seja executado pelos circuitos do computador, ele deve ser convertido para linguagem de máquina. Disponível em: <http://bitsofbinary.blogspot.com.br/2007/12/binary-comic-strip-with-robot-slam.html> Introdução • E como um computador entende o que é 0 e 1?? • Na verdade, a eletrônica que constitui nosso computador atual (transistores) responde a grandezas físicas, como níveis de tensão elétrica. • Nestes circuitos digitais, ocorrem dois estados possíveis: Ausência de tensão, geralmente representada por 0 e chamada de nível lógico baixo; Presença de tensão, geralmente representada por 1 e chamada de nível lógico alto. Introdução • E como um computador entende o que é 0 e 1?? • Por possuir apenas dois estados possíveis, dizemos que estes circuitos digitais apenas entendem uma linguagem: a binária. Disponível em: < http://2.bp.blogspot.com/_ofMdY3_XPW8/S_waoyqsMAI/AAAAAAAAAOo/cSF7HPaMtEM/s1600/programador_binario.png > Introdução • Mas por que estes circuitos digitais são binários?? • Levando em consideração que o nosso sistema numérico é decimal, seria natural querer adotar este sistema em nossos circuitos, com 10 níveis distintos de tensão. Disponível em: < http://pplware.sapo.pt/gadgets/high-tech/sistemas-de-numerao-decimal-binrio-octal-e-hexadecimal/> • Tal implementação é eletronicamente possível, mas possuiria grandes desvantagens, como: 1. Custo mais alto (maior consumo de energia, maior dissipação de calor) 2. Confiabilidade reduzida (níveis de tensão precisariam ser muito mais precisos, com menos tolerância a oscilações do que temos nos sistemas de dois estados.) Introdução • Mas por que estes circuitos digitais são binários?? NOTA: Hoje, “digital” virou sinônimo de “digital binário”, pois praticamente toda a implementação digital utiliza sistema binário. 3. O hardware básico (inicialmente válvulas, relés, chaves etc. e posteriormente os transistores) é binário, pois deixa ou não passar corrente, as portas estão abertas ou fechadas; os campos magnéticos representativos de um dígito, em determinados dispositivos de armazenamento, podem estar orientados em uma ou outra direção; uma marca ótica existe ou não, e assim por diante. OEC: Linguagens, níveis e máquinas virtuais • E nós, pobres mortais, como ficamos? Humanos querem fazer X, mas computadores só executam Y • Nós, humanos, obviamente nos comunicamos por linguagens diferentes das dos computadores. Disponível em: < https://andersonyankee.files.wordpress.com/2013/01/linguagem.jpg > • A linguagem de máquina (binária - baixo nível) está muito distante de uma linguagem natural (humana - alto nível) • 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 (OEC) para facilitar a comunicação homem-máquina. OEC: Linguagens, níveis e máquinas virtuais L1: linguagem mais natural ao usuário (nível mais alto e mais complexa) L0: linguagem de máquina (baixo nível e simples) Vamos considerar as linguagens hipotéticas: Como compatibilizar um programa escrito em L1 com L0? Há duas soluções: • usar um tradutor • usar um interpretador Disponível em: < http://www.prefeitura.sp.gov.br/cidade/secretarias/subprefeituras/upload/chamadas/libras_1294416870.jpg > OEC: Linguagens, níveis e máquinas virtuais Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0 • Tradutor: Programa pode ser traduzido uma única vez e executado diversas vezes Nota: o compilador é um tipo de tradutor Todo o novo programa em L0 é carregado em memória e é executado É como um livro traduzido de um idioma estrangeiro para português. É criado um novo livro, que pode ser lido diversas vezes. OEC: Linguagens, níveis e máquinas virtuais Uma instrução de L1 é decodificada em um conjunto de instruções equivalentes de L0 • Interpretador: Processador executa instrução de L1 (convertida para L0) antes de decodificar próxima instrução. Esta instrução de L1, já convertida para L0, é carregada na memória e executada É como contratar um intérprete que intermediará as falas de um palestrante estrangeiro para plateia brasileira. As falas são transformadas para português pouco a pouco, e a palestra deve ser interpretada novamente, em caso de nova sessão. Não há criação de um novo programa em L0 OEC: Linguagens, níveis e máquinas virtuais “Ao receber uma bicicleta no Natal, Carlinhos precisaler o manual de instruções e seguir passo a passo as tarefas descritas no documento para poder se divertir com seu presente. Podemos dizer que Carlinhos é um interpretador dos comandos fornecidos pelo manual de instruções. Entretanto, seu pai encontrou uma promoção na internet e comprou um produto fabricado na França, e o menino, ao se deparar com o manual, percebeu que o mesmo não poderia ser “interpretado” já que não sabia ler em francês. Para resolver o problema, seu pai contratou um tradutor de francês para português, assim, este novo manual pôde ser “interpretado” por Carlinhos e enfim sua bicicleta seria montada.” • Tradutor x Interpretador: Obs: os dois métodos são muito utilizados e cresce cada vez mais a utilização de uma combinação de ambos. Adaptado de: <http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s03.html> OEC: Linguagens, níveis e máquinas virtuais 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 M0 com linguagem L0). • Máquinas virtuais: Os programas poderiam ser escritos em L1, para a máquina M1 e: 1. ser executados diretamente em M1 se esta máquina fosse de custo de construção baixo, ou 2. ser traduzidos ou interpretados para L0 e executados em M0 Na prática, se implementa a solução 2. Programadores escrevem códigos para MVs como se elas existissem, abstraindo níveis inferiores. OEC: Linguagens, níveis e máquinas virtuais Para tornar a tradução ou interpretação prática, L1 não pode ser tão distante de L0. Isso implica que L1, mesmo sendo mais amigável que L0, ainda está muito longe da linguagem natural do programador. • Máquinas virtuais: Solução: criar um novo nível de instruções L2 (com máquina virtual M2), que é mais orientada a pessoas e menos a máquinas do que L1. Assim, pessoas podem escrever programas em L2 exatamente como se existisse uma máquina real com linguagem de máquina L2. Esses programas podem ser traduzidos para L1 ou executados por um interpretador escrito em L1. OEC: Linguagens, níveis e máquinas virtuais 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 níveis, um em cima do outro. • Máquinas virtuais: Foi estabelecido que a linguagem ou nível que fica mais embaixo é a mais simples (mais próxima da máquina) e a que fica mais em cima é a mais sofisticada (mais próxima do humano). Adaptado de: <http://hrjournal.ca/wp-content/uploads/2009/03/ComputerFriendlyResume.jpg> OEC: Linguagens, níveis e máquinas virtuais Programas em L0 podem ser executados diretamente pelos circuitos eletrônicos Máquina virtual Mn, com linguagem de máquina Ln Máquina virtual M2, com linguagem de máquina L2 Máquina virtual M1, com linguagem de máquina L1 Máquina real M0, com linguagem de máquina L0Nível 0 Nível 2 Nível 1 Nível n Programas em L1 são interpretados por um interpretador que roda em M0 ou traduzidos para L0 Programas em L2 são interpretados por interpretadores que rodam em M1 ou M0 ou traduzidos para L1 ou L0 Programas em Ln são interpretados por interpretadores que rodam em nível inferior ou traduzidos para linguagem de máquina de nível inferior Organização de Computadores Sumário Bibliografia adotada Bibliografia adotada Bibliografia adotada Introdução Introdução Introdução Introdução Introdução Introdução Introdução Introdução Introdução OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais OEC: Linguagens, níveis e máquinas virtuais
Compartilhar