Do Eniac Ao Gnu Linux

Embed Size (px)

DESCRIPTION

Do Eniac Ao Gnu Linux

Citation preview

ComputadorUm assistente pessoal digital Um computador pessoal Columbia, um supercomputador da NASA

Denomina-se computador uma mquina capaz de variados tipos de tratamento automtico de informaes ou processamento de dados. Exemplos de computadores incluem o baco, a calculadora, o computador analgico e o computador digital. Um computador pode prover-se de inmeros atributos, dentre eles armazenamento de dados, processamento de dados, clculo em grande escala, desenho industrial, tratamento de imagens grficas, realidade virtual, entretenimento e cultura. No passado, o termo j foi aplicado a pessoas responsveis por algum clculo. Em geral, entende-se por computador um sistema fsico que realiza algum tipo de computao. Existe ainda o conceito matemtico rigoroso, utilizado na teoria da computao. Assumiu-se que os computadores pessoais e laptops so cones da Era da Informao1; e isto o que muitas pessoas consideram como "computador". Entretanto, atualmente as formas mais comuns de computador em uso so os sistemas embarcados, pequenos dispositivos usados para controlar outros dispositivos, como robs, cmeras digitais ou brinquedos.

Histria dos computadoresAs primeiras mquinas de computarPascaline, mquina calculadora feita por Blaise Pascal

John Napier (1550-1617), logaritmos, tambm inventou tabelas de multiplicao evitava a memorizao da

escocs inventor dos os ossos de Napier, que eram gravadas em basto, o que tabuada.

A primeira mquina de verdade foi construda por Wilhelm Schickard (15921635), sendo capaz de somar, subtrair, multiplicar e dividir. Essa mquina foi perdida durante a guerra dos trinta anos, sendo que recentemente foi encontrada alguma documentao sobre ela. Durante muitos anos nada se soube sobre essa mquina, por isso, atribua-se a Blaise Pascal (1623-1662) a construo da primeira mquina calculadora, que fazia apenas somas e subtraes.

1SILVEIRA (2004) Incluso Digital e Software Livre, p. 74.

A mquina Pascal foi criada com objetivo de ajudar seu pai a computar os impostos em Rouen, Frana. O projeto de Pascal foi bastante aprimorado pelo matemtico alemo Gottfried Wilhelm Leibniz (1646-1726), que tambm inventou o clculo, o qual sonhou que, um dia no futuro, todo o raciocnio pudesse ser substitudo pelo girar de uma simples alavanca. Todas essas mquinas, porm, estavam longe de ser um computador de uso geral, pois no eram programveis. Isto quer dizer que a entrada era feita apenas de nmeros, mas no de instrues a respeito do que fazer com os nmeros.

BabbageRplica (parte) do Calculador Babbage Diferencial criado por Charles

A origem da idia de programar uma mquina vem da necessidade de que as mquinas de tecer produzissem padres de cores diferentes. Assim, no sculo XVIII foi criada uma forma de representar os padres em cartes de papel perfurado, que eram tratados manualmente. Em 1801, Joseph Marie Jacquard (1752-1834) inventa um tear mecnico, com uma leitora automtica de cartes. A idia de Jacquard atravessou o Canal da Mancha, onde inspirou Charles Babbage (1792-1871), um professor de matemtica de Cambridge, a desenvolver uma mquina de tecer nmeros, uma mquina de calcular onde a forma de calcular pudesse ser controlada por cartes. Tudo comeou com a tentativa de desenvolver uma mquina capaz de calcular polinmios por meio de diferenas, o calculador diferencial. Enquanto projetava seu calculador diferencial, a idia de Jacquard fez com que Babbage imaginasse uma nova e mais complexa mquina, o calculador analtico, extremamente semelhante ao computador atual. Sua parte principal seria um conjunto de rodas dentadas, o moinho, formando uma mquina de somar com preciso de cinquenta dgitos. As instrues seriam lidas de cartes perfurados. Os cartes seriam lidos em um dispositivo de entrada e armazenados, para futuras referncias, em um banco de mil registradores. Cada um dos registradores seria capaz de armazenar um nmero de cinquenta dgitos, que poderiam ser colocados l por meio de cartes a partir do resultado de um dos clculos do moinho. Alm disso tudo, Babbage imaginou a primeira mquina de impresso, que imprimiria os resultados dos clculos, contidos nos registradores. Babbage conseguiu, durante algum tempo, fundos para sua pesquisa, porm no conseguiu completar sua mquina no tempo prometido e no recebeu mais dinheiro. Hoje, partes de sua mquina podem ser vistas no Museu Britnico, que tambm construiu uma verso completa, utilizando as tcnicas disponveis na poca.

Junto com Babbage, trabalhou a jovem Ada Augusta, filha do poeta Lord Byron, conhecida como Lady Lovelace e Ada Lovelace. Ada foi a primeira programadora da histria, projetando e explicando, a pedido de Babbage, programas para a mquina inexistente. Ada inventou os conceitos de subrotina, uma seqncia de instrues que pode ser usada vrias vezes, loop, uma instruo que permite a repetio de uma seqncia de cartes, e do salto condicional, que permite saltar algum carto caso uma condio seja satisfeita. Ada Lovelace e Charles Babbage estavam avanados demais para o seu tempo, tanto que at a dcada de 1940, nada se inventou parecido com seu computador analtico. At essa poca foram construdas muitas mquinas mecnicas de somar destinadas a controlar negcios (principalmente caixas registradoras) e algumas mquinas inspiradas na calculadora diferencial de Babbage, para realizar clculos de engenharia (que no alcanaram grande sucesso).

A mquina de tabularO prximo avano dos computadores foi feito pelo americano Herman Hollerith (1860-1929), que inventou uma mquina capaz de processar dados baseada na separao de cartes perfurados (pelos seus furos). A mquina de Hollerith foi utilizada para auxiliar no censo de 1890, reduzindo o tempo de processamento de dados de sete anos, do censo anterior, para apenas dois anos e meio. Ela foi tambm pioneira ao utilizar a eletricidade na separao, contagem e tabulao dos cartes. A empresa fundada por Hollerith hoje conhecida como International Business Machines, ou IBM.

Os primeiros computadores de uso geralZ1, computador eletro-mecnico construdo por Konrad Zuse

O primeiro computador eletro-mecnico foi construdo por Konrad Zuse (19101995). Em 1936, esse engenheiro alemo construiu, a partir de rels que executavam os clculos e dados lidos em fitas perfuradas, o Z1. Zuse tentou vender o computador ao governo alemo, que desprezou a oferta, j que no poderia auxiliar no esforo de guerra. Os projetos de Zuse ficariam parados durante a guerra, dando a chance aos americanos de desenvolver seus computadores. Foi na Segunda Guerra Mundial que realmente nasceram os computadores atuais. A Marinha americana, em conjunto com a Universidade de Harvard, desenvolveu o computador Harvard Mark I, projetado pelo professor Howard Aiken, com base no calculador analtico de Babbage. O Mark I ocupava 120m aproximadamente, conseguindo multiplicar dois nmeros de dez dgitos em trs segundos.

Simultaneamente, e em segredo, o Exrcito Americano desenvolvia um projeto semelhante, chefiado pelos engenheiros J. Presper Eckert e John Mauchy, cujo resultado foi o primeiro computador a vlvulas, o Eletronic Numeric Integrator And Calculator (ENIAC)2, capaz de fazer quinhentas multiplicaes por segundo. Tendo sido projetado para calcular trajetrias balsticas, o ENIAC foi mantido em segredo pelo governo americano at o final da guerra, quando foi anunciado ao mundo.ENIAC, computador desenvolvido pelo Exrcito Americano

No ENIAC, o programa era em um painel. Nesse ponto idia que transformou os crebros eletrnicos: computador segundo o Para isso, eles teriam que

feito rearranjando a fiao John von Neumann props a calculadores eletrnicos em modelar a arquitetura do sistema nervoso central. ter trs caractersticas:

1. Codificar as instrues de uma forma possvel de ser armazenada na memria do computador. Von Neumann sugeriu que fossem usados uns e zeros. 2. Armazenar as instrues na memria, bem como toda e qualquer informao necessria a execuo da tarefa, e 3. Quando processar o programa, buscar as instrues diretamente na memria, ao invs de lerem um novo carto perfurado a cada passo.Viso simplificada da arquitetura de Von Neumann

Este o conceito de cujas principais versatilidade e o computador conhecemos hoje, onde esto armazenados na conhecido como Neumann.

programa armazenado, vantagens so: rapidez, automodificao. Assim, programvel que o programa e os dados memria ficou Arquitetura de von

Para divulgar essa idia, von Neumann publicou sozinho um artigo. Eckert e Mauchy no ficaram muito contentes com isso, pois teriam discutido muitas vezes com ele. O projeto ENIAC acabou se dissolvendo em uma chuva de processos, mas j estava criado o computador moderno.

Arquitetura de hardwareLEGENDA: 01- Monitor 02- Placa-Me 03- Processador 04- Memria RAM 05- Placas de Rede, Placas de Som, Vdeo, Fax... 06- Fonte de Energia 07- Leitor de CDs e/ou DVDs 08- Disco Rgido (HD) 09- Mouse (Rato) 10- Teclado

2(em ingls) Karl Kempf (1961) Historical Monograph: Electronic Computers Within the Ordnance Corps, cap. 2, pp. 19-39. (Exrcito dos Estados Unidos da Amrica)

Mesmo que a tecnologia computadores digitais dramaticamente desde computadores da dcada hardware), quase todos ainda utilizam a Neumann proposta por Seguindo a arquitetura, possuem quatro sesses lgica e aritmtica, a memria e os sada. Essas partes so barramentos. A unidade unidade de controle, os bsica de entrada e como a CPU.

