Вы находитесь на странице: 1из 6

MQUINAS VIRTUAIS, MQUINAS MULTINVEL E LINGUAGENS.

INTRODUO Um computador digital uma mquina capaz de nos solucionar problemas atravs da execuo de instrues que lhe so fornecidas. Denomina-se programa uma sequncia de instrues que descreve como executar uma determinada tarefa. Os circuitos eletrnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instrues simples para as quais todos os programas devem ser convertidos antes que eles possam ser executados. Estas instrues bsicas raramente so mais complicadas do que: Some dois nmeros. Verifique se um nmero zero.

Mova um dado de uma parte da memria do computador para outra. Juntas, as instrues primitivas do computador formam uma linguagem que torna possvel as pessoas se comunicarem com o computador. Tal linguagem denominada linguagem de mquina. Ao se projetar um novo computador deve-se decidir que instrues devem estar includas nesta linguagem de mquina. Geralmente, tentase fazer as instrues primitivas to simples quanto possvel, consistentes com o uso pretendido e necessidades de desempenho, a fim de reduzir a complexidade e o custo da eletrnica empregada. Como a maioria das linguagens de mquina so muito simples, difcil e tedioso utiliz-las. Este problema pode ser atacado de duas maneiras principais, ambas envolvendo o projeto de um novo conjunto de instrues de uso mais conveniente para as pessoas do que o conjunto de instrues embutidas da mquina. Juntas, estas novas instrues formam uma linguagem que chamaremos de L2, exatamente como as instrues embutidas de mquina formam uma linguagem, que chamaremos de L1. Os dois conceitos diferem na maneira com que os programas escritos em L2 so executados pelo computador, que, afinal de contas, pode apenas executar programas escritos em sua linguagem de mquina, L1. Um mtodo de execuo de um programa escrito em L2 consiste, em primeiro lugar, em substituir cada instruo nele por uma sequncia equivalente de instrues em L1. O programa resultante composto inteiramente de instrues L1. O computador ento executa o novo programa em L1 em vez do programa em L2. Denomina-se esta tcnica traduo. A outra tcnica consiste em escrever um programa em L1 que receba os programas escritos em L2 como dados de entrada e efetue a execuo examinando uma instruo de cada vez e executando a sequncia equivalente de instrues L1 diretamente. Esta tcnica no requer a gerao de um novo programa em L1. Denomina-se interpretao, e o programa que a executa denomina-se interpretador. A traduo e a interpretao so similares. Em ambos os mtodos, as instrues em L2 so executadas pelas sequncias equivalentes de instrues em L1. A diferena que, na traduo, o programa inteiro em L2 primeiramente convertido para um programa em L1, o programa L2 abandonado, e o novo programa em L1 executado. Na interpretao, depois de cada instruo L2 ser examinada e decodificada, ela executado imediatamente. Nenhum programa traduzido gerado. Ambos os mtodos so amplamente utilizados. Em vez de pensar em termos de traduo e interpretao, muitas vezes mais adequado imaginar a existncia de um computador hipottico ou mquina virtual cuja linguagem de mquina seja L2. Se tal mquina pudesse ser construda a um custo suficientemente baixo, no haveria absolutamente nenhuma necessidade de se ter L1 ou uma mquina que executasse programas em L1. As pessoas poderiam simplesmente escrever seus programas em L2 e o computador os executaria diretamente. At mesmo se a mquina virtual cuja linguagem L2 fosse muito cara para ser construda com circuitos eletrnicos, poder-se-ia ainda escrever programas para ela. Estes programas podem ser interpretados ou traduzidos por um programa escrito em L1, linguagem esta que possa ser diretamente executada

por um computador existente. Em outras palavras, podem-se escrever programas para mquinas virtuais como se elas realmente existissem. Para tornar prticas a traduo e a interpretao, as linguagens L1 e L2 no devem ser "muito" diferentes. Esta restrio significa muitas vezes que L2, embora melhor que L1, estar ainda longe do ideal para a maioria das aplicaes. Talvez isso seja desencorajante em vista do objetivo original de criar L2, ou seja, livrar o programador da carga de ter que expressar os algoritmos em uma linguagem em mais adequada s mquinas do que s pessoas. Entretanto, a situao est longe de desesperante. A soluo bvia criar outro conjunto de instrues que seja mais dirigido s pessoas e menos dirigido mquina do que aquele de L2. Este terceiro conjunto tambm constitui uma Linguagem, que chamaremos L3. Podem-se escrever programas em L3 como se uma mquina virtual cuja Linguagem de mquina fosse L3 realmente existisse. Tais programas podem tanto ser traduzidos para L2 quanto executados por um interpretador escritos em L2. A inveno de toda uma srie de linguagens, cada uma delas mais conveniente do que suas predecessoras, pode continuar indefinidamente at que uma adequada seja finalmente conseguida. Cada Linguagem utiliza sua predecessora como base, assim podemos visualizar um computador que utiliza esta tcnica como uma srie de camadas ou nveis, um sobre o outro, como est mostrado na figura abaixo. A linguagem ou nvel mais baixo a(o) mais simples e a Linguagem ou nvel mais alto a(o) mais sofisticada(o).

