Sie sind auf Seite 1von 44

Captulo 1 Evoluo Histrica

Centenas de computadores de diferentes tipos tm sido projetados e construdos durante a evoluo do computador digital moderno. A maioria j foi esquecida, mas alguns tiveram um impacto significativo nas idias modernas. A seguir, daremos uma viso breve de alguns destes desenvolvimentos-chave histricos, para conseguir uma melhor compreenso de como chegamos at onde estamos agora. 1) Gerao Zero Computadores Mecnicos (1642-1945) Antes do surgimento dos algarismos arbicos, os clculos eram efetuados atravs do baco, um instrumento criado provavelmente pelos Sumrios, um povo que habitava a Mesopotmia, por volta de 500 a.C. A palavra baco vem do grego abax, que significa tbua de clculo. Era constitudo por um conjunto de bolinhas, atravessadas por um fio pelo qual podiam deslizar. Certas regies do Oriente mantm ainda hoje o costume de utilizar o baco como instrumento para efetuar clculos. A primeira pessoa a construir uma mquina de calcular foi o cientista francs Blaise Pascal, em cuja honra deu-se o nome linguagem de programao Pascal. Este aparelho, construdo em 1642, quando Pascal tinha apenas 19 anos, foi projetado para ajudar seu pai, um coletor de impostos para o governo francs. Era inteiramente mecnico, utilizava engrenagens e funcionava atravs de uma manivela (operao manual). A mquina de Pascal podia apenas subtrair e somar, porm trinta anos mais tarde o matemtico alemo Baro Gottfried Wilhelm von Leibniz construiu uma outra mquina mecnica que podia tambm multiplicar e dividir. De fato, Leibniz construiu o equivalente a uma calculadora de bolso de quatro funes, h mais de trs sculos. Nada mais aconteceu durante 150 anos at que um professor de matemtica na Universidade de Cambridge, Charles Babbage projetou e construiu sua mquina de diferenas. Este dispositivo mecnico, que do mesmo modo que o de Pascal s podia somar e subtrair, foi projetado para calcular tabelas de nmeros teis navegao. A mquina foi projetada para executar um algoritmo simples, o mtodo das diferenas -1-

finitas utilizando polinmios. O aspecto mais importante da mquina de diferenas era seu mtodo de sada: ela perfurava os resultados numa placa de cobre. Seria o mtodo de escrita percursor do advento dos cartes perfurados e discos. Embora a mquina de diferenas funcionasse razoavelmente bem, Babbage logo cansou-se dela, pois podia executar apenas um algoritmo. Ele comeou ento a dedicar o seu tempo no projeto e construo de uma mquina sucessora, a mquina analtica (1834). Esta mquina possua quatro componentes: o armazenamento (memria), o engenho (a unidade de clculo), a seo de entrada (leitora de cartes perfurados) e a seo de sada (sada perfurada e impressa). O armazenamento tinha capacidade de guardar 1000 valores de 50 dgitos, sejam eles operandos ou resultados de operaes. O engenho podia aceitar operandos do armazenamento, som-los, subtra-los, multipliclos ou dividi-los, e retornar o resultado ao armazenamento. Tal como a mquina de diferenas, ela era totalmente mecnica. O grande avano da mquina analtica era de ser de uso geral. Ela lia instrues de cartes perfurados e as executava. Algumas instrues comandavam a mquina para buscar dois nmeros no armazenamento, lev-los ao engenho, sofrerem a operao (por exemplo, soma) e ter o resultado enviado de volta ao armazenamento. Perfurando um programa diferente nos cartes de entrada, era possvel fazer com que a mquina analtica executasse clculos diferentes, algo que no era verdade na mquina de diferenas. Uma vez que a mquina analtica era programvel, ela precisava de software. Para produzir este software, Babbage contratou uma jovem chamada Ada Augusta Lovelace, sendo esta a primeira programadora do mundo. A linguagem de programao Ada foi assim denominada em sua homenagem. O prximo grande marco de desenvolvimento ocorreu nos anos 30, quando um estudante de engenharia alemo chamado Konrad Zuse construiu uma srie de mquinas de calcular automticas utilizando rels (aparelhos/circuitos) eletromagnticos. Zuse no conhecia o trabalho de Babbage, e suas mquinas foram destrudas por um bombardeio a Berlim em 1944, de forma que seu trabalho no teve qualquer influncia nas mquinas posteriores. Mesmo assim, ele foi um dos pioneiros neste campo. Logo depois, nos Estados Unidos, duas pessoas tambm projetaram calculadoras, John Atanasoff e George Stibbitz. A mquina de Atanasoff era surpreendentemente avanada para sua poca. Ela utilizava aritmtica binria alm de tcnicas utilizadas ainda hoje na manuteno da carga de memrias. Infelizmente, a mquina nunca se tornou realmente operacional. De certa forma, Atanasoff foi como Babbage: um visionrio derrotado pela inadequada tecnologia de hardware de seu tempo. O computador de Stibbitz, embora mais primitivo que o de Atanasoff, funcionava realmente. Enquanto Zuse, Stibbitz e Atanasoff estavam projetando calculadoras automticas, um jovem chamado Howard Aiken estava realizando manualmente tediosos clculos numricos como parte de sua pesquisa de doutorado em Harvard. Aps seu doutorado, Aiken reconheceu a importncia de clculos feitos por mquina. Comeou a ler sobre o assunto, descobriu o trabalho de Babbage e, baseado neste, construiu em 1944 o seu primeiro computador com rels, o Mark I. Ele era capaz de armazenar 72 valores de 23 dgitos. Para entrada e sada, utilizava-se fita de papel -2-

perfurado e foi o primeiro computador de origem americana para propsitos gerais. Quando Aiken acabou de construir o sucessor, o Mark II, computadores com rels estavam obsoletos. A era eletrnica tinha comeado. Como conseqncia do esforo de guerra, o governo ingls colocou em operao, em 1943, o COLOSSUS. Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construdo pela Alemanha, denominado ENIGMA. Devido sua arquitetura muito especfica, voltada para a elucidao de mensagens, o COLOSSUS foi um equipamento nico, cujo maior mrito ter sido o primeiro computador digital. 1. Primeira Gerao Vlvulas (1945-1955) Os equipamentos desenvolvidos at o incio dos anos 40 eram fundamentados na utilizao de rels eletromecnicos. A utilizao de vlvulas mecnicas foi um marco que caracterizou esta nova era, que inicia a histria dos computadores eletrnicos digitais. Esta gerao comeou com a construo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de ps-graduao J. Presper Eckert. O ENIAC surgiu a partir de um projeto apresentado ao Exrcito Americano em 1943 para a construo de um computador destinado a efetuar clculos que seriam utilizados nas frentes de combate. As suas 18.000 vlvulas eletrnicas, seus 1.500 rels, alm de 800 quilmetros de fio utilizados, contriburam para o peso de 30 toneladas e um enorme consumo de energia eltrica. Tudo isso era necessrio para fazer funcionar uma arquitetura com vinte registradores, cada um capaz de conter nmeros decimais de at dez dgitos, sendo capaz de realizar 100.000 operaes aritmticas por segundo. A programao era elaborada atravs da utilizao de chaves com mltiplas posies. O projeto somente foi concludo em 1946 e, por isso, no pde ser utilizado nas operaes militares da Segunda Guerra. Maurice Wilkes, pesquisador da universidade de Cambridge, inspirado no trabalho de Mauchley e Eckert, construiu o EDSAC, em 1949, o primeiro computador eletrnico funcionando com programa armazenado. Isso significa que um programa no era mais representado por um conjunto de chaves posicionadas. As instrues do programa passavam a ser inseridas no equipamento, assim como os dados a serem processados, isto , eram sinais eltricos armazenados numa parte que recebeu a denominao de memria. Enquanto isso, Mauchley e Eckert trabalhavam no sucessor do ENIAC, denominado EDVAC (Eletronic Discret Variable Automatic Calculator). O projeto no foi a frente, em virtude de aspectos ligados fundao de uma empresa fabricante de computadores, que aps a evoluo natural dos fatos deu origem ento denominada UNIVAC (hoje transformada em UNISYS, aps fuso com a Burroughs). Surgiu, em 1951, o UNIVAC I, o primeiro computador eletrnico a ser usado comercialmente. Os projetos para a construo de computadores surgiam a partir de concepes dos seus criadores, no havendo ainda linhas gerais de comportamento quanto a possveis padres de arquitetura. Entre todas as tentativas, merece especial ateno aquela apresentada por John von Neumann. Tendo participado da equipe que desenvolveu o ENIAC, alm de suas idias sobre computador de programa armazenado terem sido utilizadas no EDSAC, von Neumann conduziu um projeto chamado IAS no -3-

Instituto de Estudos Avanados de Princeton. A partir desse trabalho, o processo de desenvolvimento de computadores nunca mais seria o mesmo. 2) Segunda Gerao Transistores (1955-1965) Durante os anos 50 (mais ou menos 1955), surgiu um novo dispositivo capaz de substituir a vlvula eletrnica com vantagens: o transistor, marcando o incio da segunda gerao de computadores. Alguns projetos criados na gerao anterior foram redesenhados para utilizarem transistores em substituio s vlvulas eletrnicas. Entre outros aspectos de relevncia, o transistor abriu a perspectiva da reduo significativa dos tamanhos dos circuitos eletrnicos digitais. Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fsico, tendo, porm, capacidades de processamento rivalizadas com aquelas dos de grande porte. Talvez o mais famoso tenha sido o PDP-1, fabricado em 1961, com 4 KB de memria principal, palavras de 18 bits e ciclo de 5 microssegundos. O seu preo estava na faixa de 120.000 dlares. Esse projeto evoluiu a ponto de, em poucos anos, surgir o PDP-8, um campeo de vendas na linha dos chamados minicomputadores. A grande inovao desse novo modelo era a utilizao de um recurso denominado barramento unificado, uma novidade na poca na maneira de interligar os componentes internos do computador. Entre os computadores de segunda gerao cuja existncia tornou-se digna de nota, no se pode deixar de mencionar o B5000, produzido pela empresa Burroughs, hoje com a denominao de UNISYS. A preocupao dos seus projetistas, ao contrrio dos que atuavam nas outras empresas do gnero, no era com o hardware e sim com o software. O equipamento foi construdo com a inteno de executar programas codificados em Algol 60, uma linguagem precursora do Pascal. 1. Terceira Gerao Circuitos Integrados (1965-1980) As pesquisas sobre a utilizao do transistor continuaram tendo resultado no surgimento de um novo componente, o circuito integrado. Essa foi a denominao atribuda ao dispositivo resultante da montagem de um conjunto de diversos transistores, interligados de acordo com um plano definido, em uma nica pastilha de silcio (surge, ento, o chip). A principal conseqncia disso foi a possibilidade imediata da construo de computadores mais rpidos, mais baratos e menores que seus ancestrais baseados apenas em transistores. A partir dessa gerao, uma empresa em particular experimentou notvel expanso: a IBM. Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto solues para problemas comerciais quanto para problemas cientficos, utilizando a nova tecnologia de circuitos integrados. Quanto aos aspectos tcnicos, os conceitos de canal e multiprogramao marcaram profundamente essa gerao. O canal representou uma grande inovao na capacidade de ligao de dispositivos perifricos CPU. Tratava-se de um pequeno computador, cuja programao era especificamente voltada a converter sinais entre a CPU e um ou mais perifricos. Eram distinguidos em duas categorias, a saber: canal seletor, para perifricos de alta velocidade e canal multiplexador, para perifricos de baixa velocidade. -4-

