Você está na página 1de 18

 

  
Arquitectura de computadores
 
Tema:
Introdução a arquitectura de computadores
Linguagem, níveis e máquinas virtuais;
Intérpretes e compiladores;
Maquinas multiníveis actuais;
Hardware, software e máquinas multiníveis.
 
 
 
 
 
 
 
 
 
 
 
 
Nampula
27 De Setembro de 2019

 
 
 
 
• Introdução
• Neste presente trabalho vamos falar sobre as linhas do estudo da
arquitectura de computadores, desde os conceitos básicos até aos
assuntos mais complexos por onde esta delineado o nosso
trabalho, desde a linguagens, níveis e maquinas virtuais e sem se
esquecer de colocar o conceito base o computador, este que é uma
máquina de solução de problemas e que executa programas -
Conjunto de instruções que descrevem como realizar uma tarefa. E
por ai em diante vamos falar também de duas partes com
compõem esse computar ( parte física e parte lógica), isto é,
HARDWARE E SOFTWARE, e assim como das maquinas multiníveis.

•  
• Introdução
• Segundo o autor STALLINGS(2010), diz que um computador digital é uma máquina capaz de nos solucionar problemas através da execução
de instruções que lhe são fornecidas. Ainda o STALLINGS, denomina-se programa uma sequência de instruções que descreve como executar
uma determinada tarefa. Os circuitos electrónicos de cada computador podem reconhecer e executar directamente um conjunto limitado
de instruções simples para as quais todos os programas devem ser convertidos antes que eles possam ser executados. Estas instruções
básicas raramente são mais complicadas do que: Some dois números; Verifique se um número é zero; Mova um dado de uma parte da
memória do computador para outra;.
• 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 projectistas 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 electrónica reduzida (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, mas 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.
• Introdução
• Segundo o autor STALLINGS(2010), diz que um computador digital é uma máquina capaz de nos solucionar problemas através da
execução de instruções que lhe são fornecidas. Ainda o STALLINGS, denomina-se programa uma sequência de instruções que
descreve como executar uma determinada tarefa. Os circuitos electrónicos de cada computador podem reconhecer e executar
directamente um conjunto limitado de instruções simples para as quais todos os programas devem ser convertidos antes que eles
possam ser executados. Estas instruções básicas raramente são mais complicadas do que: Some dois números; Verifique se um
número é zero; Mova um dado de uma parte da memória do computador para outra;.
• 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 projectistas 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 electrónica reduzida (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, mas 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.
• Linguagem, seria conjunto de instruções associadas a uma sintaxe e uma semântica específica.
• 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 equivalentes 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.
• Observação: Pode ser utilizada uma metodologia híbrida: tradutor + interpretador
• 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).
• Ao invés de ser uma máquina real, isto é, um computador real feito de hardware e executando um sistema operacional específico, uma máquina virtual é um computador fictício criado por um
programa de simulação. Sua memória, processador e outros recursos são virtualizados. A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de
dividir os recursos de um computador em múltiplos ambientes de execução.
• Ultimamente, é muito simples e fácil criar uma máquina virtual: basta apenas instalar um programa específico dentro da máquina real, onde dentro desse programa poderá ser criado um disco rígido
virtual e a partir disso, será possível executar um sistema operacional inteiro por meio dele.
• Entre os programas que simulam essas máquinas, são bastante conhecidos os emuladores de vídeo games antigos e os emuladores de microcomputadores, como o VM ware e o Bochs.
• Apesar de alguns desses programas serem pagos, existem também softwares livre de fácil acesso, que é o caso do VM Virtual Box (software livre da Oracle).
• Funcionamento
• Após a instalação do programa para criação da máquina virtual, é possível criar um disco rígido virtual, e a partir disso, é possível executar um sistema operacional inteiro.
• A máquina virtual irá alocar, durante a execução de sistemas operacionais, uma quantidade definida de memória RAM. Ela normalmente emula um ambiente de computação física, mas requisições de
CPU, memória, disco rígido, rede e outros recursos de hardware serão todos geridos por uma "camada uma "camada de virtualização" que traduz essas solicitações para o hardware presente na
máquina.
• A partir disso, é possível a instalação de outros softwares dentro do presente software, fazendo simulações em geral sem a necessidade um hardware específico.
• Uso para teste
• O conceito de VM também pode ser utilizado como máquinas virtuais a efeito de testes, ou seja, quando empresas de desenvolvimento desejam testar seus produtos ou até mesmos administradores
de redes, sistemas pretendem montar protótipos e projectos futuros.
• Caso se trate de uma pequena e média empresa onde os recursos são reduzidos, podemos utilizar o Conceito de VM, para que um servidor de arquivos além de armazenar dados, também possua uma
outra tarefa como por exemplo instalação de um (Servidor Jabber "comunicação", servidor CUPS "impressão" e até mesmo um Postfix "correio eletrônico"). Tipos
• As máquinas virtuais podem ser divididas em três tipos:
• Tipo1: Sistema em que o monitor é implementado entre o hardware e os sistemas convidados (guest system), onde o monitor tem controlo sobre o hardware e abre sessões (convidados) para criação
de máquinas virtuais semelhantes ao sistema operacional tradicional.
• Tipo2: Nele o monitor é implementado como um processo de um sistema operacional real, denominado sistema anfitrião (host system), onde o monitor é executado como um Processo por um Sistema
Anfitrião, ou seja, um sistema gerência o acesso do hardware ao monitor, que por sua vez cria máquinas virtuais assim como descrito no Tipo 1.
• Tipo3: Utiliza os 2 conceitos do Tipo 1 e Tipo 2 ao mesmo tempo. Em resumo é a capacidade da máquina virtual (sistema convidado) de acessar directamente o hardware, sem ter que passar todas
informações ao monitor toda vez que desejar acessar algum dispositivo/hardware.
• Tipos Híbridos: Os monitores de tipo 1 e 2 raramente são usados em sua forma conceitual em implementações reais. Na prática, várias optimizações são inseridas nas arquitecturas apresentadas, com o
objectivo principal de melhorar o desempenho das aplicações nos sistemas convidados. Como os pontos cruciais do desempenho dos sistemas de máquinas virtuais são as operações de E/S, as
principais optimizações utilizadas em sistemas de produção dizem respeito a essas operações.
• Outra importante categoria de máquinas virtuais são as máquinas virtuais para computadores fictícios projectados para uma finalidade específica. Actualmente a mais importante máquina virtual desta
família é a JVM (máquina virtual Java). Existem simuladores para ela em quase todos os computadores atuais, desde computadores de grande porte até telefones celulares, o que torna as aplicações
Java extremamente portáveis.
• Uma importante vantagem sem dúvida de se escrever código para uma máquina virtual é a de se poder compilar o código sem que seja perdida a portabilidade, melhorando-se a velocidade em relação
à programação interpretada, que também é portátil, porém mais lenta, já que neste
• caso cada linha será traduzida e executada em tempo de execução, e no caso da máquina virtual cada mnemônico da máquina virtual é convertido no equivalente em linguagem de máquina (ou assembly) da máquina
real.
• Vantagens
• • Facilita o aperfeiçoamento e testes de novos sistemas operacionais.
• • Possibilita a comparação de vários sistemas operacionais utilizando o mesmo equipamento.
• • Executa diferentes sistemas operacionais sobre o mesmo hardware, simultaneamente.
• • Simula alterações e falhas no hardware para testes ou reconfiguração de um sistema operacional, provendo confiabilidade e escalabilidade para as aplicações.
• • Diminuição de custos com hardware.
• • Facilidades no gerenciamento, migração e replicação de computadores, aplicações ou sistemas operacionais.
• • Confiança e disponibilidade: A falha de um software não prejudica os demais serviços.
• • O isolamento da máquina virtual assegura que as aplicações e serviços que serão executados dentro de uma máquina virtual não poderão interferir no sistema operacional original e nem em outras máquinas virtuais.
• • Pode ser facilmente deslocadas, copiadas e transferidas entre computadores, possibilitando aperfeiçoar os recursos do hardware.
• • Teste de diversos sistemas operacionais sem precisar particionar o HD, podendo instalar versões antigas do Windows, Linux, ou qualquer outro sistema sem fazer alterações no disco rígido.
• Desvantagens
• • Gerenciamento: Os ambientes virtuais necessitam ser, monitorados, configurados e salvos . Existem produtos que fornecem essas soluções, mas esse é o campo no qual estão os maiores investimentos na área de
virtualização, justamente por se tratar de um dos maiores contratempos na implementação da virtualização.
• • Desempenho: Actualmente, não existem métodos consolidados para medir o desempenho de ambientes virtualizados. No entanto, a introdução de uma camada extra de software entre o sistema operacional e o
hardware, o VMM ou hypervisor, gera um custo de processamento superior ao que se teria sem a virtualização. Outro ponto importante de ressaltar é que não se sabe exactamente quantas máquinas virtuais podem ser
executadas por processador, sem que haja o prejuízo da qualidade de serviço.
• Segurança
• Embora a máquina necessite do sistema real para sua inicialização, trabalha de maneira independente como se fosse outro computador, isto requer também um sistema de segurança independente, ou seja, a ocorrência
de infecção por vírus na máquina virtual não afecta a máquina real.
• Em geral o conceito sobre máquinas virtuais vem crescendo, não só pela performance apresentada nos resultados, mas pelo custo reduzido de hardware e manutenção, o que facilita muito o uso desses softwares.
• Enorme uso da memória da máquina real, depois de um grande tempo de estar em modo ligada. Isso ocasiona lentidão para o usuário que está utilizando.
• Interpretadores, Compiladores e Tradutores
• O computador deve converter os comandos dados em linguagem de alto nível para linguagem de máquina (códigos binários). Esta tarefa de conversão é feita por um programa especial de computador, isto é, um
programa que recebe as instruções em linguagem de alto nível e dá como saída outro programa constituído de instruções binárias. Ao programa original, em linguagem de alto nível, dá-se o nome de Programa Fonte e ao
resultado, em linguagem de máquina, de Programa Objecto.
• Este programa especial recebe o nome de Compilador.
• Existem três métodos básicos de abordagem na tradução de linguagem de alto nível para linguagem de máquina:
• • Interpretador
• • Compilador
• • Tradutor
• Interpretador
• O programa conversor recebe a primeira instrução do programa fonte, confere para ver se está escrita correctamente, converte-a em linguagem de máquina e então ordena ao
• Figura 1. Máquina de vários níveis (Obtida do material, disponível na internet, do livro do Tanenbaum, 2001).
• 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ível0: 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ível1: 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.
• Nível2: Nível da arquitectura 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ível3: 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 de aplicação.
• Nível4: 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ído 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.
• Maquinas Virtuais
• Na ciência da computação, máquina virtual consiste em um software de ambiente computacional, que executa programas como um computador real, também chamado de processo de virtualização.
• Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um
sistema físico, e esta cópia está totalmente protegida. Máquinas virtuais são extremamente úteis no dia a dia, pois permitem ao usuário rodar outros sistemas operacionais dentro de uma única
máquina física, tendo acesso a outros software existentes que podem ser instalados dentro da própria máquina virtual.
• É um sistema operativo que permite a vários utilizadores trabalharem ao mesmo tempo como se estivessem a utilizar sozinhos o computador.
• • O sistema VM é usado maniforme- computadores de grande capacidade capazes de oferecer serviços de processamento a milhares de usuários através de milhares de terminais conectados
directamente ou através de uma rede. O sistema operava unicamente em modo batch (arquivo de lote).
• O programa de controle (CP) gerência o computador e efectua todas as operações necessárias de tal forma que cada máquina virtual reaja e trabalhe como um computador pessoal. O utilizador tinha
em frente de si unicamente: um écran, um teclado, e a caixa de ligação com mainframe.
• O termo máquina virtual foi descrito na década de 1960 utilizando um termo de sistema operacional: uma abstracção de software que enxerga um sistema físico (máquina real). Com o passar dos anos,
o termo englobou um grande número de abstracções – por exemplo, Java Virtual Machine – JVM que não virtualiza um sistema real.
• Computadores são projetados como uma série de níveis, cada um deles construído 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.
• Maquinas Virtuais
• Na ciência da computação, máquina virtual consiste em um software de ambiente computacional, que executa programas como um computador real, também chamado de processo de virtualização.
• Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um
sistema físico, e esta cópia está totalmente protegida. Máquinas virtuais são extremamente úteis no dia a dia, pois permitem ao usuário rodar outros sistemas operacionais dentro de uma única
máquina física, tendo acesso a outros software existentes que podem ser instalados dentro da própria máquina virtual.
• É um sistema operativo que permite a vários utilizadores trabalharem ao mesmo tempo como se estivessem a utilizar sozinhos o computador.
• O sistema VM é usado maniforme- computadores de grande capacidade capazes de oferecer serviços de processamento a milhares de usuários através de milhares de terminais conectados
directamente ou através de uma rede. O sistema operava unicamente em modo batch (arquivo de lote).
• O programa de controle (CP) gerência o computador e efectua todas as operações necessárias de tal forma que cada máquina virtual reaja e trabalhe como um computador pessoal. O utilizador tinha
em frente de si unicamente: um écran, um teclado, e a caixa de ligação com mainframe.
• O termo máquina virtual foi descrito na década de 1960 utilizando um termo de sistema operacional: uma abstracção de software que enxerga um sistema físico (máquina real). Com o passar dos anos,
o termo englobou um grande número de abstracções – por exemplo, Java Virtual Machine – JVM que não virtualiza um sistema real.
• micros pessoais de terem memórias maiores, mesmo neles, os compiladores são os programas conversores preferidos.

• Tradutor

• Neste método, o computador ao invés de armazenar as instruções do programa fonte tal como lhe são fornecidas, ele transforma-as em
códigos intermediários, que não exigem tanto espaço de memória como as instruções originais. Estas instruções intermediárias são em
seguida transformadas em linguagem de máquina e executadas, funcionando daí por diante como no Interpretador. Neste método o
programa conversor é conhecido como tradutor.

• Neste estudo usa-se simplesmente o termo Compilador para se referir a qualquer um dos três métodos de compilação. Na realidade, quase
sempre é indiferente para um usuário não profissional que o computador trabalhe com um compilador, interpretador ou com um Tradutor.

• Etapas de Processamento de um Programa

• Para facilidade de visualização procura-se aqui na figura abaixo colocar esquematicamente as etapas pelas quais um programa passa, ao ser
compilado, e depois executado. Embora somente o caso do compilador propriamente dito seja esquematizado, pela própria descrição dos
dois outros métodos, pode-se comparativamente desenhar seus esquemas de funcionamento.

• Fi. Esquema das etapas de compilação e execução de um programa

• Erros
• Erros
• Note que os dados, como o raio das circunferências externa e interna do problema do anel, só serão lidos se houve sucesso na
compilação. Caso contrário o computador devolve uma listagem do programa - "Relatório de Erros" - apontando os erros cometidos. Faz-
se então a correcção dos comandos errados, o que gera um novo programa fonte, e recomeça-se o processo. Os erros cometidos no
programa fonte são principalmente de duas naturezas e são chamados Erros de Sintaxe ou Erros de Lógica. Pode haver também erros nos
dados. Na sequência discute-se brevemente cada um deles.
• Erros De Sintaxe
• Ao receber o programa fonte do usuário, o compilador verifica se cada comando observa suas regras de sintaxe, isto é, verifica se está
escrito conforme as regras da linguagem que regem a grafia daquele comando.
• Por exemplo, em linguagem FORTRAN o comando
• ESCREVA, "AREA DO ANEL ...:", ARANEL, "cm2"
• ficará:
• PRINT, "AREA DO ANEL ...:", ARANEL, "cm2"
• Supondo que, por descuido ou ignorância, se tivesse escrito:
• PLINT "AREA DO ANEL ...:", ARANEL, "cm2"
• dois erros seriam cometidos:
• O correto é PRINT e não PLINT
• Foi omissa uma vírgula após o PRINT.
• Neste caso seriam acusados erros de sintaxe no momento da compilação e o computador devolveria uma lista do programa apontando os
locais e a descrição dos erros cometidos. É bom notar que às vezes um erro encobre vários outros e assim, quando um é corrigido
aparecem diversos não apontados na primeira compilação.
• A causa do erro pode vir explanada por extenso, no relatório do próprio computador, ou pode ser informado apenas um número
codificado e em manuais próprios se encontra a sua explicação.
• Erro De Dados
• Supondo que a área do anel tivesse sido negativa, isto poderia talvez ser explicado como erro de dados, em que se forneceu
primeiramente, no registro lido, o raio do círculo interno e depois o externo, contrariamente ao que esperava o programa. Óbvio
que o problema poderia ser também provocado por erro de fórmula ao se dar as instruções de cálculo (ver Erro de Lógica).
• Erro De Lógica
• Ainda no programa do anel, se em lugar da fórmula da área do círculo se tivesse usado a do comprimento da circunferência (2*p
*R) o resultado final não seria correto pois as fórmulas de cálculo estão erradas, diz-se, logicamente. Infelizmente o computador
não é inteligente o suficiente para detectar erros de lógica e por isto estes são os piores de ser encontrados e portanto corrigidos.
Uma das ferramentas para encontrá-los mais diretamente é a chamada Tabela de Memória.
• Principais Linguagens de Programação
• A título ilustrativo faz-se a seguir um breve resumo de algumas linguagens de programação de uso bastante difundido.
• FORTRAN (FORmula TRANslator: tradutor de fórmulas)
• A linguagem Fortran foi das primeiras linguagens de alto nível desenvolvidas. Sua primeira versão ocorreu em 1957, criada pela
IBM. Como seu próprio nome diz, é uma linguagem com uma forte ferramenta matemática embutida e, por isto, muito
apropriada para problemas científicos em universidades, institutos de pesquisa, firmas de engenharia, etc.
• Já há uma dezena de anos se tem profetizado sua morte iminente. Porém, como novas versões modernizadas têm surgido e já
existem inúmeros sistemas com eles construídos, que demandariam muito trabalho para transformar em linguagens mais
modernas, ela tem se mantido e regenerado.
• É usada sobretudo em computadores grandes e médios, embora já existam versões para microcomputadores profissionais.
• COBOL (Common Business Oriented Lan).
• Conclusão
• Durante o nosso trabalho, percebemos que programa é
uma sequência de instruções que descreve como executar
uma determinada tarefa com auxilio da parte física dum
computador, sendo que estas já foram testadas a sua
compatibilidade através de compilador, tradutor e ficou
pronto para dar essas instruções. E também durante o
trabalho verificamos que Hardware e software são
logicamente equivalentes no que diz respeito a execução
e projecção visto que, o que funciona hoje como software
amanha será hardware e vice-versa.

•  
Hardware, Software E Máquinas Multinível
Para ENGLANDER, diz que os programas escritos na linguagem de máquina de um computador (nível 1) podem ser executados
directamente pelos circuitos electrónicos do computador (nível 0), sem quaisquer interpretadores ou tradutores intermediários.
Estes circuitos electrónicos, juntamente com a memória e dispositivos de entrada/saída, constituem o hardware do computador.
Ainda no mesmo autor, o hardware é composto de objectos tangíveis - circuitos integrados, placas de circuito impresso, cabos,
fontes de alimentação, memórias, leitoras de cartões, impressoras e terminais - em lugar de ideias abstractas, algoritmos ou
instruções.
E suas representações para o computador - ou seja, os programas. Os programas podem estar Interpretação Parcial Tradução
Interpretação Executa Tradução Nível de Linguagem de Montagem Nível de Sistema Operacional Nível de Máquina Convencional
Nível de Microprogramação Nível de Lógica Digital Nível 4 Nível 3 Nível 2 Nível 1 Nível 0 Nível de Linguagem Orientada ao Problema
Nível 5 representados em cartões perfurados, fita magnética, filme fotográfico e outros meios, mas a essência do software está no
conjunto de instruções que constitui os programas, não nos meios físicos sobre os quais eles estão gravados. Uma forma
intermediária entre o hardware e o software é o firmware, que consiste no soflware embutido em dispositivos electrónicos durante
a fabricação. O firmware é utilizado quando se espera que os programas raramente ou nunca serão mudados, por exemplo, em
brinquedos ou instrumentos. O firmware é também usado quando os programas não podem ser perdidos ao se acabar a
alimentação (p. ex., quando a bateria da boneca se descarrega). Em muitos computadores o microprograma está em firmware. Um
tema central que sempre aparecerá é: Hardware e software são logicamente equivalentes.
Qualquer operação efetuada pelo software pode também ser implementada directamente em hardware, e qualquer instrução
executada pelo hardware pode também ser simulada pelo software. A decisão de se colocar certas funções em hardware e outras
em software baseia-se em factores tais como: custo, velocidade, confiabilidade e frequência esperada de alterações. Não há regras
rígidas e directas para se dizer que X deve ser implementado em hardware e Y deve ser programado explicitamente. Projectistas
com objectivos diferentes podem, e muitas vezes o fazem, tomar diferentes decisões. Nos primeiros computadores, a distinção
entre hardware e software era clara. O hardware executava algumas instruções simples, tais como ADD (somar) e JUMP (saltar
para), e tudo o mais era programado explicitamente. Se um
• programa precisasse multiplicar dois números, o programador tinha que escrever seu próprio procedimento de multiplicação ou
pedir um emprestado à biblioteca. Com o passar do tempo, tornou-se claro aos projectistas de hardware que certas operações eram
executadas com uma frequência suficiente para justificar a construção de circuitos especiais para executá-las directamente em
hardware (para torná-las mais rápidas). Isto resultou em uma tendência de se levar as operações para os níveis inferiores. O que era
previamente programado explicitamente no nível de máquina convencional era mais tarde encontrado abaixo dele, no hardware.
Com a chegada da micro programação e de computadores multinível, a tendência oposta também ocorreu. Nos primeiros
computadores, não havia dúvidas de que a instrução ADD era executada directamente pelo hardware. Em um computador
microprogramado, a instrução ADD do nível de máquina convencional era interpretada através de um microprograma sendo
executado no nível situado mais ao fundo, e era executada como uma série de pequenos passos: buscar a instrução, descobrir seu
tipo, localizar os dados a serem adicionados, buscar os dados da memória, executar a adição e armazenar o resultado. Este é um
exemplo de função que moveu para cima, do nível de hardware para o de microprograma. Nós enfatizaremos mais uma vez que: não
existem regras rígidas e directas a respeito do que deve estar em hardware e do que deve estar em software. Ao desenvolverem uma
máquina multinível, os projectistas devem decidir o que colocar em cada nível. Esta é uma generalização do problema mencionado
anteriormente, de se decidir o que colocar em hardware e o que colocar em software, o hardware sendo meramente de nível mais
baixo. É interessante notar que algumas das características de certos computadores modernos são agora executadas pelo hardware
ou pelo microprograma, mas que originalmente foram programadas explicitamente no nível de máquina convencional. Dentre elas
estão incluídas:
• o Instruções para multiplicação e divisão de inteiros.
• o Instruções aritméticas de ponto-flutuante.
• o Instruções aritméticas de dupla precisão (aritmética de números com duas vezes o número usual de algarismos significativos).
• o Instruções para chamar e retomar de procedimentos.
• o Instruções para acelerar laços (looping). ' 6. Instruções de contagem (somar 1 a uma variável).
• o Instruções para manipular cadeias de caracteres.
• o Aspectos de aceleração de computações envolvendo matrizes (indexação e endereçamento indirecto).
• o Características para permitir que os programas fossem movidos na memória após terem começado a
ser executados (facilidades de recolocação).
• o Relógios para temporizar programas.
• o Sistemas de interrupção que avisem o computador tão logo uma operação de entrada ou saída esteja
completada.
• o A capacidade de parar um programa e iniciar outro utilizando poucas instruções (chaveamento de
processos).
• O objectivo da discussão é mostrar que a fronteira entre o hardware e o software é arbitrária e que varia
constantemente. O software de hoje é o hardware de amanhã, e vice-versa. Além disso, os limites entre os
vários níveis são fluidos. Do ponto de vista do programador, a maneira como uma instrução está
realmente implementada não é importante (excepto, talvez, com relação à velocidade). Alguém que
estiver programado no nível de máquina convencional pode usar sua instrução de multiplicação como se
esta fosse uma instrução de hardware sem se preocupar com isto, ou até mesmo estar ciente se ela é
realmente uma instrução de hardware ou não. O fato de o programador não estar ciente de como o nível
que ele está utilizando é implementado leva ao conceito de projecto estruturado de máquinas. Um nível é
muitas vezes chamado de máquina virtual porque o programador pensa nele como uma máquina física
real, mesmo se ela não existir realmente. Estruturando uma máquina como uma série de níveis, os
programadores que trabalham no nível n não precisam saber de todos os detalhes confusos dos níveis
inferiores. Esta estruturação simplifica enormemente a produção de máquinas (virtuais) complexas.

Você também pode gostar