LINGUAGENS, NVEIS E MQUINAS VIRTUAIS H uma relao importante entre uma linguagem e uma mquina virtual. Cada mquina tem a sua linguagem de mquina, que consiste em todas as instrues que a mquina pode executar. De fato, uma mquina define uma linguagem. Do mesmo modo, uma linguagem define uma mquina - ou seja, a mquina que pode executar todos os programas escritos nesta linguagem. Naturalmente, a mquina definida por uma determinada linguagem pode ser enormemente complicada e cara de construir diretamente a partir de circuitos eletrnicos, mas de qualquer modo podemos imagin-la. Uma mquina com C, Pascal ou Cobol como sua linguagem de mquina seria complicadssima, mas certamente imaginvel e, talvez dentro de alguns anos, tal mquina seja considerada de construo trivial. Um computador com n nveis pode ser considerado como n diferentes mquinas virtuais, cada uma delas com uma diferente linguagem de mquina. Podemos utilizar os termos "nvel" e "mquina virtual" indistintamente. Apenas os programas escritos em linguagem L1 podem ser executados diretamente pelos circuitos eletrnicos, sem a necessidade de interveno da traduo ou interpretao. Os programas escritos em L2, L3, ... Ln, devem ser interpretados por um interpretador em execuo em um nvel inferior ou ser traduzidos para uma outra linguagem correspondente no nvel inferior. Uma pessoa cujo trabalho fosse escrever programas para a mquina virtual de nvel n no precisaria estar ciente dos interpretadores e tradutores subjacentes. A estrutura da mquina assegura que estes programas sero de algum modo executados. de pouco interesse se eles so executados passo a passo por um interpretador, que por sua vez

executado por um outro interpretador, ou se eles so executados diretamente pelos circuitos eletrnicos. O mesmo resultado surge em ambos os casos: os programas so executados. A maioria dos programadores que utilizam uma mquina de nvel n est apenas interessada no nvel do topo, que lembra o mnimo possvel a linguagem de mquina situada l embaixo. Entretanto, os interessados em compreender como um computador realmente funciona devem estudar todos os nveis. As pessoas interessadas em projetar novos computadores ou novos nveis (isto , novas mquinas virtuais) devem tambm estar familiarizadas com outros nveis alm do nvel do topo. Os conceitos e tcnicas de construo de mquinas como uma srie de nveis e os detalhes de alguns nveis importantes constituem por si so o assunto principal deste texto. Organizao Estrutural de Computadores vem do fato de se visualizar o computador como um conjunto hierrquico de nveis que prov uma boa estrutura para compreender como os computadores esto organizados. Alm disso, projetar computadores como uma srie de nveis ajuda a assegurar um produto final bem estruturado. MQUINAS MULTINVEL CONTEMPORNEAS A maioria dos computadores modernos possui dois ou mais nveis. As mquinas de seis nveis so muito comuns, como est mostrado na figura a seguir. O nvel 0, l embaixo, o hardware verdadeiro da mquina. Seus circuitos executam os programas em linguagem de mquina de nvel 1. Para completar, deve-se mencionar ainda a existncia de um outro nvel abaixo do nvel 0. Este nvel, no est mostrado na figura porque se situa no campo da engenharia eltrica (e por isto est fora do escopo deste texto), denominado nvel de dispositivos. A este nvel, o projetista enxerga transistores individuais, os quais so os primitivos de mais baixo nvel para os projetistas de computadores. (Naturalmente, pode-se tambm indagar como funcionam os transistores por dentro, mas isto j pertence fsica de estado slido). No nvel mais baixo que estudaremos, o nvel da lgica digital, os objetos interessantes so denominados portas. Embora construdas a partir de componentes analgicos, como os transistores, as portas podem ser modeladas com preciso como dispositivos digitais. Cada porta possui uma ou mais entradas digitais (sinais representando 0 ou 1), e fornece como sada funes simples destas entradas, tais como AND ou OR. Cada porta constituda no mximo por um punhado de transistores. Embora o conhecimento do nvel de dispositivos seja um tanto especializado, com o advento dos microprocessadores e microcomputadores, mais e mais pessoas esto entrando em contato com o nvel de lgica digital. O nvel superior seguinte o nvel 1, que o verdadeiro nvel de linguagem de mquina. Ao contrrio do nvel 0 , onde no existe o conceito de programa como uma seqncia de instrues a serem executadas, em nvel 1 h definitivamente um programa, denominado microprograma, cuja funo interpretar as instrues de nvel 2. Chamamos o nvel 1 de nvel de microprogramao. Embora seja verdadeiro que no existem dois computadores com nveis de microprogramao idnticos, existem semelhanas suficientes que nos permitem extrair os aspectos essenciais do nvel e discut-Io como se ele fosse bem definido. Por exemplo, poucas so as mquinas que tm mais de 30 instrues este nvel, e a maior parte destas instrues envolve a movimentao de dados de uma parte da mquina para outra, ou a realizao de alguns testes simples. Cada mquina de nvel 1 tem um ou mais microprogramas que so executados nela. Cada microprograma define implicitamente uma linguagem de nvel 2 (e uma mquina virtual, cuja linguagem de mquina e ssa linguagem). Estas mquinas de nvel 2 tm muito em comum. At mesmo mquinas de nvel 2 de fabricantes diferentes tm mais semelhanas do que diferenas. Neste texto, denominaremos este nvel de nvel de mquina convencional, por falta de um nome de aceitao geral. Todo fabricante de computadores pblica um manual para cada tipo de computador que ele comercializa, intitulado "Manual de referncia da Linguagem de Mquina" ou "Princpios de Operao do Computador Western Combat Modelo 100X" ou algo semelhante. Estes manuais tratam, na realidade, da mquina virtual de nvel 2, e no da mquina real de nvel 1. Quando eles descrevem o conjunto de instrues de mquina, esto, de fato, descrevendo as instrues interpretadas pelo microprograma, e no as prprias instrues de hardware. Se o fabricante de computadores escrever para uma de suas mquinas dois interpretadores que interpretem duas mquinas diferentes