Quanto multiprogramao, esta representou uma inovao ainda mais arrojada. Tratava-se de um novo conceito de uso do computador, onde vrios programas podiam ser carregados ao mesmo tempo na memria e disputar a utilizao do processador. Por exemplo, o programa denominado A usava o processador durante um pequeno intervalo de tempo, salvava os resultados intermedirios e em seguida o liberava para o prximo programa da fila de espera. Passando algum tempo, chegava novamente a vez do programa A utilizar o processador, repetindo-se tudo at o final da execuo do mesmo. A velocidade com que tudo isso era feito dava a impresso de que todos os programas estavam funcionando ao mesmo tempo. Ainda durante esse perodo, os minicomputadores ganharam importante espao no mercado, pois eram equipamentos capazes de atender maioria das necessidades das organizaes, porm a custo bem menor que o de um equipamento de grande porte. 3) Quarta Gerao Computadores Pessoais e VLSI (a partir de 1980) O avano da tecnologia eletrnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip. Por volta de 1980, j era possvel colocar milhes de transistores num nico chip, devido tcnica chamada Very Large Scale Integration (VLSI). A conseqncia mais imediata desse fato foi a reduo dos tamanhos e dos preos dos equipamentos, apesar do aumento das suas capacidades de armazenamento. Estava estabelecida a quarta gerao de computadores. A partir dessa poca, profundas mudanas comearam a ocorrer nos hbitos dos usurios, em virtude da possibilidade da miniaturizao dos componentes utilizados na construo de computadores. Durante muito tempo, os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaes como apoio s suas necessidades de informatizao, muito mais devido falta de alternativas tecnolgicas do que real necessidade de usar equipamentos com aquele porte. Computadores de menor porte tornaram-se substitutos naturais para muitos casos onde outrora um mainframe era recomendado. O advento dos chamados microcomputadores, contudo, produziu a mais profunda mudana j ocorrida na indstria de Informtica. De maneira muito repentina, o usurio passou a ter nas mos um grande poder de processamento, que contribuiu de modo definitivo para o processo de dissipar o mito que ainda existia em torno dos grandes computadores. Essa a situao atual em que se encontra a tecnologia da Informtica, estando, cada vez mais, ocorrendo a autonomia do usurio.

-5-

Captulo 2 Organizao de Computadores


1) Conceitos Bsicos Um computador digital uma mquina capaz de nos solucionar problemas atravs da execuo de instrues que lhe so fornecidas. Denomina-se programa uma seqncia 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 programas devem ser convertidos antes que eles possam ser executados. Estas instrues bsicas raramente so mais complicadas do que:

Somar dois valores Verificar se um nmero igual a zero Mover 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 presentes nesta linguagem de mquina. Como a maioria das linguagens de mquina 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 na mquina. Juntas, estas novas instrues formam uma linguagem que chamaremos de L2, exatamente como as instrues embutidas na 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 linguagem de mquina, L1. -6-

Um mtodo de execuo de um programa escrito em L2 consiste, em primeiro lugar, em substituir cada instruo por uma seqncia equivalente de instrues L1. O programa resultante composto inteiramente de instrues L1. O computador ento executa o novo programa em L1 em vez do programa em L2. Esta tcnica conhecida como traduo. A outra tcnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuo examinando uma instruo de cada vez e executando a seqncia 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 seqncias equivalentes de instrues em L1. A diferena que, na traduo, o programa inteiro em L2 primeiramente convertido para um programa em L1, o programa em L2 abandonado, e ento o novo programa em L1 executado. Na interpretao, depois de cada instruo L2 ser examinada e decodificada, ela executada imediatamente. Nenhum programa traduzido gerado. Os programas escritos na linguagem de mquina de um computador podem ser executados diretamente pelos circuitos eletrnicos do computador, sem quaisquer interpretadores ou tradutores intermedirios. Esses circuitos eletrnicos, juntamente com a memria e os 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, terminais, etc. 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 representados em cartes perfurados, fitas magnticas, discos 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 software 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. Um tema central dentro da computao que tambm ser adotado por ns : Hardware e software so logicamente equivalentes. Qualquer operao efetuada pelo software pode tambm ser implementada diretamente no 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.

-7-

2) Organizao Interna de Computadores Um computador formado por: Processadores Memrias Dispositivos de entrada e sada

Esses trs componentes so conectados atravs de barramentos atravs dos quais se faz possvel a comunicao. A organizao de um computador simples, orientado a barramento mostrada na Figura 2.1.
Unidade de Controle Unidade Lgica e Aritmtica Registradores . . . . . . Memria Principal Teclado Impressora

CPU

Dispositivos de entrada e sada

Barramento Figura 2.1: A organizao de um computador simples com uma CPU e dois dispositivos de E/S

2.1)

Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) o crebro do computador. Sua funo executar programas armazenados na memria principal, buscando suas instrues, examinando-as, e ento executando uma aps a outra. A CPU composta por vrias partes distintas. A unidade de controle (UC) responsvel pela busca de instrues da memria principal e determinao de seus tipos. A unidade lgica e aritmtica (ALU) faz operaes (tais como adio e o ou) necessrias execuo das instrues. A CPU contm ainda uma memria pequena, de alta velocidade, usada para armazenar dados (entrada ou sada), resultados temporrios obtidos durante a execuo das instrues e certas informaes de controle. Esta memria formada por um conjunto de registradores, cada qual com uma funo especfica. O registador mais importante o contador de programa (program counter PC), que aponta para a prxima instruo a ser executada. O registrador de instruo (instruction register - IR) tambm importante. Ele contm a instruo que est sendo -8-

executada. A maioria dos computadores tem outros registradores para, por exemplo, o armazenamento de resultados intermedirios. 222222 Execuo de Instrues A CPU executa cada instruo atravs de uma srie de passos: 1. 2. 3. 4. 5. 6. 7. 8. Buscar a prxima instruo da memria para o IR. Atualizar o PC, para que ele aponte para a prxima instruo. Determinar o tipo de instruo. Se a instruo usar dados de memria, determinar onde eles esto. Buscar os dados (se houver algum) para registradores internos da CPU. Executar a instruo. Armazenar os resultados em locais apropriados. Voltar ao passo 1 para iniciar a execuo da prxima instruo.

Esta seqncia de passos freqentemente referida como o ciclo buscadecodifica-executa. Ela o centro da operao de todos os computadores. 222222 Organizao da CPU

A organizao interna de parte de uma CPU von Neumann mostrada na Figura 2.2. Esta parte chamada de fluxo de dados e constitudo por registradores e pela ALU. Os registradores alimentam os dois registradores de entrada da ALU, denominados, na figura, de registradores A e B. Estes registradores mantm as entradas da ALU enquanto ela est executando a operao. A prpria ALU executa adio (como na figura), subtrao e outras operaes simples com suas entradas, produzindo um resultado no seu registrador de sada. Este resultado pode ser armazenado de volta em um registrador da CPU e, de l, de volta memria, se desejado. As instrues podem ser divididas em trs categorias:

Registrador-memria essas instrues permitem que dados sejam buscados da memria para registradores, onde podem ser usados como entradas para a ALU em instrues seguintes, por exemplo. Registrador-registrador um exemplo tpico deste tipo de instruo consiste em buscar dois operandos dos registradores, lev-los para os registradores de entrada da ALU, executar alguma operao com eles e armazenar o resultado de volta num registrador (situao ilustrada na Figura 2.2). Memria-memria sua execuo similar execuo de uma instruo registrador-registrador.

2.2)

Memrias Neste curso, estudaremos os dois principais tipos de memria, a saber: Memria Principal Memria Secundria

-9-

A+B

Registradores

ALU

A+B

Figura 2.2: O fluxo de dados para uma tpica mquina von Neumann

2.2.1) Memria Principal (MP) A memria a parte do computador onde programas e dados so armazenados. Consiste no local de onde a CPU apanha os dados a serem processados, onde guarda valores intermedirios e para onde envia os resultados finais do processamento, sendo assim, um elemento bsico para o funcionamento da CPU. Sem uma memria de onde a CPU possa ler e escrever informaes no existiriam computadores de programa armazenado. A unidade bsica de armazenamento o digito binrio, chamado bit (binary digit). Um bit pode conter os valores 0 ou 1. Um byte consiste num conjunto de 8 bits. Bytes, por sua vez, podem ser agrupados em palavras (words), sendo que o nmero de bytes por palavra pode variar de computador para computador. - 10 -

Endereos de Memria

As memrias so compostas de um determinado nmero de clulas (ou posies), cada uma podendo armazenar uma parte da informao. Cada clula tem um nmero, chamado de seu endereo, pelo qual os programas podem referenci-la. Se a memria tem n clulas, elas tero endereos de 0 a n-1. Todas as clulas em uma memria possuem o mesmo nmero de bits. A figura 2.3 mostra trs organizaes diferentes para uma memria de 96 bits. Note que clulas adjacentes tm endereos 0 consecutivos.
1 2 3 4 5 6 7 8 9 10
8 bits 1 Clula

0 1 2 3 4 5 6 7
12 bits 1 Clula

0
1 Clula

1 2 3 4 5
16 bits

Figura 2.3: Trs formas de organizar uma memria de 96 bits

O significado da clula que ela a menor unidade enderevel. At 11 recentemente, a maioria dos fabricantes de computador padronizavam a clula de 8 bits que, como j visto, chamada de byte. Com a necessidade de maior espao de endereamento, alguns fabricantes comearam a utilizar a word como unidade enderevel, onde uma word pode ser igual a um ou mais bytes, dependendo do fabricante. A unidade de medida de memria igual a 1 byte. A seguir, mostramos as relaes entre a unidade de medida de memria e seus mltiplos:
MltiploAbreviaturaValor1 Kilobyte1 KB210 B = 1024 B1 Megabyte1 MB220 B = 1024 KB1 Gigabyte1 GB230 B = 1024 MB1 Terabyte1 TB240 B = 1024 GB

Principais Tipos de Memrias


RAM (Random Access Memory Memria de Acesso Direto): memrias nas quais as operaes de escrita e leitura so possveis. ROM (Read-Only Memory Memria Somente de Leitura): os dados presentes nessa memria no podem ser modificados sob quaisquer - 11 -