utilizada nos tenha mudado os primeiros de 1940 (veja histria do os computadores atuais arquitetura de von John von Neumann. os computadores principais, a unidade unidade de controle, a dispositivos de entrada e interconectadas por lgica e aritmtica, a registradores e a parte sada so conhecidos

Alguns computadores maiores diferem do modelo acima em um aspecto principal - eles tm mltiplas CPUs trabalhando simultaneamente. Adicionalmente, poucos computadores, utilizados principalmente para pesquisa e computao cientfica, tm diferenas significativas do modelo acima, mas eles no tem grande aplicao comercial.

ProcessamentoO processador (ou CPU) uma das partes principais do hardware do computador e responsvel pelos clculos, execuo de tarefas e processamento de dados. A velocidade com que o computador executa as tarefas ou processa dados est diretamente ligada velocidade do processador. As primeiras CPUs eram constitudas de vrios componentes separados, mas desde meados da dcada de 1970 as CPUs vm sendo manufaturadas em um nico circuito integrado, sendo ento chamadas microprocessadores. A unidade lgica e aritmtica (ULA) a unidade central do processador, que realmente executa as operaes aritmticas e lgicas entre dois nmeros. Seus parmetros incluem, alm dos nmeros operandos, um resultado, um comando da unidade de controle, e o estado do comando aps a operao. O conjunto de operaes aritmticas de uma ULA pode ser limitado a adio e subtrao, mas tambm pode incluir multiplicao, diviso, funes trigonomtricas e razes quadradas. Algumas podem operar somente com nmeros inteiros, enquanto outras suportam o uso de ponto flutuante para representar nmeros reais (apesar de possuirem preciso limitada).

A unidade de controle a unidade do processador que armazena a posio de memria que contm a instruo corrente que o computador est executando, informando ULA qual operao a executar, buscando a informao (da memria) que a ULA precisa para execut-la e transferindo o resultado de volta para o local apropriado da memria. Feito isto, a unidade de controle vai para a prxima instruo (tipicamente localizada na prxima posio da memria, a menos que a instruo seja uma instruo de desvio informando que a prxima instruo est em outra posio. A CPU tambm contm um conjunto restrito de clulas de memria chamados registradores que podem ser lidos e escritos muito mais rapidamente que em outros dispositivos de memria. So usados frequentemente para evitar o acesso contnuo memria principal cada vez que um dado requisitado.

MemriaA memria um dispositivo que permite ao computador armazenar dados por certo tempo. Atualmente o termo geralmente usado para definir as memrias volteis, como a RAM, mas seu conceito primordial tambm aborda memrias no volteis, como o disco rgido. Parte da memria do computador feita no prprio processador; o resto diludo em componentes como a memria RAM, memria cache, disco rgido e leitores de mdias removveis, como disquete, CD e DVD. Nos computadores modernos, cada posio da memria configurado para armazenar grupos de oito bits (chamado de um byte). Cada byte consegue representar 256 nmeros diferentes; de 0 a 255 ou de -128 a +127. Para armazenar nmeros maiores pode-se usar diversos bytes consecutivos (geralmente dois, quatro ou oito). Quando nmeros negativos so armazenados, utilizada a notao de complemento para dois. A memria do computador normalmente dividida entre primria e secundria, sendo possvel tambm falar de uma memria "terciria".

Memria primriaA memria primria aquela acessada diretamente pela Unidade Lgica e Aritmtica. Tradicionalmente essa memria pode ser de leitura e escrita (RAM) ou s de leitura (ROM). Atualmente existem memrias que podem ser classificadas como preferencialmente de leitura, isso , variaes da memria ROM que podem ser regravadas, porm com um nmero limitado de ciclos e um tempo muito mais alto.

Normalmente a memria primria se comunica com a ULA por meio de um barramento ou canal de dados. A velocidade de acesso a memria um fator importante de custo de um computador, por isso a memria primria normalmente construda de forma hierrquica em um projeto de computador. Parte da memria, conhecida como cache fica muito prxima ULA, com acesso muito rpido. A maior parte da memria acessada por meio de vias auxiliares. Normalmente a memria nitidamente separada da ULA em uma arquitetura de computador. Porm, os microprocessadores atuais possuem memria cache incorporada, o que aumenta em muito sua velocidade. Memria RAMMemria RAM de um PC

A memria RAM (Random Access Memory) uma sequncia de clulas numeradas, cada uma contendo uma pequena quantidade de informao. A informao pode ser uma instruo para dizer ao computador o que fazer. As clulas podem conter tambm dados que o computador precisa para realizar uma instruo. Qualquer clula pode conter instruo ou dado, assim o que em algum momento armazenava dados pode armazenar instrues em outro momento. Em geral, o contedo de uma clula de memria pode ser alterado a qualquer momento, a memria RAM um rascunho e no um bloco de pedra. As memrias RAM so denominadas genericamente de DRAM (RAM dinmica), pelo fato de possurem uma caracterstica chamada refrescamento de memria, que tem a finalidade de regravar os dados armazenados em intervalos regulares de tempo,o que necessrio para a manuteno de seu contedo. O tamanho de cada clula, e o nmero de clulas, varia de computador para computador, e as tecnologias utilizadas para implementar a memria RAM variam bastante. Atualmente o mais comum a implementao em circuitos integrados. Memria ROMMemria ROM de um PC

A memria ROM (Read-Only Memory) uma memria que s pode ser lida e os dados no so perdidos com o desligamento do computador. A diferena entre a memria RAM e a ROM que a RAM aceita gravao, regravao e perda de dados. Mesmo se for enviada uma informao para ser gravada na memria ROM, o procedimento no executado (esta caracterstica praticamente elimina a criao de vrus que afetam a ROM). Um software gravado na ROM recebe o nome de firmware. Em computadores da linha IBM-PC eles so basicamente trs, que so acessados toda vez que ligamos o computador, a saber: BIOS, POST e SETUP.

Existe uma variao da ROM chamada memria preferencialmente de leitura que permite a re-gravao de dados. So as chamadas EPROM (Erasable Programmable Read Only Memory) ou EEPROM (Electrically Erasable Programmable Read-Only Memory).

Memria secundriaA memria secundria ou memria de massa usada para gravar grande quantidade de dados, que no so perdidos com o desligamento do computador, por um perodo longo de tempo. Exemplos de memria de massa incluem o disco rgido e mdias removveis como o CD-ROM, o DVD, o disquete e o pen drive. Normalmente a memria secundria no acessada diretamente pela ULA, mas sim por meio dos dispositivos de entrada e sada. Isso faz com que o acesso a essa memria seja muito mais lento do que o acesso a memria primria. Para isso cada dispositivo encontra-se com um buffer de escrita e leitura para melhoramento de desempenho. Supostamente, consideramos que a memria terciria est permanentemente ligada ao computador.

Memria terciriaFita magntica para gravao de dados

Sistemas mais complexos de terceiro nvel de memria, com da memria secundria. Um automatizado de fitas contendo memria terciria no nada memria secundria ou para servir um dispositivo de

computao podem incluir um acesso ainda mais lento que o exemplo seria um sistema a informao necessria. A mais que um dispositivo de memria de massa colocado memria secundria.

As tecnologias de memria usam materiais e processos bastante variados. Na informtica, elas tm evoludo sempre em direo de uma maior capacidade de armazenamento, maior miniaturizao, maior rapidez de acesso e confiabilidade, enquanto seu custo cai constantemente. Entretanto, a memria de um computador no se limita a sua memoria individual e fsica, ela se apresenta de maneira mais ampla, e sem lugar definido (desterritorializada). Temos possibilidades de armazenar em diversos lugares na rede, podemos estar em Cairo e acessar arquivos que foram armazenados em stios no Brasil. crescente a tendncia para o armazenamento das informaes na memria do espao virtual, ou o chamado ciberespao, atravs de discos virtuais e anexos de e-mails. Isto torna possvel o acesso a informao a partir de qualquer dispositivo conectado Internet.

Entrada e sadaMouse

Os dispositivos de entrada e usados para a interao computadores pessoais de entrada incluem o mouse digitalizador e a webcam. incluem a caixa de som, o

sada (E/S) so perifricos homem-computador. Nos modernos, dispositivos comuns (ou rato), o teclado, o Dispositivos comuns de sada monitor3 e a impressora.

O que todos os dispositivos de entrada tm em comum que eles precisam codificar (converter) a informao de algum tipo em dados que podem ser processados pelo sistema digital do computador. Dispositivos de sada por outro lado, descodificam os dados em informao que entendida pelo usurio do computador. Neste sentido, um sistema de computadores digital um exemplo de um sistema de processamento de dados. Podemos ter dispositivos que funcionam tanto para entrada como para sada de dados, como o modem e o drive de disquete. Atualmente, outro dispositivo de hbrido de dados a rede de computadores.Blocos funcionais de um computador

BarramentosPara interligar todos uma placa de suporte que atravs de soquetes conecta todos funo inclui tambm a auxiliares que subde entrada e sada, (conecta-se com a caixa vdeo (conecta-se com o (conecta-se com a LAN) se com a linha esses dispositivos existe especial, a placa-me, barramentos, fios e os dispositivos. Sua conexo de placas controlam os perifricos como a placa de som de som), a placa de monitor), placa de rede e o fax-modem (conectatelefnica).

Nota-se que o barramento entre os componentes no constitui uma conexo ponto-a-ponto; ele pode conectar logicamente diversos componentes utilizando o mesmo conjunto de fios. O barramento pode utilizar uma interface serial ou uma interface paralela.

3Alguns computadores, em especial PDAs, consideram a tela (considerada um monitor), tambm um dispositivo de entrada, sob forma de ecr tctil.

Outros equipamentos adicionais usados em conjunto com a placa-me so o dissipador, um pequeno ventilador para resfriar o processador, e a fonte de energia, responsvel pela alimentao de energia de todos os componentes do computador.

Arquitetura de softwareInstruesA principal caracterstica dos computadores modernos, o que o distingue de outras mquinas, que pode ser programado. Isto significa que uma lista de instrues pode ser armazenada na memria e executa posteriormente.Diagrama de linguagem de linguagem de mquina programao compilada em

As instrues executadas na ULA discutidas acima no so um rico conjunto de instrues como a linguagem humana. O computador tem apenas um limitado nmero de instrues bem definidas. Um exemplo tpico de uma instruo existente na maioria dos computadores "copie o contedo da posio de memria 123 para a posio de memria 456", "adicione o contedo da posio de memria 510 ao contedo da posio 511 e coloque o resultado na posio 507" e "se o contedo da posio 012 igual a 0, a prxima instruo est na posio 678". Instrues so representadas no computador como nmeros - o cdigo para "copiar" poderia ser 007, por exemplo. O conjunto particular de instrues que um computador possui conhecido como a linguagem de mquina do computador. Na prtica, as pessoas no escrevem instrues diretamente na linguagem de mquina mas em uma linguagem de programao, que posteriormente traduzida na linguagem de mquina atravs de programas especiais, como interpretadores e compiladores. Algumas linguagens de programao se aproximam bastante da linguagem de mquina, como o assembly (linguagem de baixo nvel); por outro lado linguagens como o Prolog so baseadas em princpios abstratos e se distanciam bastante dos detalhes da operao da mquina (linguagens de alto nvel). A execuo das instrues tal como ler um livro. Apesar da pessoa normalmente ler cada palavra e linha em sequncia, possvel que algumas vezes ela volte para pontos anteriores do texto de interesse ou passe sesses no interessantes. Da mesma forma, um computador que segue a arquitetura de von Neumann executa cada instruo de forma sequencial, da maneira como foram armazenadas na memria. Mas, atravs de instrues especiais, o computador pode repetir instrues ou avan-las at que alguma condio seja satisfeita. Isso chamado controle do fluxo e o que permite que o computador realize tarefas repetitivamente sem interveno humana.

Uma pessoa usando uma calculadora pode realizar operaes aritmticas como somar nmero apertando poucos botes. Mas somar sequencialmente os nmeros de um a mil iria requerer apertar milhares de vezes os botes, com uma alta probabilidade de erro em alguma iterao. Por outro lado, computadores podem ser programados para realizar tal tarefa com poucas instrues, e a execuo e extremamente rpida. Mas os computadores no conseguem pensar, eles somente executam as instrues que fornecemos. Um humano instrudo, ao enfrentar o problema da adio explicado anteriormente, perceberia em algum momento que pode reduzir o problema usando a seguinte equao: e chegar na mesma resposta correta com pouco trabalho. Alguns computadores modernos conseguem tomar algumas decises para acelerar a execuo dos programas ao prever instrues futuras e reorganizar a ordem de instrues sem modificar seu significado. Entretanto, os computadores ainda no conseguem determinar instintivamente uma maneira mais eficiente de realizar sua tarefa, pois no possuem conhecimento para tal 4.

ProgramasProgramas so simplesmente grandes listas de instrues para o computador executar, tais com tabelas de dados. Muitos programas de computador contm milhes de instrues, e muitas destas instrues so executadas repetidamente. Um computador pessoal tpico (no ano de 2003) podia executar cerca de dois a trs bilhes de instrues por segundo. Os computadores no tm a sua extraordinria capacidade devido a um conjunto de instrues complexo. Apesar de existirem diferenas de projeto com CPU com um maior nmero de instrues e mais complexas, os computadores executam milhes de instrues simples combinadas, escritas por bons "programadores". Estas instrues combinadas so escritas para realizar tarefas comuns como, por exemplo, desenhar um ponto na tela. Tais instrues podem ento ser utilizadas por outros programadores. Hoje em dia, muitos computadores aparentam executar vrios programas ao mesmo tempo, o que normalmente conhecido como multitarefa. Na realidade, a CPU executa as instrues de um programa por um curto perodo de tempo e, em seguida, troca para um outro programa e executa algumas de suas instrues. Isto cria a iluso de vrios programas sendo executados simultaneamente atravs do compartilhamento do tempo da CPU entre os programas. Este compartilhamento de tempo normalmente controlado pelo sistema operacional.

4Existem tentativas para resolver essa limitao, e o campo de atuao de aprendizagem de mquina conhecido na Cincia da Computao como Inteligncia Artifical.

Sistema operacionalUm computador sempre precisa de no mnimo um programa em execuo por todo o tempo para operar. Tipicamente este programa o sistema operacional (ou sistema operativo), que determina quais programas vo executar, quando, e que recursos (como memria e E / S) ele poder utilizar. O sistema operacional tambm fornece uma camada de abstrao sobre o hardware, e d acesso aos outros programas fornecendo servios, como programas gerenciadores de dispositivos ("drivers") que permitem aos programadores escreverem programas para diferentes mquinas sem a necessidade de conhecer especificidades de todos os dispositivos eletrnicos de cada uma delas.

Impactos do computador na sociedadeSegundo Pierre Lvy, no livro "Cibercultura", O computador no mais um centro, e sim um n, um terminal, um componente da rede universal calculante. Em certo sentido, h apenas um nico computador, mas impossvel traar seus limites, definir seu contorno. um computador cujo centro est em toda parte e a circunferncia em lugar algum, um computador hipertextual, disperso, vivo, fervilhante, inacabado: o ciberespao em si. O computador evoluiu em sua capacidade de armazenamento de informaes, que cada vez maior, o que possibilita a todos um acesso cada vez maior a informao. Isto significa que o computador agora representa apenas um ponto de um novo espao, o ciberespao. Essas informaes contidas em computadores de todo mundo e presentes no ciberespao, possibilitam aos usurios um acesso a novos mundos, novas culturas, sem a locomoo fsica. Com todo este armazenamento de textos, imagens, dados, etc. Houve tambm uma grande mudana no comportamento empresarial, com uma forte reduo de custo e uma descompartimentalizao das mesmas. Antes o que era obstante agora prximo, as mquinas, componentes do ciberespao, com seus compartimentos de sada, otimizaram o tempo e os custos.

Ver tambmCommons Wikiquote Wikcionrio Computador domstico Computador pessoal Mainframe

Notebook Servidor Sistema operacional Supercomputador Teoria da computao Reciclagem de computadores

Ligaes externasHistria dos computadores (em portugus) Museu do Computador (em portugus) O que um computador? (em portugus) Fotos e histria de alguns modelos de computadores (em ingls)

Arquitetura de von NeumannDiagrama da arquitectura de von Neumann.

A Arquitetura de von Neumann), uma computador que se possibilidade de uma armazenar seus espao de memria que manipular tais

Neumann (de John von arquitetura de caracteriza pela mquina digital programas no mesmo os dados, podendo assim programas.

A mquina proposta por Von Neumann rene os seguintes componentes: (i) uma memria, (ii) uma unidade aritmtica e lgica (ALU), (iii) uma unidade central de processamento (CPU), composta por diversos registradores, e (iv) uma Unidade de Controle (CU), cuja funo a mesma da tabela de controle da Mquina de Turing universal: buscar um programa na memria, instruo por instruo, e execut-lo sobre os dados de entrada. Cada um dos elementos apresentados realizado custa de componentes fsicos independentes, cuja implementao tem variado ao longo do tempo, consoante a evoluo das tecnologias de fabricao, desde os rels electromagnticos, os tubos de vcuo (ou vlvulas), at aos semicondutores, abrangendo os transistores e os circuitos electrnicos integrados, com mdia, alta ou muito alta densidade de integrao (MSI - medium scale, LSI - large scale, ou VLSI - very large scale integration), medida em termos de milhes transistores por pastilha de silcio.

As interaces entre os elementos exibem tempos tpicos que tambm tm variado ao longo do tempo, consoante as tecnologias de fabricao. Actualmente, as CPUs processam instrues sob controlo de relgios cujos perodos tpicos so da ordem de 1 nanosegundo, ou seja, segundos. As memrias centrais tm tempos tpicos de acesso da ordem da dezena de nanosegundos. As unidades de entrada e sada exibem tempos tpicos extremamente variveis, mas que so tipicamente muito superiores escala do nanosegundo. Por exemplo, os discos duros exibem tempos da ordem do milisegundos (milsimo de segundo, ). Outros dispositivos perifricos so inertes, a no ser que sejam activados por utilizadores humanos. Por exemplo, ao se fazer "copy and paste" nao se-percebe nada do que foi descrito acima, pois um teclado s envia informao para o computador aps serem pressionada as devidas teclas. Assim, este dispositivo se comunica com a CPU eventualmente e, portanto, exibe tempos indeterminadoss.

Ver tambmArquitetura Harvard

ENIACDuas mulheres operando o pertencente ao Exrcito dos ENIAC (fotografia E.U.A. (U.S. Army)

O ENIAC (Electrical and Calculator) foi o digital eletrnico de em fevereiro de 1946 americanos John Eckert Electronic Control

Numerical Integrator primeiro computador grande escala. Criado pelos cientistas nortee John Mauchly, da Company.

O ENIAC comeou a ser desenvolvido em 1943 durante a II Guerra Mundial para computar trajetrias tticas que exigissem conhecimento substancial em matemtica, mas s se tornou operacional aps o final da guerra. O computador pesava 30 toneladas, media 5,50 m de altura e 25 m de comprimento e ocupava 180 m de rea construda. Foi construdo sobre estruturas metlicas com 2,75 m de altura e contava com 70 mil resistores e entre 17.468 e 18.000 vlvulas a vcuo ocupando a rea de um ginsio desportivo. Segundo Tom Forester, quando acionado pela primeira vez, o ENIAC consumiu tanta energia que as luzes de Filadlfia piscaram.

Esta mquina no tinha sistema operacional e seu funcionamento era parecido com uma calculadora simples de hoje. O ENIAC, assim como uma calculadora, tinha de ser operado manualmente. A calculadora efetua os clculos a partir das teclas pressionadas, fazendo interao direta com o hardware, como no ENIAC, no qual era preciso conectar fios, rels e seqncias de chaves para que se determinasse a tarefa a ser executada. A cada tarefa diferente o processo deveria ser refeito. A resposta era dada por uma seqencia de lmpadas. O segundo computador do mundo foi o ENIAC (Electronic Numerical Integrator and Computer), uma concepao do Professor John Mauchly, conjuntamente com o professor J. Presper Eckert. Mauchly e o Eckert propuseram em 1943 ao exrcito norte-americano, em plena II Guerra Mundial, a construao deste primeiro computador, tendo como objectivo o auxilio nos clculos de precisao necessrios para a balstica. Foi anunciada a sua conclusao em 14 de Fevereiro de 1946 e foi patenteado em 26 de Junho de 1947 com o registo n.o 3,120,606. Diposiao em U da sala do ENIAC O ENIAC (Electronic Numerical Integrator and Computer) preenchia esta sala, incomparvel com os miniaturizados e mais potentes computadores actuais. Equipa que construiu o ENIAC J. Presper Eckert, Jr.; Professor J. G. Brainerd; Sam Feltman; Captain H. H. Goldstine; Dr. J. W. Mauchly; Dean Harold Pender; General G. M. Barnes; Colonel Paul N. Gillon. O ENIAC era uma grande mquina para efectuar clculos e baseava a sua estrutura nos avanos cientficos j anteriormente desenvolvidos, como as sofisticadas mquinas de clculos matemticos de Charles Babage, as calculadoras mecnicas de Blaise Pascal, Leibniz e Charles Xavier Thomas, nas rels electromagnticas, nas vlvulas e nas mquinas perfuradoras de cartoes. Uma vlvula , de forma simples, um tubo metlico de meia polegada, selado em vcuo dentro de um tubo de vidro, onde uma corrente de electroes pode passar entre os elctrodos. Os tubos de vcuo foram fundamentais para o desenvolvimento da rdio, televisao e gravaao de sons. Eram tambm peas grandes e muito frgeis que tinham uma grande perda de energia por calor. Pormenor do ENIAC - o primeiro computador O ENIAC foi construdo com 17 468 tubos de vcuo, 70 000 resistencias, 10 000 condensadores, 1 500 rels e 6 000 interruptores. O ENIAC pesava 30 toneladas, consumia 200 000 watts de potencia e ocupava vrias salas. Quando em operaao produzia tanto calor que necessitava de um sistema de ar forado para arrefecimento. Era tao grande que tinha de ser disposto em U com tres painis sobre rodas, para que os operadores se pudessem mover a volta dele. Um dos gigantes paneis laterais do ENIAC Quando em operaao, os complexos clculos de balstica passaram a realizarse nuns alucinantes 30 segundos, quando com as calculadoras manuais que at a se usavam demorava 12 horas at se obter o mesmo resultado.

O centro de processamento tinha uma estrutura muito simular a dos processadores mais bsicos que actualmente utilizamos nas nossas calculadoras de bolso. Tinha 20 registos de dez dgitos cada, onde se podiam efectuar somas, subtracoes, multiplicaoes, divisoes e razes quadradas. As programadoras do ENIAC O ENIAC era programado atravs de milhares de interruptores, podendo cada um dele assumir o valor 1 ou 0 consoante o interruptor estava ligado ou desligado. Para o programar era necessrio uma grande quantidade de pessoas que percorriam as longas filas de interruptores dando ao ENIAC as instruoes necessrias para computar, ou seja, calcular. Existia uma equipa de 80 mulheres na Universidade da Pensilvnia cuja funao era calcular manualmente as equaoes diferenciais necessrias para os clculos de balstica. O exrcito chamava a funao destas pessoas: computadores. Quando o ENIAC ficou pronto 6 mulheres computador foram escolhidas para testarem a nova mquina. Pormenor da sala do ENIAC Versao modernizada do ENIAC Curiosamente, o termo deixou de estar associado as pessoas que operavam a mquina para dar nome a mquina propriamente dita, uma vez que de facto a mquina passou a realizar as contas que antes eram realizadas por essas pessoas. O ENIAC torna-se obsoleto e economicamente invivel de manter aps 10 anos de operaao, tendo sido desmontado. Hoje encontram-se peas do ENIAC por muitos museus do mundo, incluindo o Smithsonian em Washington D.C. e no local preciso onde foi construdo, na Moore School for Electrical Engineering da Universidade da Pensilvnia. O ENIAC serviu de inspiraao para muitos outros computadores que se seguiram como: o EDVAC (Electronic Discrete Variable Computer); o ORDVAC (Ordnance Variable Automatic Computer; SEAC (Standards Automatic Computer) e o UNIVAC, este ltimo tambm construdo por Eckert e Mauchly para o processamento dos dados dos censos da populaao americana. Em 1955, um computador j s pesava 3 toneladas e consumia 50 kwatts de potencia, tendo um custo de $200 000. Uma mquina destas podia realizar 50 multiplicaoes por segundo. Assim, os primeiros computadores eram tambm eles mquinas que s estavam ao alcance de grandes empresas ou instituioes que tinham necessidades de clculo muito exigentes e que possuam as condioes econmicas para tao grande investimento. Com o rpido desenvolvimento dos transstores entre 1952 e 1960, os tubos de vcuo tornaram-se obsoletos e foi este avano tecnolgico que permitiu a criaao de mquinas muito mais rpidas, mais pequenas e mais baratas.

Com o tempo, os transstores passaram a ser a base da electrnica, seguindo-se a VLSI (Very Large Scale Integration), ou seja, a construao de circuitos cada vez mais pequenos por forma a que possam ser mais leves e dispender menos energia, por terem menos superfcie para a dissipaao de energia por calor. Esta miniaturizaao permitiu que se tivesse a mesma capacidade de clculo de um ENIAC na palma de uma mao. A diminuiao do tamanho fez tambm diminuir a quantidade de energia necessria e o custo caiu com a produao em srie dos novos processadores. Em 1977 uma calculadora manual pesava menos de meio quilo e consumia meio watt e podia realizar 250 multiplicaoes por segundo, custando $300. Hoje uma calculadora pesa poucos gramas podendo ser incorporada em rguas ou agendas, funciona at a energia solar e custa menos de $5. Um Pentium a 150Mhz capaz de realizar 300 milhoes de somas por segundo, enquanto o ENIAC apenas conseguia realizar 5 000. A memria do ENIAC apenas permitia guardar 200 bits, enquanto qualquer computador tem pelo menos 128 Mbytes, ou seja, 1 073 741 824 bits. Nos meados da dcada de 70 os computadores comearam a ter preos cada vez mais acessveis. Em 1981 a IBM lanou no mercado o PC (Personal Computer). O PC distinguia-se das mquinas existentes at entao por estar dirigido a utilizadores individuais que poderiam passar a ter na sua secretria uma mquina para uso exclusivo, quando at a esse conceito nao existia... Os computadores eram mainframe, centralizados, e os utilizadores tinham apenas um monitor e um teclado sendo todo o processamento realizado no servidor. O PC tinha ainda outra caracterstica que o tornou revolucionrio que era o facto de ter uma arquitectura aberta, ou seja, qualquer fabricante poderia criar peas adaptveis aquela mquina dando-lhe uma funcionalidade mais especializada, o que at a era sempre privilgio reservado para o fabricante do computador. Assim o PC passou a ser o standard de facto na indstria. Uma regra estatstica que se tem verificado desde a invenao do primeiro computador a Lei de Moore que diz: A cada 18 a 24 meses lanada uma nova tecnologia que permite que os computadores dupliquem o desempenho. IIsto estava errado pois em 2004 os melhores computadores funcionavam 3.2 Ghz e agora (Outubro/2009)os melhores computadores ainda s funcionam a 5 Ghz

Sistema operativoEstimativa do uso atual de sistemas operativos segundo uma amostra de computadores com acceso a Internet (Fonte: W3counter).

(portugus europeu) Um sistema operativo ou sistema brasileiro) operacional (portugus um programa ou um conjunto de programas cuja funo gerenciar os recursos do sistema (definir qual programa recebe ateno do processador, gerenciar memria, criar um sistema de arquivos, etc.), alm de fornecer uma interface entre o computador e o usurio. o primeiro programa que a mquina executa no momento em que ligada (num processo chamado de bootstrapping) e, a partir de ento, no deixa de funcionar at que o computador seja desligado. O sistema operacional reveza sua execuo com a de outros programas, como se estivesse vigiando, controlando e orquestrando todo o processo computacional.

Segundo alguns autores (Silberschatz et al, 2005; Stallings, 2004; Tanenbaum, 1999), existem dois modos distintos de conceituar um sistema operacional: pela perspectiva do usurio ou programador (viso top-down): uma abstrao do hardware, fazendo o papel de intermedirio entre o aplicativo (programa) e os componentes fsicos do computador (hardware); ou numa viso bottom-up, de baixo para cima: um gerenciador de recursos, i.e., controla quais aplicaes (processos) podem ser executadas, quando, que recursos (memria, disco, perifricos) podem ser utilizados. A sigla usual para designar esta classe de programas SO (em portugus) ou OS (do ingls Operating System).

HistriaNa primeira gerao de computadores (aproximadamente 1945-1955), os computadores eram to grandes que ocupavam salas imensas. Foram basicamente construdos com vlvulas e painis, os sistemas operacionais "no existiam". Os programadores, que tambm eram os operadores, controlavam o computador por meio de chaves , fios e luzes de aviso. Nomes como Howard Aiken (Harvard), John von Neumann (Instituto de Estudos Avanados de Princeton), John Adam Presper Eckert Jr e William Mauchley (Universidade da Pennsylvania) e Konrad Zuse (Alemanha) formaram, com suas contribuies, a base humana para o sucesso na construo dos computadores primitivos.

Na gerao seguinte (aproximadamente 1955-1965), foram criados os sistemas em lote (batch systems), que permitiram melhor uso dos recursos computacionais. A base do sistema operacional era um programa monitor, usado para enfileirar tarefas (jobs). O usurio foi afastado do computador; cada programa era escrito em cartes perfurados, que por sua vez eram carregados, juntamente com o respectivo compilador (normalmente Fortran ou Cobol), por um operador, que por sua vez usava uma linguagem de controle chamada JCL (job control language). No incio da computao os primeiros sistemas operacionais eram nicos, pois cada mainframe vendido necessitava de um sistema operacional especfico. Esse problema era resultado de arquiteturas diferentes e da linguagem de mquina utilizada. Aps essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas (jobs), pois os sistemas eram monousurios e tinham cartes perfurados como entrada (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartes perfurados). Um dos primeiros sistemas operacionais de propsito geral foi o CTSS, desenvolvido no MIT. Aps o CTSS, o MIT, os laboratrios Bell da AT&T e a General Eletric desenvolveram o Multics, cujo objetivo era suportar centenas de usurios. Apesar do fracasso comercial, o Multics serviu como base para o estudo e desenvolvimento de sistemas operacionais. Um dos desenvolvedores do Multics, que trabalhava para a Bell, Ken Thompson, comeou a reescrever o Multics num conceito menos ambicioso, criando o Unics (em 1969), que mais tarde passou a chamar-se Unix. Os sistemas operacionais eram geralmente programandos em assembly, at mesmo o Unix em seu incio. Ento, Dennis Ritchie (tambm da Bell) criou a linguagem C a partir da linguagem B, que havia sido criada por Thompson. Finalmente, Thompson e Ritchie reescreveram o Unix em C. O Unix criou um ecossistema de verses, onde destacam-se: System V e derivados (HP-UX, AIX); famlia BSD (FreeBSD, NetBSD, OpenBSD, etc.), Linux e at o Mac OS X (que deriva do Mach e FreeBSD). Na dcada de 1970, quando comearam a aparecer os computadores pessoais, houve a necessidade de um sistema operacional de utilizao mais fcil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e vendem licenas IBM. O DOS vendeu muitas cpias, como o sistema operacional padro para os computadores pessoais desenvolvidos pela IBM. IBM e Microsoft fariam, ainda, uma parceria para o desenvolvimento de um sistema operacional multitarefa chamado OS/2. Aps o fim da breve parceria a IBM seguiu sozinha no desenvolvimento do OS/2. No comeo da dcada de 1990, um estudante de computao finlands postou um comentrio numa lista de discusso da Usenet dizendo que estava desenvolvendo um kernel de sistema operacional e perguntou se algum gostaria de auxili-lo na tarefa. Este estudante chamava-se Linus Torvalds e o primeiro passo em direo ao to conhecido Linux foi dado naquele momento.

Viso geralUm sistema operativo pode ser visto como um programa de grande complexidade que responsvel por todo o funcionamento de uma mquina desde o software a todo hardware instalado na mquina. Todos os processos de um computador esto por de trs de uma programao complexa que comanda todas a funes que um utilizador impe mquina. Existem vrios sistemas operativos; entre eles, os mais utilizados no dia a dia, normalmente utilizados em computadores domsticos, so o Windows, Linux e Mac OS X. Um computador com o sistema operativo instalado poder no dar acesso a todo o seu contedo dependendo do utilizador. Com um sistema operativo, podemos estabelecer permisses a vrios utilizadores que trabalham com este. Existem dois tipos de contas que podem ser criadas num sistema operativo, as contas de Administrador e as contas limitadas. A conta Administrador uma conta que oferece todo o acesso mquina, desde a gesto de pastas, ficheiros e software de trabalho ou entretenimento ao controlo de todo o seu Hardware instalado. A conta Limitada uma conta que no tem permisses para aceder a algumas pastas ou instalar software que seja instalado na raiz do sistema ou ento que tenha ligao com algum Hardware que altere o seu funcionamento normal ou personalizado pelo Administrador. Para que este tipo de conta possa ter acesso a outros contedos do disco ou de software, o administrador poder personalizar a conta oferecendo permisses a algumas funes do sistema como tambm poder retirar acessos a certas reas do sistema. O sistema operativo funciona com a iniciao de processos que este ir precisar para funcionar correctamente. Esses processos podero ser ficheiros que necessitam de ser frequentemente actualizados, ou ficheiros que processam dados teis para o sistema. Poderemos ter acesso a vrios processos do sistema operativo a partir do gestor de tarefas, onde se encontram todos os processos que esto em funcionamento desde o arranque do sistema operativo at a sua utilizao actual. Pode-se tambm visualizar a utilizao da memria por cada processo, no caso de o sistema operativo comear a mostrar erros ou falhas de acesso a programas tornando-se lento, pode-se verificar no gestor de tarefas qual dos processos estar bloqueado ou com elevado nmero de processamento que est a afectar o funcionamento normal da memria.

FuncionamentoUm sistema operacional possui as seguintes funes: 1. gerenciamento de processos; 2. gerenciamento de memria; 3. sistema de arquivos; 4. entrada e sada de dados.

Gerenciamento de processosO sistema operacional multitarefa preparado para dar ao usurio a iluso que o nmero de processos em execuo simultnea no computador maior que o nmero de processadores instalados. Cada processo recebe uma fatia do tempo e a alternncia entre vrios processos to rpida que o usurio pensa que sua execuo simultnea. So utilizados algoritmos para determinar qual processo ser executado em determinado momento e por quanto tempo. Os processos podem comunicar-se, isto conhecido como IPC (Inter-Process Communication). Os mecanismos geralmente utilizados so: sinais; pipes; named pipes; memria compartilhada; soquetes (sockets); trocas de mensagens. O sistema operacional, normalmente, deve possibilitar o multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes processadores. Para essa tarefa, ele deve ser reentrante e interrompvel, o que significa que pode ser interrompido no meio da execuo de uma tarefa.

Gerenciamento de memriaO sistema operacional tem acesso completo memria do sistema e deve permitir que os processos dos usurios tenham acesso seguro memria quando o requisitam. Vrios sistemas operacionais usam memria virtual, que possui 3 funes bsicas: 1. assegurar que cada processo tenha seu prprio espao de endereamento, comeando em zero, para evitar ou resolver o problema de relocao (Tanenbaum, 1999); 2. prover proteo da memria para impedir que um processo utilize um endereo de memria que no lhe pertena; 3. possibilitar que uma aplicao utilize mais memria do que a fisicamente existente.

Sistema de arquivosA memria principal do computador voltil, e seu tamanho limitado pelo custo do hardware. Assim, os usurios necessitam de algum mtodo para armazenar e recuperar informaes de modo permanente. Um arquivo um conjunto de bytes, normalmente armazenado em um dispositivo perifrico no voltil (p.ex., disco), que pode ser lido e gravado por um ou mais processos.

Interface de usoSistema operacional com Debian com blackbox. interface grfica, no caso, o

Os sistemas operacionais fornecem abstrao de hardware para que seus recursos possam ser usados de maneira correta e padronizada, mas para ser possvel operar um computador, necessrio fornecer tambm uma interface para que o usurio possa desfrutar dos recursos do sistema. Atualmente existem dois tipos de interface: o GUI (graphical user interface), conhecida tambm por interface grfica, e o CUI (command-line interface), sendo essa mais conhecida como interface de linha de comando.

GUI (Graphical user interface)Nesse tipo de interface, o usurio tem a disposio um ambiente de trabalho composto por menus, cones, janelas e outros itens disponveis. O usurio interage com esse tipo de interface usando o mouse, podendo tambm usar o teclado e teclas de atalho. possvel fazer todo tipo de tarefa usando interface grfica, como edio de vdeos e imagens, sendo somente alguns tipos muito especficos de tarefas que se saem melhor em linha de comando. Acrescentar facilidade de uso e agilidade o objetivo da GUI, tendo a desvantagem de consumir muito mais memria que interfaces de linha de comando. Em sistemas unix-likes, existe a possibilidade de escolher o gerenciador de janelas a utilizar, aumentando em muito a liberdade de escolha do ambiente. .Sistema operacional em linha de comando.

CUI line user

(Commandinterface)

Alm da interface grfica, existe a interface de linha de comando, que funciona basicamente com a digitao de comandos, sendo nesse relativamente pouco interativa. Os comandos digitados so interpretados por um interpretador de comandos, conhecidos tambm por shells, bastante comuns em sistemas unix-likes. Um exemplo de interpretador de comandos seria o Bash. Usada geralmente por usurios avanados e em atividades especficas, como gerenciamento remoto, utiliza poucos recursos de hardware em comparao a interface grfica. Nesse tipo de ambiente, raramente se usa o mouse, embora seja possvel atravs do uso da biblioteca ncurses no desenvolvimento dos softwares.

ClassificaesEm relao ao seu projeto (arquitetura), segundo Tanenbaum (1999): Kernel monoltico ou monobloco: o kernel consiste em um nico processo executando numa memria protegida (espao do kernel) executando as principais funes. Ex.: MAC OS X, OS/2, Windows, Linux, FreeBSD. Microncleo ou modelo cliente-servidor: o kernel consiste de funes mnimas (comunicao e gerenciamento de processos), e outras funes, como sistemas de arquivos e gerenciamento de memria, so executadas no espao do usurio como servios; as aplicaes (programas) so os clientes. Ex.: GNU Hurd, Mach. Sistema em camadas: funes do kernel iro executar em camadas distintas, de acordo com seu nvel de privilgio. Ex.: Multics. Monitor de mquinas virtuais: fornece uma abstrao do hardware para vrios sistemas operacionais. Ex.: VM/370, VMware, Xen. Quanto ao gerenciamento de processos, pode-se usar a seguinte classificao: Monotarefa: pode-se executar apenas um processo de cada vez Ex.: MS-DOS. Multitarefa: alm do prprio SO, vrios processos de utilizador (tarefas) esto carregados em memria, sendo que um pode estar ocupando o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador distribudo de modo que o usurio tenha a impresso que vrios processos esto sendo executados simultaneamente. Ex: OS/2, Windows, Linux, FreeBSD e o Mac OS X.

Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores. Multiprogramao: o SO divide o tempo de processamento entre vrios processos mantendo o processador sempre ocupado. Quanto quantidade de usurios que podem utilizar o sistema simultaneamente: Monousurio: apenas um usurio por vez (apesar de poder suportar recursos como troca de usurio). Ex.: Windows. Esse tambm pode ser acesado por terminais e conexo remota. Multiusurio: vrios usurios usam o computador ao mesmo tempo, seja por diversos terminais, seja por conexo remota como o SSH. Ex.: Linux, Unix.

Exemplos de sistemas operacionais ativosWindows Mac OS X Linux Solaris FreeBSD Haiku eComStation FreeDOS Unix System V AmigaOS Minix

Exemplos de sistemas operacionais importantes que foram descontinuadosMS-DOS OS/2 BeOS NeXTStep CP/M

RefernciasBACH, Maurice J. The design of the Unix operating system. Upper Saddle River: Prentice Hall. 1990. BOVET Daniel P.; CESATI, Marco. Understanding de Linux kernel. 3.ed. Sebastopol: O'Reilly. 2005. MCKUSICK, Marshall K.; NEVILLE-NEIL, George V. The design and implementation of the FreeBSD operating system. Upper Saddle River: Addison-Wesley. 2004. RUSSINOVITCH, Mark E.; SOLOMON, David A. Microsoft Windows internals. 4.ed. Redmond: Microsoft Press. 2005. SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating system concepts. 7.ed. Hoboken: Wiley. 2005. STALLINGS, William. Operating systems: internals and design principles. 5.ed. Upper Saddle River: Pearson Prentice Hall. 2004. TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999.

Ver tambmPseudo-Sistema Operacional Sistema distribudo Lista de sistemas operativos Inter-Process Communication Sistemas Operacionais On-line Sistema operacional em disco

ncleoUm ncleo de sistema conecta o de um computador. software aplicativo ao hardware

Em computao, o ncleo ou cerne (em ingls: kernel) o componente central do sistema operativo da maioria dos computadores; ele serve de ponte entre aplicativos e o processamento real de dados feito a nvel de hardware. As responsabilidades do ncleo incluem gerenciar os recursos do sistema (a comunicao entre 5 componentes de hardware e software). Geralmente como um componente bsico do sistema operativo, um ncleo pode oferecer a camada de abstrao de5Wulf 74 pp.337-345

nvel mais baixo para os recursos (especialmente processadores e dispositivos de entrada/sada) que softwares aplicativos devem controlar para realizar sua funo. Ele tipicamente tornas estas facilidades disponveis para os processos de aplicativos atravs de mecanismos de comunicao entre processos e chamadas de sistema. Tarefas de sistemas operativos so feitas de maneiras diferentes por ncleos diferentes, dependendo do seu desenho e abordagem. Enquanto ncleos monolticos tentaro alcanar seus objetivos executando todos cdigos de sistema no mesmo espao de endereamento para aumentar a performance do sistema, microncleos executam a maioria dos servios do sistema no espao de usurio como servidores, buscando melhorar a manuteno e a modularidade do sistema operativo.6 Uma gama de possibilidades existem entre estes extremos.

Viso geralUma viso tpica de uma como sries de camadas de montador, ncleo, sistema tambm Organizao Estruturada Tanenbaum.). arquitetura de computadores abstrao: hardware, firmware, operativo e aplicativos (veja de Computadores, por Andrew S.

Na definio do 'ncleo', palavra "tradicionalmente do sistema operativo que software no sistema."7

Jochen Liedtke disse que a usada para definir a parte obrigatria e comum a todo

A maioria dos sistemas operativos depende do conceito de ncleo. A existncia de um ncleo uma consequncia natural de projetar um sistema de computador como sries de camadas de abstrao,8 cada uma das funes dependendo das funes das camadas abaixo de si. O ncleo deste ponto de vista, simplesmente o nome dado ao nvel mais inferior de abstrao que implementado em software. Para evitar ter um ncleo, teriase que projetar todo o software no sistema de modo a no utilizar abstrao alguma; isto iria aumentar a complexidade e o projeto a tal ponto que apenas os sistemas mais simples seriam capazes de ser implementados.

6Roch 2004 7Liedtke 95 8Tanenbaum 79, chapter 1

Enquanto isto hoje chamado ncleo, originalmente a mesma parte do sistema tambm foi chamado o nucleus ou caroo9101112 (Nota, no entanto, este termo caroo tambm foi usado para se referir a memria primordial de um sistema de computador, por que alguns dos primeiros computadores usaram uma forma de memria chamada memria de caroos magnticos), e foi concebido originalmente como contendo apenas os recursos de suporte essenciais do sistema operativo. Na grande maioria dos casos, o processo de iniciao comea executando o ncleo no modo supervisor.13 O ncleo depois inicializa a si e depois o primeiro processo. Depois disto, tipicamente, o ncleo no executa diretamente, apenas em resposta para eventos externos (ex., atravs de chamadas de sistema usados pelos aplicativos para requisitar servios do ncleo, ou via interrupes usadas pelo hardware para notificar o ncleo sobre eventos). Alm disso, tipicamente o ncleo fornece um lao que executado sempre que nenhum processo esta disponvel para execuo; geralmente chamado de processo desocupado. O desenvolvimento do ncleo considerado uma das mais complexas e difceis tarefas em programao.14 Sua posio central em um sistema operativo implica na necessidade de boa performance, que define o ncleo como pea de software crtica e torna seu desenvolvimento correto e implementao correta difcil. Devido a diversas razes, o ncleo pode at no ser capaz de utilizar mecanismos de abstrao, que ele fornece a outro software. Tais razes incluem preocupaes com o gerenciamento de memria (ex. uma funo em modo de usurio pode depender de memria estando sujeita a paginao por demanda, mas como o prprio ncleo fornece esta facilidade, ele no pode utiliz-la, pois ele pode no permanecer na memria para fornecer esta facilidade) e a falta de reentrncia, logo o seu desenvolvimento torna-se ainda mais difcil para engenheiros de software. Geralmente um ncleo vai fornecer recursos para escalonamento de processos de baixo nvel15, comunicao entre processos, sincronizao de processos, troca de contexto, manipulao de blocos de controle de processo, gerenciamento de interrupes, criao e destruio de processos, e suspenso e continuao de processos (veja estados de processos).1617

9 10Deitel 82, p.65-66 cap. 3.9 11Lorin 81 pp.161-186, Schroeder 77, Shaw 75 pp.245-267 12Brinch Hansen 70 pp.238-241 13O nvel de privilgio mais alto possui vrios nomes pelas diferentes arquiteturas, tais como modo supervisor, modo ncleo, CPL0, DPL0, Anel 0, etc. Veja [Anel (segurana)] para mais informaes. 14Desenvolvimento do SO Bona Fide - Tutorial do Bran para Desenvolvimento de Ncleo, por Brandon Friesen 15Para escalonamento de processos de baixo nvel veja Deitel 82, ch. 10, pp. 249268. 16 17

Facilidades bsicas do ncleoO principal propsito do ncleo gerenciar os recursos do computador e permitir que outros programas rodem e usem destes recursos.18 Tipicamente estes recursos consistem de: A unidade de processamento central (CPU, p processador). Esta a parte mais central de um sistema de computao, responsvel por rodar ou executar programas nele. O ncleo tm a responsabilidade de decidir em qualquer momento qual dos programas em execuo deve ser alocado para o processador ou processadores (cada um dos quais geralmente pode executar um programa por vez) A memria. A memria usada para armazenas ambos instrues do programa e dados. Tipicamente, ambos precisam estar presentes na memria de modo a tornar a execuo do programa possvel. Frequentemente mltiplos programas buscaro acesso memria ao mesmo tempo, na maioria das vezes exigindo mais memria do que o computador pode disponibilizar. O ncleo responsvel pela deciso de que memria cada processo pode utilizar, e determinar o que fazer quando menos do suficiente est disponvel. Qualquer dispositivo de entrada/sada presente no computador, tais como teclado, rato, entradas de disquete, impressoras, telas, etc. O ncleo aloca pedidos de aplicativos para realizar entrada/sada para um dispositivo apropriado (ou subseo de um dispositivo, no caso de arquivos em um disco ou janelas em uma tela) e fornece mtodos convenientes para o uso do dispositivo (tipicamente abstrado ao ponto onde o aplicativo no precisa mais conhecer os detalhes da implementao do dispositivo). Aspectos importantes no gerenciamento de recursos so a definio de um domnio de execuo (espao de endereamento) e o mecanismo de proteo utilizado para mediar o acesso a recursos dentro de um domnio.19 Ncleos geralmente to oferecem mtodos para sincronizao e comunicao entre processos (IPC (em ingls)). Um ncleo pode implementar estes recursos ele mesmo, ou depender de alguns processos que ele executa para fornecer estas facilidades a outros processos, no entanto neste caso ele deve oferecer algum modo do IPC permitir que processos acessem as facilidades fornecidas um pelo outro. Finalmente, um ncleo deve oferecer um mtodo de acesso a estas facilidades para os programas em execuo.

18 19

Gerenciamento de ProcessosA principal tarefa de um ncleo permitir a execuo de aplicativos e ajud-los com recursos como abstraes de hardware. Um processos define que pores da memria o aplicativo pode acessar.20 (Para esta introduo, processo, aplicativo e programa so usados como sinnimos.) O gerenciamento de processos do ncleo deve levar em conta o equipamento de hardware embarcado para proteo de memria.21 Para rodar um aplicativo, um ncleo geralmente cria um espao de endereamento para o aplicativo, carrega o arquivo contendo de instrues do programa na memria (talvez via paginao por demanda), cria uma pilha para o programa e ramos para uma dada localizao dentro do programa, iniciando, portanto a sua execuo.22 Ncleos multitarefa so capazes de dar ao usurio a iluso de que um nmero de processos que esta rodando simultaneamente no sistema maior do que o nmero de processos que aquele sistema fisicamente capaz de rodar simultaneamente. Usualmente, o nmero de processos que um sistema pode rodar simultaneamente igual o nmero de CPUs que ele possui instaladas (no entanto, isto pode no ser o caso de processadores que suportam mltiplas linhas de execuo simultneas). Em um sistema multitarefas preemptivo, o ncleo dar a todos programas uma parcela do tempo e vai alternar de processo a processo to rapidamente que dar ao usurio a impresso de como se os processos estivessem sendo executados simultaneamente. O ncleo utiliza algoritmos de escalonamento para determinar qual processo ser executado a seguir e quanto tempo lhe ser dado. O algoritmo escolhido pode permitir que alguns processos tenham uma prioridade mais alta que muitos outros. O ncleo geralmente tambm prov a esses processos uma maneira de comunicarem-se; isto chamado comunicao entre processos (IPC (em ingls)) e as principais implementaes so memria compartilhada, troca de mensagens e chamadas de procedimento remoto (veja computao concorrente). Outros sistemas (particularmente em computadores menores, menos potentes) podem fornecer multitarefa de cooperao, em que cada processo permitido rodar sem ininterruptamente at que ele faa uma requisio especial que avisa ao ncleo que ele pode alternar para outro processo. Tais requisies so conhecidos como "indulgncias" (yielding(em ingls), e tipicamente ocorrem em resposta a um pedido para comunicao entre processos, ou para esperar at o acontecimento de um evento. Verses mais antigas de ambos Microsoft Windows e Mac OS utilizaram o conceito de multitarefa cooperativa, mas alternaram para esquemas preemptivos conforme a potncia dos computadores alvo de seu mercado aumentava[carece de fontes?].

20Levy 1984, p.5 21Needham, R.M., Wilkes, M. V. Domnio de proteo e gerenciamento de processos, Computer Journal, vol. 17, no. 2 de maio de 1974, pp 117-120. 22Silberschatz 1990

O sistema operativo pode tambm suportar o multiprocessamento (multiprocessamento simtrico (SMP (em ingls)), ou, acesso no-uniforme a memria); neste caso, diferentes programas e linhas de execuo podem rodar em diferentes processadores. Um ncleo para tal sistema deve ser projeto para ser reentrante, o que significa que ele pode rodar seguramente duas partes de seu cdigo simultaneamente. Isto tipicamente significa oferecer mecanismos de sincronizao (como trava-giros) para assegurar que dois processadores no tentaro modificar os mesmos dados ao mesmo tempo.

Gerenciamento de MemriaO ncleo possui acesso completo a memria do sistema e deve permitir que processos acessema memria com segurana conforme a sua necessidade. Frequentemente o primeiro passo para isso o endereamento virtual, geralmente alcanado atravs da paginao e/ou segmentao. Endereamento virtual permite ao ncleo fazer com que um dado endereo fsico parea ser outro endereo, o endereo virtual. Espaos de endereo virtual podem ser diferentes para diferentes processos; a memria que um processos acessa em um endereo (virtual) particular pode ser diferente da que um outro processo acessa pelo mesmo endereo. Isto permite a todos programas funcionar como se ele fosse o nico em execuo, alm do ncleo, e por isso evita que aplicativos travem uns aos outros.23 Em vrios sistemas, o endereo virtual de um programa pode se referir a dados que no esto na memria atualmente. A cama de indireo oferecida pelo endereamento virtual permite que o sistema utilize meios de armazenagem de dados, como um disco rgido, para armazenar o que de outro modo teria que permanecer na memria (RAM(em ingls)). Como resultado. sistemas operativos podem permitir que programas usem mais memria do que est fisicamente disponvel. Quando um programa precisa de dados que no esto na RAM, a CPU avisa o ncleo que isto ocorre, e o ncleo responde escrevendo o contedo de um bloco de memria inativo para o disco (se necessrio), e substituindo-o na memria com os dados requisitados pelo programa. O programa pode ento continuar sua execuo do ponto em que foi suspenso. Este esquema geralmente conhecido como paginao por demanda. Endereamento virtual tambm permite a criao de parties virtuais de memria em duas reas separadas, uma sedo reservada para o ncleo (espao de ncleo) e o outro para os aplicativos (espao de usurio). Os aplicativos no tem permisso do processador para acessar a memria do ncleo, portanto prevenindo que um aplicativo possa danificar o ncleo em execuo. Esta partio fundamental de espao de memria contribuiu muito para os projetos de ncleos realmente de propsito geral e quase universal em tais sistemas, embora algumas ncleos de pesquisa (ex. Singularity) usarem outros mtodos.

23

Gerenciamento de dispositivosPara realizar funes teis, processos precisam acessar perifricos conectados ao computador, que so controlados pelo ncleo atravs do driver do dispositivo. Por exemplo, para mostrar ao usurio algo utilizando a tela, um aplicativo teria que fazer um requisio ao ncleo que encaminharia a requisio para o seu driver de tela, que responsvel por realmente tracejar os carcteres/pixeis.24 Um ncleo deve manter uma lista de dispositivos disponveis. Esta lista pode ser conhecida de antemo (ex. em um sistema embarcado onde o ncleo ser reescrito se o hardware disponvel mudar), configurado pelo usurio (tpico em computadores pessoais antigos e em sistemas projetados para uso pessoal) ou detectado pelo sistema durante a execuo (normalmente chamado Ligar e Usar). Em um sistema "Ligar e Usar", um dispositivo realizar primeiro uma sondagem em nos diferentes barramentos de hardware, como Interconector de Componentes Perifricos (PCI(em ingls)) ou Barramento Serial Universal (USB(em ingls)), para detectar os dispositivos instalados, depois busca os drivers apropriados. Como o gerenciamento de dispositivos um tpico muito especifico do SO, estes drivers so manipulados de modos diferentes por cada tipo de desenho de ncleo, mas em todos os casos, o ncleo tem que fornecer a entrada/sada para permitir que os drivers acessem fisicamente seus dispositivos atravs alguma porta ou localizao da memria. Decises muito importantes precisam ser feitas ao projetar o sistema de gerenciamento de dispositivos, j que em alguns projetos de acesso podem envolver trocas de contexto , tornando a operao custosa para o processador e causando um gasto excessivo de recursos.[carece defontes?]

Chamadas do SistemaPara realmente realizar algo til, um processo deve acessar os servios oferecidos pelo ncleo. Isto implementado por cada ncleo, mas a maioria oferece uma Biblioteca padro do C ou uma Interface de programao de aplicativos, que envolve as funes relativas ao ncleo.25 O mtodo de invocar as funes do ncleo varia de ncleo para ncleo. Se o isolamento de memria est sendo usado, impossvel para um processo de usurio chamar o ncleo diretamente, por que isso seria uma violo das regras de controle de acesso do processador. Algumas possibilidades so: Usar uma interrupo de software simulada. Este mtodo est disponvel na maioria dos hardwares, e , portanto, muito comum.

24 25Tanenbaum, Andrew S.. Modern Operating Systems. 3rd Edition.ed. pp. 5051.

Usando um porto de chamada. Um porto de chamada um endereo especial armazenado pelo ncleo em uma lista na memria do ncleo em uma localizao conhecida pelo processador. Quando o processador detecta uma chamada para este endereo, ele ao invs disso redireciona para a localizao alvo sem causar nenhuma violao de acesso. Exige suporte no hardware, mas este tipo de hardware muito comum. Usando uma instruo de chamada de sistema especial. Esta tcnica exige suporte especial no hardware, que em algumas arquiteturas habituais no possuem (notavelmente, x86). Instrues de chamadas de sistema foram adicionadas a modelos recentes do processadores x86, embora, poucos (mas no todos) sistemas operativos fazem uso destes quando disponveis. Usando uma fila baseada na memria. Um aplicativo que faz um grande nmero de requisies mas no precisa esperar o resultado de cada uma pode adicionar detalhes das requisies em uma rea da memria que o ncleo sonda periodicamente para encontrar requisies.

Decises de desenho do NcleoProblemas com o suporte do ncleo para proteoUma considerao importante no desenho do ncleo o suporte que ele oferece para proteo contra faltas (tolerncia a falhas) e de comportamentos # malintencionados (segurana). Estes dois aspectos geralmente no so claramente distinguidos, e a separao no desenho do ncleo leva a rejeio de uma estrutura hierrquica de proteo.26 Os mecanismos ou polticas oferecidos pelo ncleo podem ser classificados de acordo com vrios critrios, como: esttico (forado durante o tempo de compilao) ou dinmico (forado durante o tempo de execuo); preemptivo ou ps-deteco; de acordo com os princpios de proteo a que eles correspondem (ex. Denning2728); quer eles sejam suportados pelo hardware ou baseados em linguagem; quer eles sejam mais um mecanismo aberto ou ma poltica compulsiva; e muito mais.

26 27Denning 1976 28Swift 2005, p.29 quote: "isolao, controle de recursos, verificao de deciso (checagem), e recuperao de erros."

Tolerncia a falhasUma medida til para o nvel de tolerncia a falhas de um sistema quo estrito ele com relao ao princpio do menor privilgio.29 Em casos onde mltiplos programas esto rodando em um nico computador, importante prevenir falhas em um dos programas de afetar negativamente outro. Estendendo-se ao desenho com ms-intenes mais do que a falha em si, isto tambm implica a segurana, quando necessrio impedir processos de acessar informaes sem que lhes seja dada a devida permisso. As duas principais implementaes via hardware30 para proteo (de informaes sensveis) so domnios hierrquicos de proteo (tambm chamadas arquiteturas anel, arquiteturas de segmento ou modo supervisor),31 e endereamento baseado em capacidades.32anis de privilgio, como na habitual de domnios usados em muitos sistemas nvel de tolerncia a falhas. x86, so uma abordagem hierrquicos de proteo comerciais para obter algum

Domnios hierrquicos de proteo so muito menos flexveis, como no caso de qualquer ncleo com uma estrutura hierrquica presumida como um critrio de desenvolvimento global.33 No caso de proteo no possvel designar diferentes privilgios a processos que no esto no mesmo nvel de privilgio, e por isso no possvel corresponder aos quatro princpios de Denning para a tolerncia a falhas3435, particularmente o princpio do menor privilgio. Domnios hierrquicos de proteo tambm carregam uma enorme desvantagem na performance, j que a interao entre diferentes nveis de proteo, quando um processos tem que manipular uma estrutura de dados em ambos 'modo usurio' e 'modo supervisor', sempre exige cpia de mensagens (transmisso por valor).36 Um ncleo baseado em capacidades, no entanto, mais flexvel em designar privilgios, pode corresponder aos princpios de Denning para a tolerncia a falhas37, e geralmente no sofrem de problemas de performance da cpia por valor.

29Cook, D.J. Medindo a proteo da memria, aceito na terceira Conferncia Internacional da Engenharia de Software, Atlanta, Georgia, Maio de 1978. 30Swift 2005 p.26 31Intel Corporation 2002 32Houdek et al. 1981 33 34 35 36Hansen 73, Seo 7.3 p.233 "interaes entre diferentes nveis de proteo exigem a transmisso de mensagens por valor" 37Linden 76

Ambas implementaes tipicamente exigem algum suporte de hardware ou firmware para serem operveis e eficientes. O suporte de hardware para domnios hierrquicos de proteo38 geralmente de "modos de CPU." Um modo simples e eficiente de fornecer suporte a hardware delegar unidade de gerenciamento de memria a responsabilidade por checar as permisses de acesso para todos acessos a memria, um mecanismo chamado endereamento baseado em capacidades.39 Falta na maioria das arquiteturas comerciais, o suporte a MMU para capacidades. Uma abordagem alternativa simular capacidades usando domnios hierrquicos comumente suportados; nesta abordagem, cada objeto protegido deve residir num espao de endereamento ao qual o aplicativo no possui acesso; o ncleo tambm mantm uma lista de capacidades em tal memria. Quando um aplicativo precisa acessar um objeto protegido por uma capacidade, ele realiza uma chamada de sistema e o ncleo realiza o acesso a ele. O custo de performance de trocar de espao de endereamento limita a praticabilidade desta abordagem em sistemas com interaes complexas entre objetos, mas utilizado nos sistemas operativos atuais para objetos que no so acessados frequentemente ou que no devem ser feitos rapidamente.4041 Implementaes onde os mecanismos de proteo no suportados pelo firmware, mas so, ao invs disso, simulados em nveos mais altos (ex. simulando capacidades ao manipular tabelas de pginas em hardware que no possui suporte direto), so possveis, mas h implicaes de performance.42 No entanto, falta de suporte no hardware pode no ser problema, para sistemas que escolhem usar uma proteo baseada em linguagem.43 Uma deciso importante no projeto do ncleo a escolha dos nveis de abstrao em que os mecanismos e polticas de segurana devem ser implementados. Os mecanismos de segurana do ncleo tm um papel crtico no suporte a segurana nos nveis superiores.444546474838Schroeder 72 39 40Stephane Eranian & David Mosberger, Memria Virtual no ncleo Linux IA-64, Prentice Hall PTR, 2002 41Silberschatz & Galvin, Conceitos de Ssistema Operativo, 4th ed, pp445 & 446 42Hoch, Charles; J. C. Browne (Universidade do Texas, Austin) (Julho 1980). " An implementation of capabilities on the PDP-11/45" (pdf). ACM SIGOPS Operating Systems Review 14 (3): 2232. DOI: 10.1145/850697.850701. 43Uma Abordagem a Segurana Baseada em Linguagem, Schneider F., Morrissett G. (Universidade Cornell) e Harper R. (Universidade Carnegie Mellon) 44 45P. A. Loscocco, S. D. Smalley, P. A. Muckelbauer, R. C. Taylor, S. J. Turner, and J. F. Farrell. A Inevitabilidade do Futuro: A Presuno Falsa de Segurana no Ambiente de Computao Moderna. Em procedimentos da 21 Conferncia Nacional de Segurana de Sistemas de Informao, pginas 303314, Out. de 1998. [0]. 46J. Lepreau e outros. A Relevncia Persistente do Ssistema Operativo Local aos Aplicativos Globais. Procedimentos da 7 ACM SIGOPS Eurcshelf/book001/book001.html Segurana da Informao: Uma Coleo Integrada de Dissertaes], IEEE Comp. 1995. 47J. Anderson, Estudo de Planejamento de Segurana de Computadores, Air Force Elect. Systems Div., ESD-TR-73-51, Outubro de 1972. 48* Jerry H. Saltzer, Mike D. Schroeder (Setembro de 1975). " A proteo de informao em sistemas de computador". Proceedings of the IEEE 63 (9): 12781308. DOI:

Uma abordagem utilizar suporte no ncleo e firmware para tolerncia a falhas (ver acima), e montar as polticas de segurana para comportamento malicioso em cima disso (adicionando recursos como mecanismos de criptografia quando necessrio), delegar mais responsabilidade para o compilador. Implementaes que delegam a aplicao de polticas de segurana para o compilador e/ou nvel do aplicativo so geralmente chamados segurana baseada em linguagem. A falta de muitos mecanismos crticos de segurana nos principais sistemas operativos impede a implementao adequada de polticas de segurana no nvel de abstrao do aplicativo.49 Na verdade, um engano muito comum na segurana de computadores que qualquer poltica de segurana pode ser implementada no aplicativo, independentemente do suporte no ncleo.50

Proteo baseada em hardware ou linguagemHoje, tpicos sistemas de computao usam regras aplicadas pelo hardware sobre quais programas tm permisso para acessar quais dados. O processador monitora a execuo e desliga um programa que viole uma regra (ex., um processo de usurio que tenta ler ou escrever na memria do ncleo, e assim por diante). Em sistemas que no possuem suporte para capacidades, processos so isolados um do outro, utilizando-se espaos de endereamento separados.51 Chamadas de um processo de usurio no ncleo so regidas pela exigncia de que eles usem um dos mtodos de chamada do sistema descritos acima. Uma abordagem alternativa usar proteo baseada em linguagem. Em um sistema de proteo baseado em linguagem, o ncleo vai permitir a execuo apenas de cdigo produzido por um compilador em que ele confie. A linguagem pode ento, ser projetada de modo tal que ser impossvel para o programador instruir algo que violaria os requisitos de segurana.52 Desvantagens incluem: Demora maior para a inicializao efetiva do aplicativo. Aplicativos deve ser verificadas sempre que elas so iniciadas para garantir que eles foram compiladas utilizando um compilador "corret", ou podem necessitar de recompilao de ambos cdigo fonte ou bytecode. Sistema s de tipo inflexvel. Em sistemas tradicionais, aplicativos realizam frequentemente operaes que no so de tipagem forte. Tais operaes no podem ser permitidas em um sistema de proteo baseado em linguagem, o que significa que aplicativos podem precisar ser reescritos e podem, em alguns casos, perder performance.

10.1109/PROC.1975.9939. 49 50 51Jonathan S. Shapiro; Jonathan M. Smith; David J. Farber. " EROS: um sistema de capacidades rpido". Procedimentos da 70 simpsio ACM sobre princpios de sistemas operativos. 52

Vantagens desta abordagem incluem: Separao de espaos de endereamento desnecessria. A troca de espaos de endereamento uma operao lenta que causa grande degradao na performance, e muito trabalho de otimizao feito atualmente para prevenir trocar desnecessrias nos sistemas operativos. Trocar complemente desnecessrio em um sistema de proteo baseada em linguagem, j que todo cdigo opera no mesmo espao de endereamento. Flexibilidade. Qualquer esquema de proteo que possa ser desenvolvida para ser expresso atravs de linguagem de programao pode ser implementada atravs deste mtodo. Mudanas no esquema de proteo (ex. de um sistema hierrquico para um baseado em capacidades) no exigem novo hardware. Exemplos de sistemas com proteo baseada em linguagem incluem o JX e Singularity.

Cooperao de processosEdsger Dijkstra provou que partindo de um ponto de vista lgico, operaes atmicas de travamento e destravamento operando em semforos binrios so suficientemente primitivos para expressar a qualquer funcionalidade de cooperao entre processos.53 No entanto esta abordagem geralmente tomada como deficiente em termos de segurana e eficincia, enquanto que uma abordagem via troca de mensagens mais flexvel.54

Gerenciamento de dispositivos de entrada/sadaA ideia de um ncleo onde dispositivos de entrada/sada so gerenciados uniformemente com outros processos, como processos paralelos em cooperao, foi proposta e implementada primeiramente por Brinch Hansen (embora ideias similares tenham sido sugeridas em 19675556). Na descrio de Hansen disto, os processos "comuns" so chamados processos internos, enquanto que os dispositivos de entrada/sada so chamados processos externos.57

53Dijkstra, E. W. Processos Sequenciais Cooperadores. Math. Dep., Technological U., Eindhoven, Set. 1965. 54 55SHARER, um sistema de compartilhamento de tempo para o CDC 6600. Pgina visitada em 2007-01-07. 56Supervisores Dinmicos - seu projeto e construo. Pgina visitada em 2007-01-07. 57

Abordagens de desenvolvimento de todo o ncleoNaturalmente, as tarefas e recursos listados acima podem ser fornecidas de vrios modos que diferem entre si em projeto e implementao. O princpio da separao entre o mecanismo e a poltica a diferena substancial entre a filosofia de microncleo e ncleo monoltico.5859 Aqui um mecanismo o apoio que permite a implementao de vrias polticas diferentes, enquanto uma poltica um "modo de operao" particular. Por exemplo, uma mecanismo pode oferecer s tentativas de entrada de um usurio um mtodo de chamar um servidor de autorizao para determinar se um acesso deve ser dado; uma poltica pode ser para o servidor de autorizao exigir uma senha e chec-la contra uma senha embaralhada armazenada numa base de dados. Devido ao fato do mecanismo ser genrico, a poltica pode ser alterada com mais facilidade (ex. ao exigir o uso de um passe) do que se um mecanismo e poltica fossem integrados no mesmo mdulo. Em um microncleo mnimo algumas polticas bsicas so includas,60 e seus mecanismos permite que o que est rodando sobre o ncleo (a parte remanescente do sistema operativo e outras aplicaes) decida quais polticas adotar (como gerenciamento de memria, escalonamento de processo de alto nvel, gerenciamento de sistema de arquivos, etc.).6162 Um ncleo monoltico ao invs disso, tende a incluir vrias polticas, ento restringindo o resto do sistema dependente delas.

58Baiardi 1988 59Levin 75 60 61 62

Per Brinch Hansen apresentou um argumento convincente a favor da separao do mecanismo e da poltica.6364 A falha em preencher completamente esta separao, uma das maiores causas para a falta de inovao nos sistemas operativos existentes atualmente,65 um problema comum nas arquiteturas de computador.666768 O projeto monoltico induzido pela abordagem de arquitetura "modo ncleo"/"modo usurio" para proteo (tecnicamente chamada de domnios hierrquicos de proteo), que comum em sistemas comercias convencionais;69 na verdade, todo mdulo que necessite de proteo portanto preferivelmente includo no ncleo.70 Esta ligao entre projeto e "modo privilegiado" pode ser reconduzida at o problema chave da separao do mecanismo e da poltica;71 de fato, a abordagem de arquitetura de "modo privilegiado" se funde ao mecanismo de proteo com as polticas de segurana, enquanto a principal abordagem de arquitetura alternativa , endereamento baseado em capacidades, claramente distingue ambos, levando naturalmente ao desenvolvimento de um microncleo design72 (veja Separao entre proteo e segurana). Enquanto ncleos monolticos executam todo seu cdigo no mesmo espao de endereamento (espao de ncleo) microncleos tentam executar a maior parte dos seus servios no espao de usurio, buscando aprimorar a manuteno e modulabilidade do cdigo base.73 A maioria dos ncleos no se encaixa exatamente em uma destas categorias, sendo mais encontrados entre estes dois projetos. Os chamados ncleos hbridos. Projetos mais exticos como nanoncleos e exoncleos esto disponveis, mas so usados raramente utilizado para sistemas produtivos. O virtualizador Xen, por exemplo, um exoncleo.Diagrama de ncleos monolticos

63 64 65 66Denning 1980 67Jrgen Nehmer A Imoralidade dos sistemas operativos, ou: Pesquisa nos sistemas operativos ainda Justificvel? Notas em Cincia da Computao; Vol. 563. Processo da Oficina Internacional sobre sistemas operativos dos anos 90 em diante. pp. 77 - 83 (1991) ISBN 3-54054987-0 [1] citao: "Os ltimos 25 anos mostraram que a pesquisa sobre arquiteturas de sistemas operativos teve pouco efeito nos principais sistemas operativos." [2] 68Levy 84, p.1 citao: "Embora a complexidade dos aplicativos de computador aumenta anualmente, a arquitetura de hardware subjacente para aplicativos se manteve intocada por dcadas." 69Levy 84, p.1 citao: "Arquiteturas convencionais suportam um nico modo privilegiado de operao. Esta estrutura leva a um desenvolvimento monoltico; qualquer mdulo precisando de proteo deve ser parte do nico ncleo do sistema operativo. Se, ao contrrio, qualquer mdulo pudesse executar em um domnio protegido, sistemas poderiam ser construdos como uma coleo de mdulos independentes ampliveis por qualquer usurio." 70 71 72 73

Ncleos

monolticos

Em um ncleo monoltico, todos os servios do sistema operativo rodam junto com a linha de execuo principal do ncleo, portanto, tambm se encontram na mesma rea de memria. Esta abordagem permite o acesso vasto e poderoso de hardwares. Alguns desenvolvedores, como desenvolvedor do UNIX Ken Thompson, defendem que "mais fcil de implementar um ncleo monoltico" 74 que microncleos. As principais desvantagens de ncleos monolticos so as dependncias entre os componentes do sistema - um defeito em um driver de dispositivo pode paralisar todo o sistema - e o fato de ncleos grandes podem se tornar muito difceis de manter.Na abordagem do fornece apenas permite a execuo de separados que assumem monoltico, como drivers de interface de usurio, etc. microncleo, o prprio ncleo funcionalidades bsicas que servidores, programas funes que seriam do ncleo dispositivos, servidores de

BSD Linux MS-DOS e derivados, Windows 98 e Windows Solaris Palm OSDiagrama de interao de um microncleo.

incluindo Windows 95, ME

MicroncleosA abordagem de microncleo consiste em definir abstraes simples sobre o hardware, com um conjunto de primitivos ou chamadas de sistema para implementar servios mnimos do sistema operativo como gerenciamento de memria, multitarefas, e comunicao entre processos. Outros servios, incluindo aqueles normalmente fornecidos por um ncleo monoltico como rede, so implementados em programas de espao de usurio, conhecidos como servidores. Microncleos so mais fceis de manter do ncleos monolticos, mas um grande nmero de chamadas de sistemas de trocas de contexto podem desacelerar o sistema por que eles geralmente geram mais degradao na performance do que simples chamadas de funo.74Cdigos Abertos : Vozes da Revoluo do Cdigo Aberto

Um microncleo permite a implementao das partes restantes do sistema operativo como aplicativos normais escritos em linguagem de alto nvel, e o uso de diferentes sistemas operativos sobre o mesmo ncleo no-modificado.75 Ele tambm torna possvel alternar dinamicamente entre sistemas operativos e manter mais de um deles ativos simultaneamente.76 Hurd Minix Mach

Ncleos monolticos x microncleosConforme o ncleo do computador crescem, um nmero de problemas se tornam evidentes. Um dos mais bvios que o espao de memria aumenta. Isto mitigado de certo modo ao aperfeioar o sistema de memria virtual, mas nem todas arquitetura de computador suportam memrias virtuais.77 Para reduzir o espao utilizado pelo ncleo, modificaes extensivas precisam ser realizadas para remover cuidadosamente cdigo intil, que pode ser muito difcil devido a dependncias pouco aparentes entre partes de um ncleo com milhes de linhas de cdigo. Pelo comeo dos anos 1990, devido a vrios problemas de ncleos monolticos em comparao a microncleos, ncleos monolticos foram considerados obsoletos por virtualmente todos pesquisadores de sistemas operativos. Como resultado, o projeto do Linux, um ncleo monoltico mais do que um microncleo foi o tpico da famosa discusso inflamada entre Linus Torvalds e Andrew Tanenbaum.78 H mritos em ambos argumentos presentes no debate TanenbaumTorvalds.

75 76 77Endereamento virtual comumente mais obtido atravs da unidade de gerenciamento de memria incorporado. 78Registros do debate entre Torvalds e Tanenbaum podem ser encontrados em dina.dk, groups.google.com, oreilly.com e Stio do Andrew Tanenbaum

PerformancesNcleos monolticos so projetados para que todo o seu cdigo fique no mesmo espao de endereamento (espao de ncleo), que alguns desenvolvedores argumentam ser necessrio para aumentar a performance do sistema.79 Alguns desenvolvedores tambm sustentam a hiptese de que ncleos monolticos so extremamente eficientes se forem bem escritos.80Wikipedia:Fontes fiveis A performance de microncleos construdos nos anos 1980 e comeos dos 1990 era terrvel.8182 Estudos empricos que mediram a performance destes microncleos no analisaram os motivos para tal ineficincia .83 As explicaes para estes dados foram deixadas para o "folclore"[3], com a suposio de que eles eram devido ao aumento da frequncia da troca de modo ncleo para modo usurio84, devido a maior frequncia de comunicao entre processos85 e a maioria frequncia de trocas de contexto.86 De fato, como foi conjeturado em 1995, os motivos para a terrvel performance dos microncleos pode tambm ter sido: (1) uma real ineficincia na implementao de toda a abordagem de microncleo, (2) conceitos particulares implementados nesses microncleos, e (3) a implementao individual destes conceitos.87 Portanto ainda falta estudar se a soluo para construir um microncleo eficiente foi, ao contrrio de tentativas anteriores, a de aplicar as tcnicas corretas de construo.88 No outro extremo, a arquitetura de domnios hierrquicos de proteo que leva a um projeto de ncleo monoltico89 gera impactos significativos na performance cada vez que h uma interao entre diferentes nveis de proteo (ex. quando um processo tem que manipular uma estrutura de dados em ambos 'modo usurio' e 'modo supervisor'), desde que isto exija cpia de mensagem por valor.90

79Matthew Russell. O que Darwin (e como ele sustenta o Mac OS X). O'Reilly Media. citao: "A natureza fortemente unida do ncleo monoltico permite torn-lo eficiente no uso do hardware subjacente [...] Microncleos, por o