de nvel 2, ele precisar fornecer dois manuais de referncia de "Linguagem de mquina", um para cada interpretador. Deve-se mencionar que alguns computadores no tm um nvel de microprogramao. Nestas mquinas, as instrues do nvel de mquina convencional so executadas diretamente pelos circuitos eletrnicos (nvel 0), sem qualquer interpretador intermedirio de nvel 1. Como resultado, o nvel 1, e no o nvel 2, o nvel de mquina convencional. De qualquer modo, continuaremos a chamar o nvel de mquina convencional de "nvel 2", apesar destas excees. O terceiro nvel geralmente um nvel hbrido. A maior parte das instrues desta linguagem est tambm na linguagem de nvel 2. (No h motivo para uma instruo que aparece em um nvel no poder estar presente tambm em outros nveis.) Alm disso, h um conjunto de novas instrues, uma organizao diferente de memria, capacidade de execuo de dois ou mais programas em paralelo, e vrias outras caractersticas. Existem diferenas maiores entre mquinas de nvel 3 do que entre mquinas de nvel 1 ou de nvel 2. As novas facilidades adicionadas ao nvel 3 so efetuadas por um interpretador em execuo no nvel 2, que historicamente tem sido denominado sistema operacional. Aquelas instrues de nvel 3 idnticas s do nvel 2 so executadas diretamente pelo microprograma, e no pelo sistema operacional. Em outras palavras, algumas das instrues de nvel 3 so interpretadas pelo sistema operacional e outras so interpretadas diretamente pelo microprograma. Isto , o que se quer dizer por "hbrido". Denominaremos este nvel de nvel de sistema operacional. H uma diferena fundamental entre os nveis 3 e 4. Os trs nveis inferiores no foram projetados para o uso direto pelo programador mdio comum. Eles so voltados principalmente para a execuo dos interpretadores e tradutores necessrios para suportar os nveis superiores. Estes interpretadores e tradutores so escritos por pessoas chamadas de programadores de sistema, que so especialistas em projetar e implementar novas mquinas virtuais. Os nveis 4 e superiores so dirigidos aos programadores de aplicao com problemas a serem solucionados. Uma outra mudana que ocorre no nvel 4 o mtodo pelo qual os nveis superiores so suportados. Os nveis 2 e 3 so sempre interpretados. Os nveis 4, 5 e superiores so geralmente, mas nem sempre, suportados por traduo. Outra diferena ainda entre os nveis 1, 2 e 3, de um lado, e os nveis 4, 5 e superiores, de outro, a natureza da linguagem provida. As Iinguagens de mquina de nveis 1, 2 e 3 so numricas. Os programas escritos nestas Iinguagens consistem em Iongas sries de nmeros, os quais so timos para as mquinas e pssimos para as pessoas. A partir do nvel 4, as Iinguagens contm palavras e abreviaturas significativas para as pessoas. O nvel 4, o nvel da linguagem de montagem, realmente uma forma simblica para uma Linguagem subjacente. Este nvel prov um mtodo para as pessoas escreverem programas para os nveis 1, 2 e 3 de uma maneira no to desagradvel quanto as prprias Iinguagens de mquina virtual. Os programas em Linguagem de montagem so primeiramente traduzidos para a Linguagem do nvel 1, 2 ou 3, e ento so interpretados pela mquina virtual ou real apropriada. O programa que executa a traduo denominado montador. O nvel 5 consiste em linguagens projetadas para serem utilizadas por programadores de aplicao com problemas a serem resolvidos. Tais linguagens so denominadas linguagens de alto nvel. Existem literalmente centenas delas. Algumas das mais conhecidas so C, C++, Java, Pascal, Delphi. Os programas escritos nestas linguagens so geralmente traduzidos para o nvel 3 ou nvel 4 por tradutores conhecidos como compiladores, embora ocasionalmente eles sejam interpretados. Os nveis 6 e superiores consistem em colees de programas projetados para criar mquinas especialmente adequadas para certas aplicaes. Eles contm grandes quantidades de informao acerca da aplicao. Podem-se imaginar mquinas virtuais voltadas a aplicaes em administrao, educao, projeto de computadores etc. Em resumo, o ponto-chave a ser lembrado que os computadores so projetados como uma srie de nveis, cada um deles construdo sobre seu predecessor. Cada nvel representa uma abstrao distinta, com a presena de