circunstncias. Tais dados so inseridos na memria na hora de sua fabricao e a nica forma de alterar os seus dados a sua substituio. 2.2.2) Memria Secundria Como toda palavra na memria (principal) precisa ser diretamente acessvel em um intervalo de tempo muito curto, ela relativamente cara. Consequentemente, os computadores possuem tambm memrias secundrias que so memrias mais lentas, baratas e tambm so muito grandes. Tais memrias so utilizadas para armazenar grande quantidade de dados que a memria principal no capaz de suportar. i2 Fitas Magnticas A fita magntica foi o primeiro tipo de memria secundria. Uma unidade de fita de computador anloga a um gravador de rolo convencional: uma fita enrolada em um rolo alimentador, passa por uma cabea de gravao e chega a um rolo receptor. Variando a corrente na cabea de gravao, o computador pode gravar informaes na fita em forma de pequenos pontos magnetizados. A Figura 2.4 mostra como a informao organizada em uma fita magntica. Cada frame possui um byte, alm de um bit extra, chamado de bit de paridade, para aumentar a confiabilidade. Aps a unidade de fita terminar a gravao de um registro fsico (uma seqncia de frames), ela deixa um espao na fita, enquanto reduz a velocidade. Se o programa escreve pequenos registros fsicos na fita, a maior parte da fita ser gasta por esses espaos, denominados gaps. A utilizao da fita pode ser mantida alta gravando-se registros fsicos bem maiores que o gap. As fitas magnticas so dispositivos de acesso seqencial. Se a fita est posicionada no incio, para ler o registro n necessrio ler antes os registros fsicos de 1 a n-1, um de cada vez. Se a informao desejada se encontra prxima ao fim da fita, o programa ter que ler quase a fita inteira, o que poder levar vrios minutos. Forar a CPU, que pode executar milhes de instrues por segundo, a esperar, por exemplo, 200 segundos enquanto a fita avana, um desperdcio. Por isso, as fitas so mais adequadas quando os dados precisam ser acessados seqencialmente.
Registro Fsico Gap entre registros

trilha

Direo do movimento da fita

Figura 2.4: A informao gravada na fita como uma seqncia de matrizes retangulares de bits

frame

- 12 -

ii2

Discos Rgidos

Um disco um pedao metal ao qual uma cobertura magnetizvel foi aplicada no processo de fabricao, geralmente de ambos os lados. A informao gravada em um certo nmero de crculos concntricos chamados trilhas (veja Figura 2.5). Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfcie. Cada unidade de disco possui uma cabea mvel que pode aproximar-se ou afastar-se do centro do disco. A cabea suficientemente pequena para ler ou gravar informaes exatamente em uma trilha. A unidade de disco possui freqentemente vrios discos empilhados verticalmente. Em tal configurao, o brao de leitura ter uma cabea prxima a cada superfcie, e todas se movem juntas. A posio radial das cabeas (distncia do eixo) chamada cilindro. Uma unidade de disco com n pratos (e 2n faces) ter 2n cabeas, e, portanto 2n trilhas por cilindro. As trilhas so divididas em setores, e h normalmente entre 10 e 100 setores por trilha. Um setor consiste em um certo nmero de bytes, tipicamente 512.
Cabea de leitura/gravao (uma por face)

Direo do movimento do brao

Figura 2.5: Um disco com quatro pratos

Para especificar uma transferncia, o programa deve fornecer as seguintes informaes: O cilindro e a superfcie, que juntos definem uma nica trilha; O nmero do setor onde comea a informao; O nmero de palavras a serem transferidas; O endereo na memria principal de onde a informao vem ou para onde vai; Se a informao para ser lida do disco ou se para ser escrita nele.

As transferncias de informao no disco sempre comeam no incio de um setor, nunca no meio. Se uma transferncia de mltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro, nenhum tempo perdido porque a mudana de uma cabea para outra feita eletronicamente. Entretanto, se a transferncia atravessa o - 13 -

limite de um cilindro, o tempo de uma rotao pode ser perdido no reposicionamento das cabeas no prximo cilindro e na espera pelo setor 0. Se a cabea de leitura est sobre um cilindro errado, ela precisa primeiramente ser movida. Este movimento chamado seek (procura), e o seu tempo denominado seek time. Uma vez que a cabea est posicionada corretamente, necessrio esperar at que o setor inicial passe sob a cabea, antes de iniciar a transferncia. Este tempo, por sua vez, conhecido como latncia rotacional. O tempo total de acesso igual ao seek time mais a latncia rotacional mais o tempo de transferncia. Quase todos os computadores utilizam discos com vrios pratos, como descrito anteriormente, para o armazenamento de dados. Eles so freqentemente denominados discos rgidos (hard disks - HD). O tipo mais conhecido o disco winchester, que uma unidade selada (para evitar contaminao com poeira). As cabeas em uma unidade winchester tm forma aerodinmica e flutuam em um colcho de ar gerado pela rotao dos pratos. iii2 Discos Flexveis

Com o advento dos computadores pessoais, foi necessria uma forma de distribuir software. A soluo foi encontrada no disquete ou disco flexvel (ou ainda floppy disk), um meio pequeno e removvel, assim chamado porque os primeiros eram fisicamente flexveis. Diferentemente dos discos winchester, onde as cabeas flutuam sobre a superfcie, as cabeas das unidades de disquetes realmente os tocam. Como resultado, tanto o meio quanto s cabeas desgastam comparativamente mais rpido. Para reduzir o desgaste, os PCs recolhem as cabeas e param a rotao enquanto a unidade no est lendo ou escrevendo. Consequentemente, quando o prximo comando de leitura ou escrita dado, h um atraso enquanto o motor acelera. iv2 Discos ticos

Nos ltimos anos, discos ticos (em oposio aos magnticos) tornaram-se disponveis. Tais discos foram inicialmente desenvolvidos para gravar programas de televiso, mas eles logo passaram a tambm ser utilizados como dispositivos de armazenamento de computadores. Tais discos possuem uma capacidade de armazenamento muito superior aos discos magnticos e devido a esta capacidade, os discos ticos tm sido objeto de grande pesquisa e vem sofrendo uma evoluo incrivelmente rpida. A primeira gerao de discos ticos se baseia na mesma tecnologia dos compact discs usados em udio, e os discos presentes nesta gerao so chamados CD-ROMs (Compact Disk Read Only Memory). Informaes em um CD-ROM so escritas como um espiral nico contnuo, diferentemente dos discos magnticos com suas trilhas e cilindros discretos. Os CD-ROMs so potencialmente teis na distribuio de grandes bases de dados, especialmente aquelas que misturam textos e imagens. Uma biblioteca completa de leis, medicina ou literatura de 250 livros grossos cabe facilmente em um CD-ROM, assim como uma enciclopdia totalmente ilustrada. Um curso por computador formado - 14 -

por milhares de slides coloridos, cada qual acompanhado por 10 segundos de narrao, outro candidato para CD-ROM. Apesar desse enorme potencial, os CD-ROMs no so escrevveis, o que limita sua utilidade como dispositivos de armazenamento de computadores. A inteno de se ter um meio escrevvel conduziu prxima gerao: os discos ticos WORM (Write Once Read Many). Este dispositivo permite que os usurios escrevam informaes nos discos ticos, mas isso s pode ser feito uma vez. Tais discos so bons para arquivar dados, relatrios, e outras informaes que so (semi) permanentes. Eles no so muito apropriados para guardar arquivos temporrios de rascunho. Mas, dada a grande capacidade desses discos, o estilo descartvel de apenas acrescentar arquivos temporrios at que o disco esteja cheio, e ento jog-lo fora, aceitvel. claro que a existncia de discos que s podem ser escritos uma vez provoca um impacto na forma em que os programas so escritos. A terceira fase de evoluo dos discos ticos o meio tico apagvel. Discos ticos escrevveis no iro substituir os discos winchester convencionais por algum tempo por duas razes. Primeiro, o seu seek time muito superior ao dos discos winchester. Depois, sua taxa de transferncia bem inferior apresentada pelos discos magnticos. Por isso, o desempenho dos discos magnticos simplesmente muito melhor. Enquanto os discos ticos iro sem dvida melhorar com o tempo, os discos magnticos iro, provavelmente, melhorar to rpido quanto, mantendo-se na frente. 2.3) Dispositivos de Entrada e Sada

Antes de um computador trabalhar na soluo de um problema, devemos fornec-lo o programa e os dados. Da mesma forma, aps encontrar a soluo para este problema, o computador dever nos apresent-la. O processo de fornecer informaes ou obt-las dos computadores chamado entrada/sada, ou simplesmente E/S. 2.3.1) Dispositivos de Entrada Caracterizam-se como de entrada, todos os dispositivos que possibilitam o fluxo de dados no sentido do meio exterior para a memria principal.

Teclado

Muito utilizados em equipamentos de automao bancria, microcomputadores, terminais remotos, balanas eletrnicas. Existem dois tipos bsicos de teclados: os que tm apenas teclas numricas e os "completos".

Leitora tica

Dispositivo destinado leitura de informaes representadas atravs de cdigos de barra. A sua utilizao bastante difundida em terminais de automao comercial.

Scanner

Dispositivos destinados a capturar dados, que sejam representados quer por cdigo de barras, quer na forma de textos ou de imagens. Seu uso vem sendo muito - 15 -

difundido tanto em aplicaes de automao comercial quanto na produo e edio de textos e imagens estticas.

Leitora de Cartes Magnticos

Equipamentos de automao bancria utilizam leitoras de cartes magnticos, como uma forma de identificar os clientes do banco. Escolas e empresas utilizam esse dispositivo como uma forma de determinar a presena, ou ausncia, de pessoas nas suas atividades. Os cartes possuem uma tarja magntica previamente gravada contendo informaes que indicam o seu usurio, funcionando assim como uma chave de acesso.

Mouse

Dispositivo utilizado na ativao e operao de programas, quando funcionando em ambientes grficos. Transforma o movimento bidimensional conduzido pela mo do operador no movimento de um apontador na tela do computador. Uma vez posicionada a figura, em geral uma seta, no local apropriado, ativa-se o programa atravs da presso de um dos botes existentes na parte superior do dispositivo. 2.3.2) Dispositivos de Sada Os dispositivos de sada funcionam de maneira inversa daquela dos dispositivos de entrada, isto , possibilitam o fluxo de dados no sentido da memria proncipal para o meio exterior.

Monitor de Vdeo

Indispensvel nos atuais terminais remotos e nos microcomputadores, os monitores de vdeo permitem uma interao imediata entre o operador com o equipamento de computao. atravs dos monitores de vdeo que os equipamentos de computao respondem s solicitaes dos operadores, alm de "ecoar" o que digitado no teclado. Os aspectos mais significativos para caracteriz-lo so o tamanho da tela, exibio ou no de imagens em cores e resoluo da imagem.

Impressora

Os resultados produzidos pelo computador na resoluo de um problema, quando representados em papel, so gerados pela impressora. Dentre as variadas formas de impresso, podemos destacar os seguintes:

Matriciais Jato de Tinta / Cera Laser

2.3.3) Dispositivos de Entrada/Sada

Unidades de Fitas Magnticas

Nos denominados "centros de computao", ainda existentes nas empresas, contendo equipamentos de grande porte (mainframes), grandes volumes de dados so armazenados em rolos de fitas magnticas, por ser um meio bem mais barato do que os - 16 -

