Buscar

resumo do 1 cap organizac3a7c3a3o estruturada de computadores1

Prévia do material em texto

Resumo do 1.Cap - ORGANIZAÇÃO ESTRUTURADA DE 
COMPUTADORES 
Segundo Tanenbaum, um computador é uma máquina capaz de solucionar 
problemas através da execução de instruções que lhe são fornecidas. As 
instruções são normalmente passadas através de um programa, que nada 
mais é que uma sequência de instruções descrevendo como executar uma 
determinada tarefa. 
Os circuitos eletrônicos que compõem o computador são capazes de reconhecer 
e executar diretamente um conjunto limitado de simples. Estas instruções 
constituem uma linguagem (linguagem de máquina) através da qual se é 
possível "comunicar" com a máquina. A escolha deste conjunto de instruções 
primitivas é uma tarefa importante e delicada, envolvendo: 
o Simplicidade. Por uma questão de custo da máquina o conjunto 
de instruções deve ser tão simples quanto possível. 
o Consistência: A simplicidade não deve interferir com a 
consistência do conjunto de instruções em relação ao uso 
prioritário da máquina. 
o Desempenho: Mesmo para usos domésticos espera-se de toda 
máquina um desempenho mínimo. O conjunto de instruções deve 
contribuir com o desempenho. 
Normalmente as linguagens de máquina obtidas com a observância dos itens 
acima são de utilização tediosa e complexa. Em outras palavras máquinas com 
as quais só é possível "dialogar" através do uso das linguagens de máquina 
teriam pouco sucesso comercial. A solução para este problema envolve sempre 
a definição de outra linguagem de uso mais simples e agradável. Chame de L1 
a linguagem de máquina com a qual é possível "dialogar" diretamente com o 
computador. A definição de uma linguagem mais simples L2 gera o seguinte 
problema. 
Como interagir com uma máquina que só aceita comandos na linguagem L1, 
utilizando comandos da linguagem L2? 
Basicamente dois métodos permitem a utilização de linguagens diferentes pelo 
usuário e a máquina: 
o Tradução: Neste método, o programa escrito em linguagem L2 é 
inteiramente traduzido por um conjunto de instruções 
equivalentes na linguagem L1. O programa traduzido (linguagem 
L1) é então fornecido a máquina que o executa como se o 
programa em linguagem L2 não existisse. 
o Interpretação: Com este método, um programa escrito em 
linguagem L1 recebe os programas escritos em linguagem L2 e, 
instrução por instrução, executa uma sequência de instruções L1 
equivalentes à instrução L2 lida. 
A diferença básica dos dois métodos está no tempo de geração da sequência de 
instruções L1 equivalentes ao programa escrito em linguagem L2. Na tradução 
todo um programa L1 equivalente é gerado antes que qualquer execução seja 
iniciada. Na interpretação não há geração de programa equivalente em L1, 
cada instrução L2 é examinada e uma sequência de instruções L1 é executada. 
Estes dois métodos são largamente utilizados, inclusive em linguagens de alto 
nível. Temos, por exemplo, que a linguagem C e traduzida, pois um 
compilador gera um programa equivalente em uma linguagem de máquina 
específica antes que a execução seja iniciada. Por sua vez a linguagem HTML é 
traduzida, pois os comandos HTML são interpretados para a construção de uma 
imagem da página. 
Máquinas Virtuais 
Sabe-se então que as linguagens de máquina são definidas em observância a 
princípios de simplicidade, consistência e desempenho. A observância destes 
princípios pode, entretanto, conduzir a definição de máquinas cuja 
programação é complexa e tediosa. Definindo-se uma linguagem L2 de uso 
mais simples e agradável, podemos, em vez de pensar em termos de tradução 
e interpretação, pensar em termos da existência de uma máquina virtual cuja 
linguagem de maquina seja L2. Obviamente este computador não pode ser 
construído fisicamente, pois, certamente, seus circuitos eletrônicos não seriam 
simples e não apresentariam desempenho satisfatório. Também é possível que 
a linguagem L2 não possa ser muito diferente da linguagem L1, caso contrário 
à tradução ou interpretação não seriam praticáveis. Seguindo esta linha de 
raciocínio pode-se pensar em máquinas virtuais de vários níveis (1, 2, 3,..., 
n). Ressalte-se, porem, que apenas a máquina virtual de nível 1 existe 
fisicamente, todas as outras são resultadas de traduções ou interpretações, que 
culminam com a execução de programas na linguagem L1. 
Máquinas Multinível Contemporâneas 
Tanenbaum classifica as máquinas contemporâneas como sendo máquinas 
multinível. Na sua descrição seis níveis são apresentados: 
o Nível de lógica digital (nível 0): Neste nível encontra-se a 
descrição da máquina como uma malha de portas lógicas 
interconectadas. Subconjuntos destas portas lógicas definem 
dispositivos lógicos com binacionais e sequenciais, que podem ser 
formalmente descritos através da álgebra booleana. Neste nível 
não existe o conceito de programa como uma sequência de 
instruções. 
o Nível de Micro programação (nível 1): Neste nível 
encontram-se dispositivos e recursos, tais como, ULAs, 
registradores, decodificadores, multiplexadores, vias de dados, 
etc. Cada um destes dispositivos e recursos é capaz de executar 
um número limitado de operações, definidas por sinais de 
controle. O nível de micro programação já suporta o conceito de 
programa (micro programa) como uma sequência instruções a 
serem executadas. Pode-se dizer também que o nível de micro 
programação oferece uma visão detalhada do 
processador/microprocessador (microarquitetura ou caminho de 
dados). 
o Nível de máquina convencional (nível 2): Neste nível existe o 
que normalmente conhecemos como linguagem de máquina. Ou 
seja, para cada microprocessador, este nível define uma ou mais 
máquinas virtuais, cuja linguagem é interpretada por um ou mais 
micro programas. Para se tiver uma ideia mais clara, quando um 
fabricante define a instrução de nível 2 ADD R, que adiciona o 
conteúdo do registrador R ao conteúdo de um acumulador 
(default), nada é especificado sobre a estrutura de hardware, 
ou a sequência de micro operações capaz de executa-la. O micro 
programa, por sua vez, é inteiramente baseado nesta informação. 
O nível de máquina convencional oferece uma visão do macro 
arquitetura da máquina (interação do 
processador/microprocessador com barramentos externos, 
unidades de memória, dispositivos de I/O, etc.). 
o Nível de sistema operacional (nível 3): Este nível é a 
fronteira entre o hardware e o software. O sistema operacional, 
normalmente, assume as funções de gerenciar os recursos de 
hardware e oferecer uma interface simplificada. Os usuários deste 
nível podem ser programas do nível 4 ou usuários humanos. 
o Nível de linguagem de montagem (nível 4): Este é o 
primeiro nível desenvolvido para usuários (programadores) 
comuns (aqueles que simplesmente traduzem a solução de 
problema em programas). O nível 4, ao contrário dos níveis 1, 2 e 
3 oferecem linguagens orientadas à utilização humana, 
constituídas de palavras e mnemônicos, que permitem uma 
compreensão mais simbólica dos problemas tratados. Outra 
diferença básica entre os níveis 1, 2 e 3, de um lado, e os níveis 4 
e 5, de outro, é que, estes últimos, são normalmente suportados 
por tradução, enquanto que os demais são normalmente 
suportados por interpretação. 
o Nível de linguagem de programação (nível 5): Não há um 
nome de aceitação gera para este nível, pode ser chamado, come 
o faz Tanenbaum, de "nível de linguagem orientada para 
problemas", ou qualquer outro nome que indique que este é um 
nível de linguagem voltada para o usuário final. Neste nível a 
máquina virtual oferecida é suficientemente abstrata para que 
possa ser utilizadas por qualquer programador com 
conhecimentos razoáveis em algoritmos, estruturas e na 
linguagem disponível a este nível. Bons exemplos para este nível 
de máquina virtual são as ditas linguagens de alto nível. Para 
estas linguagens, tais como, C, C++, Java, pascal, FORTRAN, etc. 
Amáquina virtual neste nível é, como dito anteriormente, 
suportadas por tradução, através dos compiladores destas 
linguagens. 
Embora a apresentação acima possa ser feita sem constrangimento, não há 
uma definição demasiadamente rígida sobre o que está presente em cada nível. 
Cabe aos projetistas decidirem o que colocar em cada nível. O estudo da 
evolução das arquiteturas de computadores, durante os últimos 60 anos, 
mostra que já ocorreram muitas mudanças nas preferências dos projetistas 
quanto ao melhor nível para disponibilizar certos recursos. Os lemas "toda 
complexidade é do software" e "toda complexidade é do hardware", usados 
separadamente em épocas distintas, reflete bem as variações das preferências 
dos projetistas. O importante desta questão é estudas as justificativas que 
norteiam cada projeto, baseados nos princípios da simplicidade, consistência, 
desempenho e acrescente-se relação custo/desempenho.

Continue navegando