diferentes objetos e operaes. Ao projetar e analisar computadores deste modo, podemos temporariamente suprimir detalhes irrelevantes e assim reduzir um assunto complexo para algo mais fcil de ser compreendido. O conjunto de tipos de dados, operaes e caractersticas de cada nvel denominado sua arquitetura. A arquitetura trata daqueles aspectos que so visveis ao usurio daquele nvel. Os aspectos que um programador v, tais como quanta memria est disponvel, fazem parte da arquitetura. Aspectos de implementao, tais como qual o tipo de tecnologia da pastilha utilizada na implementao da memria, no fazem parte da arquitetura. O estudo de como projetar as partes de um computador que so visveis aos programadores denomina-se arquitetura de computadores. Na prtica, arquitetura de computadores e organizao de computadores significam essencialmente a mesma coisa. HARDWARE, SOFTWARE E MQUINAS MULTINVEL Os programas escritos na linguagem de mquina de um computador (nvel 1) podem ser executados diretamente pelos circuitos eletrnicos do computador (nvel 0), sem quaisquer interpretadores ou tradutores intermedirios. Estes circuitos eletrnicos, juntamente com a memria e dispositivos de entrada/sada, constituem o hardware do computador. O hardware composto de objetos tangveis - circuitos integrados, placas de circuito impresso, cabos, fontes de alimentao, memrias, leitoras de cartes, impressoras e terminais - em lugar de idias abstratas, algoritmos ou instrues. O software, ao contrrio, consiste em algoritmos (instrues detalhadas que dizem como fazer algo) e suas representaes para o computador - ou seja, os programas. Os programas podem estar Interpretao Parcial Traduo Interpretao Executa Traduo Nvel de Linguagem de Montagem Nvel de Sistema Operacional Nvel de Mquina Convencional Nvel de Microprogramao Nvel de Lgica Digital Nvel de Linguagem Orientada ao Problema Nvel 5 representados em cartes perfurados, fita magntica, filme fotogrfico e outros meios, mas a essncia do software est no conjunto de instrues que constitui os programas, no nos meios fsicos sobre os quais eles esto gravados. Uma forma intermediria entre o hardware e o software o firmware, que consiste no soflware embutido em dispositivos eletrnicos durante a fabricao. O firmware utilizado quando se espera que os programas raramente ou nunca sero mudados, por exemplo, em brinquedos ou instrumentos. O firmware tambm usado quando os programas no podem ser perdidos ao se acabar a alimentao (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 so logicamente equivalentes. Qualquer operao efetuada pelo software pode tambm ser implementada diretamente em hardware, e qualquer instruo executada pelo hardware pode tambm ser simulada pelo software. A deciso de se colocar certas funes em hardware e outras em software baseia-se em fatores tais como: custo, velocidade, confiabilidade e freqncia esperada de alteraes. No h regras rgidas e diretas para se dizer que X deve ser implementado em hardware e Y deve ser programado explicitamente. Projetistas com objetivos diferentes podem, e muitas vezes o fazem, tomar diferentes decises. Nos primeiros computadores, a distino entre hardware e software era clara. O hardware executava algumas instrues simples, tais como ADD (somar) e JUMP (saltar para), e tudo o mais era programado explicitamente. Se um programa precisasse multiplicar dois nmeros, o programador tinha que escrever seu prprio procedimento de multiplicao ou pedir um emprestado biblioteca. Com o passar do tempo, tornou-se claro aos projetistas de hardware que certas operaes eram executadas com uma freqncia suficiente para justificar a construo de circuitos especiais para execut-las diretamente em hardware (para torn-las mais rpidas). Isto resultou em uma tendncia de se levar as operaes para os nveis inferiores. O que era previamente programado explicitamente no nvel de mquina convencional era mais tarde encontrado abaixo dele, no hardware. Com a chegada da microprogramao e de computadores multinvel, a tendncia oposta tambm ocorreu. Nos primeiros computadores, no havia dvidas de que a instruo ADD era executada diretamente pelo hardware. Em um computador microprogramado, a instruo ADD do nvel de mquina convencional era interpretada atravs de um microprograma sendo executado no nvel situado mais ao fundo, e era executada como uma srie de pequenos passos: buscar a instruo, descobrir seu tipo,

localizar os dados a serem adicionados, buscar os dados da memria, executar a adio e armazenar o resultado. Este um exemplo de funo que moveu para cima, do nvel de hardware para o de microprograma. Ns enfatizaremos mais uma vez que: no existem regras rgidas e diretas a respeito do que deve estar em hardware e do que deve estar em software. Ao desenvolverem uma mquina multinvel, os projetistas devem decidir o que colocar em cada nvel. Esta uma generalizao do problema mencionado anteriormente, de se decidir o que colocar em hardware e o que colocar em software, o hardware sendo meramente de nvel mais baixo. interessante notar que algumas das caractersticas de certos computadores modernos so agora executadas pelo hardware ou pelo microprograma, mas que originalmente foram programadas explicitamente no nvel de mquina convencional. Dentre elas esto includas: 1. Instrues para multiplicao e diviso de inteiros. 2. Instrues aritmticas de pontoflutuante. 3. Instrues aritmticas de dupla preciso (aritmtica de nmeros com duas vezes o nmero usual de algarismos significativos). 4. Instrues para chamar e retomar de procedimentos. 5. Instrues para acelerar laos (looping). ' 6. Instrues de contagem (somar 1 a uma varivel). 7. Instrues para manipular cadeias de caracteres. 8. Aspectos de acelerao de computaes envolvendo matrizes (indexao e endereamento indireto). 9. Caractersticas para permitir que os programas fossem movidos na memria aps terem comeado a ser executados (facilidades de recolocao). 10. Relgios para temporizar programas. 11. Sistemas de interrupo que avisem o computador to logo uma operao de entrada ou sada esteja completada. 12. A capacidade de parar um programa e iniciar outro utilizando poucas instrues (chaveamento de processos). O objetivo da discusso mostrar que a fronteira entre o hardware e o software arbitrria e que varia constantemente. O software de hoje o hardware de amanh, e vice-versa. Alm disso, os limites entre os vrios nveis so fluidos. Do ponto de vista do programador, a maneira como uma instruo est realmente implementada no importante (exceto, talvez, com relao velocidade). Algum que estiver programado no nvel de mquina convencional pode usar sua instruo de multiplicao como se esta fosse uma instruo de hardware sem se preocupar com isto, ou at mesmo estar ciente se ela realmente uma instruo de hardware ou no. O fato de o programador no estar ciente de como o nvel que ele est utilizando implementado leva ao conceito de projeto estruturado de mquinas. Um nvel muitas vezes chamado de mquina virtual porque o programador pensa nele como uma mquina fsica real, mesmo se ela no existir realmente. Estruturando uma mquina como uma srie de nveis, os programadores que trabalham no nvel n no precisam saber de todos os detalhes confusos dos nveis inferiores. Esta estruturao simplifica enormemente a produo de mquinas (virtuais) complexas. Fonte: TANENBAUM,A. Organizao Estruturada de Computadores. 4 edico. Rio de janeiro: LTC, 2006.

Вам также может понравиться