discos magnticos. Os equipamentos capazes de ler ou gravar rolos de fitas magnticas so conhecidos pela denominao de unidades de fitas magnticas.

Unidades de Discos Magnticos

A principal caracterstica dos discos magnticos a possibilidade dos mesmos apresentarem acesso a qualquer grupo de dados (arquivo) tanto para leitura quanto para gravao de um determinado registro. As fitas magnticas, apesar de efetuarem leitura e gravao de dados, somente podem operar em uma das duas modalidades por vez, aps a abertura do arquivo. Uma unidade de discos magnticos tem como componentes um brao de acesso contendo vrios cabeotes de leitura e gravao, e diversas superfcies circulares de onde podem ser lidos ou onde podem ser gravados os dados. As unidades de discos podem ser destinadas a comportar discos removveis ou discos fixos, de maneira exclusiva.

Unidades de Discos ticos Dispositivos de Comunicao

Com o crescimento do uso de computadores no passado, comum que um computador precise comunicar-se com outro. Por exemplo, muitas pessoas possuem computadores pessoais em casa que elas utilizam para se comunicar com seus computadores no trabalho, com sistemas bancrios, ou sistemas de boletins eletrnicos. Todas essas aplicaes usam o telefone como meio de comunicao. Acontece que os dados armazenados no computador no so suportados pelo sistema telefnico, devido incompatibilidade de sinais existente. Para solucionar esse problema um dispositivo, chamado modem (modulador-demodulador), precisa ser inserido entre o computador e o telefone para realizar a converso de sinais, como mostrado na Figura 2.6.
Sinal digital
Modem Modem

Linha telefnica (sinal analgico)

Figura 2.6: Conexo entre dois computadores

- 17 -

Captulo 3 Lgica e Aritmtica Binria


1) Sistema Binrio de Numerao Um sistema de numerao tem por finalidade permitir a quantificao das coisas que nos cercam. formado por um conjunto de algarismos, um conjunto de regras estabelecendo como representar quantidades numricas com os algarismos e um conjunto de operaes que podem ser efetuadas sobre as referidas quantidades numricas. A maioria das pessoas utiliza o sistema de numerao de base dez na sua vida diria. Isso faz com que passem despercebidos alguns detalhes que so comuns a todos os sistemas de numerao, de modo que, caso desejarmos utilizar outro com base diferente de dez, certamente vamos achar profundamente estranho. A fim de entender melhor as semelhanas, vamos examinar um nmero escrito na base dez e fazer a sua decomposio em mltiplos de dez, como abaixo: 34.527 = 30.000 + 4.000 + 500 + 20 +7 = 3 10.000 + 4 1.000 + 5 100 + 2 10 + 7 1 = 3 104 + 4 103 + 5 102 + 2 101 + 7 100 Como podemos ver, a decomposio foi uma operao muito simples e pode ser repetida facilmente com qualquer outro nmero. Observe que na ltima linha, onde aparece a decomposio final, os algarismos que compem o nmero pertencem ao conjunto D = {0,1,2,3,4,5,6,7,8,9} e esto multiplicando potncias de dez. De uma r 18 N = ( n k .10 k )
k =0

maneira geral, qualquer nmero, N, escrito na base dez, representado da seguinte forma: onde nk pertence ao conjunto D. Agora que j sabemos a estrutura de um nmero qualquer no sistema decimal, como dever ser a estrutura desse mesmo nmero no sistema de numerao de base dois (ou sistema binrio de numerao)? Procederemos de maneira anloga ao feito com o sistema decimal. Como sabemos trabalhar muito bem com o sistema decimal, vamos partir de um nmero (43, por exemplo) representado nesse sistema e avanar por partes. Inicialmente, escreve-se o nmero como uma soma de potncias de dois, isto : 43 = 32 + 8 + 2 + 1 Todos os nmeros ainda esto representados atravs de algarismos da base dez. Em seguida, vamos escrever os componentes da decomposio como potncias de dois: 43 = 25 + 23 + 21 + 20 Observe que o maior componente da decomposio o 5 e o menos o 0. Contudo, alguns valores de expoentes esto ausentes na decomposio. Alm disso, todos os coeficientes que multiplicam as potncias de dois tm valor igual a 1, que est implcito, enquanto que no exemplo na base dez algarismos variados multiplicavam as potncias de dez. A fim de completar a seqncia de parcelas na decomposio, vamos escrev-la de modo que os coeficientes multiplicando as potncias do sistema de base de numerao sejam explicitados. Ento, tem-se: 43(10) = 1 25 + 0 24 + 1 23 + 0 22 + 1 21 + 1 20 O nmero esquerda do sinal de igualdade, 43, est com o ndice 10 para indicar que a representao de um valor expresso na base dez. Naturalmente, o que est direita da igualdade tambm representa a mesma quantidade que o 43, porm apenas com um aspecto diferente. Finalmente, podemos escrever a representao do nmero 43 na base dois, simplesmente justapondo os coeficientes que multiplicam as potncias de base dois, de modo que: 43(10) = 1010112 O ndice 2 no nmero direita da igualdade indica que aquela uma representao no sistema binrio. Observe que apenas os algarismos do conjunto B = {0,1} so utilizados na representao de qualquer nmero no sistema binrio. Mas, qual o interesse de se transformar um nmero decimal, com o qual estamos to acostumados, para um nmero binrio, cuja representao nos parece to estranha? Isso tudo porque o computador utiliza o sistema binrio de numerao, o que obriga a converso de qualquer nmero decimal para binrio. A seguir, apresentada uma tcnica mais simples para a converso decimalbinrio assim como o contrrio, ou seja, a converso binrio-decimal. 1.1) Nmeros Decimais Nmeros Binrios - 19 -

Essa transformao feita atravs de sucessivas divises por 2 at que o quociente obtido seja igual a 1. O funcionamento desse mecanismo ficar mais claro com o seguinte exemplo: 14(10) = ???(2) 14 | 2 0 7 |2 1 3 |2 1 1 Quociente igual a 1 Fim das divises

O resultado a seqncia obtida pelos nmeros sublinhados seguindo o sentido da seta, ou seja, 14(10) = 1110(2). 1.2) Nmeros Binrios Nmeros Decimais

Todo nmero binrio pode ser visto como uma seqncia de dgitos como mostrado a seguir: dn dn-1 ... d2 d1 d0 onde cada um dos dgitos deve ser igual a 0 ou 1 e n o total de dgitos que compem o nmero binrio. O nmero decimal N correspondente a essa seqncia de dgitos dado por: N(10) = d0 20 + d1 21 + d2 22 + ... + dn-1 2n-1 + dn 2n Exemplo: 1110(2) = ???(10) d3 d2 d1 d0 1 1 1 0

N = 0 20 + 1 21 + 1 22 + 1 23 N = 0 + 2 + 4 + 8 = 14(10)

2 2 Adio Binria A
0 0 1 1

B
0 1 0 1

A+B
0 1 1 0

Vai um?
No No No Sim

Exemplos:
1 1 1 1 1

1 1 0 1 = 13(10) + 1 1 0 = +6(10) 1 0 0 1 1 = 19(10)

1 1 1 = 7(10) + 1 1 = +3(10) 1 0 1 0 = 10(10)

2 2 Subtrao Binria O mecanismo utilizado pela subtrao binria um pouco diferente do que estamos acostumados com a subtrao decimal. Para isto, utilizamos a seguinte igualdade: A B = A + (-B) , o que nos faz obter, atravs de uma soma, o resultado da subtrao. - 20 -

Mas como podemos obter o valor B num sistema binrio? Utilizaremos o mtodo conhecido por complemento de dois. Para isso, deveremos utilizar um bit de sinal (BS) que indicar se o nmero positivo (BS = 0) ou negativo (BS = 1) e o BS consistir no bit mais esquerda do nmero em questo. O processo consiste nos seguintes passos: ) Cada 1 substitudo por 0 e cada 0 por 1 (complemento de um). ) Ao resultado, somado 1. Se no resultado desta soma houver um vai-um no bit mais esquerda, o vai-um desprezado. Agora que j temos em mos os valores A e B podemos calcular A + (-B) atravs da adio binria. Se o bit mais esquerda do resultado for igual a 0, ento o resultado positivo; por outro lado, se for igual a 1, o resultado obtido negativo e est em complemento de dois. Exemplos (por conveno, utilizaremos 8 bits para representar um nmero decimal): Calcular as seguintes operaes utilizando a aritmtica binria: a) 15(10) 7(10) = 15(10) + (-7) (10) 15(10) = 00001111(2) -7(10) = ???? (2)
BS = 0 Nmero positivo

7(10) = 0 0 0 0 0 1 1 1 11111000 + 1 11111001


1 1 1 1 1 1 1 1

7 em binrio Complemento de um Soma 1 -7 (complemento de dois) BS = 1 Nmero negativo

00001111 +11111001 1 0 0 0 0 1 0 0 0 = 8(10)


BS = 0 Resultado positivo Vai-um no bit mais esquerda deve ser ignorado

b) 9(10) 13(10) = 9(10) + (-13) (10) 9(10) = 00001001(2) -13(10) = ???? (2)
BS = 0 Nmero positivo

13(10) = 0 0 0 0 1 1 0 1 13 em binrio 1 1 1 1 0 0 1 0 Complemento de um + 1 Soma 1 - 21 -

1 1 1 1 0 0 1 1 -13 (complemento de dois)


BS = 1 Nmero negativo
1 1

00001001 +11110011 11111100


BS = 1 Resultado negativo

O resultado obtido da forma A, uma vez que o BS = 1. Agora, devemos ento descobrir o valor de A e isto feito atravs do uso de complemento de dois que nos retornar o valor (-A) = A. 11111100 00000011 + 1 00000100
-A Complemento de um Soma 1 A = 4(10)

O Resultado igual a -A = -4(10)

22 Operadores Lgicos Os operadores lgicos binrios esto associados s trs principais operaes da Teoria dos Conjuntos: interseco, unio e complementao.

B
AB

A 1 1 0 0

B 1 0 1 0

A ou B 1 1 1 0

B
AB

A 1 1 0 0

B 1 0 1 0

AeB 1 0 0 0

A - 22 A

A 1 0

no A 0 1

Exemplos: Seja A = 01010101, B = 11110000 e C = 00110011. Resolver as seguintes operaes: a) A e B 01010101 11110000 01010000 b) A ou C ou B 01010101 00110011 11110000 11110111 c) (A e no B) ou C 01010101 00001111 00000101 00000101 00110011 00110111
A no B A e no B A e no B C (A e no B) ou C A C B A ou C ou B A B AeB

Exerccios:
1) Converter os seguintes nmeros decimais para binrio: 37, 400, 1015, 8192 2) Converter os seguintes nmeros binrios para decimal: 1001, 11000011, 1001101001 3) Com os resultados obtidos na questo1, resolver as seguintes operaoes substituindo os valores decimais por seus respectivos valores binrios:
37 + 400 8192 - 1015 400 - 1015 37 e 1015

- 23 -

(no 400 ou 8192) e 37 (400 ou 1015) e no (37 e 8192)

Captulo 4 Linguagens de Programao


1) Introduo Como j visto, um computador formado essencialmente por hardware e software. At o momento, temos estudado a sua organizao interna (CPU, memria e dispositivos de E/S) e como a informao processada e como pode ser armazenada nele, o que caracteriza o estudo do hardware da mquina. Mas j sabemos que o hardware no funciona sozinho. Ele precisa de um agente que lhe d instrues do que deve ser feito e como. Este agente denominado software e consiste num conjunto de programas que gerenciam o funcionamento do hardware, permitindo, dessa forma, um funcionamento harmnico entre hardware e software. O desenvolvimento de novos softwares consiste no que chamamos de programao e o desenvolvedor destes conhecido como programador. O desenvolvimento de sistemas complexos, como, por exemplo, os sistemas operacionais, sistemas de reservas de passagens areas, sistemas de bancos, seria provavelmente impossvel se os seres humanos fossem obrigados a expressar suas idias diretamente em linguagem de mquina, linguagem esta que a nica a ser compreendida pelo computador. Trabalhar com um volume significativo de detalhes - 24 -

complexos , no mnimo, uma experincia desgastante. Como conseqncia, mecanismos denominados linguagens de programao, foram desenvolvidos com o objetivo de nos permitir expressar nossas idias de uma forma mais agradvel e tambm mais fcil de ser posteriormente traduzida para linguagem de mquina. Tais linguagens evitam a complexidade dos registradores, endereos e acessos memria durante o processo de desenvolvimento de programas, concentrando-se, em lugar disso, nas caractersticas do problema a ser solucionado. 2) Um pouco de histria Originalmente, o processo de programao era realizado de uma forma bem trabalhosa e tediosa, em que o programador escrevia todos os seus programas em linguagem de mquina, ou seja, em linguagem binria, que caracterizou a primeira gerao de linguagens de programao. Este mtodo teve grande importncia para a j ento rigorosa atividade de desenvolvimento de softwares, mas apresentava, entre outros, um grande problema: o aparecimento de uma vasta gama de erros cuja deteco se torna mais complicada com o aumento no tamanho dos programas. O primeiro passo para simplificar o processo de programao foi o de eliminar o uso de dgitos numricos para representar os cdigos de operao e os operandos, presentes nas linguagens de mquina. Para esta finalidade, foi comum o emprego de mnemnicos para representar os diversos cdigos de operaes. Com isso, em vez de empregar o cdigo de operao numrico correspondente instruo de carregar um registrador, o programador escreveria, por exemplo, LD, ou para simbolizar o armazenamento, na memria, do contedo de um registrador, usaria ST. No caso dos operandos, foram estabelecidas regras segundo as quais o programador atribua nomes (em geral chamados identificadores) s posies de memria, e os utilizava nas instrues em lugar dos endereos numricos de posies de memria. Um caso particular deste uso foi a utilizao de nomes como R0, R1, R2, ... para os registradores do processador. Escolhendo nomes para as posies de memria e usando mnemnicos para representar cdigos de operao, os programadores facilitaram significantemente a leitura de seqncias de instrues de mquina, como o exemplo ilustrado na Figura 4.1.
156C LD R5, Valor LD R6, Imposto 166D ADD R0, R5, R6 5056 ST R0, Total 306E Figura 4.1: Representao de uma seqncia de instrues de mquina em linguagem mnemnica

Quando estas tcnicas foram introduzidas, os programadores escreviam em papel os programas nesta notao, e depois os traduziam para uma forma que fosse utilizvel em mquinas. No demorou, porm, que este processo de traduo fosse, ele prprio, identificado como um procedimento que poderia ser executado pela mquina. Como conseqncia, o uso de mnemnicos foi formalizado como uma linguagem de programao, chamada linguagem assembly ou linguagem de montagem e esta caracterizou a segunda gerao de linguagens de programao. - 25 -

Problema: uma vez que o computador s entende linguagem de mquina, como poderia um programa de 2 gerao ser compreendido pela mquina? Soluo: criao de um programa capaz de interpretar os comandos em linguagem de 2 gerao para linguagem de mquina. Tal programa recebeu o nome de Assembler. Soluo: gerao de um programa capaz de interpretar os comandos em linguagem de 2 gerao para linguagem de mquina. Tal programa recebeu o nomeEmbora as linguagens de programao de segunda gerao apresentassem de Assembler. muitas vantagens sobre as linguagens de mquina, ainda estavam longe de oferecer um ambiente adequado de programao. Afinal de contas, as primitivas utilizadas na linguagem assembly eram, essencialmente, as mesmas encontradas nas linguagens de mquina correspondentes. A diferena estava, simplesmente, na sintaxe usada para represent-las. Uma conseqncia desta forte associao entre linguagem assembly e linguagem de mquina que qualquer programa escrito em assembly , inerentemente, dependente da mquina. Isto quer dizer que as instrues de um programa so expressas em termos dos atributos de uma mquina em particular. Por sua vez, um programa assembly no pode ser transportado com facilidade de uma mquina para outra, pois teria que ser reescrito de forma compatvel com a configurao de registradores e com o conjunto de instrues da nova mquina. Outra desvantagem da linguagem assembly que, embora o programador no seja forado a programar as instrues na forma de padres de bits, seu raciocnio continua voltado s mincias da organizao interna da mquina. Em vista de tais desvantagens apresentadas pela linguagem assembly, os pesquisadores de computao comearam a desenvolver linguagens de programao que fossem mais direcionadas ao desenvolvimento de software. O resultado foi o aparecimento de uma terceira gerao de linguagens que se distinguiram das anteriores pelo fato de suas primitivas serem de nvel mais alto, e independentes da mquina. Tais linguagens so classificadas como linguagens de alto nvel e as linguagens de mquina e assembly, baixo nvel. Em geral, o objetivo das linguagens de terceira gerao foi identificar um conjunto de primitivas de alto nvel com as quais o software seria desenvolvido. Cada uma destas primitivas foi projetada para ser implementada atravs de uma seqncia de primitivas de baixo nvel, disponveis nas linguagens de mquina. Problema: agora, como o computador entenderia um programa escrito em linguagem de 3 gerao?

Soluo: criao de um programa tradutor capaz de traduzir os comandos em linguagem de 3 gerao para 2 gerao, ou, diretamente para linguagem de mquina. - 26 -

Com o desenvolvimento das linguagens de alto nvel, o objetivo da independncia de mquina foi amplamente alcanado. Dado que os comandos das linguagens de terceira gerao no referenciam os atributos de uma dada mquina, eles podem ser facilmente compilados tanto em uma mquina quanto em outra. Assim, um programa escrito em linguagem de terceira gerao passa a poder (teoricamente) ser usado em qualquer mquina, bastando escolher o compilador correspondente.

Segue-se abaixo um resumo das geraes de linguagens de programao assim como as principais caractersticas de cada uma delas: 1 gerao de linguagens: linguagem de mquina. Possui este nome pois a lngua falada e compreendida pelo computador. composta por apenas dois smbolos (0 e 1) e cada instruo consiste numa seqncia destes smbolos. Cada computador possui sua prpria linguagem de mquina, fato que caracteriza a dependncia direta do equipamento. O programador desta linguagem tem que conhecer profundamente toda a organizao interna do computador.

2 gerao de linguagens: linguagem assembly. Pouco mudou o panorama da gerao anterior. Apesar dos conjuntos de caracteres binrios terem sido substitudos por smbolos mnemnicos, permanecia a dificuldade no tratamento com esses smbolos. Houve ganhos com a mudana, pois foi bastante reduzida a possibilidade de se cometer erros. Permanecia a exigncia do programador ter um profundo conhecimento dos detalhes internos do computador, isto , a dependncia do equipamento ainda era to forte quanto na gerao anterior.

3 gerao de linguagens: linguagens de alto nvel. As mudanas foram profundas com respeito s geraes anteriores. Aperfeioaram-se no apenas o aspecto mnemnico, como tambm foi reduzida a necessidade de conhecimento profundo do computador onde o programa seria submetido. A independncia do equipamento foi um objetivo alcanado, pois j era possvel desenvolver solues para problemas sem a preocupao de saber em qual mquina iria a mesma ser implementada.

- 27 -

Exemplos: FORTRAN, COBOL, Basic, Pascal, C, C++.

Mdulo Fonte Linguagem de Alto Nvel

Mdulo Objeto Linguagem de Mquina

Compilador

Assembly

Assembler

Compilador

Figura 4.2: Funcionamento de um compilador

- 28 -

Captulo 5 Sistemas Operacionais e Redes de Computadores


As atuais aplicaes dos computadores exigem, freqentemente, que uma nica mquina execute tarefas que possam competir pela posse dos recursos disponveis na mquina. Por exemplo, uma mquina pode ser conectada a vrios terminais ou estaes de trabalho atendendo, simultaneamente, a diversos usurios. At mesmo em computadores pessoais, os usurios podem executar vrias atividades ao mesmo tempo, tais como a impresso de um documento, a modificao de outro e a criao de um grfico a ser inserido em algum trabalho. Este tipo de utilizao exige um alto grau de coordenao para evitar que atividades independentes interfiram umas nas outras, garantindo ainda uma comunicao eficiente e confivel entre atividades interdependentes. Tal coordenao efetuada por um programa denominado Sistema Operacional. 1) Evoluo dos Sistemas Operacionais

Sistemas Monoprocessados:

As mquinas de um nico processador, das dcadas de quarenta e cinqenta, no eram flexveis nem muito eficientes. A execuo de programas exigia uma considervel preparao de equipamentos, incluindo a montagem de fitas e a colocao fsica de cartes perfurados em leitoras de carto, o posicionamento de chaves, e assim por diante. Logo, a exececuo de cada programa, chamada de job, se tornava uma tarefa bem desgastante. Quando vrios usurios desejavam compartilhar uma mesma mquina, era comum o emprego de folhas de reserva de horrio. Durante o perodo de tempo alocado a um usurio, a mquina ficava totalmente sob sua responsabilidade e controle. A sesso normalmente comeava com a instalao do programa, seguida de curtos perodos de execuo do mesmo, e era freqentemente finalizada com um esforo desesperado de fazer alguma coisa adicional, enquanto o usurio seguinte j comeava a exibir indcios de impacincia. Em ambientes assim, os sistemas operacionais comearam a surgir como ambientes de software destinados a simplificar a instalao dos programas do usurio e a tornar mais suave a transio de um job e outro. Um primeiro progresso consistiu na separao entre usurios e equipamentos, eliminando a movimentao fsica de pessoas - 29 -

para dentro e para fora da sala do computador. Para isso, um operador de computadores era contratado para executar a operao propriamente dita da mquina. Aos que desejassem usar o computador, era solicitado que os programas a serem executados fossem submetidos ao operador, juntamente com os dados necessrios e com eventuais instrues especiais sobre a operao do programa, devendo o usurio retornar posteriormente para receber os resultados. O operador, por sua vez, transferia esse material para a memria, de onde o sistema operacional poderia acess-los, para promover sua execuo. Os jobs presentes na memria aguardavam para serem executados em uma fila de jobs (processamento em batch/lotes). A principal desvantagem dos tradicionais processamentos em lotes a falta de interao do usurio com o programa uma vez submetido este ltimo fila de jobs. Este procedimento aceitvel para algumas aplicaes, como o caso do processamento de folhas de pagamento, em que os dados e todas as decises do processo esto estabelecidos a priori. Contudo, no aceitvel quando o usurio necessita interagir com o programa durante a sua execuo. Como exemplo, pode-se citar os sistemas de reserva de passagens ou similares, pois tanto as reservas como os cancelamentos devem ser notificados assim que ocorrerem. Outro exemplo corresponde aos sistemas de processamento de texto, pois neles os documentos so escritos e reescritos dinamicamente. Um outro exemplo ainda so os jogos para computadores, para os quais a interao com a mquina a caracterstica mais significativa. Para satisfazer essas necessidades, novos sistemas operacionais foram desenvolvidos, capazes de proporcionar tal processo interativo. Esses sistemas permitem a execuo de programas que mantenham dilogo com o usurio atravs de terminais ou estaes de trabalho. Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real. Essa denominao se deve necessidade de coordenao das atividades executadas pela mquina com outras que se passam no ambiente em que a mquina est imersa. Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs, os atuais usurios passaram a exigir uma resposta muito rpida do sistema, com o qual se comunicam remotamente a partir de suas estaes de trabalho. Se os sistema interativos permitissem atender a apenas um usurio de cada vez, o processamento em tempo real no deveria apresentar qualquer problema. Porm, computadores eram caros, e, por isso, cada um deles deveria servir simultaneamente a mais de um usurio. Por outro lado, sendo comum o fato de vrios usurios solicitarem servios interativos ao computador ao mesmo tempo, as caractersticas exigidas de um sistema de tempo real passaram a constituir um obstculo concreto. Se o sistema operacional, neste ambiente de multiusurios, insistisse em executar somente um job de cada vez, um nico usurio apenas acabaria recebendo um atendimento satisfatrio em tempo real. Uma soluo para este problema podera ser trazida por um sistema operacional que revezasse a execuo dos vrios jobs atravs de um processo denominado compartilhamento de tempo (time-sharing). Mais precisamente, time-sharing refere-se tcnica de dividir o tempo em intervalos ou fatias (time slices), e restringir a execuo, dentro de cada uma dessas fraes de tempo, a um job de cada vez. Ao trmino de cada um desses intervalos, o job corrente retirado do processamento e um outro acionado. Revezando rapidamente, desta maneira, a execuo dos jobs, cria-se a iluso de que vrios jobs esto sendo executados simultaneamente. Dependendo dos tipos de jobs que - 30 -

estivessem sendo executados, os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usurios, com uma aceitvel resposta em tempo real. Atualmente, a tcnica de time-sharing utilizada tanto em sistemas com um nico usurio como tambm em ambientes multiusurios, embora o primeiro seja, usualmente, denominado multitasking, referindo-se iluso que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo. Independentemente do nmero de usurios do ambiente, constatou-se que o conceito de time-sharing promovia o aumento da eficincia global de uma mquina. Esta constatao mostrou-se particularmente surpreendente ao se levar em conta o considervel processamento adicional exigido para a implementao do revezamento que caracteriza a tcnica de time-sharing. Por outro lado, na ausncia de time-sharing, um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifricos completem suas tarefas, ou que um usurio faa sua prxima solicitao ao sistema. Em ambientes com time-sharing este tempo pode ser cedido a alguma outra tarefa. Assim, enquanto uma tarefa espera pela sua vez de utilizar o processador, a outra pode prosseguir a sua execuo. Como resultado, em um ambiente time-sharing, um conjunto de tarefas pode ser concludo em tempo menor do que o faria se executado de modo seqencial.

Sistemas Multiprocessados:

Mais recentemente, a necessidade de compartilhar informao e recursos entre diferentes mquinas suscitou o desejo de unir tais mquinas para o intercmbio de informao. Para preencher tal necessidade, popularizaram-se os sistemas com computadores interconectados, conhecidos como redes de computadores. De fato, o conceito de uma mquina central grande, servindo a muitos usurios, foi substitudo pelo conceito de muitas mquinas pequenas, conectadas por uma rede na qual os usurios compartilham recursos espalhados pela rede (tais como servio de impresso, pacotes de software, equipamentos de armazenamento de dados). O principal exemplo a Internet, uma rede de redes que hoje une milhes de computadores do mundo todo. Muitos dos problemas de coordenao que ocorrem em projetos de redes so iguais ou semelhantes aos enfrentados pelos sistemas operacionais. De fato, o software de controle de rede pode ser visto como um sistema operacional projetado para grandes redes. Deste ponto de vista, o desenvolvimento de software de redes uma extenso natural do campo dos sistemas operacionais. Enquanto as redes mais antigas foram construdas como um conjunto de computadores individuais, levemente interligados, cada qual sob o controle do seu prprio sistema operacional, as recentes pesquisas na rea de redes esto se concentrando nos sistemas estruturados como grandes redes, cujos recursos so igualmente compartilhados entre as tarefas presentes na rede. Essas tarefas so designadas para serem executadas nos processadores da rede, de acordo com a necessidade, sem levar em considerao a real posio fsica de tais processadores. As redes representam apenas um exemplo dos projetos de multiprocessadores que esto inspirando o desenvolvimento dos modernos sistemas operacionais. Enquanto uma rede produz um sistema multiprocessado mediante a combinao de mquinas, cada qual contendo apenas um nico processador, outros sistemas multiprocessadores so projetados como computadores nicos, contendo, porm, mais de um processador. Um sistema operacional para tais computadores no apenas coordenar a competio entre as vrias tarefas que so de fato executadas simultaneamente, mas tambm controlar a alocao de tarefas aos diversos processadores. Este processo envolve - 31 -

problemas de balanceamento de carga (para garantir que os processadores sejam utilizados de modo eficiente) bem como escalonamento (diviso das tarefas em vrias subtarefas, cujo nmero seja compatvel com o nmero de processadores disponveis na mquina). Desta forma, o desenvolvimento de sistemas multiprocessados criou dimenses adicionais no estudo de sistemas operacionais, uma rea que dever manter-se em franca atividade pelos anos vindouros. 2) Arquitetura dos Sistemas Operacionais Para entender a arquitetura de um sistema operacional tpico, til analisar todos os tipos de software que ele contm. Para tanto, iniciemos com um estudo de como agrupar programas segundo uma classificao. Tal classificao invariavelmente, separa em diferentes classes, mdulos semelhantes de software, da mesma forma como os fusos horrios vizinhos definem, no relgio, mesmo para comunidades geograficamente prximas, a diferena de uma hora, mesmo que no haja, entre tais localidades, diferenas significativas no horrio solar. Alm disso, no caso de classificao de software, a dinmica e a falta de uma autoridade definitiva no assunto conduzem a classificaes e terminologias contraditrias. Logo, a classificao seguinte (Figura 5.1) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita.
Software Aplicao Utilitrio Sistema S.O.

Shell Kernel Figura 5.1: Classificao de software

Software:

Primeiramente, dividamos o software de um computador em duas grandes categorias: software aplicativo e software de sistema. Software aplicativo consiste de programas que executam determinadas tarefas no computador. Um computador utilizado para manter o cadastro de uma companhia industrial conter softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didticos. Exemplos de software aplicativo incluem planilhas eletrnicas, sistemas de banco de dados, editores de textos, jogos e software de desenvolvimento de programas. Em contraste com o software aplicativo, um software de sistema executa aquelas tarefas que so comuns nos sistemas computacionais em geral. Num certo sentido, o software de sistema desenha o ambiente em que se desenvolve o software aplicativo. Na classe de software de sistema, podem ser consideradas duas categorias, uma das quais consiste do prprio sistema operacional, e a outra, de mdulos de software do tipo conhecido como utilitrio. A maioria dos softwares de instalao consiste de programas que executam tarefas, embora no includas no sistema operacional, - 32 -

essenciais instalao de algum software no computador. De certo modo, softwares utilitrios consistem de mdulos de software que ampliam as capacidades do sistema operacional. Por exemplo, a capacidade de efetuar a formatao de um disco ou a cpia de um arquivo no so, em geral, implementadas pelo prprio sistema operacional, mas sim por programas utilitrios. Outros exemplos de softwares utilitrios incluem os programas para comunicao por modem, para linhas telefnicas, software para mostrar a previso do tempo na tela, e, em nmero cada vez mais crescente de mquinas, o software de tratamento das atividades relacionadas com as redes de computadores. A distino entre software aplicativo e software utilitrio no muito ntida. Muitos usurios consideram que a classe de software utilitrio deve incluir todos os softwares que acompanham o sistema operacional por ocasio de sua compra. Por outro lado, eles tambm classificam os sistemas de desenvolvimento de programas como software utilitrio, desde que tais pacotes sempre acompanhem o sistema operacional por ocasio de sua venda. A distino entre o software utilitrio e o sistema operacional igualmente vaga. Alguns sistemas consideram os softwares que executam servios bsicos, tais como listar os arquivos do disco, como sendo softwares utilitrios; outros os incluem como partes integrantes do sistema operacional. fcil verificar que, implementando-se certos programas na forma de software utilitrio, o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos bsicos exigidos pelo sistema computacional. Alm disso, as rotinas implementadas como software utilitrio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalao. No incomum encontrar companhias ou indivduos que tiveram que alterar ou ampliar algum dos softwares utilitrios que acompanham originalmente o sistema operacional.

Shell:

A parte do sistema operacional que define a interface entre o sistema operacional e seus usurios chamada shell. O trabalho do shell o de prover uma comunicao natural com os usurios do computador. Os shells modernos executam tal funo por meio de uma interface grfica com o usurio na qual os objetos a serem manipulados, tais como arquivos e programas, so representados atravs de cones. Essas interfaces permitem que os usurios solicitem a execuo de comandos ao sistema apontando e deslocando tais itens com o auxlio do mouse. Os shells mais antigos se comunicavam com os usurios via teclado e monitor, atravs de mensagens textuais. Embora o shell de um sistema operacional represente um papel importante na definio da funcionalidade de um computador, ele somente uma interface entre o usurio e o verdadeiro ncleo do sistema operacional, como mostrado na Figura 5.2. Esta distino entre o shell e as partes internas do sistema operacional enfatizada pelo fato de alguns sistemas operacionais permitirem ao usurio selecionar, entre diversos shells, aquele que lhe for mais adequado. Usurios do sistema operacional UNIX, por exemplo, podem selecionar uma variedade de shells, incluindo o Borne shell, o C Shell e o Korn shell. Verses mais antigas do Windows eram, essencialmente, shells de substituio ao MS-DOS. Em casos como esse, o sistema operacional permanece o mesmo, exceto quanto forma em que se comunica com o usurio.

- 33 -

Usurios

Usurios

Shell

Sistema Operacional

Usurios Usurios Figura 5.2: O shell como interface entre o usurio e o sistema operacional

Kernel (Ncleo):

A parte interna de um sistema operacional , em geral, chamada kernel. O kernel de um sistema operacional contm os componentes de software que executam as funes mais bsicas necessrias ao funcionamento de cada instalao computacional em particular. Um destes mdulos bsicos o gerenciador de arquivos, cuja funo coordenar o uso dos recursos de armazenamento de massa do computador. Mais precisamente, o gerenciador de arquivos mantm "cpias" de todos os arquivos armazenados no dispositivo de armazenamento, mantm informao sobre a localizao de cada arquivo, sobre os usurios autorizados a acessar os diversos arquivos e sobre as reas disponveis no dispositivo de armazenamento, para novos arquivos ou para a extenso de arquivos existentes. Para auxiliar os usurios, a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretrios (folders). Tal procedimento permite ao usurio organizar seus arquivos de acordo com as respectivas finalidades, agrupando em cada mesmo diretrio arquivos referentes a um mesmo assunto. Alm disso, possvel criar uma organizao hierrquica, possibilitando que cada diretrio possa conter, por sua vez, subdiretrios. Uma seqncia de aninhamentos de nveis de diretrios denominada path ou caminho. Qualquer acesso a arquivos, por parte de algum mdulo de software, efetuado atravs do gerenciador de arquivos. O procedimento inicial consiste em solicitar ao gerenciador a autorizao para fazer acesso ao arquivo. Este procedimento conhecido como "abrir o arquivo". Se o gerenciador de arquivos aceitar o pedido, ele fornecer a informao necessria para encontrar e manipular tal arquivo. Tal informao mantida em uma rea da memria principal denominada descritor de arquivos. com base na informao contida nesse descritor de arquivo que operaes elementares individuais so executadas sobre o arquivo. Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que so os mdulos de software que executam a comunicao com os controladores promovendo nos dispositivos perifricos a execuo das operaes desejadas. Cada device driver, exclusivamente projetado para um dado - 34 -

tipo de dispositivo, converte solicitaes de alto nvel em comandos mais elementares, diretamente reconhecveis pelos controladores ou dispositivos associados quele device driver. Dessa maneira, os detalhes tcnicos associados aos dispositivos so confinados aos device drivers, ficando transparentes aos demais mdulos de software, seus usurios. Estes devem apenas enviar requisies de alto nvel aos device drivers e deixar a cargo destes a resoluo dos detalhes. Por exemplo, o driver para uma unidade de disco capaz de converter (com base na informao extrada do descritor de arquivo) um pedido de gravao de um trecho de arquivo em disco para uma seqncia de passos referenciando trilhas e setores, e transferir toda essa informao para o controlador apropriado. O controlador, por sua vez, se responsabiliza pelo posicionamento da cabea de leitura e gravao e pelo acompanhamento do processo. Em contraste, o driver para uma impressora efetua a converso de um pedido de impresso de um trecho de arquivo para um conjunto de operaes mais bsicas, envolvendo transferncias de caracteres, tipos de letras (fontes) e controles de impresso. De fato, os passos intermedirios necessrios variam, inclusive, de impressora para impressora. por isso que, quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente. Outro componente do kernel de um sistema operacional o gerenciador de memria, encarregado de coordenar o uso da memria principal. Em computadores monoprogramados, esta tarefa trivial, pois nestes casos o programa a executar alocado na memria principal, executado e, ento, substitudo pelo programa que executa a tarefa seguinte. Porm, em ambientes multiusurios, ou em ambientes multitarefa, nos quais a mquina se encarrega de vrias tarefas ao mesmo tempo, os deveres do gerenciador de memria so mais complexos. Nestes casos, muitos programas e blocos de dados devem coexistir na memria principal, cada qual em uma rea prpria, determinada pelo gerenciador de memria. Na medida das necessidades das diferentes atividades, o gerenciador de memria vai providenciando as reas necessrias, e mantendo um mapa das regies de memria no utilizadas. A tarefa do gerenciador de memria torna-se mais complexa quando a rea total de memria principal solicitada excede o espao realmente disponvel na mquina. Neste caso, o gerenciador de memria pode criar uma iluso de espao adicional alternando os programas e os dados entre a memria principal e o disco. Este espao ilusrio de memria chamado de memria virtual. Por exemplo, suponha que seja solicitada uma rea, na memria principal, de 64 MB, e que somente 32 MB estejam realmente disponveis. Para criar a iluso de um espao maior de memria, o gerenciador de memria divide a rea solicitada em partes chamadas pginas e armazena em disco o contedo destas pginas. medida que as diversas pginas forem sendo solicitadas, o gerenciador de memria pode armazen-las na memria fsica, em substituio a outras que j no sejam mais necessrias, de modo que as demais partes do software possam ser executadas, como se houvesse, de fato, 64 MB de memria principal. No kernel de um sistema operacional esto situados, tambm, o escalonador (scheduler) e o despachante (dispatcher) que sero estudados mais adiante.

Conceitos Bsicos: - 35 -

Vimos como um sistema operacional se comunica com os usurios e como os seus componentes trabalham conjuntamente para coordenar a execuo de atividades dentro da mquina. Entretanto, ainda no analisamos como se inicia a execuo de um sistema operacional. Isto feito atravs de um procedimento conhecido como booting, executado pela mquina todas as vezes que esta ligada. Para compreender tal procedimento, deve-se, antes de tudo, compreender a razo de ser ele executado. Um processador projetado de forma tal que, todas as vezes que for ligado, o contedo do seu contador de instrues (PC) seja devidamente preenchido com um endereo predeterminado. nesse endereo que o processador encontra o programa a ser executado. Para assegurar que tal programa esteja sempre presente, a rea de memria , normalmente, projetada de tal modo que seu contedo seja permanente. Tal memria conhecida como memria ROM (Read-only memory). Uma vez que os padres de bits sejam instalados na ROM, o que se faz mediante um processo de gravao, tal informao se conserva indefinidamente, mesmo com o desligamento da mquina. No caso de computadores pequenos, como os utilizados como dispositivos em fornos de microondas, em sistemas de ignio de automveis e em receptores estreo de rdio, possvel implementar reas significativamente grandes da memria principal em tecnologia ROM, uma vez que, nestes casos, o objetivo principal no a flexibilidade, j que o programa a ser executado por tais dispositivos ser sempre o mesmo, todas as vezes que for acionado. Contudo, isto no ocorre em computadores de propsito geral, no sendo, pois, prtico transformar grandes reas de memria principal em ROM, nessas mquinas. De fato, em mquinas de propsito geral, a maior parte da memria voltil, o que significa que o seu contedo perdido sempre que a mquina for desligada. Para ser possvel dar partida em uma mquina de propsito geral, a sua rea de memria ROM pr-programada com um pequeno programa chamado bootstrap, executado automaticamente toda vez que a mquina ligada. Ele faz o processador transferir o contedo de uma rea predeterminada do disco para uma regio voltil da memria principal (Figura 5.3). Na maioria dos casos, este material o sistema operacional. Uma vez transferido o sistema operacional para a memria principal, o bootstrap prepara o processador para execut-lo, e lhe transfere o controle da mquina. A partir de ento, todas as atividades da mquina passam a ser controladas pelo sistema operacional. 3) Coordenao das Atividades da Mquina Nesta seo, com base no conceito de processos, examinaremos como um sistema operacional coordena a execuo dos softwares de aplicao, dos utilitrios e dos diversos mdulos internos ao prprio sistema operacional.

- 36 -

Memria Principal ROM Programa bootstrap Armazenamento em disco

Memria Voltil (RAM)

Sistema Operacional

Passo 1: a mquina se inicia executando o programa bootstrap, residente na memria. O sistema operacional est armazenado em disco.
Memria Principal ROM Programa bootstrap Sistema operacional Armazenamento em disco

Memria Voltil (RAM)

Sistema Operacional

Passo 2: o programa bootstrap controla a transferncia do sistema operacional para a memria principal e, em seguida, lhe transfere o controle. Figura 5.3: O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos a distino entre um programa e a atividade de execut-lo. O programa apenas um conjunto esttico de comandos, enquanto sua execuo uma atividade dinmica, cujas propriedades mudam medida que o tempo avana. Esta atividade conhecida como processo. Um processo leva em conta a situao corrente da atividade, conhecida como estado do processo. Este estado inclui a posio do programa que est sendo correntemente executada (o valor do PC), bem como os valores contidos nos outros registradores do processador, e as posies associadas memria. Grosseiramente falando, o estado do processo fornece uma fotografia da situao da mquina num dado momento. Para enfatizar a distino entre um programa e um processo, note que um nico programa pode ser associado a mais de um processo em um mesmo instante. Por exemplo, em um sistema multiusurio, de tempo compartilhado, dois usurios podem, ao mesmo tempo, editar documentos separados. Ambas as atividades utilizam um mesmo programa editor de textos, mas cada qual caracteriza um processo separado, com seu prprio conjunto de dados. Nesta situao, o sistema operacional pode manter na - 37 -

memria principal uma s cpia do programa editor, e permitir que cada processo o utiliza sua maneira, durante a fatia de tempo que lhe couber. Em um computador de tempo compartilhado, natural ter vrios processos competindo pelas fatias de tempo. Estes processos englobam a execuo de programas aplicativos e utilitrios, bem como pores do sistema operacional. tarefa do sistema operacional coordenar todos estes processos. Essa atividade de coordenao inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifricos, rea na memria principal, acesso a dados e acesso ao processador), que processos independentes no interfiram uns com os outros, e que processos que se intercomunicam tenham a possibilidade de trocar informao entre si.

Administrao de Processos

As tarefas associdas coordenao de processos so manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional. Assim, o escalonador mantm um registro dos processos presentes no sistema computacional, inclui novos processos nesse conjunto, e remove processos que j completaram sua execuo. Para cuidar de todos os processos, o escalonador mantm, na memria principal, um conjunto de dados numa estrutura denominada tabela de processos. Cada vez que a mquina recebe uma nova tarefa, o escalonador cria para ela um processo, acrescentando uma nova linha tabela de processos. Esta linha contm diversos indicadores: a rea de memria designada para o processo (obtida por meio do gerenciador de memria), a prioridade do processo e um indicador de que o processo est pronto para ser executado ou espera de algum evento. Diz-se que um processo est pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir; o processo estar em estado de espera se seu progresso estiver sendo bloqueado at que seja registrada a ocorrncia de algum evento externo, tal como a concluso de um acesso ao disco ou recebimento de uma mensagem, enviada por algum outro processo. O escalonador mantm, ento, atualizada esta informao medida que o processo vai progredindo. O mais provvel que um dado processo ir alternar seu estado entre pronto para execuo e aguardando evento, sua prioridade ir variar ao longo de sua execuo e, certamente, o escalonador ir remov-lo da tabela de processos assim que suas atividades se completarem. O despachante o mdulo do kernel do sistema operacional cuja funo a de assegurar que os processos escalonados sejam de fatos executados. Em um sistema de tempo compartilhado esta tarefa realizada dividindo-se o tempo fsico em pequenas fatias, tipicamente inferior a 50 milissegundos, cada qual denominada quantum ou time slice. A "ateno" do processador revezada entre os processos, a cada qual concedido um intervalo de tempo no superior durao de um quantum (Figura 5.4). O procedimento de alternar o processador de um processo para outro denominado chaveamento de processos. Cada vez que um processo inicia o uso de sua fatia de tempo, o despachante dispara um circuito temporizador, encarregado de medir o prximo quantum. Ao trmino desse quantum, esse relgio gera um sinal denominado interrupo. O processador reage a este sinal de uma forma muito parecida quela pela qual algum reage quando interrompido durante a execuo de alguma tarefa: interrompe-se o que se estiver fazendo, registra-se o ponto da tarefa no qual se foi interrompido, e ento passase a cuidar do atendimento ao evento que provocou a interrupo. Quando o - 38 -

processador recebe uma interrupo, completa o seu ciclo corrente de execuo de instruo de mquina, quarda a posio em que se encontra e comea a executar um programa, chamado rotina de tratamento de interrupo, o qual deve ter sido depositado previamente em uma regio predeterminada da memria principal.

Interrupo

Processo B

Processo B

Chaveamento de processo

Processo A

Processo A

Tempo Figura 5.4: Compartilhamento de tempo entre os processos A e B

Em nosso ambiente de tempo compartilhado, o programa de tratamento de interrupo faz parte do prprio despachante. Assim, como efeito do sinal de interrupo, tem-se o bloqueio da continuidade do processo em andamento, devolvendo-se o controle ao despachante. Neste momento, o despachante permite que o escalonador atualize a tabela de processos (por exemplo, a prioridade do processo que acaba de esgotar a sua fatia de tempo poder ser reduzida, e as prioridaes dos demais, aumentadas). O despachante, ento, seleciona o processo de maior prioridade dentre os que se encontram prontos, e reinicia a operao do temporizador, dando incio a uma nova fatia de tempo. Um ponto alto de um sistema de tempo compartilhado a capacidade de parar um processo para continu-lo mais tarde. Caso ocorra uma interrupo durante a leitura de um livro, a capacidade do leitor de continuar a leitura mais tarde depende de sua habilidade de relembrar o ponto em que parou, bem como de reter a informao acumulada at tal ponto. Em suma, dever ser capaz de recirar o ambiente existente imediatamente antes da ocorrncia da interrupo. Tal ambiente denominado estado do processo. Este estado inclui o valor do contador de instrues, o contedo dos registradores e os das posies de memria relevantes. Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrncia de interrupo. Possuem tambm instrues, em linguagem de mquina, para recarregar um estado anteriormente armazenado. Tais caractersticas simplificam a tarefa, de responsabilidade do despachante, de efetuar a alternncia de processos e ilustram at que ponto o projeto das mquinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais. s vezes, a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador. Por exemplo, se um processo executar uma solicitao de entrada ou sada, por exemplo, solicitando dados de um disco, sua fatia de tempo ser "truncada" pelo sistema, uma vez que, de outra forma, tal processo desperdiar o tempo restante da fatia, aguardando que o controlador terminasse de executar a operao solicitada. - 39 -

Neste caso, o escalonador atualizar a tabela de processos, marcando o processo corrente como estando em estado de espera, e o despachante fornecer um novo quantum a outro processo que j esteja pronto para ser executado. Depois (talvez vrias centenas de milissegundos mais tarde), quando o controlador indicar que aquela operao de entrada ou sada foi completada, o escalonador reclassificar o processo como estando pronto para a execuo, habilitando-o assim a competir novamente por outra fatia de tempo. 4) Redes Inicialmente, os computadores eram mquinas carssimas que centralizavam em um nico ponto o processamento das aplicaes de vrios usurios, e muitas vezes de toda uma organizao. Com a reduo do custo do hardware e a introduo de novas mquinas, a estrutura centralizada cedeu lugar a uma estrutura totalmente distribuda. Nessa estrutura, diversos equipamentos dos mais variados portes processam informaes de formas isoladas, o que pode vir a acarretar uma srie de problemas, caso cuidados no sejam tomados. Dentre tais problemas, destaca-se a duplicao desnecessria de recursos de hardware (discos, impressoras, etc.) e de software (programas, arquivos de dados, etc.). Nesse cenrio surgiram as redes de computadores, onde um sistema de comunicao foi introduzido para interligar as estaes de trabalhos, antes operando isoladamente, com o objetivo de permitir o compartilhamento de recursos. Uma rede formada por um conjunto de computadores capazes de trocar informaes e compartilhar recursos, interligados por um sistema de comunicao. O sistema de comunicao se constitui num arranjo topolgico interligando os vrios processadores atravs de enlaces fsicos (meios de transmisso, cabos) e de um conjunto de regras com o fim de organizar a comunicao (protocolos).
Principais

objetivos:

Compartilhamento de recursos disponibilizar hardware e software a qualquer mquina pertencente rede. Compartilhamento de carga distribuir o processamento atravs de toda a rede. Escalabilidade o nmero de mquinas na rede pode crescer sem grandes problemas. Economia de recursos Trabalho Cooperativo de uma Rede:

Abrangncia

A abrangncia de uma rede consiste em sua rea de atuao/administrao. Quanto a este aspecto, as redes possuem a seguinte classificao: i2 Redes locais (local area network - LAN) so formadas, em geral, por um conjunto de computadores, localizados em um nico edifcio ou em em um complexo de edifcios. Por exemplo, os computadores existentes em um campus universitrio ou em uma indstria podem ser interconectados por uma rede local. Como caracterstica de tais redes, podemos citar altas taxas de transmisso (de - 40 -

0,1 a 100 Mbps), baixas taxas de erro e o fato de que, em geral, so de propriedade privada. ii2 Redes de Longa Distncia (wide area networks WAN) - unem mquinas que podem estar em pontos opostos de uma cidade, ou at mesmo do mundo. Este tipo de redes surgiu da necessidade de se compartilhar recursos por uma maior comunidade de usurios geograficamente dispersos. dispersos. Por terem um custo de comunicao bastante elevado (circuitos para satlites e enlaces de microondas), tais redes utilizam as vias pblicas de comunicao. Ainda por problemas de custo, as velocidades de transmisso empregadas so baixas. Outra caracterstica a necessidade de equipamento para o envio e recebimento de mensagens a longas distncias. Como podemos observar, a diferena principal entre os dois tipos de redes est na tecnologia empregada nos seus meios de comunicao (a comunicao via satlite, por exemplo, apropriada para as redes de longa distncia, mas no para as locais).

Linhas de Comunicao:

Na organizao dos enlaces fsicos num sistema, encontramos diversas formas de utilizao das linhas de comunicao. As ligaes fsicas podem ser de dois tipos: ponto-a-ponto ou multiponto. Ligaes ponto-a-ponto caracterizam-se pela presena de apenas dois pontos de comunicao, um em cada extremidade do enlace (ligao), como ilustrado na Figura 5.5(a). Por outro lado, nas ligaes multiponto (Figura 5.5(b)), observa-se a presena de trs ou mais dispositivos de comunicao com possibilidade de utilizao do mesmo enlace.

(a)

(b)

Figura 5.5: (a) ligaes ponto-a-ponto; (b) ligaes multiponto

A comunicao no enlace refere-se a utilizao do meio fsico que conecta as estaes, e pode ser: Simplex: o enlace utilizado em apenas um dos dois possveis sentidos de transmisso. Half-duplex: o enlace utilizado nos dois possveis sentidos de transmisso, porm apenas um por vez. Full-duplex: o enlace pode ser utilizado nos dois sentidos de transmisso simultaneamente.

Topologias de Redes: - 41 -

A topologia de uma rede de comunicao ir, muitas vezes, caracterizar seu tipo, eficincia e velocidade. A topologia refere-se forma com que os enlaces fsicos e os ns de comunicao esto organizados, determinando os caminhos fsicos existentes e utilizveis entre quaisquer pares de estaes conectadas a essa rede. Topologia Totalmente Ligada

Todas as estaes so interligadas duas a duas entre si atravs de um caminho fsico dedicado. A troca de mensagens entre cada par de estaes se d diretamente atravs de um desses enlaces. Os enlaces utilizados poderiam ser ponto-a-ponto com comunicao full-duplex de forma a permitir a comunicao plena entre quaisquer pares de estaes. Numa rede com N estaes, por exemplo, seriam necessrias N(N-1)/2 ligaes ponto-a-ponto para que se pudesse conectar todos os pares de estaes atravs de linhas dedicadas. Dessa forma, o custo do sistema, em termos de instalao de cabos e de hardware especfico para comunicao, cresceria com o quadrado do nmero de estaes, tornando tal topologia economicamente invivel.

Figura 5.6: rede totalmente ligada

Topologia em Estrela:

Nesse tipo de topologia, cada n interligado a um n central, denominado switch ou comutador, atravs do qual todas as mensagens devem passar. O switch age como o centro de controle da rede, interligando todas as estaes. Nada impede que haja comunicaes simultneas, desde que as estaes envolvidas sejam diferentes. Embora esse tipo de topologia seja de grande confiabilidade, ela pode apresentar alguns problemas, como os citados a seguir: Custo elevado Falhas no n central podem ocasionar a parada total do sistema Baixa modularidade a configurao pode ser expandida at um certo limite imposto pelo n central em termos de capacidade de chaveamento. Topologia em Barra (Bus):

- 42 -

Nessa topologia, todas as estaes esto ligadas ao mesmo meio fsico, atravs de ligaes multiponto. Cada uma das estaes "escuta" as informaes que trafegam pela rede. No caso de falha de uma dessas estaes, a rede no pra.

Switch

Figura 5.7: rede em estrela

A ligao das estaes ao meio de comunicao realizada atravs de um transceptor (transmissor/receptor), que tem como funes bsicas transmitir e receber sinais, bem como reconhecer a presena desses sinais no meio.

Figura 5.8: rede em barra

Topologia em Anel:

Nessa topologia procura-se diminuir ao mximo o nmero de enlaces utilizados. Dessa forma, utiliza-se, em geral, ligaes ponto-a-ponto que operam num nico sentido de transmisso (ligaes simplex) fazendo com que o anel apresente uma orientao ou sentido nico de transmisso. Uma mensagem dever circular pelo anel at que chegue ao mdulo de destino, sendo passada de estao em estao, obedecendo ao sentido definido pelo anel, o que pode acarretar atraso nas transmisses, principalmente nas redes de baixa velocidade.

- 43 -

Figura 5.9: rede em anel

Topologia em anel requer que cada n seja capaz de remover seletivamente mensagens da rede ou pass-las frente para o prximo n. Isto requer um computador ativo em cada n. Uma falha em qualquer dos enlaces vai parar toda a rede at que o problema seja isolado e um novo cabo instalado. Os maiores problemas apresentados por essa topologia so vulnerabilidade a erros e baixa tolerncia a falhas. Erros de transmisso e processamento, por exemplo, podem fazer com que uma mensagem continue eternamente a circular no anel.

- 44 -

Das könnte Ihnen auch gefallen