Você está na página 1de 142

Computador

Um 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 computadores


As primeiras mquinas de computar
Pascaline, 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.

Babbage
Rplica (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 tabular
O 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 geral


Z1, 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 hardware
LEGENDA: 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.

Processamento
O 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.

Memria
A 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 primria
A 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 RAM
Memria 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 ROM
Memria 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 secundria
A 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 terciria
Fita 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 sada
Mouse

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

Barramentos
Para 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 software
Instrues
A 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.

Programas
Programas 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 operacional
Um 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 sociedade


Segundo 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 tambm
Commons Wikiquote Wikcionrio Computador domstico Computador pessoal Mainframe

Notebook Servidor Sistema operacional Supercomputador Teoria da computao Reciclagem de computadores

Ligaes externas
Histria 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 Neumann


Diagrama 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 tambm
Arquitetura Harvard

ENIAC
Duas 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 operativo
Estimativa 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).

Histria
Na 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 geral
Um 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.

Funcionamento
Um 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 processos
O 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 memria
O 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 arquivos
A 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 uso
Sistema 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.

Classificaes
Em 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 ativos


Windows Mac OS X Linux Solaris FreeBSD Haiku eComStation FreeDOS Unix System V AmigaOS Minix

Exemplos de sistemas operacionais importantes que foram descontinuados


MS-DOS OS/2 BeOS NeXTStep CP/M

Referncias
BACH, 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 tambm
Pseudo-Sistema Operacional Sistema distribudo Lista de sistemas operativos Inter-Process Communication Sistemas Operacionais On-line Sistema operacional em disco

ncleo
Um 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 de
5Wulf 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 geral
Uma 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 ncleo


O 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 Processos
A 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 Memria
O 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 dispositivos
Para 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 de
fontes?]

Chamadas do Sistema
Para 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 Ncleo


Problemas com o suporte do ncleo para proteo
Uma 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 falhas
Uma 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.32
anis 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.4445464748
38Schroeder 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 linguagem


Hoje, 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 processos
Edsger 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/sada


A 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 ncleo


Naturalmente, 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 OS


Diagrama de interao de um microncleo.

incluindo Windows 95, ME

Microncleos
A 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 microncleos


Conforme 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

Performances
Ncleos 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 outro lado, rodam um nmero muito maior de processos no espao de usurio. [...] Infelizmente, estes benefcios trazem o custo de microncleos terem a necessidade de passar informaes dentro e fora do espao do ncleo atravs de um processos chamado troca de contexto. Trocas de contexto trazem uma degradao de performance considervel." Estas afirmaes no fazem parte de um artigo revisto por partes. 80 81 82Hrtig 97 83 84 85 86 87 88 89 90

Em meados de 1990, a maioria dos pesquisadores abandonou a crena de que ajustes cuidadosos poderiam reduzir estes impactos dramaticamente,[carece de fontes?] mas recentemente, novos microncleos, otimizados para performance, tais como os L491 e K42 vm trabalhando nestes problemas.Wikipedia:Verificabilidade
A abordagem de ncleo projetos mais simples de um modularidade e execuo hbrido combina velocidade e ncleo monoltico com a segura de um microncleo.

Ncleos

hbridos

Ncleos hbridos so um acordo entre o desenvolvimento de microncleos e ncleos monolticos. Isto implica em executar alguns servios (como a pilha de rede ou o sistema de arquivos) no espao do ncleo para reduzir o impacto na performance[carece de fontes?] de um microncleo tradicional, mas ainda executar o cdigo no ncleo (como drivers de dispositivos) como servidores no espao de usurio. BeOS / Haiku Microsoft Windows NT XNU (ncleo do Darwin utilizado no Mac OS X)

Nanoncleos
Um nanoncleo delega virtualmente todos os servios incluindo at os mais bsicos como controlador de interrupes ou o temporizador para drivers de dispositivo para tornar o requerimento de memria do ncleo ainda menor do que o dos tradicionais microncleos.92 Adeos Dycos [4] EROS EKA2 Jari Operating System [5] JNode KeyKOS LSE/OS Mac OS nanoncleo OZONE
91A famlia de ncleos L4 - Viso geral 92Arquitetura de nanoncleo do KeyKOS

Trion Operating System XtratuM [6]


Diagrama de interao de um exoncleo.

Exoncleos
Um exoncleo um tipo de ncleo que no abstrai hardware in modelos tericos. Ao invs disso ele aloca recursos fsicos de hardware, como o tempo de um processador, pginas de memria, e blocos de disco, para diferentes programas. Um programa rodando em um exoncleo pode ligar para uma biblioteca do sistema operativo que usa o exoncleo para simular as astraes de um sistema operativo conhecido, ou ele pode desenvolver abstraes especficas para aquele aplicativo para ume performance superior.93

Histria do desenvolvimento do ncleo


Ncleos dos primeiros sistemas operativos
Falando estritamente, um sistema operativo (e, isto inclui um ncleo) no obrigado a rodar um computador. Programas podem ser carregados diretamente e executados na mquina de "metal descoberto", desde que os autores destes programas estiverem dispostos a trabalhar sem nenuma abstrao de hardware ou suporte a sistema operativo. Os primeiros computadores operaram deste maneira durante os anos de 1950, comeo dos 1960, eram reiniciados e recarregados entre cada execuo de diferentes programas. Eventualmente, pequenos programas auxiliares como carregadores de progrmas e depuradores foram mantidos na memria entre as execues, ou carregados de memria somente de leitura . Conforme estas eram desenvolvidas, elas formaram a base do que depois se tornaria o ncleo dos sistemas operativos. A abordagem de "metal descoberto" ainda usada hoje em alguns consoles de vdeo-jogo e sistemas embarcados, mas no geral, computadores novos usam sistemas operativos e ncleos modernos. Em 1969 o RC 4000 Multiprogramming System introduziu a filosofia de desenvolvimento de sistemas de pequeno nucleus "na qual sistemas operativos para diferentes propsitos poderiam ser criados de maneira metdica",94 algo que poderia ser chamado de abordagem de microncleo.

93Ssistema Operativo de Exoncleo do MIT 94Hansen 2001 (os), pp.17-18

sistemas operativos de tempo compartilhado


Na dcada precedendo o fenmeno Unix, computadores aumentaram muito em poder de processamento ao ponto onde operadores de computador estavam buscando novos modos de conseguir com que as pessoas usarem o tempo livre em seus computadores. Uma das maiores evolues durantes esta era foi o tempo compartilhado, onde um nmero de usurios conseguiria pequenas parcelas do tempo do computador, em uma taxa que pareceria que eles estavam cada um conectado a sua prpria mquina, embora mais lenta.95 O desenvolvimento dos sistemas de tempo compartilhado levou a inmeros problemas. Um deles foi que usurios, particularmente em universidades, onde os sistemas estavam sendo desenvolvidos, pareciam tentar hackear o sistema para conseguir mais tempo de processamento. Por esta razo, segurana e controles de acesso se tornaram um foco principal do projeto Multics em 1965.96 Outro problema corrente era gerenciar apropriadamente os recursos do sistema: usurios gastavam a maior parte do tempo iniciando na tela e pensando ao invs de realmente utilizar os recursos do computador, e o sistema de tempo compartilhado deveria dar tempo de processamento para um usurio ativo durante estes perodos. Por fim, tipicamente os sistemas ofereciam uma hierarquia de memria de vrias camadas de profundidade, e particionar este recurso caro levou a um grande desenvolvimento nos sistemas de memria virtual.

UNIX
Diagrama da relao de famlia de predecessor/sucessor para os sistemas tipo unix.

95Verso BSTJ do C.ACM Jornal Unix 96Introduo e Viso Geral do Sistema Multics, por F. J. Corbat e V. A. Vissotsky.

Durante a fase de projeto do Unix, os programadores decidiram modelar todo dispositivo de alto nvel como um arquivo, por que eles acreditavam que o propsito da computao era a transformao de dados.97 Por exemplo, impressoras eram representadas como um "ficheiro" em uma localizao conhecida quando dados eram copiados para o arquivo, ela imprimia-os. Outros sistemas, para fornecer uma funcionalidade similar, possuem a tendncia de virtualizar dispositivos em um nvel mais baixo ou seja, ambos dispositivos e ficheiros seriam instncias de algum conceito de nvel inferior. Virtualizar o sistema a nvel de ficheiros permitiu aos usurios manipular todo o sistema usando seus conceitos e ferramentas de gerenciamento de ficheiros, simplificando a operao dramaticamente. Como uma extenso do mesmo paradigma, o Unix permite que programadores manipulem arquivos usando uma srie de pequenos programas, usando o conceito de encadeamento, que permitir aos usurios completar operaes em etapas, alimentando um ficheiro atravs de uma cadeia de ferramentas de propsito nico. Embora o resultado final fosse o mesmo, usar programas menores deste modo aumentou drasticamente a flexibilidade, assim como o uso e desenvolvimento, permitindo que o usurio modificasse seu fluxo de trabalho ao adicionar ou remover um programa da cadeia. No modelo Unix, o sistema operativo consiste de duas partes; primeira, a enorme coleo de programas de utilidades que guiam a maioria das operaes.98 No Unix, do ponto de vista da programao, a distino entre os dois extremamente tnue; o ncleo um programa rodando no modo supervisor99 que age como um carregador de programas e supervisor para os pequenos programas de utilidade que integram o resto do sistema, e fornecem travas e servios de entrada/sada para estes programas; alm disso, o ncleo no intervm de modo algum no espao de usurio.

97O Sistema UNIX A nica Especificao do Unix 98 99

Ao longo dos anos o modelo de computao mudou, e o tratamento do Unix de tudo como um ficheiro ou fluxo de baites no era mais universalmente aplicvel como antes. Embora um terminal pudesse ser tratado como um ficheiro ou fluxo de baites, de que se exibia ou lia, o mesmo no parecia ser verdade para a interface grfica. Rede se tornou outro problema. Mesmo se a comunicao de rede pudesse ser comparada ao acesso de ficheiros, a arquitetura de baixo ncel orientada a pacotes lidava com pedaos discretos de dados e no com ficheiros completos. Conforme a capacidade dos computadores crescia, o Unix se tornava cada vez mais desorganizado com relao a cdigo. Enquanto ncleos podiam ter 100.000 linhas de cdigo nos anos 1970 e 1980, ncleos sucessores modernos do ncleo do Unix como o Linux possuem mais de 4.5 milhes de linhas.100 Derivados modernos do Unix so geralmente baseados um ncleos monolticos que carregam mdulos. Exemplos disto so o Linux, um ncleo monoltico com suporte a ncleos, e diversas distribuies que o incluem, assim como os ncleos das variantes do BSD como FreeBSD, DragonflyBSD, OpenBSD, NetBSD, etc. Alm destas alternativas, desenvolvedores amadores mantm uma comunidade ativa de desenvolvimento de sistemas operativos, cheia de ncleos que so criados como passa-tempo que acabam compartilhando vrios dos recursos com o Linux, e/ou os ncleos do FreeBSD, DragonflyBSD, OpenBSD e NetBSD e/ou sendo compatveis com eles.101

Mac OS
A Apple lanou Mac OS pela primeira vez em Friday, 15 de January de 2010, empacotado com o seu computador pessoal Macintosh Apple. Pelos primeiros lanamento, o Mac OS (ou Sistema de Software, como ele foi chamado) #careceu de muitos recursos bsicos, como multitarefas e um sistema hierrquico. Com o tempo, o sistema operativo evoluiu e se tornou o Mac OS 9 com alguns recursos adicionados, mas o ncleo se manteve basicamente o mesmo.[carece de fontes?] Em oposio a isto, o Mac OS X baseado no Darwin, que utiliza um conceito de ncleo hbrido chamado XNU, criado combinando o ncleo do 4.3BSD e o Mach.102

100Linux 2.6: Ele Vale Mais!, por David A. Wheeler, 12 de outubro de 2004 101Esta comunidade se rene em sua maioria no Desenvolvimento de SO Bona Fide, O Frum de Mensagens Mega-Tokyo e outros stios de entusiastas de sistemas operativos. 102XNU: O ncleo

Amiga
O Amiga da Commodore foi lanado em Friday, 15 de January de 2010, e estava dentre os primeiros (e certamente mais bem sucedidos) computadores domsticos a apresenter um sistema operativo com um microncleo. O ncleo do Amiga, a exec.library, era pequena mas capaz, oferecendo multitarefas rpidas e preemptivas em hardware similar ao do Apple Macintosh, e um sistema avanado de ligaes dinmicas que permitia uma expanso fcil.103

Microsoft Windows
O Microsoft Windows foi lanado em 1985 como uma extenso para o MS-DOS. Devido a sua dependncia de outro sistema operativo, o microsoft windows at a verso microsoft windows 95, so consideradas um ambiente operacional (no confunda com sistema operativo). Esta linha de produtos continuou por 1980 e 1990, resultando nos lanamentos das sries Windows 9x, atualizando as capacidades do sistema para endereamento de 32 bites e multitarefas preemptivo, atravs dos anos 1990, terminando com o lanamento do Windows Me em 2000. O lanamento do Windows XP em outubro de 2001 uniu as duas linhas de produto, com a inteno de combinar a estabilidade do ncleo NT com os recursos ao consumidor das sries 9x.104 A arquitetura do ncleo do windows nt considerada hbrida pois o poprio ncleo contm tarefas como o gerenciador de janelas e o gerenciador de comunicao entre processos, mas vrios subsistemas so executados no modo de usurio.105 O ponto de quebra exato entre espao de usurio e espao de ncleo tm deslocado conforme a verso, mas a introduo do Arcabouo de driver de espao de usurio no windows vista, e escalonamento de linha de execuo no espao de usurio no Windows 7,106 deslocou mais recursos do ncleo ncleo para processos no espao de usurio.

103Sheldon Leemon. O que torna isso to timo! (Amiga Commodore). Creative Computing. Pgina visitada em 2006-02-05. 104LinuxWorld IDC: Consolidao de Windows acontece 105Histrico do Windows: Histrico de Produtos de Mesa de Trabalho 106Holwerda, Thom (7 de fevereiro de 2009). Windows 7 ganha escalonamento de espao de usurio. OSNews. Pgina visitada em 2009-02-28.

Desenvolvimento de microncleos
Embora o Mach, desenvolvido na Universidade Carnegie Mellon de Friday, 15 de January de 2010 a Friday, 15 de January de 2010, o microncleo de propsito geral mais conhecido, outros microncleos foram desenvolvidos com objetivos mais especficos. Um famlia de microncleos L4 (principalmente o microncleo L3 e o L4) foi criada para demonstrar que microncleos no so necessariamente lentos.107 Implementaes mais novas como Fiasco e Pistachio so capazes de executar o Linux junto com outros processo L4 em espaos de endereamento separados.108109 QNX um Ssistema Operativo de tempo-real com um projeto de microncleo minimalista que vem sendo desenvolvido deste Friday, 15 de January de 2010, sendo mais bem-sucedido do que o Mach em alcanar os objetivos do paradigma do microncleo.110 Ele usado principalmente em sistemas embarcados e m situaes em que o software no pode falhar, como nos braos robticos do nibus espacial e mquinas que controlam a moeo de vidro a tolerncias extremamente finas, onde um minsculo erro poderia custar centenas de milhares de reais.

Ver tambm
A Wikiversidade possui materiais sobre Operating Systems/Kernel Models at: Modelos de Ncleo Comparao entre ncleos Compilador Driver de dispositivo Entrada/sada Pedido de interrupo Memria 1. Memria de acesso aleatrio 2. Memria virtual 3. Paginao, Segmentao
107 108O microncleo Fiasco - Viso geral 109L4Ka - A famlia L4 de microncleos e amigos 110Viso Geral do Ssistema Operativo de Tempo-real

4. Espao de troca 5. Espao de usurio 6. Unidade de gerenciamento de memria Multitarefa 1. Processo 2. Linha de execuo 3. Escalonamento 4. Tempo compartilhado 5. Troca de contexto 6. Comunicao entre processos Sistema operativo

Notas
Para notas referentes a fontes, veja a bibliografia abaixo.

Referncias
Roch, Benjamin (2004). Ncleo Monoltico x Microncleo (pdf). Pgina visitada em 2006-10-12. Silberschatz, Abraham. Operating system concepts. Boston, Massachusetts: pp. 696. Deitel, Harvey M.. An introduction to operating systems. revisited first edition.ed. pp. 673. Denning, Peter J. (December 1976). " Fault tolerant operating systems". ACM Computing Surveys 8 (4): 359389. DOI: 10.1145/356678.356680. ISSN 0360-0300. Denning, Peter J. (April 1980). " Why not innovations in computer architecture?". ACM SIGARCH Computer Architecture News 8 (2): 47. DOI: 10.1145/859504.859506. ISSN 0163-5964. Hansen, Per Brinch (April 1970). " The nucleus of a Multiprogramming System". Communications of the ACM 13 (4): 238241. DOI: 10.1145/362258.362278. ISSN 0001-0782.

Hansen, Per Brinch. Operating System Principles. Englewood Cliffs: pp. 496. Hansen, Per Brinch (2001). " The evolution of operating systems" (pdf). Visitado em 2006-10-24.

includo em livro: Classic operating systems: from batch processing to distributed systems. New York,: Per Brinch Hansen, . pp. 136.

Hermann Hrtig, Michael Hohmuth, Jochen Liedtke, Sebastian Schnberg, Jean Wolter A performance de sistemas baseados no ncleo [7] ACM SIGOPS Operating Systems Review, v.31 n.5, p. 66-77, Dec. 1997 Houdek, M. E., Soltis, F. G., and Hoffman, R. L. 1981. IBM System/38 support for capability-based addressing. In Proceedings of the 8th ACM International Symposium on Computer Architecture. ACM/IEEE, pp. 341348. Intel Corporation (2002) The IA-32 Architecture Software Developers Manual, Volume 1: Basic Architecture Levin, R.; E. Cohen, W. Corwin, F. Pollack, William Wulf (1975). " Policy/mechanism separation in Hydra". ACM Symposium on Operating Systems Principles / Proceedings of the fifth ACM symposium on Operating systems principles: 132140. Levy, Henry M.. Capability-based computer systems. Maynard, Mass: Liedtke, Jochen. Sobre a construo do ncleo , Proc. 15th ACM Symposium on Operating System Principles (SOSP), December 1995 Linden, Theodore A. (December 1976). " Operating System Structures to Support Security and Reliable Software". ACM Computing Surveys 8 (4): 409 445. DOI: 10.1145/356678.356682. ISSN 0360-0300. [8] Lorin, Harold. Operating systems. Boston, Massachusetts: pp. 161186. Schroeder, Michael D.; Jerome H. Saltzer (March 1972). " A hardware architecture for implementing protection rings". Communications of the ACM 15 (3): 157170. DOI: 10.1145/361268.361275. ISSN 0001-0782. Shaw, Alan C.. The logical design of Operating systems. pp. 304. Tanenbaum, Andrew S.. Structured Computer Organization. Englewood Cliffs, New Jersey: Wulf, W.; E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, F. Pollack (June 1974). " HYDRA: o ncleo do um sistema operativo multiprocessado". Communications of the ACM 17 (6): 337345. DOI: 10.1145/355616.364017. ISSN 0001-0782. [9] Baiardi, F.. Architettura dei Sistemi di Elaborazione, volume 1 (em Italian).

Swift, Michael M; Brian N. Bershad , Henry M. Levy, Improving the reliability of commodity operating systems, [10] ACM Transactions on Computer Systems (TOCS), v.23 n.1, p. 77-110, February 2005

Leituras importantes
Andrew Tanenbaum, Operating Systems - Design and Implementation (Third edition); Andrew Tanenbaum, Modern Operating Systems (Second edition); Daniel P. Bovet, Marco Cesati, The Linux Kernel; David A. Peterson, Nitin Indurkhya, Patterson, Computer Organization and Design, Morgan Koffman (ISBN 1-55860-428-6); B.S. Chalk, Computer Organisation and Architecture, Macmillan P.(ISBN 0-33364551-0).

Ligaes externas
KERNEL.ORG, stio oficial do Linux.. Ncleos de Sistemas Operativos no SourceForge. Ncleos de Sistemas Operativos no Freshmeat. MIT Sistemaoperacional de Exoncleo. Imagem de ncleo - Wiki Debian. A arquitetura do nanoncleo do KeyKOS, um artigo de 1992 por Norman Hardy e outros.. Uma viso geral do Ssistema Operativo NetWare, um artigo de 1994 por Drew Major, Greg Minshall, e Kyle Powell (arquitetos pfincipais por trs do SO NetWare). Kernelnewbies, uma comunidade para aprender a hackear o Linux. Comparao detalhada entre os ncleos dos sistemas operativos mais populares.

Unix
Unix um sistema operativo (ou sistema operacional) porttil (ou portvel), multitarefa e multiutilizador (ou multiusurio) originalmente criado por Ken Thompson, que trabalhava nos Laboratrios Bell (Bell Labs) da AT&T. A marca UNIX uma propriedade do The Open Group, um consrcio formados por empresas de informtica.

Histria
Em 1965 formou-se um grupo de programadores, incluindo Ken Thompson, Dennis Ritchie, Douglas McIlroy e Peter Weiner, num esforo conjunto da AT&T (Laboratrios Bell), da General Electric (GE) e do MIT (Massachussets Institute of Technology) para o desenvolvimento de um sistema operacional chamado Multics. O Multics deveria ser um sistema de tempo compartilhado para uma grande comunidade de usurios. Entretanto, os recursos computacionais disponveis poca, particularmente os do computador utilizado, um GE 645, revelaram-se insuficientes para as pretenses do projeto. Em 1969, a Bell retirou-se do projeto. Duas razes principais foram citadas para explicar a sua sada. Primeira: trs instituies com objetivos dspares dificilmente alcanariam uma soluo satisfatria para cada uma delas (o MIT fazia pesquisa, AT&T monopolizava os servios de telefonia americanos e a GE queria vender computadores). A segunda razo que os participantes sofriam da sndrome do segundo projeto e, por isso, queriam incluir no Multics tudo que tinha sido excludo dos sistemas experimentais at ento desenvolvidos. Ainda em 1969, Ken Thompson, usando um ocioso computador PDP-7, comeou a reescrever o Multics num conceito menos ambicioso, batizado de Unics, usando linguagem de montagem (assembly). Mais tarde, Brian Kernighan rebatizou o novo sistema de Unix. Um marco importante foi estabelecido em 1973, quando Dennis Ritchie e Ken Thompson reescreveram o Unix, usando a linguagem C, para um computador PDP-11. A linguagem C havia sido desenvolvida por Ritchie para substituir e superar as limitaes da linguagem B, desenvolvida por Thompson. O seu uso considerado uma das principais razes para a rpida difuso do Unix. Finalmente, ao longo dos anos 70 e 80 foram sendo desenvolvidas as primeiras distribuies de grande dimenso como os sistemas BSD (na Universidade de Berkeley na Califrnia) e os System III e System V (nos Bell Labs). Em 1977, a AT&T comeou a fornecer o Unix para instituies comerciais. A abertura do mercado comercial para o Unix deve muito a Peter Weiner - cientista de Yale e fundador da Interactive System Corporation. Weiner conseguiu da AT&T, ento j desnudada de seu monoplio nas comunies e liberada para atuao no mercado de software, licena para transportar e comercializar o Unix para o computador Interdata 8/32 para ambiente de automao de escritrio. O Unix saa da linha das mquinas PDP, da Digital Equipament Corporation (DEC), demonstrando a relativa facilidade de migrao (transporte) para outros computadores, e que, em parte, deveu-se ao uso da linguagem C. O sucesso da Interactive de Weiner com seu produto provou que o Unix era vendvel e encorajou outros fabricantes a seguirem o mesmo curso. Iniciava-se a abertura do chamado mercado Unix.

Com a crescente oferta de microcomputadores, outras empresas transportaram o Unix para novas mquinas. Devido disponibilidade dos fontes do Unix e sua simplicidade, muitos fabricantes alteraram o sistema, gerando variantes personalizadas a partir do Unix bsico licenciado pela AT&T. De 1977 a 1981, a AT&T integrou muitas variantes no primeiro sistema Unix comercial chamado de System III. Em 1983, aps acrescentar vrios melhoramentos ao System III, a AT&T apresentava o novo Unix comercial, agora chamado de System V. Hoje, o Unix System V o padro internacional de fato no mercado Unix, constando das licitaes de compra de equipamentos de grandes clientes na Amrica, Europa e sia. Atualmente, Unix (ou *nix) o nome dado a uma grande famlia de Sistemas Operativos que partilham muitos dos conceitos dos Sistemas Unix originais, sendo todos eles desenvolvidos em torno de padres como o POSIX (Portable Operating System Interface) e outros. Alguns dos Sistemas Operativos derivados do Unix so: BSD (FreeBSD, OpenBSD e NetBSD), Solaris (anteriormente conhecido por SunOS), IRIXG, AIX, HP-UX, Tru64, SCO, Linux (nas suas centenas de distribuies), e at o Mac OS X (baseado em um ncleo Mach BSD chamado Darwin). Existem mais de quarenta sistemas operacionais *nix, rodando desde celulares a supercomputadores, de relgios de pulso a sistemas de grande porte.

Caractersticas
Sistema operacional multitarefa
Multitarefa significa executar uma ou mais tarefas ou processos simultaneamente. Na verdade, em um sistema monoprocessado, os processos so executados seqencialmente de forma to rpida que parecem estar sendo executados simultaneamente. O Unix escalona sua execuo e reserva-lhes recursos computacionais (intervalo de tempo de processamento, espao em memria RAM, espao no disco rgido, etc.). O Unix um sistema operacional de multitarefa preemptiva. Isso significa que, quando esgota-se um determinado intervalo de tempo (chamado quantum), o Unix suspende a execuo do processo, salva o seu contexto (informaes necessrias para a execuo do processo), para que ele possa ser retomado posteriormente, e coloca em execuo o prximo processo da fila de espera. O Unix tambm determina quando cada processo ser executado, a durao de sua execuo e a sua prioridade sobre os outros. A multitarefa, alm de fazer com que o conjunto de tarefas seja executado mais rapidamente, ainda permite que o usurio e o computador fiquem livres para realizarem outras tarefas com o tempo economizado.

Sistema operacional multiutilizador


Uma caracterstica importante do Unix ser multiusurio (multiutilizador). Bovet e Cesati [4] definem um sistema multiusurio como "aquele capaz de executar, concorrente e independentemente, vrias aplicaes pertencentes a dois ou mais usurios". O Unix possibilita que vrios usurios usem um mesmo computador simultaneamente, geralmente por meio de terminais. Cada terminal composto de um monitor, um teclado e, eventualmente, um mouse. Vrios terminais podem ser conectados ao mesmo computador num sistema Unix. H alguns anos eram usadas conexes seriais, mas atualmente mais comum o uso de redes locais, principalmente para o uso de terminais grficos (ou terminais X), usando o protocolo XDMCP. O Unix gerencia os pedidos que os usurios fazem, evitando que um interfira com outros. Cada usurio possui direitos de propriedade e permisses sobre arquivos. Quaisquer arquivos modificados pelo usurio conservaro esses direitos. Programas executados por um usurio comum estaro limitados em termos de quais arquivos podero acessar. O sistema Unix possui dois tipos de usurios: o usurio root (tambm conhecido como superusurio), que possui a misso de administrar o sistema, podendo manipular todos os recursos do sistema operacional; e os usurios comuns, que possuem direitos limitados. Para que o sistema opere adequadamente em modo multiusurio, existem alguns mecanismos: (i) um sistema de autenticao para identificao de cada usurio (o programa login, p.ex., autentica o usurio verificando uma base de dados, normalmente armazenada no arquivo /etc/passwd); (ii) sistema de arquivos com permisses e propriedades sobre arquivos (os direitos anteriormente citados); (iii) proteo de memria, impedindo que um processo de usurio acesse dados ou interfira com outro processo. Esse ltimo mecanismo implementado com a ajuda do hardware, que consiste na diviso do ambiente de processamento e memria em modo supervisor (ou modo ncleo) e modo usurio.

Arquivos de dispositivo
Uma caracterstica singular no Unix (e seus derivados) a utilizao intensiva do conceito de arquivo. Quase todos os dispositivos so tratados como arquivos e, como tais, seu acesso obtido mediante a utilizao das chamadas de sistema open, read, write e close. Os dispositivos de entrada e sada so classificados como sendo de bloco (disco, p.ex.) ou de caractere (impressora, modem, etc.) e so associados a arquivos mantidos no diretrio /dev (v. detalhamento mais adiante).

Estrutura

A estrutura do sistema Unix.

Um sistema Unix de duas partes:

consiste, basicamente,

ncleo - o ncleo do sistema operacional, a parte que relaciona-se diretamente com o hardware, e que executa num espao de memria privilegiado. Agenda processos, gerencia a memria, controla o acesso a arquivos e a dispositivos de hardware (estes, por meio dos controladores de disposito - drivers - e interrupes). O acesso ao ncleo feito por chamadas de sistema, que so funes fornecidas pelo ncleo; essas funes so disponibilizadas para as aplicaes por bibliotecas de sistema C (libc). programas de sistema - so aplicaes, que executam em espaos de memria no privilegiados, e que fazem a interface entre o usurio e o ncleo. Consistem, principalmente, de: 1. 1. Conjunto de bibliotecas C (libc)

1. 1. Shell - um ambiente que permite que o usurio digite comandos.

1. 1. Programas utilitrios diversos - so programas usados para manipular arquivos, controlar processos, etc.

1. 1. Ambiente grfico (GUI) graphics user interface - eventualmente utiliza-se tambm um ambiente grfico para facilitar a interao do usurio com o sistema.

Em um sistema Unix, o espao de memria utilizado pelo ncleo denominado espao do ncleo ou supervisor (em ingls: kernel space); a rea de memria para os outros programas denominada espao do usurio (user space). Essa separao um mecanismo de proteo que impede que programas comuns interfiram com o sistema operacional.

Processos
Um processo, na viso mais simples, uma instncia de um programa em execuo. Um programa, para ser executado, deve ser carregado em memria; a rea de memria utilizada dividida em trs partes: cdigo (text), dados inicializados (data) e pilha (stack). Por ser um sistema multitarefa, o Unix utiliza uma estrutura chamada tabela de processos, que contm informaes sobre cada processo, tais como: identificao do processo (PID), dono, rea de memria utilizada, estado (status). Apenas um processo pode ocupar o processador em cada instante - o processo encontra-se no estado "executando" (running). Os outros processos podem estar "prontos" (ready), aguardando na fila de processos, ou ento esto "dormindo" (asleep), esperando alguma condio que permita sua execuo. Um processo em execuo pode ser retirado do processador por duas razes: (i) necessita acessar algum recurso, fazendo uma chamada de sistema - neste caso, aps sua retirada do processador, seu estado ser alterado para "dormindo", at que o recurso seja liberado pelo ncleo; (ii) o ncleo pode interromper o processo (preempo) - neste caso, o processo ir para a fila de processos (estado "pronto"), aguardando nova oportunidade para executar - ou porque a fatia de tempo esgotou-se, ou porque o ncleo necessita realizar alguma tarefa. Existem quatro chamadas de sistema principais associadas a processos: fork, exec, exit e wait. fork usada para criar um novo processo, que ir executar o mesmo cdigo (programa) do programa chamador (processo-pai); exec ir determinar o cdigo a ser executado pelo processo chamado (processo-filho); exit termina o processo; wait faz a sincronizao entre a finalizao do processofilho e o processo-pai.

Sistema de arquivos
Sistema de arquivos uma estrutura lgica que possibilita o armazenamento e recuperao de arquivos. No Unix, arquivos so contidos em diretrios (ou pastas), os quais so conectados em uma rvore que comea no diretrio raiz (designado por /). Mesmo os arquivos que se encontram em dispositivos de armazenamento diferentes (discos rgidos, disquetes, CDs, DVDs, sistemas de arquivos em rede) precisam ser conectados rvore para que seu contedo possa ser acessado. Cada dispositivo de armazenamento possui a sua prpria rvore de diretrios. O processo de conectar a rvore de diretrios de um dispositivo de armazenamento rvore de diretrios raiz chamado de "montar dispositivo de armazenamento" (montagem) e realizada por meio do comando mount. A montagem associa o dispositivo a um subdiretrio.

Estrutura de diretrios
A rvore de diretrios do Unix dividida em vrias ramificaes menores e pode variar de uma verso para outra. Os diretrios mais comuns so os seguintes: / Diretrio raiz - este o diretrio principal do sistema. Dentro dele esto todos os diretrios do sistema. /bin Contm arquivos, programas do sistema, que so usados com freqncia pelos usurios. /boot Contm arquivos necessrios para a inicializao do sistema. /dev Contm arquivos usados para acessar dispositivos (perifricos) existentes no computador. /etc Arquivos de configurao de seu computador local. /home Diretrios contendo os arquivos dos usurios. /lib Bibliotecas compartilhadas pelos programas do sistema e mdulos do ncleo. /mnt Diretrio de montagem de dispositivos. /mnt/cdrom Subdiretrio onde so montados os CDs. Aps a montagem, o contedo do CD se encontrar dentro deste diretrio. /mnt/floppy Subdiretrio onde so montados os disquetes. Aps a montagem, o contedo do disquete se encontrar dentro deste diretrio. /proc Sistema de arquivos do ncleo. Este diretrio no existe, ele colocado l pelo ncleo e usado por diversos programas. /root Diretrio do usurio root. /sbin Diretrio de programas usados pelo superusurio (root) para administrao e controle do funcionamento do sistema.

/tmp Diretrio para armazenamento de arquivos temporrios criados por programas. /usr Contm maior parte de seus programas. Normalmente acessvel somente como leitura. /var Contm maior parte dos arquivos que so gravados com freqncia pelos programas do sistema.

Particularidades
Um sistema Unix orientado a arquivos, quase tudo nele arquivo. Seus comandos so na verdade arquivos executveis, que so encontrados em lugares previsveis em sua rvore de diretrios, e at mesmo a comunicao entre entidades e processos feita por estruturas parecidas com arquivos. O acesso a arquivos organizado atravs de propriedades e protees. Toda a segurana do sistema depende, em grande parte, da combinao entre as propriedades e protees definidas em seus arquivos e suas contas de usurios.

Aplicaes
O Unix permite a execuo de pacotes de softwares aplicativos para apoio s diversas atividades empresariais. Dentre estes pacotes destacam-se: geradores grficos planilhas eletrnicas processadores de textos geradores de aplicaes linguagens de 4 gerao banco de dados O Unix possui recursos de apoio comunicao de dados, que proporcionam sua integrao com outros sistemas Unix, e at com outros sistemas operacionais distintos. A integrao com sistemas heterogneos permite as seguintes facilidades: compartilhamento de recursos e informaes transferncia de informaes comunicao entre usurios remotos submisso de programas para serem executados em computadores remotos utilizao dos terminais de uma mquina Unix como terminais de outras mquinas remotas, mesmo com sistemas operacionais distintos.

Para ltima, o Unix oferece um ambiente integrado e amigvel, voltado para a gesto automatizada de escritrio, com servios que atendero s seguintes reas: arquivamento eletrnico de informaes processador de documentos agenda e calendrio calculadora correio eletrnico

Ambiente grfico do Unix


X Window System
Alm do shell, o Unix suporta interface grfica para o usurio. Nas primeiras verses do Unix as interfaces do usurio eram baseadas apenas em caracteres (modo texto) e o sistema compunha-se apenas do ncleo, de bibliotecas de sistema, do shell e de alguns outros aplicativos. As verses mais recentes do Unix, alm de manterem o shell e seus comandos, incluem o X Window System que, graas ao gerenciador de exibio e ao gerenciador de janelas, possui uma interface atraente e intuitiva que aumenta em muito a produtividade do usurio. Desenvolvido no MIT (Massachussets Institute of Technology), o X Window System (tambm pode ser chamado de Xwindow) tornou-se o sistema grfico do Unix. O Xwindow funciona como gerenciador de exibio e por si s, no faz muita coisa. Para termos um ambiente grfico produtivo e completo, precisamos tambm de um gerenciador de janelas. O gerenciador de janelas proporciona ao ambiente grfico a aparncia e as funcionalidades esperadas incluindo as bordas das janelas, botes, truques de mouse, menus etc. Como no sistema Unix o gerenciador de exibio (X Window System) separado do gerenciador de janelas, dizemos que seu ambiente grfico do tipo cliente-servidor. O Xwindow funciona como servidor e interage diretamente com o mouse, o teclado e o vdeo. O gerenciador de janelas funciona como cliente e se aproveita dos recursos disponibilizados pelo Xwindow. O fato de o Unix possuir o gerenciador de exibio (Xwindow) separado do gerenciador de janelas tornou possvel o surgimento de dezenas de gerenciadores de janelas diferentes. Os gerenciadores de janelas mais comuns no mundo Unix so o Motif, Open Look, e o CDE. Tambm existem outros gerenciadores de janelas que so bastante utilizados no Unix, principalmente nos sistemas Unix-Like (verses gratuitas e clones do Unix). So eles: KDE, Gnome, FVWM, BlackBox, Enlightenment, WindowMaker etc.
Gerenciador de janelas Window Maker.

Comandos
Esta uma lista de programas de computador para o sistema operacional Unix e os sistemas compatveis, como o Linux. Os comandos do Unix tornam-se acessveis ao usurio a partir do momento em que ele realiza o login no sistema. Se o usurio utiliza tais comandos, ento ele se encontra no modo shell, tambm chamado de modo texto (ou Unix tradicional). Quando estiver utilizando o modo grfico, o usurio tambm poder se utilizar de tais comandos desde que abra uma janela de terminal (Xterm). A linha de comando do sistema operacional Unix permite a realizao de inmeras tarefas atravs de seus comandos, de manipulao de arquivos a verificao do trfego em rede. Para exibir uma descrio detalhada de cada comando abra uma console ou xterm e digite man comando, onde comando o comando em questo.

Comandos de manipulao de diretrio


mkdir cria um diretrio vazio exemplo: mkdir docs
rmdir exclui um diretorio (se estiver vazio)rm -rf exclui um diretrio e todo o seu contedo (cuidado com este comando)cd entra num diretrio (exemplo: cd docs) ou retorna para HOMEcd / muda para o diretrio raizcd ~ vai direto para o diretrio home do usurio logado.cd volta ao ltimo diretrio acessadopwd exibe o local do diretrio atualls lista o contedo do diretriols -alh mostra o contedo detalhado do diretriols -a Exibe os arquivos "ocultos" do determinado diretrio.ls -ltr mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t)df (Unix)df mostra a utilizao dos sistemas de arquivos montadosdu (Unix)du -msh mostra o tamanho do diretrio em Megabyteswhereis mostra onde se encontra determinado arquivo (binrios) exemplo: whereis samba

Comandos para manipulao de arquivos


cat mostra o contedo de um arquivo binrio ou texto
tac linhas semelhante ao cat mas inverte a ordemtail mostra as ltimas

de um arquivo. Ex: tail -f <arquivo> til para visualizar arquivos de log continuamente.
head mostra as primeiras linhas de um arquivo. Ex: head -100 visualiza as 100 primeiras linhas do arquivo.less mostra o contedo de um arquivo de texto com controlevi editor de ficheiros de textovim verso melhorada do editor supracitadorm remoo de arquivos (tambm remove diretrios, mas com o parmetro -r, que significa recursividade)cp (Unix)cp copia diretrios 'cp -r' copia recursivamentemv move ou renomeia arquivos e diretrioschmod altera as permisses de arquivos ou directrioschown altera o dono de arquivos ou directrioscmd>txt cria um novo arquivo(txt) com o resultado do comando(cmd)cmd>>txt adiciona o resultado do comando(cmd) ao fim do arquivo(txt)touch touch foo.txt cria um arquivo foo.txt vazio; tambm altera data e hora de modificao para agora> arquivo.txt mais rpido que o touch para criao de arquivossplit divide um arquivorecode recodifica um arquivo ex: recode iso-8859-15..utf8 file_to_change.txt

Comandos para administrao


man mostra o manual do comando.
adduser adiciona usurios. O useradd pode tambm ser usado.addgroup adiciona grupos. o group add pode tambm ser usado.apropos realiza pesquisa por palavra ou stringdmesg exibe as mensagens da inicializao(log)du (unix)du exibe estado de ocupao dos discos/partiesfind comando de busca ex: find ~/ -cmin -3userdel remove usuriosusermod modifica informaes de um determinado usurio.groupmod modifica informaes de um determinado grupo.chfn altera informao relativa a um utilizadorwho informa quem est logado no sistema.em algumas verses do linux,

o comando w pode ser usado, e retorna informaes mais detalhadas, como o shell do usurio.
whoami informa com qual usurio voc est logadopasswd modifica senha (password) de usuriosumask define padres de criao de arquivos e diretriosps (Unix)ps mostra os processos correntesps -aux mostra todos os processos correntes no sistemakill mata um processokillall mata todos os processos com o nome informadosu troca para o superusurio root ( exigida a senha)su user troca para o usurio especificado em 'user' ( exigida a senha)chown altera o proprietrio de arquivos e pastas (dono)

Comandos para administrao de rede


ifconfig mostra as interfaces de redes ativas e as informaes relacionadas a cada uma delas
route mostra as informaes referentes as rotasmtr mostra rota at determinado IPnmap lista as portas de sistemas remotos/locais atras de portas abertas. Pode verificar sistema operacional em execuo no host remoto.netstat exibe as portas e protocolos abertos no sistema.iptraf analisador de trafego da rede com interface grfica baseada em dilogostcpdump sniffer muito popular. Sniffer uma ferramenta que "ouve" os pacotes que esto passando pela rede.traceroute traa uma rota do host local at o destino mostrando os roteadores intermediriosnslookup consultas a servios DNSdig consultas a servios DNS

Referncias gerais
[1] BACH, Maurice J. The design of the Unix operating system. New Jersey: Prentice Hall, 1990. [2] TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC, 1999. [3] MCKUSICK, Marshall K.; NEVILLE-NEIL, George V. The design and implementation of the FreeBSD operating system. Boston: Addison-Wesley, 2004. [4] BOVET, Daniel P.; CESATI, Marco. Understanding the Linux kernel. Sebastopol: O'Reilly, 2005.

Ver tambm
ARX - SO da Acorn Computers baseado no Unix Plan 9 - baseado em alguns conceitos do UNIX. Tambm desenvolvido pelo Bell Labs. Leva a filosofia de tudo um arquivo mais a fundo. Onde at os servidores so arquivos. Filosofia Unix Era Unix

Ligaes externas
Foca GNU/Linux UNIX ON-LINE Man Pages

Ken Thompson
Kenneth Thompson</font Ken Thompson (esquerda) e Dennis Ritchie

(direita) Nascimento Campo(s) Prmio(s) 1943 Nova Orlees Engenharia, cincia da computao Prmio Turing (1983)

Kenneth Thompson (Nova Orlees, 1943) um cientista computacional, conhecido pela sua influncia no sistema operacional UNIX. Bachelor e master, ambos em engenharia electrotcnica, na UC Berkeley. Em 1969, enquanto trabalhava nos laboratrios Bell, Thompson e Dennis Ritchie foram os principais criadores do sistema operacional UNIX. Thompson tambm criou a linguagem de programao B, uma precursora da linguagem C de Dennis Ritchie, uma das linguagens de programao mais utilizadas. Mais tarde, enquanto se encontrava ao servio dos laboratrios Bell, ele e Rob Pike foram os principais criadores do sistema operacional Plan 9. Durante o seu trabalho, ele tambm criou a codificao de caracteres UTF-8 para uso no sistema operacional Plan 9. Ele tambm escreveu programas para a enumerao completa de finalizaes de xadrez, para todas as finalizaes de 4, 5 e 6 peas. Recorrendo a esse programa, um programa de jogo de xadrez tem a capacidade de jogar perfeitamente ao atingir-se uma das situaes pr-definidas. Thompson e Ritchie receberam conjuntamente o Prmio Turing em 1983 "pelo seu desenvolvimento de teoria de sistemas operacionais genricos e especialmente pela sua implementao do sistema operacional UNIX". Thompson reformou-se dos laboratrios Bell no dia 1 de Dezembro de 2000.

Ver tambm
UNIX Bell Labs Linguagem B Precedido por Stephen Cook Prmio Turing 1983 com Dennis Ritchie Sucedido por Niklaus Wirth

Dennis Ritchie
Dennis MacAlistair Ritchie

Dennis Ritchie (direita) e Ken Thompson, em 1984 Nascimento Campo(s) Prmio(s) 9 de Setembro de 1941 Bronxville Fsica, matemtica aplicada, cincia da computao Prmio Turing (1983)

Dennis MacAlistair Ritchie (Bronxville, 9 de Setembro de 1941) um cientista da computao estadunidense. Notvel pela sua influncia em ALTRAN, B, BCPL, C, Multics e UNIX. Nascido em Bronxville, Nova Iorque, Ritchie formou-se em fsica e matemtica aplicada pela Universidade de Harvard. Em 1967, ele comeou a trabalhar no Centro de Investigao de Cincias Computacionais dos laboratrios Bell. actualmente o director do Departamento de Investigao de Software de Sistemas da Lucent Technologies. Em 1983, ele e Ken Thompson receberam o prmio Turing "pelo seu desenvolvimento de teoria de sistemas operativos genricos e especialmente pela sua implementao do sistema operativo UNIX."

C e UNIX
Ao perguntarem-lhe sobre o que lhe influenciou a desenvolver a linguagem C da maneira que ele a fez, Ritchie ter respondido que "parecia a coisa certa a ser feita" e que qualquer pessoa que se encontrasse na mesma altura e no mesmo lugar que ele teria feito a mesma coisa. Um dos seus colegas dos laboratrios Bell, Bjarne Stroustrup, que desenvolveu e projectou a linguagem C++, uma verso da linguagem C mais vocacionada para a programao orientada por objectos, supostamente disse que "se o Dennis tivesse optado por dedicar-se naquela dcada matemtica esotrica, o UNIX teria sido um nado-morto." Certamente, sendo o inventor da linguagem de programao C e o co-inventor (juntamente com Ken Thompson) do sistema operativo UNIX, Ritchie ganhou um lugar importante na histria da indstria informtica. A linguagem C continua a ser largamente utilizada no desenvolvimento de aplicaes e sistemas operativos e a sua influncia pode ser vista em linguagens de programao mais recentes, tais como C++, Java, C# e JavaScript. No mundo dos sistemas operativos, o UNIX tambm muito influente. Existem actualmente muitos "dialectos" dele disponveis no mercado, tais como AIX, Solaris e Minix, e o popular GNU/Linux. At a Microsoft, cujo sistema operativo Windows compete com o UNIX, desenvolveu ferramentas de compatibilidade de UNIX e compiladores de C para utilizadores e criadores dos seus produtos.

Alcunhas
Dennis Ritchie frequentemente referido como "DMR" em vrios grupos de discusso da Usenet (tais como comp.lang.c); ele o "R" do K&R.

Publicaes
"The C Programming Language", Dennis Ritchie, Brian Kernighan, (1978) (No Brasil: C - A Linguagem de Programao - Ed. Campus, 1986) "Unix Programmer's Manual", Dennis Ritchie (1971)

Ligaes externas
Pgina pessoal Unix.se - Entrevista a Ritchie publicada a 7 de Fevereiro de 2003 Ritchie e Thompson a receber a medalha nacional da tecnologia do Presidente Clinton The future according to Dennis Ritchie - LinuxWorld.com 12/4/00

Unix's founding fathers - Economist.com, July 12, 2004 Precedido por Stephen Cook Prmio Turing 1983 com Ken Thompson Sucedido por Niklaus Wirth

C (linguagem de programao)
C
Paradigma Programao Programao Programao Programao 1972 C99
(1999)

estruturada imperativa procedural genrica

Surgido em ltima verso Criado por Estilo de tipagem: Compiladores

Dennis Ritchie Esttica, Fraco Borland C, GNU GCC, Microsoft Visual Studio, Turbo C, Watcom C, Tiny C Compiler ANSI C, C99, ISO C, K&R C ALGOL 68, Assembly, B, BCPL, CPL, Fortran, PL/I AWK, BitC, C++, C#, C Shell, D, Euphoria, Java, JavaScript, Limbo, Logic Basic, Objective-C, Perl, PHP Dependente de implementao

Dialetos: Influenciada por Influenciou

Licena:

C uma linguagem de programao compilada de propsito geral, estruturada, imperativa, procedural, de alto nvel, e padronizada, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs, para desenvolver o sistema operacional UNIX (que foi originalmente escrito em Assembly).111 A linguagem C classificada de alto nvel pela prpria definio desse tipo de linguagem. A programao em linguagens de alto nvel tem como caracterstica no ser necessrio conhecer o processador, ao contrrio das linguagens de baixo nvel. As linguagens de baixo nvel esto fortemente ligadas ao processador. A linguagem C permite acesso de baixo nvel com a utilizao de cdigo Assembly no meio do cdigo fonte. Assim, o baixo nvel realizado por Assembly e no C. Desde ento, espalhou-se por muitos outros sistemas, e tornou-se uma das linguagens de programao mais usadas, e influenciou muitas outras linguagens, especialmente C++, que foi originalmente desenvolvida como uma extenso para C.

111History of the C Programming Language.

Histria
Ken Thompson e Dennis direita), os criadores das respectivamente. Ritchie (da esquerda para linguagens B e C,

O desenvolvimento AT&T Bell Labs, entre sabe se o nome "C" foi porque muitas de suas derivaram da linguagem conseguinte no alfabeto, segunda letra do nome qual derivou-se a linguagem B.

inicial de C, ocorreu no 1969 e 1973. No se dado linguagem caractersticas B e C a letra ou porque "C" a da linguagem BCPL, da

C foi originalmente desenvolvido, para a implementao do sistema UNIX (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adio do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do ncleo do UNIX, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem, que no o Assembly, sendo exemplos anteriores, os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o perodo mais criativo ocorreu em 1972.

K&R C
Em 1978, Brian Kernighan e Dennis Ritchie publicaram a primeira edio do livro The C Programming Language. Esse livro, conhecido pelos programadores de C, como "K&R", serviu durante muitos anos como uma especificao informal da linguagem. A verso da linguagem C que ele descreve usualmente referida como "K&R C". A segunda edio do livro, cobriu o padro posterior, o ANSI C. K&R C introduziu as seguintes caractersticas na linguagem: Biblioteca padro de E/S; Tipos de dado Tipos de dado Tipos de dado
struct; long int; unsigned int; -= (o analisador lxico do +10. O mesmo acontecia com =-).

O operador =+ foi alterado para +=, e =- para compilador fazia confuso entre i =+ 10 e i =

K&R C freqentemente considerado a parte mais bsica da linguagem, cujo suporte deve ser assegurado por um compilador C. Durante muitos anos, mesmo aps a introduo do padro ANSI C, K&R C foi considerado o "menor denominador comum", em que programadores de C se apoiavam quando uma portabilidade mxima era desejada, j que nem todos os compiladores eram actualizados o bastante para suportar o padro ANSI C.

Nos anos que se seguiram publicao do K&R C, algumas caractersticas "nooficiais" foram adicionadas linguagem, suportadas por compiladores da AT&T e de outros vendedores. Estas incluam: Funes
void

e tipos de dados
struct

void *;

Funes que retornam tipos Campos de nome Qualificadores Atribuio a tipos de dados
const

struct

ou

union; struct;

num espao de nome separado para cada tipo


struct;

para criar um objecto s de leitura;

Biblioteca padro, que incorpora grande parte da funcionalidade implementada por vrios vendedores; Enumeraes; Clculos de ponto-flutuante em preciso simples (no K&R C, os clculos intermedirios eram feitos sempre em double, porque era mais eficiente na mquina onde a primeira implementao do C foi feita).

ANSI C e ISO C
Durante os finais da dcada de 1970, a linguagem C comeou a substituir a linguagem BASIC como a linguagem de programao de microcomputadores mais usada. Durante a dcada de 1980, foi adaptada para uso no PC IBM, e a sua popularidade comeou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratrios Bell, comeou a trabalhar num projecto onde se adicionavam construes de linguagens de programao orientada por objectos linguagem C. A linguagem que eles produziram, chamada C++, nos dias de hoje a linguagem de programao de aplicaes mais comum no sistema operativo Windows da companhia Microsoft; C permanece mais popular no mundo UNIX. Em 1983, o instituto norte-americano de padres (ANSI) formou um comit, X3J11, para estabelecer uma especificao do padro da linguagem C. Aps um processo longo e rduo, o padro foi completo em 1989 e ratificado como ANSI X3.159-1989 "Programming Language C". Esta verso da linguagem freqentemente referida como ANSI C. Em 1990, o padro ANSI C, aps sofrer umas modificaes menores, foi adotado pela Organizao Internacional de Padres (ISO) como ISO/IEC 9899:1990, tambm conhecido como C89 ou C90. Um dos objetivos do processo de padronizao ANSI C foi o de produzir um sobreconjunto do K&R C, incorporando muitas das caractersticas no-oficiais subseqentemente introduzidas. Entretanto, muitos programas tinham sido escritos e que no compilavam em certas plataformas, ou com um certo compilador, devido ao uso de bibliotecas de funes no-padro e ao fato de alguns compiladores no aderirem ao ANSI C.

C99
Aps o processo da padronizao ANSI, as especificaes da linguagem C permaneceram relativamente estticas por algum tempo, enquanto que a linguagem C++ continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma verso nova da linguagem C mas esta verso raramente tida em conta.) Contudo, o padro foi submetido a uma reviso nos finais da dcada de 1990, levando publicao da norma ISO 9899:1999 em 1999. Este padro geralmente referido como "C99". O padro foi adoptado como um padro ANSI em Maro de 2000. As novas caractersticas do C99 incluem: Funes em linha Remoo de restries sobre a localizao da declarao de variveis (como em C++) Adio de vrios tipos de dados novos, incluindo o long long int (para minimizar problemas na transio de 32-bits para 64-bits), um tipo de dados boolean explicito (chamado _Bool) e um tipo complex que representa nmeros complexos Vetores de dados de comprimento varivel (o vetor pode ter um tamanho diferente a cada execuo de uma funo, mas no cresce depois de criado) Suporte oficial para comentrios de uma linha iniciados por linguagem C++ Vrias funes de biblioteca novas, tais como Vrios ficheiros-cabealho novos, tais como
snprintf() stdint.h //,

emprestados da

O interesse em suportar as caractersticas novas de C99 parece depender muito das entidades. Apesar do GCC e vrios outros compiladores suportarem grande parte das novas caractersticas do C99, os compiladores mantidos pela Microsoft e pela Borland suportam pouqussimos recursos do C99, e estas duas companhias no parecem estar muito interessadas em adicionar tais funcionalidades, ignorando por completo as normas internacionais. A Microsoft parece preferir dar mais nfase ao C++.112

C1X
Em 2007, se iniciou o trabalho em antecipao de outra reviso do padro de C, informalmente chamada "C1X". O comit dos padres de C adotaram regras para limitar a adoo dos novos recursos que no haviam sido testadas pelas implementaes existentes.113

112[11] 113Grupo de trabalho do ISO C

Viso geral
C uma linguagem imperativa e procedural, para implementao de sistemas. Seus pontos de design foram para ele ser compilado, fornecendo acesso de baixo nvel memria e baixos requerimentos do hardware. Tambm foi desenvolvido para ser uma linguagem de alto nvel, para maior reaproveitamento do cdigo. C foi til para muitas aplicaes que foram codificadas originalmente em Assembly. Essa propriedade no foi acidental; a linguagem C foi criada com o objectivo principal em mente: facilitar a criao de programas extensos com menos erros, recorrendo ao paradigma da programao algortmica ou procedimental, mas sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as caractersticas complexas da linguagem. Para este fim, a linguagem C possui as seguintes caractersticas: Uma linguagem nuclear extremamente simples, com funcionalidades noessenciais, tais como funes matemticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada; A focalizao no paradigma de programao procedimental; Um sistema de tipos simples que evita vrias operaes que no fazem sentido Uso de uma linguagem de pr-processamento, o pr-processador de C, para tarefas tais como a definio de macros e a incluso de mltiplos ficheiros de cdigo fonte; Ponteiros do maior flexibilidade linguagem; Acesso de baixo-nvel, atravs de incluses de cdigo Assembly no meio do programa C; Parmetros que so sempre passados por valor para as funes e nunca por referncia ( possvel simular a passagem por referncia com o uso de ponteiros); Definio do alcance lexical de variveis; Estruturas de variveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo. Algumas caractersticas teis, que faltam em C, podem ser encontradas em outras linguagens, que incluem: Segurana de tipo; Coletor de lixo (mais comum em linguagens interpretadas); Vetores que crescem automaticamete; Classes ou objectos com comportamento (ver orientao a objetos); Closures; Funes aninhadas;

Programao genrica; Sobrecarga de operadores; Meta-programao; Apoio nativo de multithreading e comunicao por rede. Apesar da lista de caractersticas teis que C possui no ser longa, isso no tem sido um impedimento sua aceitao, pois isso permite que novos compiladores de C sejam escritos rapidamente para novas plataformas, e tambm permite que o programador permanea sempre em controle do que o programa est a fazer. Isto o que por vrias vezes permite o cdigo de C correr de uma forma mais eficiente que muitas outras linguagens. Tipicamente, s cdigo de assembly "afinado mo" que corre mais rapidamente, pois possui um controle completo da mquina, mas avanos na rea de compiladores juntamente com uma nova complexidade nos processadores modernos permitiram que a diferena tenha sido rapidamente eliminada. Uma consequncia da aceitao geral da linguagem C que freqentemente os compiladores, bibliotecas e at intrpretes de outras linguagens de nvel maior sejam eles prprios implementados em C. C tem como ponto forte, a sua eficincia, e a linguagem de programao preferida para o desenvolvimento de sistemas e softwares de base, apesar de tambm ser usada para desenvolver programas de computador. tambm muito usada no ensino de cincia da computao, mesmo no tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso. Outra caracterstica importante de C, sua proximidade do cdigo de mquina, que permite que um projetista seja capaz de fazer algumas previses de como o software ir se comportar, ao ser executado. C tem como ponto fraco, a falta de proteo que d ao programador. Praticamente tudo que se expressa em um programa em C, pode ser executado, como por exemplo, pedir o vigsimo membro de um vetor com apenas dez membros. Os resultados so muitas vezes totalmente inesperados, e os erros, difceis de encontrar.

Tipos de dado
C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem ALGOL, tais como Pascal. Possui tipos para nmeros inteiros de vrios tamanhos com e sem sinal, nmeros de ponto flutuante, caracteres e estruturas (structs). C usa extensivamente ponteiros, um tipo muito simples de referncia que guarda o endereo de memria da varivel. O ponteiro pode ser desreferenciado, uma operao que busca o objecto que se encontra na morada da memria que o ponteiro possui, morada essa que pode ser manipulada atravs de aritmtica de ponteiros. Durante o tempo de execuo, o ponteiro simplesmente uma morada de mquina tais como aquelas manipuladas em assembly, mas em tempo de compilao possui um tipo complexo que indica o tipo do objecto para onde ele aponta, permitindo que se verifique o tipo de expresses, incluindo ponteiros. Os ponteiros so usados extensivamente em C. O tipo linha de texto de C simplesmente um ponteiro para um vetor de caracteres e alocao dinmica de memria, descrita abaixo, efectuada atravs de ponteiros. Os ponteiros em C possuem um valor reservado especial, NULL, que indica que no esto a apontar para uma morada. O uso desse valor como morada muito til na construo de vrias estruturas de dados, mas causa comportamento nodefinido (possivelmente uma falha de sistema) ao ser desreferenciado. Um ponteiro que possui o valor NULL chamado ponteiro nulo. Os ponteiros so declarados (e desreferenciados) com um * (asterisco), portanto o tipo int* denota um ponteiro para nmero(s) inteiro(s). A linguagem C tambm fornece um tipo especial de ponteiros, o void*, que se traduz num ponteiro que aponta para um objecto de tipo desconhecido. A linguagem C tambm tem apoio a nvel de linguagem para vetores estticas (de dimenso fixa) de tipos. As disposies de tipos podem parecer ter mais que uma dimenso apesar de serem tecnicamente disposies de disposies de tipos. Em memria, tais estruturas so posicionadas com as linhas uma depois da outra (a alternativa seria armazenar os dados em colunas, usado em outras linguagens). O acesso a disposies de tipos feito atravs de ponteiros e aritmtica de ponteiros; o nome da disposio tratado como se fosse um ponteiro que aponta para o incio da disposio. Em certas aplicaes no razovel usarem-se disposies de tipos de dimenso fixa e por isso a alocao dinmica de memria pode ser usada para criar disposies de tipos de dimenso varivel. Como a linguagem C regularmente usada em programao de baixo-nvel de sistemas, h casos em que necessrio tratar um nmero inteiro como sendo um ponteiro, um nmero de ponto flutuante como sendo um nmero inteiro ou um tipo de ponteiro como sendo outro. Para estes casos, a linguagem C fornece a capacidade de "moldagem" (tambm denominado "converso de tipo" ou casting), uma operao que, caso seja possvel, fora a converso de um objecto de um tipo para outro. Apesar de ser por vezes necessrio, o uso de converses de tipo sacrifica alguma segurana oferecida pelo sistema de tipos. int

O tipo de dados int (inteiro) serve para armazenar valores numricos inteiros. Existem vrios tipos de inteiros, cada um de um tamanho diferente (dependendo do sistema operacional e/ou arquitetura do processador): int, pode possuir 16 bits, 32 bits ou 64 bits short
int int, int,

deve possuir tamanho de no mnimo 16 bits e no pode ser maior que

long long

deve possuir tamanho mnimo de 32 bits

long int, deve possuir tamanho mnimo de 64 bits

Todos estes tipos de inteiros podem ainda ser declarados precedidos da clusula unsigned, o que faz com que s suporte nmeros positivos. Isto faz com que, com o mesmo tamanho, uma varivel suporte mais nmeros positivos do que um signed (todos os inteiros so signed por omisso). char O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso significa que o programa reserva um espao de 8 bits na memria RAM ou em registradores do processador para armazenar um valor (char de tamanho maior que 8 bits permitido pela linguagem, mas os casos so raros). Com vetores do tipo char possvel armazenar strings, que so cadeias de caracteres. float O tipo de dados float serve para armazenar nmeros de ponto flutuante, ou seja, com casas decimais. O padro mais utilizado nos ltimos 10 anos o IEEE 7541985. double O tipo de dados double serve para armazenar nmeros de ponto flutuante de dupla preciso, normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O padro mais adotado tambm o IEEE 754-1985. struct Em C podem ser usadas estruturas (chamados de registos em outras linguagens de programao). As estruturas so grupos de variveis organizadas arbitrriamente pelo programador. Uma estrutura pode criar um novo tipo de varivel caso typedef seja usado em sua declarao. Exemplo:

#include <stdio.h> struct pessoa { unsigned short int idade; char nome[51]; /* vetor de 51 chars para o nome */ unsigned long int rg; }; /* estrutura declarada */ int main(void) { struct pessoa exemplo = {16, "Fulano", 123456789}; /* declarao de uma varivel tipo struct pessoa */ printf("Idade: %hu\n", exemplo.idade); printf("Nome: %s\n", exemplo.nome); printf("RG: %lu\n", exemplo.rg); return 0; }

Esta estrutura composta por 3 elementos de tipos diferentes. Depois de ser declarada uma varivel do tipo struct x, onde x o nome da estrutura, para se acessar os diversos elementos deve-se fazer x.elemento

Relaes com C++


A linguagem de programao C++ foi originalmente derivada do C para suportar programao orientada a objetos. medida que as linguagens C e C++ foram evoluindo independentemente, a diviso entre as duas veio a aumentar. O padro C99 criou um nmero de caractersticas que entram em conflito. Hoje, as principais diferenas entre as duas linguagens so: inline - em C++, funes em linha encontram-se no espao global enquanto que em C encontram-se no espao local. Por outras palavras, isso significa que, em C++, qualquer definio de qualquer funo em linha (sem ser a respeito da sobrecarga de funes de C++) tem de estar em conformidade com a "regra de uma definio" da linguagem C++. Mas em C, a mesma funo em linha pode ser definida de maneira diferente em diferentes arquivos (ou ficheiros). A palavra-chave bool, igual usada em C++, em C99 necessita que se inclua o ficheiro-cabealho <stdbool.h> (_Bool est sempre disponvel). Padres anteriores de C no definiam um tipo booleano e vrios (e incompatveis) mtodos foram usados para simular um tipo booleano. Algumas caractersticas originalmente desenvolvidas em C++ tambm apareceram em C. Entre elas encontram-se: prottipos de funo (com declarao de tipos de parmetros) e remoo do "int" implcito.

comentrios de linha, indicados por carcter de nova-linha a palavra-chave


inline

//;

comentrios de linha terminam com um

tipagem mais forte.

Exemplos
"Ol, Mundo!"
A seguinte aplicao foi publicada na primeira edio de C de K&R, e tornou-se no programa de introduo padro da maior parte dos livros sobre C. O programa envia o texto "Ol Mundo!" para a sada padro, que normalmente o ecr (ou tela), mas que tambm pode ser um ficheiro (ou arquivo), um outro dispositivo qualquer, ou at mesmo um bit bucket, dependendo de como a sadapadro mapeada na altura em que o programa executado.
int main() { printf("Ol, Mundo!\n"); }

Apesar do programa acima correr corretamente, atualmente origina algumas mensagens de aviso quando compilado com C ANSI. Essas mensagens podem ser eliminadas efectuando umas pequenas alteraes no programa original:
#include <stdio.h> /* Pacotes com funes de entrada e sada */ #include <math.h> /* Este pacote desnecessrio, mas mostra que podem ser adicionados outros pacotes */ int main(void) { printf("Ol, Mundo!\n"); return 0; /* Retorna 0, pois main retorna um int */ } /* Nova linha aps fechar a chave principal */

A primeira linha do programa uma diretiva de pr-processamento #include, que causa com que o pr-processador substitua aquela linha pela totalidade do contedo do arquivo qual diretiva se refere. Neste caso o arquivo padro stdio.h (que contm prottipos de funes para trabalho com entrada e sada) ir substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h encontra-se no local em que, quando da configurao do compilador, se definiu como padro para localizao dos ficheiros de incluso (header files, geralmente com a extenso .h).

A linha (no-vazia) seguinte indica que uma funo denominada main ser definida. A funo main tem um significado especial nos programas de C, pois a funo que inicialmente executada ou em ingls entry point. Os caracteres { e } delimitam a extenso da funo. O termo int define a funo main como sendo uma funo que retorna um nmero inteiro. O termo void indica que a funo no aceita parmetros. A funo main, normalmente aceita parmetros, que so passado pela linha de comando. Os compiladores e sistemas operacionais atuais reconhecem as seguintes declaraes de main:
int main (int argc, char ** argv) int main (int argc, char * argv[])

A linha seguinte "chama", ou executa uma funo chamada printf; o arquivo includo, stdio.h, contm a informao que descreve a forma como a funo printf deve ser chamada. Nesta chamada, passado funo printf um nico argumento, a linha de texto constante "Ol Mundo!\n". A funo printf retorna um valor, um int, mas como no usado ela descartada pelo compilador. O comando return retorna o valor 0 para o sistema, que interpretado pelo mesmo como que a funo main() foi executada e encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim da funo main. Note-se que texto rodeado por /* e */ (comentrios de texto) ignorado pelo compilador. Os compiladores que obedecem norma C99 tambm aceitam como comentrios as linhas de texto que so precedidos por //.

Soma simples
O seguinte cdigo executa uma soma, de duas variveis. Primeiro so definidas as variveis a e b, do tipo inteiro. Em seguida mostrado na tela, com o comando printf, o texto a + b = , e aps o smbolo de igual o resultado da conta, que 10. Portanto o resultado final seria: a + b = 10
#include <stdio.h> int main() { int a = 3, b = 7; printf("a + b = %d\n", a+b); return 0; }

Alterando esse cdigo, pode-se interagir com o usurio. Dessa forma, o usurio digita dois valores e em seguida mostrada a soma deles.

#include <stdio.h> int main() { int x, y; //define duas variveis printf("x = "); scanf("%d", &x); //scanf atribui o valor digitado a x printf("y = "); scanf("%d", &y); //scanf atribui o valor digitado a y printf("x + y = %d\n", x+y); //printf mostra na tela o resultado. return 0; }

A execuo desse programa seria a seguinte, se o usurio digitar 5 para x e 6 para y. x=5 y=6 x + y = 11

Ferramentas de programao
Bloodshed Dev-C++ Code::Blocks GNU Compiler Collection Make

Ver tambm
Wikilivros Linguagem compilada Linguagem de programao Linguagem de programao de alto nvel Lista de linguagens de programao Unix

Ligaes externas
C: A Linguagem de Programao (em portugus) Precedncia entre operadores em C (em portugus) C Programming (em ingls) {{{3}}} (em ingls) Curso de Linguagem C (em ingls) The Unofficial C for Dummies FAQ Page (em ingls) C optimisation tutorial (em ingls) Apostila de C (em portugus) - Professor Adriano Cruz - Departamento de Cincia da Computao - IM/UFRJ Compilador (em ingls) - Compilador de acesso Pblico Cross-Compiler

Minix
Minix

Desenvolvedor: Modelo do desenvolvimento: Verso estvel: Famlia do SO: Ncleo: Estado do desenvolvimento: Website Portal Tecnologias de informao

Andrew Stuart Tanenbaum Software livre 3.1.4a UNIX Microncleol Estvel Site Oficial www.minix3.org

O Minix um sistema operacional Unix-like (semelhante ao UNIX), gratuito e com o cdigo fonte disponvel. Multitarefa (mltiplos programas podem correr ao mesmo tempo ). Roda em 286, 386, 486, Pentium. Suporta memria estendida (16MB no 286 e 4GB no 386, 486 e Pentium ou superior).

RS-232 serial line suporte com terminal emulation, kermit, zmodem, etc. Mximo de trs usurios simultaneamente na mesma mquina. Chamadas de sistemas compatveis com POSIX. Inteiramente escrito em C (SO, utilitrios, bibliotecas etc.). Compilador ANSI C. Shell funcionalmente idntico ao Bourne shell. Rede TCP/IP. 5 editores (emacs subset, vi clone, ex, ed, and simple screen editor). Mais de 200 utilitrios (cat, cp, ed, grep, kermit, ls, make, sort, etc.). Mais de 300 bibliotecas (atoi, fork, malloc, read, stdio, etc.). Foi organizado em camadas, onde as duas primeiras formam o ncleo: Captura interrupes e traps, salvar e restaurar registradores, agendar as demais funes Processos de entrada/sada. As tarefas de entrada/sada so chamadas drivers de dispositivos; Contm processos que fornecem servios teis ao usurio; Existem em um nvel menos privilegiado que o ncleo; Shell, editores, compiladores, etc. Processos so entidades independentes, cada um com suas permisses de acesso, e tm atribudos propriedades como o id do usurio que o criou (UID) e do grupo (GID). Grande parte de sua execuo se processa em user-mode, quando o processador no admite a execuo de instrues privilegiadas, mas em certos instantes (durante uma chamada de sistema), ele executa em modo ncleo para conseguir o acesso a partes do hardware que de outra forma seriam inacessveis. Cada processo identificado pelo seu process id (PID), que simplesmente um nmero inteiro. Mais especificamente, do ponto de vista do sistema operacional, uma coleo de instrues (programa) mais os dados necessrios sua execuo. Armazenados juntamente com o processo esto o seu contexto, ou seja, o contador de instrues, e o conjunto de todos os registradores da CPU. responsabilidade do sistema operacional gerenciar os processos do sistema, de forma que, se um processo tenta ler ou escrever em um disco, por exemplo, este processo ficar em estado waiting (suspenso) at que a operao seja completada.

Nesse nterim, outro processo ser habilitado a correr, desperdiando assim o mnimo do tempo da CPU, memria e demais perifricos. O Minix suporta inclusive um procedimento de "escrita retardada", quando escrevemos em algum arquivo. No momento da escrita, o buffer que contm estes dados simplesmente marcado como "sujo" (dirty), e o sistema operacional escolhe o instante mais apropriado para descarregar esse buffer no disco fsico. Isso explica a necessidade que temos de executar um procedimento de parada (shutdown ) antes de desligar a mquina, para evitar que fiquem dados a serem descarregados (escritos) no disco.

Ligaes externas
Site do Minix 3 Site Minix 3 Newsgroup de Minix

Microncleo
Microncleo o nome que se d, em biologia celular a dois tipos de formao intestina da clula:

Estruturas cromossmicas
Microncleo pode designar as estruturas celulares que resultam de cromossomos inteiros ou fragmentos destes, que resultam do processo de diviso celular e, assim, no so includos no ncleo da clula-filha, permanecendo entretanto no citoplasma das clulas interfsicas.114 No processo de telfase esses resqucios de cromossomo podem se fundir com o ncleo principal ou ainda formar ncleos "secundrios".115

114Conceito, por: HEDDLE, J.A. A rapid in vitro test for chromosomal damage. Mut. Res., Amsterdam, v. 18, n. 2, p. 187-190, 1973 - in: Micronucleos em tetrades de Tradescantia pallida (Rose) Hunt. cv. purpurea Boom: alteracoes geneticas decorrentes de poluicao aerea urbana, por Sizenando Jos de Andrade Jnior, Jos Cleub Silva Santos Jnior, Jesiane da Luz Oliveira, Eneida de Moraes Marclio Cerqueira e Jos Roberto Cardoso Meireles (pgina acessasda em 9 de dezembro de 2009) 115

Organelo
, ainda, o nome que se d, nos protozorios ciliados, como o paramcio, aos pequenos ncleos que, no processo de reproduo se dividem por mitose, e por conjugao fundem-se reciprocamente formando um ncleo zigoto, dando origem ao macroncleo e aos microncleos dos indivduos formados no prximo ciclo de fisso.

Andrew Stuart Tanenbaum


Andrew S. Tanenbaum

Andrew Stuart "Andy" 1944) o chefe do sistemas de computao, Amsterd nos Pases Minix, um sistema Unix com propsito conhecido por seus computao.

Tanenbaum (nasceu em Departamento de na Universidade Vrije, Baixos. Ele o autor do operacional baseado no educacional, e bastante livros sobre cincia da

Nasceu na cidade de Nova Iorque e cresceu em White Plains no estado de Nova Iorque. Recebeu o ttulo de bacharelado pelo MIT e o doutorado pela UC Berkeley em 1971. Atualmente ministra aulas sobre Organizao de computadores e Sistemas operacionais. Ficou conhecido internacionalmente pelos seus livros de Cincia da computao, particularmente: Redes de computadores, ISBN 0-13-066102-3 Sistemas operacionais: Design e implementao, ISBN 0-13-638677-6 Sistemas operacionais modernos, ISBN 0-13-031358-0 Outras publicaes: Structured Computer Organization Distributed Systems: Principles and Paradigms O ncleo Linux foi inspirado no Minix. Tanenbaum ficou envolvido com as discusses do Usenet durante 1992 com Linus Torvalds, criador do Linux, sobre os mritos bsicos de Torvalds usando ncleo monoltico em vez de microncleo que Tanenbaum achou que era o meio do futuro. Ele tambm implementou o Sistema operacional distribudo Amoeba.

Na mdia
Andrew Tanenbaum foi apresentador da srie de documentrios Beyond 2000 (Para alm do ano 2000), onde eram apresentadas vrias inovaes tecnolgicas.

Publicaes
Computer Networks, ISBN 0-13-066102-3 Operating Systems: Design and Implementation, (co-authored with Albert Woodhull), ISBN 0-13-142938-8 Modern Operating Systems, ISBN 0-13-031358-0 Structured Computer Organization, ISBN 0-13-148521-0 Distributed Systems: Principles and Paradigms, (co-authored with Maarten van Steen), ISBN 0-13-239227-5

Ligaes externas
Site Pessoal Departamento de Sistemas de Computao da VU The Usenet discussion with Torvalds at Google Groups 1. 2004 view of the discussion with Torvalds

Projeto GNU
Logotipo GNU

Projeto GNU, em projeto iniciado por 1984, com o objetivo de operacional totalmente pessoa teria direito de redistribuir o programa desde que garantindo direitos.

computao, um Richard Stallman em criar um sistema livre, que qualquer usar, modificar e e seu cdigo fonte, para todos os mesmos

Este sistema operacional GNU deveria ser compatvel com o sistema operacional UNIX, porm no deveria utilizar-se do cdigo fonte do UNIX. Stallman escolheu o nome GNU porque este nome, alm do significado original do mamfero Gnu, um acrnimo recursivo de: GNU is Not Unix (em portugus: GNU no Unix).

A partir de 1984 Stallman e vrios programadores, que abraaram a causa, vieram desenvolvendo as peas principais de um sistema operacional, como compilador de linguagem C, editores de texto, etc. Em 1991 o sistema operacional j estava quase pronto, mas faltava o principal, que o ncleo do sistema operacional. O grupo liderado por Stallman estava desenvolvendo um kernel chamado Hurd. Porm, em 1991, um jovem finlands chamado Linus Torvalds havia criado um kernel que poderia usar todas as peas do sistema operacional GNU. Este kernel ficou conhecido como Linux, contrao de Linus e Unix. Atualmente, o sistema operacional GNU com o kernel Linux conhecido como GNU/Linux, que como o projeto solicita aos utilizadores que se refiram ao sistema completo, embora a maioria das pessoas se referem ao sistema apenas como Linux por uma questo de comodidade. Mas o prprio Linus Torvalds discorda da nomenclatura GNU/Linux, chamando seu Sistema Operacional apenas de Linux. A discusso e desentendimento entre Stallman e Torvalds prosseguem acerca da correta nomenclatura a respeito do Sistema, arrastando tambm as opinies dos inmeros usurios e desenvolvedores do Sistema GNU/Linux (ou apenas Linux).

Programas desenvolvidos pelo projeto GNU


O duo dinmico: O Gnu e o Software Fundation, Inc Pinguim voando. (C) 1999, Free

Lista de alguns programas GNU: Bison - gerador de parser yacc. Bash - interpretador de BFD - arquivos de Binutils - montador, linker Classpath - bibliotecas para Java. DotGNU - substituto livre para o Microsoft .NET.

desenvolvidos pelo projeto desenhado para substituir o comandos. bibliotecas. e ferramentas relacionadas.

Emacs - editor de texto extensvel e auto-documentado. GCC - compilador otimizado para vrias linguagens de programao, particularmente linguagem C. GDB - depurador de aplicaes. GIMP - programa de edio de imagens. glibc - biblioteca para linguagem C. GMP - programa para clculos arbitrrios.

GNOME - ambiente de grfico para sistemas do tipo Unix. Autotools - Autoconf, Automake e Libtool. GNUnet - rede descentralizada de comunicaes pessoais, desenhada para resistir censura. GNUstep - implementao de conjunto de bibliotecas OpenStep, assim como ferramentas para programar aplicaes grficas. GSL - biblioteca cientfica para GNU Gzip - aplicaes e bibliotecas para compresso de dados. GNU Hurd - um microncleo e um conjunto de servidores que funcionam do mesmo modo que o ncleo Unix. Maxima - um sistema para clculos algbricos. Octave um programa para computador numrico similar a MATLAB. GNU MDK - um conjunto de ferramentas para a programao em MIX. Texinfo - sistema de documentao. LilyPond - editor de partituras musicais. O projecto GNU tambm ajuda com o desenvolvimento de outros pacotes, como: CVS - Sistema de controle de verses para cdigo fonte. DDD - Ferramentas grficas para deteco e depurao de erros.

Ver tambm
Free Software Foundation Licena Pblica GNU (GPL) Gnu, o mamfero

Ligaes externas
(em portugus) O Sistema Operacional GNU (em portugus) Filosofia do Projeto GNU (em portugus) Introduo ao Projeto GNU Uma bela charge

GNU Mach
GNU Mach a implementao GNU do o microncleo Mach. Ele a base de um servidor multi-funcional do sistema operacional, o Hurd. Atualmente mantido pelos desenvolvedores Hurd do projeto GNU, e roda em mquinas IA32.

Vantagens
Como um microkernel, o GNU Mach no implementa uma srie de caractersticas geralmente encontradas em um sistema operacional, apenas o mnimo necessrio. Isto significa que uma grande parte do cdigo do sistema operacional de cdigo mantido fora do GNU Mach, e, enquanto este cdigo pode passar por uma completa remodelao, o cdigo do microkernel pode permanecer relativamente estvel. O GNU Mach particularmente bem adaptado para o SMP e redes cluster tcnicas. Threads so prestados ao nvel do kernel, e o prprio kernel tira proveito disso. Transparncia de rede no nvel IPC.

Ligaes externas
GNU Mach (em ingls)

GNU Hurd
GNU Hurd

HURD Live CD

Desenvolvedor

Thomas Bushnell Roland McGrath Marcus Brinkmann Neal Walfield K16 / 30 de dezembro de 2007 GNU ncleo

Verso estvel Sistema Op. Gnero

Licena Website Portal das Tecnologias de informao


Logo do GNU Hurd

GPL http://www.gnu.org/software/hurd/

GNU Hurd o ncleo oficial do sistema operacional GNU. composto de servidores (ou daemons, na terminologia de Unix) que utilizam o microncleo GNU Mach. Est em desenvolvimento desde 1990 pelo Projeto GNU e distribudo como software livre sob a licena GPL. O Hurd almeja superar os ncleos tipo Unix em termos de funcionalidade, segurana e estabilidade, e ao mesmo tempo manter uma certa compatibilidade com o Unix. O nome "Hurd" um acrnimo indiretamente recursivo: "HIRD of UnixReplacing Daemons", onde "HIRD" significa "HURD of Interfaces Representing Depth". Ainda em estgio de desenvolvimento, os prprios (e pouqussimos) desenvolvedores pedem ajuda pessoas conhecedoras da Linguagem C (tanto para o desenvolvimento do ncleo, quanto para o porte de aplicativos), assim como pessoas que tenham disponibilidade para efetuar testes e reportar bugs. Richard Stallman Richard Stallman, fundador da Free Software Foundation, lanou o projeto GNU e subsequentemente comearam as pesquisas sobre um ncleo chamado TRIX, que funcionava com RPC (chamadas de procedimento remoto). Aps estudos, descobriram muitas falhas, e ento passaram a pensar no Mach 3.0 (microncleo), que foi desenvolvido com cdigo aberto e integrado ao HURD; em 1994 o HURD inicia pela primeira vez, funcionando. O projeto HURD tem como finalidade, alm de liberdade ao usurio, superar UNIX em termos de funcionalidade, segurana e manter uma certa compactibilidade com o mesmo.

Ligaes externas
GNU Hurd The GNUFans Wiki - no oficial, mas a documentao do curso o Hurd Towards a New Strategy of OS Design Debian GNU/Hurd instala por CDs Interview com Neal Walfield, Hurd e Hurd/L4 developer. (2001) Interview com Marcus Brinkmann, Hurd e Hurd/L4 developer. (2005) A GNU/Hurd on Mach Live CD, baseado no Debian GNU/Hurd #hurd canal de IRC

Richard Matthew Stallman


Imagem do jovem Stallman, na in Freedom: Richard Stallman's Sam Williams (2002). capa do livro da O'Reilly Free as Crusade for Free Software, por

Richard Matthew Stallman, freqentemente abreviado para "rms" (Manhattan, 16 de maro de 1953) um famoso hacker, fundador do movimento free software, do projeto GNU, e da Free Software Foundation(FSF) ("Fundao para o Software Livre"). Um aclamado programador, seus maiores feitos incluem Emacs (e o GNU Emacs, mais tarde), o GNU Compiler Collection e o GNU Debugger. tambm autor da GNU General Public License (GNU GPL ou GPL), a licena livre mais usada no mundo, que consolidou o conceito de copyleft. Desde a metade dos anos 1990, Stallman tem dedicado a maior parte de seu tempo ao ativismo poltico, defendendo software livre e lutando contra a patente de softwares e a expanso da lei de copyright. O tempo que ainda devota programao gasto no GNU Emacs. Ele se sustenta com aproximadamente a metade do que recebe por suas palestras. Em 1971, ainda calouro na Universidade Harvard - onde se graduou em Fsica, em 1974 - Stallman era programador do laboratrio de IA do MIT e tornou-se um lder na comunidade hacker.

Biografia
Richard Matthew Stallman nasceu em Nova Iorque, filho de Alice Lippman e Daniel Stallman. Seu primeiro acesso a um computador aconteceu em 1969, no seu primeiro ano do curso mdio. Empregado pelo Centro Cientfico da IBM em Nova York, aps concluir seu curso mdio (High School) Stallman passou o vero escrevendo seu primeiro programa - um pr-processador para a linguagem de programao PL/I no IBM 360. "Eu o escrevi primeiro em PL/I, passando ento para a linguagem de montagem quando o programa de PL/I se tornou grande demais para caber no computador", contou Stallman, anos depois (Williams 2002, captulo 3). Stallman era simultaneamente assistente voluntrio do laboratrio do departamento de Biologia na Rockefeller University. Embora j se estivesse encaminhando para as reas de Matemtica e Fsica, sua mente analtica impressionou de tal modo o diretor do laboratrio que, alguns anos depois de Stallman ter ido para a faculdade, sua me recebeu uma chamada de telefone: "Era o professor da Rockefeller", ela recordou, "quis saber o que Richard estava fazendo". Foi surpreendido ao saber que estava trabalhando em computadores. O professor imaginava que Richard teria tido um grande futuro como bilogo (Williams 2002, captulo 3).

Durante estes anos tornou-se mais conhecido pelas iniciais de seu nome, rms. Na primeira edio do dicionrio do hacker, ele escreveu, "Richard Stallman' apenas meu nome mundano; voc pode me chamar de 'rms'."

O declnio da cultura hacker


Nos anos 1980, a comunidade hacker, que at ento dominara a vida de Stallman, comeou a se dissolver. A emergncia do "software portvel" (software que poderia ser feito para funcionar em tipos diferentes de computadores) era ento um problema para o modelo de negcio dos fabricantes de computador. Para impedir que seu software pudesse ser usado em computadores dos seus concorrentes, os fabricantes pararam de distribuir o cdigo fonte e comearam a restringir a cpia e a redistribuio de seu software. O software restrito tinha existido antes, mas agora no havia nenhuma escapatria dele. Em 1980 Richard Greenblatt, um companheiro hacker do laboratrio, fundou a Lisp Machines Incorporated para vender Mquinas Lisp, que ele e Tom Knight criaram no laboratrio. Mas Greenblatt rejeitou o investimento exterior, acreditando que os rendimentos da construo e da venda de algumas mquinas poderiam ser reinvestidos no crescimento da companhia. No contraste Russ Noftsker e outros hackers sentiram que o capital providenciado por investidores externos era melhor. Sem um acordo, a maioria dos hackers restantes do laboratrio fundaram o Symbolics. Symbolics recrutou a maioria dos hackers restantes e comeou a fazer oposio ao laboratrio de AI. Symbolics forou Greenblatt a renunciar, citando polticas do MIT. Quando ambas as companhias entregaram o software proprietrio, Richard Stallman sentiu que LMI, ao contrrio de Symbolics, tinha tentado evitar de ferir o laboratrio. Por dois anos, de 1982 ao fim de 1983, Stallman duplicou os esforos dos programadores do Symbolics para impedir que ganhassem um monoplio nos computadores do laboratrio. Por esse tempo, entretanto, era o ltimo de sua gerao dos hackers no laboratrio. Ele rejeitou um futuro onde tivesse que assinar acordos de no-divulgao, onde ele tivesse de concordar com no compartilhar o cdigo fonte ou informaes tcnicas com outros desenvolvedores de software, e executar outras aes que considerou contrrias de seus princpios. Ele escolheu ao contrrio compartilhar seu trabalho com os outros, o que considerou como um esprito clssico da colaborao cientfica. Stallman pregava que os usurios do software deveriam ter a liberdade de "compartilhar com seu vizinho" e poder estudar e fazer mudanas nos softwares que usam. Disse repetidamente que as tentativas de vendedores de software proprietrio de proibir estes atos so "antissociais" e "antiticas". A frase "software deve ser livre" algumas vezes incorretamente atribuda a ele, mas Stallman diz que esta frase a mola mestre da sua filosofia. Para Stallman a liberdade (de alterar e redistribuir software) importante por causa dos usurios e da sociedade, no por quaisquer melhorias que traga ao software.

Conseqentemente, em janeiro 1984, parou seu trabalho no MIT para trabalhar em tempo integral no projeto do GNU, anunciado em setembro 1983. Stallman jamais obteve o grau de Ph.D., embora tenha recebido vrios ttulos honorficos de diferentes universidades do mundo, sendo Doctor honoris causa por pelo menos seis delas.

Fundao do projeto GNU


Stallman no Marlboro College, em Vermont, 2007.

Em 1985, Stallman GNU, que delineou sua sistema livre chamado compatvel com Unix. fundao livre FSF Livre) para empregar software e para fornecer para a comunidade livre.

publicou o manifesto motivao para criar um GNU, que seria Logo aps, incorporou a (Fundao do Software programadores livres do um infra-estrutura legal

Em 1985 Stallman popularizou o conceito do copyleft, um mecanismo legal para proteger a modificao e constituir directivas de redistribuio de software livre. Foi executado primeiramente na licena do GNU Emacs, e em 1989 a primeira licena "program-independent" do GPL (Licena pblica geral) do GNU foi liberada. Neste momento, muito do sistema GNU estava completo com a notvel exceo do ncleo Os membros do projecto de GNU comearam o desenvolvimento de um ncleo chamado GNU Hurd, em 1990, mas uma deciso arriscada de design foi escolhida, o que torna o Hurd extremamente complicado. Produzindo as ferramentas de software necessrias para escrever software, e publicando uma licena geral que poderia ser aplicada a todo o projeto do software (GPL), Stallman permitiu que outros escrevessem software livres, independente do projeto GNU. Em 1991, um projeto independente iniciado pelo estudante finlands Linus Torvalds produziu o Linux. Fortuitamente o projeto podia ser combinado com os softwares existentes GNU para fazer um sistema operacional completo.

Ver tambm
GPL Software livre Hacker

Ligaes externas
Site pessoal Fundao GNU Blog oficial Textos sobre o Movimento Free Software e a filosofia do projeto GNU

Software livre
Ilustrao freqentemente usada como logo para o Projeto GNU

Software livre, segundo a Software Foundation computador que pode ser redistribudo com algumas tais diretrizes central ao conceito de software software que vendido comercial). A maneira usual livre anexar a este uma tornar o cdigo fonte do programa disponvel.

definio criada pela Free qualquer programa de usado, copiado, estudado e restries. A liberdade de conceito, o qual se ope ao proprietrio, mas no ao almejando lucro (software de distribuio de software licena de software livre, e

Definio
Um software considerado como livre quando atende aos quatro tipos de liberdade para os usurios do software definidas pela Free Software Foundation: A liberdade para executar o programa, para qualquer propsito (liberdade n 0); A liberdade de estudar como o programa funciona, e adapt-lo para as suas necessidades (liberdade n 1). Acesso ao cdigo-fonte um pr-requisito para esta liberdade; A liberdade de redistribuir, inclusive vender, cpias de modo que voc possa ajudar ao seu prximo (liberdade n 2); A liberdade de modificar o programa, e liberar estas modificaes, de modo que toda a comunidade se beneficie (liberdade n 3). Acesso ao cdigo-fonte um pr-requisito para esta liberdade; A liberdade de executar o programa significa a liberdade para qualquer tipo de pessoa fsica ou jurdica utilizar o software em quantas mquinas quiser, em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem nenhuma restrio imposta pelo fornecedor.

A liberdade de redistribuir o programa compilado, isto em formato binrio, necessariamente inclui a obrigatoriedade de disponibilizar seus cdigos-fonte. Caso o software venha a ser modificado e o autor da modificao queira distribu-lo, gratuitamente ou no, ser tambm obrigatria a distribuio do cdigo fonte das modificaes, desde que elas venham a integrar o programa. No necessria a autorizao do autor ou do distribuidor do software para que ele possa ser redistribudo, j que as licenas de software livre assim o permitem. Para que seja possvel estudar ou modificar o software (para uso particular ou para distribuir) necessrio ter acesso ao cdigo-fonte. Por isso a disponibilidade desses arquivos pr-requisito para a liberdade do software. Cada licena determina como ser feito o fornecimento do cdigo fonte para distribuies tpicas, como o caso de distribuies em mdia porttil somente com os cdigos binrios j finalizados (sem o fonte). No caso da licena GPL, a fonte deve ser disponibilizada em local de onde possa ser acessado, ou deve ser entregue ao usurio, se solicitado, sem custos adicionais (exceto transporte e mdia). Para que essas liberdades sejam reais, elas devem ser irrevogveis. Caso o desenvolvedor do software tenha o poder de revogar a licena, o software no livre. A maioria dos softwares livres licenciada atravs de uma licena de software livre, como a GNU GPL, a mais conhecida.

Software Livre e Software em Domnio Pblico


Software livre diferente de software em domnio pblico. O primeiro, quando utilizado em combinao com licenas tpicas (como as licenas GPL e BSD), garante a autoria do desenvolvedor ou organizao. O segundo caso acontece quando se passam os anos previsto nas leis de cada pas de proteo dos direitos do autor e este se torna bem comum. Ainda assim, um software em domnio pblico pode ser considerado como um software livre.

Software Livre e Copyleft


Licenas como a GPL contm um conceito adicional, conhecido como Copyleft, que se baseia na propagao dos direitos. Um software livre sem copyleft pode ser tornado no-livre por um usurio, caso assim o deseje. J um software livre protegido por uma licena que oferea copyleft, se distribudo, dever ser sob a mesma licena, ou seja, repassando os direitos.

Associando os conceitos de copyleft e software livre, programas e servios derivados de um cdigo livre devem obrigatoriamente permanecer com uma licena livre (os detalhes de quais programas, quais servios e quais licenas so definidos pela licena original do programa). O usurio, porm, permanece com a possibilidade de no distribuir o programa e manter as modificaes ou servios utilizados para si prprio.

Venda de Software Livre


As licenas de software livre permitem que eles sejam vendidos, mas estes em sua grande maioria esto disponveis gratuitamente. Uma vez que o comprador do software livre tem direito s quatro liberdades listadas, ele poderia redistribuir este software gratuitamente ou por um preo menor do que aquele que foi pago. Como exemplo poderamos citar o Red Hat Enterprise Linux que comercializado pela Red Hat, a partir dele, foram criados diversos clones como o CentOS que pode ser baixado gratuitamente. Muitas empresas optam por distribuir o mesmo produto sobre duas ou mais licenas, geralmente uma sobre uma licena copyleft e gratuita como a GPL e outra sobre uma licena proprietria e paga. Outra diferena muito comum que as verses pagas geralmente acompanham algum tipo de servio adicional, como direito a suporte tcnico, por exemplo.

Movimento Software Livre


Motivao
O logotipo da Free Software Foundation.

Os desenvolvedores de software na dcada de 70 frequentemente compartilhavam seus programas de uma maneira similar aos princpios do software livre. No final da mesma dcada, as empresas comearam a impor restries aos usurios com o uso de contratos de licena de software. Em 1983, Richard Stallman iniciou o projeto GNU, e em outubro de 1985 fundou a Free Software Foundation (FSF). Stallman introduziu os conceitos de software livre e copyleft, os quais foram especificamente desenvolvidos para garantir que a liberdade dos usurios fosse preservada.

Ideologia: as diferenas entre Software Livre e Cdigo Aberto


Muitos defensores do software livre argumentam que a liberdade valiosa no s do ponto de vista tcnico, mas tambm sob a tica da moral e tica. neste aspecto que o movimento de software livre (encabeado pela FSF) se distingue do movimento de cdigo aberto (encabeado pela OSI), que enfatiza a superioridade tcnica em relao a software proprietrio, ao menos em potencial. Os defensores do cdigo aberto (tambm conhecido como Open source em ingls) argumentam a respeito das virtudes pragmticas do software livre ao invs das questes morais. A discordncia bsica dos movimentos est no discurso. Enquanto o foco do movimento encabeado pela FSF chama a ateno para valores morais, ticos, direitos e liberdade, o movimento encabeado pela OSI defende um discurso mais agradvel s empresas. Com isso, o movimento de software livre condena o uso e desenvolvimento de software proprietrio, enquanto o movimento de cdigo aberto conivente com o desenvolvimento de software proprietrio. As definies oficiais de software livre e de cdigo aberto so as mesmas, porm escritas de formas distintas. A OSI define o cdigo aberto usando a definio Debian de software livre, que apenas um detalhamento das 4 liberdades da FSF. Desta forma todo software de cdigo aberto tambm um software livre. O movimento software livre no costuma tomar uma posio sobre trabalhos que no sejam softwares e suas respectivas documentaes, mas alguns defensores do software livre acreditam que outros trabalhos que servem a um propsito prtico tambm devem ser livres (veja Free content). Para o Movimento do software livre, que um movimento social, no tico aprisionar conhecimento cientfico, que deve estar sempre disponvel, para assim permitir a evoluo da humanidade. J o movimento pelo Cdigo Aberto, que um movimento mais voltado ao mercado, prega que o software desse tipo traz diversas vantagens tcnicas e econmicas. O segundo surgiu para levar as empresas a adotarem o modelo de desenvolvimento de software livre. Como a diferena entre os movimentos "Software Livre" e "Cdigo Aberto" est apenas na argumentao em prol dos mesmos softwares, comum que esses grupos se unam em diversas situaes ou que sejam citados de uma forma agregadora atravs da sigla "FLOSS" (Free/Libre and Open Source Software).

Movimentos Relacionados
Inspirados na GPL e nas propostas do movimento do software livre, foi criado um repositrio de licenas pblicas, chamado Creative Commons, cujos termos se aplicam a variados trabalhos criativos, como criaes artsticas colaborativas, textos e software. Entretanto a maioria destas licenas no so reconhecidas como realmente livres pela FSF e pelo movimento de software livre. O software livre est inserido num contexto mais amplo onde a informao (de todos os tipos, no apenas software) considerada um legado da humanidade e deve ser livre (viso esta que se choca diretamente ao conceito tradicional de propriedade intelectual). Coerentemente, muitas das pessoas que contribuem para os movimentos de Conhecimento Aberto movimento do software livre, sites Wiki, Creative Commons, etc. fazem parte da comunidade cientfica. Cientistas esto acostumados a trabalhar com processos de reviso mtua (ou por pares) e o contedo desenvolvido agregado ao conhecimento cientfico global. Embora existam casos onde se aplicam as patentes de produtos relacionados ao trabalho cientfico, a cincia pura, em geral, livre.

Software Freedom Day


No dia 20 de setembro comemora-se o Dia da Liberdade do Software (Software Freedom Day) com eventos envolvendo as comunidades de usurios e desenvolvedores de software livre em todo o mundo.116

Softwares Livres notveis


Abaixo est uma lista com os softwares livres mais conhecidos e usados: Sistemas operacionais: GNU/Hurd, GNU/Linux, BSDs. Ferramentas de desenvolvimento: 1. Compilador C: GCC. 2. Compilador Pascal: Free Pascal. 3. Debugger GDB. 4. Biblioteca padro da linguagem: C. 5. Editor de texto avanado: Emacs. 6. Ferramentas para desenvolvimento em Flash e ActionScript: SWFTools 7. Plataforma de desenvolvimento: Eclipse (programao em Java e PHP) e NetBeans (Programao em C, C++, Java, Python, UML e outras).
116http://softwarefreedomday.org/

Linguagens de programao: Python,Java, Perl, PHP, Lua, Ruby, Gambas e Tcl. Servidores: 1. Servidor de nomes: BIND. 2. Agente de transporte de mensagens (e-mail):Postfix sendmail. 3. Servidor web: Apache. 4. Servidor de arquivos: Samba. 5. Servidor e cliente de email: Evolution. 6. Servidor de aplicaes: Zope e Apache Tomcat. Bancos de dados relacionais: MySQL, Postgres. Programas de interao grfica: GNOME, KDE e Xorg. Aplicativos: 1. Navegadores Web: Firefox,Konqueror e Google Chrome. 2. Pacote de escritrio: OpenOffice.org. 3. Processadores de texto: OpenOffice.org Writer e AbiWord. 4. Editor de apresentao multimdia: OpenOffice.org Impress 5. Planilha eletrnica: OpenOffice.org Calc e GNumeric 6. Sistema de gerenciamento de banco de dados: OpenOffice.org Base 7. CAD, (computer aided design) QCad. 8. Desenho vetorial: Inkscape, Sodipodi e OpenOffice.org Draw. 9. Editorao eletrnica: Scribus e OpenOffice.org Draw. 10. 11. 12. Editor de imagens: Gimp. Editor web: Aptana. EaD, Educao a distncia: Moodle

13. Gerenciador de Contedo (CMS): Opencms, Drupal, Plone, WordPress (CMS muito usado em blogs)e Joomla. 14. 15. 16. 17. 18. 19. 20. Modelagem Tridimensional Blender3d, Wings3d Renderizao (imagem esttica): Yafray, POV-Ray Acessibilidade: Virtual Magnifying Glass. Edio de udio: Audacity, Ardour Edio de partituras musicais: Rosegarden Publicao na Internet: SPIP Players multimdia: VLC e Mplayer.

Sistema matemtico : Scilabe Maxima. Sistemas de editorao: TeX, LaTeX e MiKTeX Sistema wiki: MediaWiki (sistema de wiki da Wikipedia). Telefonia: Asterisk. Composio de video : Cinelerra, Kdenlive Educacional: Gcompris [multidisciplinar], Tuxpaint, Tuxmath, etc. Veja listas maiores no diretrio da Fundao do Software Livre e em diversos outros sites de projetos na Internet.

Ver tambm
Wikilivros GPL Software Livre nos governos GNU Richard M. Stallman Free Software Foundation Free Software Foundation Europe Free Software Foundation India Free Software Foundation Latin America Licena livre Publicao Aberta Frum Internacional de Software Livre Srgio Amadeu Lei de Linus Livre associao

Ligaes externas
A identificao da ideologia atravs da anlise do discurso (sobre Software Livre x Cdigo Aberto) Pgina oficial da Free Software Foundation (em ingls) Free Software Foundation Latin America

Associao Nacional para o Software Livre (Portugal) LISA - Laboratrio para a Iniciativa de Software Aberto (Organizao Governamental de Portugal) O que o Software Livre? Explicao sobre Tipos de Software

GNU General Public License


Logotipo GNU

GNU General Public Pblica Geral), GNU GPL, a designao da livre idealizada por final da dcada de 1980, GNU da Free Software A GPL a licena com parte de projectos de grande parte devido projeto GNU e o sistema O software utilizado contedo da Wikipdia na sua verso 2.0 ou superiores.

License (Licena GPL ou simplesmente licena para software Richard Stallman no no mbito do projecto Foundation (FSF). maior utilizao por software livre, em sua adoo para o operacional GNU/Linux. para administrar o coberto por esta licena,

Contedo
Em termos gerais, a GPL baseia-se em 4 liberdades: 1. A liberdade de executar o programa, para qualquer propsito (liberdade n 0) 2. A liberdade de estudar como o programa funciona e adapt-lo para as suas necessidades (liberdade n 1). O acesso ao cdigo-fonte um pr-requisito para esta liberdade. 3. A liberdade de redistribuir cpias de modo que voc possa ajudar ao seu prximo (liberdade n 2). 4. A liberdade de aperfeioar o programa, e liberar os seus aperfeioamentos, de modo que toda a comunidade se beneficie deles (liberdade n 3). O acesso ao cdigo-fonte um pr-requisito para esta liberdade.

Com a garantia destas liberdades, a GPL permite que os programas sejam distribudos e reaproveitados, mantendo, porm, os direitos do autor por forma a no permitir que essa informao seja usada de uma maneira que limite as liberdades originais. A licena no permite, por exemplo, que o cdigo seja apoderado por outra pessoa, ou que sejam impostos sobre ele restries que impeam que seja distribudo da mesma maneira que foi adquirido. A GPL est redigida em ingls e actualmente nenhuma traduo aceita como vlida pela Free Software Foundation, com o argumento[12] de que h o risco de introduo de erros de traduo que poderiam deturpar o sentido da licena. Deste modo, qualquer traduo da GPL no-oficial e meramente informativa, mantendo-se a obrigatoriedade de distribuir o texto oficial em ingls com os programas.

Histria
A licena GPL foi originalmente publicada em Janeiro de 1989. No entanto, passado pouco tempo, ficou claro que o texto da licena comportava vrios problemas, pelo que em Junho de 1991 foi publicada a GPL verso 2, sendo ao mesmo tempo introduzida uma nova licena LGPL. Em 2005, Stallman anunciou que estava a preparar uma nova verso da licena em conjunto com Eben Moglen. Essa nova verso, foi chamada de GPLv3 e o primeiro esboo foi publicado em 16 de Janeiro de 2006, sendo a verso final lanada em 29 de Junho de 2007.

Crtica
Em 2001, Steve Ballmer, da Microsoft, se referiu ao Linux como "um cncer que se junta propriedade intelectual e contamina tudo que toca".117 Porm, crticos alegam contra Microsoft que o verdadeiro motivo para a empresa atacar a GPL o fato desta licena "resistir s tentativas dos direitos de propriedade intelectual convencionais se estenderem sobre todas as criaes e inovaes da rea".118 Em resposta aos ataques da Microsoft GPL, muitos desenvolvedores e defensores de Softwares Livres fizeram uma proclamao conjunta a favor da licena.119 Contudo, em julho de 2009, a prpria Microsoft incluiu um bloco de aproximadamente 20.000 linhas, sob licensa GPL, ao conjunto de drivers do Linux.120 O cdigo do Hyper-V que era parte do cdigo submetido usou componentes open-source licenciados sob a GPL. Era originalmente linkado estaticamente a partes de binrios pertencentes propritrios de direitos autorais, que so inadmissveis em um software licenciado atravs da GPL.121 A GPL tem sido descrita como viral por muitos crticos122 porque ela apenas permite programas inteiros, o que significa que no permitido aos programadores linkar seu projeto a bibliotecas sob licenas incompatveis GPL. O efeito viral ocorre nos casos em que os cdigos no podem ser combinados a menos que a licena de um deles sofra alguma alterao. Embora teoricamente qualquer uma das licenas possa ser mudada, no contexto viral isso mais difcil de ocorrer com a GPL (porque o software pode ter muitos contribuintes, dos quais alguns geralmente se recusam permitir mudanas nos termos de licena), ao passo que a licena dos outros softwares pode ser mudada. De acordo com Richard Stallman, a imagem de um vrus no apenas ofensiva, como tambm errnea: Software sob licena GPL nunca ataca ou infecta outro software. Ela se comporta mais como uma planta. Se um pedao aproveitado como enxerto em outro lugar, ela cresce l tambm. H uma espcie de diferena filosfica entre GPL e licenas permissivas de software livre como as do estilo BSD, que no impem restries nas verses modificadas. Enquanto a GPL prope que a liberdade dos softwares se preserve desde os desenvolvedores at o usurio final, outros acreditam que intermedirios devam ter a liberdade de modificar e redistribu-los comercialmente. Mais especificamente, a GPL exige redistribuio sujeita GPL, embora outras mais permissivas permitam redistribuio sob forma mais restritiva que a original.
117Newbart, Dave. " Microsoft CEO takes launch break with the Sun-Times", Chicago Sun-Times, 2001-06-01.(Internet archive link) 118" Deadly embrace", The Economist, 2000-03-30. Pgina visitada em 2006-03-31. 119Free Software Leaders Stand Together 120Clarke, Gavin. " Microsoft embraces Linux cancer to sell Windows servers", The Register, 2009-07-20. 121Clarke, Gavin. " Microsoft opened Linux-driver code after 'violating' GPL", The Register, 2009-07-23. 122" Speech Transcript - Craig Mundie, The New York University Stern School of Business", Prepared Text of Remarks by Craig Mundie, Microsoft Senior Vice President, The Commercial Software Model The New York University Stern School of Business May 3, 2001

Em um mercado grande, cdigos sob licena GPL tem preo praticamente nulo, pois cada usurio tem igual direito de revend-lo. Isso pode inibir o interesse no seu uso ao comprometer os interesses econmicos do desenvolvedor. A Microsoft, por exemplo, inclui termos anti-GPL ao disponibilizar seus cdigos.123 Porm essa crtica rebatida na observao de que empresas que focam seus negcios em software livre, como a Red Hat e a IBM, trabalham na venda de servios agregados como suporte e desenvolvimento de novas funcionalidades, ao invs da venda do software.124125 A GPL no tem clusula de indenizao explcita protegendo os desenvolvedores de contribuio inescrupulosa. Por exemplo, se um projeto GPL acrescido de um trabalho patenteado ou sob copyright, violando os termos destes, todos os envolvidos neste projeto, no s a pessoa que se apossou indevidamente dos trabalhos alheios, sero processados por danos ao detentor da patente ou do direito de cpia. Este foi um problema que levou Mozilla a criar e usar a Mozilla Public License em vez da GPL ou LGPL.[carece de fontes?] Alguns desenvolvedores de software acabaram concluindo que o escopo extensivo da GPL muito restritivo. Por exemplo, Bjorn Reese e Daniel Stenberg sentiram que sua escolha pela GPL criou um quodque pro quo (do latim, tudo em retorno de algo) aos outros desenvolvedores de softwares, quando estes tentavam linkar os projetos. Por essa razo, em 2001, eles abandonaram a GPLLv2 em favor de uma copyright menos restritiva.126

Ver tambm
GNU FDL, a Licena de Documentao Livre GNU. GNU LGPL, a Licena Pblica Geral Menor GNU. GNU AGPL, a Licena Pblica Geral Affero GNU. Licena livre Copyleft

Ligaes externas
(em ingls) Texto oficial da GPL (em portugus) Traduo da GPL para Portugus (no oficial) (em portugus) Traduo da GPL para Portugus do Brasil (no oficial) (em portugus) Licena Pblica Geral do GNU (GPL) do Creative Commons (no oficial)
123Microsoft anti-GPL fine print threatens competition | The Register 124IBM's Linux revenue: Services to overtake servers 125Red Hat revenue surges 46 percent 126Bjrn Reese and Daniel Stenberg, Working Without Copyleft (December 19, 2001)

(em portugus) Como usar a GPL em seus prprios programas (em ingls) Como denunciar uma violao da GPL (em ingls) Veja e participe na discusso da GPL v3

Free Software Foundation


logotipo da Free Software Foundation

A Free Software Foundation (FSF, Fundao para o Software Livre) uma organizao sem fins lucrativos, fundada em 1985 por Richard Stallman e que se dedica eliminao de restries sobre a cpia, redistribuio, entendimento e modificao de programas de computadores bandeiras do movimento do software livre, em essncia. Faz isso promovendo o desenvolvimento e o uso de software livre em todas as reas da computao mas, particularmente, ajudando a desenvolver o sistema operacional GNU e suas ferramentas. At meados da dcada de 1990 a fundao dedicava-se mais escrita do software. Como hoje existem muitos projetos independentes de software livre, a FSF dedica-se mais aos aspectos legais e estruturais da comunidade do software livre. Entre suas atribuies atuais, encarrega-se de aperfeioar licenas de software e de documentao (como a GNU General Public License, GPL ou a GNU Free Documentation License, GFDL), de desenvolver um aparato legal acerca dos direitos autorais dos programas criados sob essas licenas, de catalogar e disponibilizar um servio com os softwares livres desenvolvidos (o Free Software Directory), e de discutir e aperfeioar a prpria definio de software livre..

Ver tambm
GNU GNU/Linux Free Software Foundation Latin America Free Software Foundation Europe Free Software Foundation India Richard M. Stallman GNU General Public License GNU Free Documentation License

Ligaes externas
FSF Pgina Principal

Linux
Linux

Modelo do desenvolvimento: Ncleo: Licena: Estado do desenvolvimento: Portal Tecnologias de informao

Open source Monoltico/Modular Vrias Ativo

Linux o termo geralmente usado para designar qualquer sistema operativo (portugus europeu) ou sistema operacional (portugus brasileiro) que utilize o ncleo Linux. Foi desenvolvido pelo finlands Linus Torvalds, inspirado no sistema Minix. O seu cdigo fonte est disponvel sob licena GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licena. Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaborao de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard (HP), Red Hat, Novell, Google e a Canonical.127

Histria
Linus Torvalds, criador e principal mantenedor do ncleo Linux.

127http://www.linuxfoundation.org/about/members

O ncleo Linux foi, Linus Torvalds do Computao da Universidade ajuda de vrios atravs da Usenet (uma de discusso existente desde Linus Torvalds comeou o como um projeto particular, no Minix, um pequeno por Andrew S. Tanenbaum. suas prprias palavras, "um ("a better Minix than Minix"). trabalho no projecto, mensagem para

originalmente, escrito por Departamento de Cincia da de Helsinki, Finlndia, com a programadores voluntrios espcie de sistema de listas os primrdios da Internet). desenvolvimento do ncleo inspirado pelo seu interesse sistema UNIX desenvolvido Ele limitou-se a criar, nas Minix melhor que o Minix" E depois de algum tempo de sozinho, enviou a seguinte comp.os.minix:

Voc suspira pelos bons tempos do Minix-1.1, quando os homens eram homens e escreviam seus prprios "device drivers"?128 Voc est sem um bom projecto em mos e deseja trabalhar num S.O. que possa modificar de acordo com as suas necessidades? Acha frustrante quando tudo funciona no Minix? Chega de noite ao computador para conseguir que os programas funcionem? Ento esta mensagem pode ser exactamente para voc. Como eu mencionei h um ms atrs, estou trabalhando numa verso independente de um S.O. similar ao Minix para computadores AT-386. Ele est, finalmente, prximo do estado em que poder ser utilizado (embora possa no ser o que voc espera), e eu estou disposto a disponibilizar o
128Primeiro perodo do original, em ingls: Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers?

cdigo-fonte para ampla distribuio. Ele est na verso 0.02... contudo eu tive sucesso ao executar bash, gcc, gnu-make, gnused, compresso etc. nele. Curiosamente, o nome Linux foi criado por Ari Lemmke, administrador do site ftp.funet.fi que deu esse nome ao diretrio FTP onde o ncleo Linux estava inicialmente disponvel.129 (Linus tinha-o baptizado como "Freax", inicialmente)130 No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira verso "oficial" do ncleo Linux, verso 0.02. Desde ento muitos programadores tm respondido ao seu chamado, e tm ajudado a fazer do Linux o sistema operacional que hoje. No incio era utilizado por programadores ou s por quem tinha conhecimentos, usavam linhas de comando. Hoje isso mudou, existem diversas empresas que criam os ambientes grficos, as distribuies cada vez mais amigveis de forma que uma pessoa com poucos conhecimentos consegue usar o Linux. Hoje o Linux um sistema estvel e consegue reconhecer todos os perifricos sem a necessidade de se instalar os drivers de som, vdeo, modem, rede, entre outros.

Ncleo
Interface padro do gNewSense, uma das distribuies do Linux

O termo Linux refere-se ao "kernel") do sistema tambm usado pelos usurios para referir-se baseados no ncleo Linux programas. Segundo um ncleo pode ser sistema operativo, quando gerenciador de recursos de hardware.

ncleo (em ingls: operativo. O termo meios de comunicao e aos sistemas operacionais agregado a outros Tanenbaum e Silberschatz, considerado o prprio este definido como um

129Lars Wirzenius (27 de abril de 1998). Linux Anecdotes. Pgina visitada em 15 de junho de 2007. 130Carlos E. Morimoto. Linux, Ferramentas Tcnicas 2ed (em Portugus). 2.ed. GDH Press e Sul Editores, 2006. pp. 312. ISBN 85-205-0401-9

Arquitetura
O Linux um ncleo monoltico: as funes do ncleo (escalonamento de processos, gerenciamento de memria, operaes de entrada/sada, acesso ao sistema de arquivos) so executadas no espao de ncleo. Uma caracterstica do ncleo Linux que algumas das funes (drivers de dispositivos, suporte rede, sistema de arquivos, por exemplo) podem ser compiladas e executadas como mdulos (em ingls: LKM - loadable kernel modules), que so bibliotecas compiladas separadamente da parte principal do ncleo e podem ser carregadas e descarregadas aps o ncleo estar em execuo.

Portabilidade
Embora Linus Torvalds no tenha tido como objetivo inicial tornar o Linux um sistema portvel, ele evoluiu nessa direo. Linux hoje um dos ncleos de sistemas operativos mais portveis, correndo em sistemas desde o iPaq (um computador porttil) at o IBM S/390 (um denso e altamente custoso mainframe). Os esforos de Linus foram tambm dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicaes de uma variedade de cdigo fonte no seu sistema; consequentemente, o Linux originalmente tornou-se popular em parte devido ao esforo para que os cdigos-fonte GPL ou outros favoritos de todos corressem em Linux. O Linux hoje funciona em dezenas de plataformas, desde mainframes at um relgio de pulso, passando por vrias arquitecturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC etc., com grande penetrao tambm em sistemas embarcados, como handhelds, PVR, consola de videojogos e centros multimdia, entre outros.

Termos de Licenciamento
Inicialmente, Torvalds lanou o Linux sob uma licena de software que proibia qualquer uso comercial. Isso foi mudado de imediato para a GNU General Public License. Essa licena permite a distribuio e mesmo a venda de verses possivelmente modificadas do Linux mas requer que todas as cpias sejam lanadas dentro da mesma licena e acompanhadas do cdigo fonte. Apesar de alguns dos programadores que contribuem para o ncleo permitirem que o seu cdigo seja licenciado com GPL verso 2 ou posterior, grande parte do cdigo (includo as contribuies de Torvalds) menciona apenas a GPL verso 2. Isto faz com que o ncleo como um todo esteja sob a verso 2 exclusivamente, no sendo de prever a adopo da nova GPLv3.

Sistemas de arquivos suportados


O Linux possui suporte de leitura e escrita a vrios sistema de arquivos, de diversos sistemas operacionais, alm de alguns sistemas nativos. Por isso, quando o Linux instalado em dual boot com outros sistemas (Windows, por exemplo) ou mesmo funcionando como Live CD, ele poder ler e escrever nas parties formatadas em FAT e NTFS. Por isto, Live CDs Linux so muito utilizados na manuteno e recuperao de outros sistemas operacionais. Entre os sistemas de ficheiros suportados pelo Linux, podemos citar FAT, NTFS, JFS, XFS, HPFS, Minix e ISO 9660 (sistema de ficheiros usado em CD-ROMs). Alguns sistemas de ficheiros nativos so, dentre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4.131 Alguns sistemas de ficheiros com caractersticas especiais so SWAP, UnionFS, SquashFS, Tmpfs, Aufs e NFS, dentre outros.

Sistema Operacional
Richard Stallman, fundador do operacional livre. projeto GNU para um sistema

Logo que Linus Torvalds passou a disponibilizar o Linux, ou seja na sua verso 0.01, j havia suporte ao disco rgido, tela, teclado e portas seriais, o sistema de arquivos adotava o mesmo layout do Minix (embora no houvesse cdigo do Minix no Linux), havia extensos trechos em assembly, e ela j era capaz de rodar o bash e o gcc. A linha guia quando implementei o Linux foi: faz-lo funcionar rpido. Eu queria o ncleo simples, mas poderoso o suficiente para rodar a maioria dos aplicativos Unix.132 O prprio usurio deveria procurar os programas que dessem funcionalidade ao seu sistema, compil-los e configur-los. Talvez por isso, o Linux tenha carregado consigo a etiqueta de sistema operativo apenas para tcnicos. Foi neste ambiente que surgiu a MCC Interim Linux, do Manchester Computer Centre, a primeira distribuio Linux, desenvolvida por Owen Le Blanc da Universidade de Manchester, capaz de ser instalada independentemente em um computador. Foi uma primeira tentativa de facilitar a instalao do Linux.

131Reiser4 ainda est em desenvolvimento. 132No original, em ingls: the guiding line when implementing linux was: get it working fast. I wanted the kernel simple, yet powerful enough to run most unix software.

Desde o comeo, o ncleo Linux inclua um sistema bsico para chamadas do sistema e acesso aos dispositivos do computador. O ncleo de um sistema operativo define entre vrias operaes, o gerenciamento da memria, de processos, dos dispositivos fsicos no computador e uma parte essencial de qualquer sistema operacional utilizvel, contudo para um sistema operacional adquirir funcionalidade so necessrios tambm vrios outros aplicativos que determinam funes especficas que aquele sistema ser capaz de desenvolver, os aplicativos existentes em um sistema operacional com a nica exceo do ncleo so determinados pelo usurio do computador, como por exemplo: interpretadores de comandos, gerenciadores de janelas, que oferecem respectivamente uma interface para o usurio do computador, CLI ou GUI, e outros aplicativos como editores de texto, editores de imagem, tocadores de som, e, mas no necessariamente, compiladores. A maioria dos sistemas inclui ferramentas e utilitrios baseados no BSD e tipicamente usam XFree86 ou X.Org para oferecer a funcionalidade do sistemas de janelas X interface grfica. Assim como tambm oferecem ferramentas desenvolvidas pelo projeto GNU. No momento do desenvolvimento do Linux, vrios aplicativos j vinham sendo reunidos pelo Projeto GNU da Free Software Foundation (Fundao Software Livre), que embarcara em um subprojeto que ainda continua para obter um ncleo, o GNU Hurd. Porm devido a vrias complicaes o projeto GNU e demora em desenvolver o Hurd, Stallman acabou adotando o ncleo Linux como base para distribuir os programas do projeto GNU , no obstante diversas pessoas e instituies tiveram a mesma idia e assim vrias distribuies comearam a surgir baseadas no ncleo desenvolvido inicialmente por Linus.

Distribuies
Atualmente, um Sistema Operacional (em Portugal Sistema Operativo) Linux ou GNU/Linux completo (uma "Lista de distribuies de Linux ou GNU/Linux") uma coleo de software livre (e por vezes no-livres) criados por indivduos, grupos e organizaes de todo o mundo, incluindo o ncleo Linux. Companhias como a Red Hat, a SuSE, a Mandriva (unio da Mandrake com a Conectiva) e a Canonical (desenvolvedora do Ubuntu Linux), bem como projetos de comunidades como o Debian ou o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalao e uso. Patrick Volkerding tambm fornece uma distribuio Linux, o Slackware. As distribuies do Linux ou GNU/Linux comearam a receber uma popularidade limitada desde a segunda metade dos anos 90, como uma alternativa livre para os sistemas operacionais Microsoft Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no trabalho. O sistema tornou-se popular no mercado de Desktops e servidores, principalmente para a Web e servidores de bancos de dados.

No decorrer do tempo, vrias distribuies surgiram e desapareceram, cada qual com sua caracterstica. Algumas distribuies so maiores outras menores, dependendo do nmero de aplicaes e sua finalidade. Algumas distribuies de tamanhos menores cabem num disquete com 1,44 MB, outras precisam de vrios CDs, existindo at algumas verses em DVD. Todas elas tem o seu pblico e sua finalidade, as pequenas (que ocupam poucos disquetes) so usadas para recuperao de sistemas danificados ou em monitoramento de redes de computadores. De entre as maiores, distribudas em CDs, podem-se citar: Slackware, Debian, Suse, e Conectiva. O que faz a diferena como esto organizadas e prconfiguradas as aplicaes. A distribuio Conectiva Linux, por exemplo, tinha as suas aplicaes traduzidas em portugus, o que facilitou que usurios que falam a Lngua Portuguesa tenham aderido melhor a esta distribuio. Hoje esta distribuio foi incorporada Mandrake, o que resultou na Mandriva. Para o portugus, existe tambm a distribuio brasileira Kurumin, construda sobre Knoppix e Debian, e a Caixa Mgica, existente nas verses 32 bits, 64 bits, Live CD 32 bits e Live CD 64 bits, e com vrios programas open source: OpenOffice.org, Mozilla Firefox, entre outros. Existem distribuies com ferramentas para configurao que facilitam a administrao do sistema. As principais diferenas entre as distribuies esto nos seus sistemas de pacotes, nas estruturas dos diretrios e na sua biblioteca bsica. Por mais que a estrutura dos diretrios siga o mesmo padro, o FSSTND um padro muito relaxado, principalmente em arquivos onde as configuraes so diferentes entre as distribuies. Ento normalmente todos seguem o padro FHS (File Hierarchy System), que o padro mais novo. Vale lembrar, entretanto, que qualquer aplicativo ou driver desenvolvido para Linux pode ser compilado em qualquer distribuio que vai funcionar da mesma maneira. Quanto biblioteca, usada a Biblioteca libc, contendo funes bsicas para o sistema Operacional Linux. O problema est quando do lanamento de uma nova verso da Biblioteca libc, algumas das distribuies colocam logo a nova verso, enquanto outras aguardam um pouco. Por isso, alguns programas funcionam numa distribuio e noutras no. Existe um movimento LSB (Linux Standard Base) que proporciona uma maior padronizao. Auxilia principalmente vendedores de software que no liberam para distribuio do cdigo fonte, sem tirar caractersticas das distribuies. O sistemas de pacotes no padronizado. ArchLinux, Debian, Fedora, Mandriva, Mint, Opensuse, PCLinuxOS, Puppy, Sabayon, Slackware e Ubuntu so algumas das distribuies mais utilizadas actualmente, listadas aqui por ordem alfabtica. Um exemplo de distribuio que corre num CD o Kurumin Linux, criado por Carlos E. Morimoto, baseada no Knoppix. De entre as distribuies consideradas mais difceis de gerir (por preferirem assegurar a estabilidade tecnolgica em detrimento da interface de utilizador), destacam-se a Debian, Gentoo e Slackware.

Cdigo Aberto e Programas Livres


Um programa, assim como toda obra produzida atualmente, seja ela literria, artstica ou tecnolgica, possui um autor. Os Direitos sobre a idia ou originalidade da obra do autor, que incluem essencialmente distribuio, reproduo e uso feito no caso de um programa atravs de sua licena. Existem dois movimentos que regem o licenciamento de programas no mundo livre, os programas de cdigo aberto e os programas livres. Os dois representados respectivamente pela OSI e pela FSF oferecem licenas para produo de software, sendo seus maiores representantes a licena BSD e a GPL. O Linux oferece muitos aplicativos de open source, contudo nem todos podem ser considerados programas livres, dependendo exclusivamente sob qual licena estes programas so distribudos. Os programas distribudos sob tais licenas possuem as mais diversas funcionalidades, como desktops, escritrio, edio de imagem e inclusive de outros sistemas operacionais. Tambm existem organizaes inclusive no mundo livre como a organizao Linux Simples para o Usurio Final (SEUL) que tem como objetivo adotar a maior gama possvel de aplicativos de alta qualidade produzidos sobre a GPL. um projeto voluntrio que atualmente se foca no aprendizado de Linux, seu uso na cincia e em documentos de advocacia, bem como gerenciar e coordenar projetos de desenvolvimento de aplicativos.

Controvrsias quanto ao nome


Linux foi o nome dado ao ncleo de sistema operacional criado por Linus Torvalds. Por extenso, sistemas operacionais que usam o ncleo Linux so chamados genericamente de Linux. Entretanto, a Free Software Foundation afirma tais sistemas operacionais so, na verdade, sistemas GNU, e o nome mais adequado para tais sistemas GNU/Linux, uma vez que grande parte do cdigofonte dos sistemas operacionais baseados em Linux so ferramentas do projeto GNU.133 H muita controvrsia quanto ao nome. Eric Raymond afirma, no Jargon File, que a proposta da FSF s conseguiu a "aceitao de uma minoria" e resultado de uma "disputa territorial".134 Linus Torvalds afirma que consideraria "justo" que tal nome fosse atribudo a uma distribuio do projeto GNU, mas que chamar os sistemas operacionais Linux como um todo de GNU/Linux seria "ridculo".135 Linus disse no se importar sobre qual o nome usado, considera a proposta da GNU como "vlida" ("ok") mas prefere usar o termo "Linux".136
133Richard Stallman. Linux and the GNU Project (HTML) (em ingls). Pgina visitada em 7 de maro de 2008. 134Eric Raymond. Linux (HTML) (em ingls). Pgina visitada em 7 de maro de 2008. 135Revolution OS, documentrio de 2001 sobre o Linux. Produzido, dirigido e escrito por J.T.S. Moore 136Linus Torvalds (3 de junho de 1996). Lignux, what's the matter with you people? (HTML) (em

Sobre o smbolo
O smbolo do software foi escolhido pelo seu criador, que achou a foto de um pinguim na internet. 137 Em 1996, muitos integrantes da lista de discusso "Linux-Kernel" estavam discutindo sobre a criao de um logotipo ou de um mascote que representasse o Linux. Muitas das sugestes eram pardias ao logotipo de um sistema operacional concorrente e muito conhecido. Outros eram monstros ou animais agressivos. Linus Torvalds acabou entrando nesse debate ao afirmar em uma mensagem que gostava muito de pingins. Isso foi o suficiente para dar fim discusso.
Tux.

Depois disso, vrias tentativas foram feitas numa espcie de concurso para que a imagem de um pingim servisse aos propsitos do Linux, at que algum sugeriu a figura de um "pingim sustentando o mundo". Em resposta, Linus Torvalds declarou que achava interessante que esse pingim tivesse uma imagem simples: um pingim "gordinho" e com expresso de satisfeito, como se tivesse acabado de comer uma poro de peixes. Torvalds tambm no achava atraente a idia de algo agressivo, mas sim a idia de um pingim simptico, do tipo em que as crianas perguntam "mame, posso ter um desses tambm?". Ainda, Torvalds tambm frisou que trabalhando dessa forma, as pessoas poderiam criar vrias modificaes desse pingim. Isso realmente acontece. Quando questionado sobre o porqu de pingins, Linus Torvalds respondeu que no havia uma razo em especial, mas os achava engraados e at citou que foi mordido por um "pingim assassino" na Austrlia e ficou impressionado como a mordida de um animal aparentemente to inofensivo podia ser to dolorosa.

Ver tambm
Commons Wikilivros Lista de distribuies de Linux Comparao entre distribuies Linux LINUX Guia de Comandos Installfest Lei de Linus

ingls). Pgina visitada em 7 de maro de 2008. 137Revista Superinteressante, O Mistrio das Marcas, edio 261, janeiro de 2009, p. 34

Ligaes externas
Um guia completo sobre sistemas operacionais GNU/Linux Controvrsia sobre o nome O que Linux What is Linux (em ingls) GNU/Linux distro timeline (em ingls) Linux: The 0.01 Release (em ingls)

Linux (ncleo)
Linux

Mascote Linux

Desenvolvedor: Modelo do desenvolvimento: Verso estvel: Famlia do SO: Ncleo: Licena: Estado do desenvolvimento: Website Portal Tecnologias de informao

Linus Torvalds, Andrew Morton e centenas de colaboradores Software Livre 2.6.32.3 / 6 de Janeiro de 2010 Tipo unix Monoltico GNU General Public License V.2 (GPL2) Ativo Kernel.org
138

138Sobre a ltima verso estvel (em ingls).

O Linux o ncleo de um sistema operativo compatvel com UNIX. Segundo Bach,139 Tanenbaum140 e Silberschatz, Galvin e Gagne,141 sistema operacional (sistema operativo) e ncleo (quando monoltico) podem ser considerados sinnimos. Foi criado por Linus Torvalds, do Departamento de Cincia da Computao da Universidade de Helsinki (Finlndia), com a ajuda de vrios programadores voluntrios por meio da Usenet em 1991, e subseqentemente desenvolvido com a ajuda de programadores de todo o mundo como software livre (SL).

Histria
O Linux foi originalmente escrito por Linus Torvalds, do Departamento de Cincia da Computao da Universidade de Helsinki, Finlndia, e posteriormente desenvolvido com a ajuda de vrios programadores voluntrios por meio da Usenet. Torvalds comeou o desenvolvimento do ncleo como um projeto particular, inspirado pelo seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andrew S. Tanenbaum. Seus passos podem ser acompanhados pela lista de discusso comp.os.minix (cujas mensagens podem ser vistas em http://groups.google.com/group/comp.os.minix/topics). Em 3 de julho de 1991 ele tentou obter a especificao POSIX.142 Em 25 de agosto de 1991 anunciou que estava trabalhando num sistema operacional livre para plataformas Intel 386 e 486.143 Tambm informou que seu sistema no utilizava cdigo do Minix, e que no seria portvel. Finalmente, em 5 de outubro de 1991, Torvalds disponibilizou a verso 0.02 do ncleo Linux no servidor nic.funet.fi (endereo IP 128.214.6.100). Na mensagem que divulgou essa disponibilizao aparece um perodo bastante conhecido da comunidade (veja o texto original, em ingls144):

139BACH, Maurice J. The design of the Unix operating system. New Jersey: Prentice Hall. 1990. 140TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999. 141SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating system concepts. 7.ed. Hoboken: Wiley. 2005. 142TORVALDS, Linus. Gcc-1.40 and a posix-question. 03 de julho de 1991. Disponvel em http://groups.google.com/group/comp.os.minix/msg/a4ea0f118ba82dd0. Acessado em 18 de janeiro de 2009. 143TORVALDS, Linus. What would you like to see most in minix?. 25 de agosto de 1991. Disponvel em http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b. Acessado em 18 de janeiro de 2009. 144TORVALDS, Linus. Free minix-like kernel sources for 386-AT. 05 de outubro de 1991. Disponvel em http://groups.google.com/group/comp.os.minix/msg/2194d253268b0a1b. Acessado em 18 de janeiro de 2009.

1. Voc suspira pelos bons tempos do Minix-1.1, quando os homens eram homens e escreviam seus prprios controladores de dispositivos? Voc est sem um bom projecto em mos e deseja trabalhar num SO que possa modificar de acordo com as suas necessidades? Acha frustrante quando tudo funciona no Minix? Sem noites em claro para conseguir que um programa funcione? Ento esta mensagem pode ser exactamente para voc:-) E continua: 1. Como eu mencionei h um ms(?) atrs, estou trabalhando numa verso livre de um sistema similar ao Minix para computadores AT-386. Ele finalmente atingiu um estgio em que poder ser utilizado (embora possa no o ser, dependendo do que voc espera), e eu estou disposto a disponibilizar o cdigo-fonte para ampla distribuio. Est apenas na verso 0.02 (), contudo eu tive sucesso ao executar o bash, gcc, gnumake, gnu-sed, compress, etc. nele. Inicialmente, Torvalds disponibilizou o Linux sob uma licena que proibia qualquer uso comercial.145 Posteriormente foi adotada a Licena Pblica Geral GNU.146 Apesar de alguns dos programadores que contribuem para o ncleo permitirem que o seu cdigo seja licenciado com GPL verso 2 ou posterior, grande parte do cdigo, includas as contribuies de Torvalds, menciona apenas a GPL verso 2. Isto faz com que o ncleo como um todo esteja sob a verso 2 exclusivamente, no havendo previses sobre a adopo da nova GPL verso 3.

Verses
Este diagrama, criado com o Free Code Graphing Project, uma representao artstica do ncleo Linux, na sua verso 2.4.0

145TORVALDS, Linus. Notes for Linux release 0.01. Disponvel em http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.01. Acessado em 18 de janeiro de 2009. 146TORVALDS, Linus. Release notes for Linux v0.12. Disponvel em http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.12. Acessado em 18 de janeiro de 2009.

Torvalds e sua equipe tm continuado a lanar novas verses, consolidando contribuies de outros programadores e introduzindo alteraes suas. Antes do lanamento da verso 2.6, o nmero de verso menor (o segundo componente) par indicavam uma srie estvel: 1.0.x, 1.2.x, 2.0.x, 2.2.x e 2.4.x; os lanamentos com um nmero de verso menor mpar correspondiam a verses de desenvolvimento. O terceiro componente do nmero de verso correspondia a correes (releases) da verso. A partir da verso 2.6, Torvalds alterou esse padro, criando um quarto dgito. Assim, a rvore estvel e a de desenvolvimento confundem-se. Atualmente, considerase uma verso tanto mais estvel quanto maior o quarto dgito. Enquanto que Torvalds continua a lanar as verses de desenvolvimento mais recentes, a manuteno das verses "estveis" mais antigas delegada a outros, incluindo David Weinehal (2.0), Alan Cox e mais tarde Marc-Christian Petersen (2.2), Marcelo Tosatti e depois Willy Tarreau (2.4) e o prprio Torvalds, Andrew Morton e Adrian Bunk (2.6). Para alm dos ncleos "oficiais", "rvores" alternativas podem ser obtidas de outras fontes. Distribuidores de sistemas operativos completos mantm as suas prprias verses do Linux, onde, por exemplo, incluem conrtoladores de dispositivos (drivers) que no se encontram includos na verso oficial.

Verses iniciais
0.01 - Setembro de 1991 - primeira verso (10.239 linhas de cdigo). 0.02 - Outubro de 1991 - primeira verso disponibilizada publicamente. 0.12 - Janeiro de 1992 - primeira verso sob GPL (19.258 linhas de cdigo).

Verses estveis
1.0 - Maro de 1994 - Suportava apenas mquinas monoprocessadoras i386 (176.250 linhas de cdigo). 1.2 - Maro de 1995 - Adicionado suporte para Alpha, SPARC e MIPS(310.950 linhas de cdigo).

2.0 - Junho de 1996 - Adicionado suporte para mais processadores e foi includo suporte para SMP (777.956 linhas de cdigo). 2.2 - Janeiro de 1999 (1.800.847 linhas de cdigo). 2.4 - Janeiro de 2001 (3.377.902 linhas de cdigo). 2.6 - Dezembro de 2003 (5.929.913 linhas de cdigo).

Caractersticas tcnicas
Um diagrama simplificado do componentes principais e as ncleo Linux, mostrando seus camadas que o cercam

As caractersticas particularmente as processos e sistemas de com mais detalhes por sobre gerenciamento de Gorman.148

analisadas nesta seo, partes referentes a arquivos, so descritas Bovet e Cesati;147 o texto memria baseia-se em

Arquitetura
O Linux um ncleo monoltico. Isto significa que as funes do ncleo (escalonamento de processos, gerenciamento de memria, operaes de entrada e sada, acesso ao sistema de arquivos) so executadas no espao do ncleo, compiladas estaticamente ou usando mdulos carregveis. Herdou da linhagem UNIX a capacidade de multitarefa, multiprocessamento, uso de linhas de execuo no ncleo (em ingls: kernel threading), preempo do ncleo, suporte a aplicaes multi-encadeadas (multithreaded application support, por meio de processos levesLWP), sistema de arquivos baseado em VFS (Virtual File System).149

147BOVET, Daniel P.; CESATI, Marco. Understanding the Linux kernel. 3.ed. Sebastopol: O'Reilly. 2005 148GORMAN, Mel. Understanding the Linux virtual memory manager. New Jersey: Prentice Hall. 2004. 149

Todo acesso ao ncleo por uma aplicao deve ser efetuado por meio de chamadas de sistema. Uma chamada de sistema uma funo que permite a criao de processos, solicitao de memria, operao com arquivos, etc. J a comunicao do ncleo com o hardware ocorre, basicamente, de dois modos: (i) o ncleo reconhece e gerencia o hardware usando drivers de dispositivos; (ii) o hardware comunica-se com o ncleo por meio de interrupes. Os controladores (drivers) de dispositivos e extenses do ncleo correm tipicamente no espao do ncleo, juntamente com o restante do ncleo, com acesso total ao hardware. Diferentemente dos ncleos monolticos tradicionais, os controladores de dispositivos podem ser configurados como mdulos (em ingls: loadable kernel modules), que so bibliotecas compiladas fora do ncleo propriamente dito, o que permite que sejam carregados e descarregados enquanto o sistema corre. Tambm podem ser interrompidos (preempted (em ingls)) sob certas condies. Esta caracterstica foi adicionada para lidar com interrupes de hardware corretamente e para melhorar o suporte ao multiprocessamento. O facto do Linux no ser microncleo foi tema duma famosa discusso entre Linus Torvalds e Andy Tanenbaum no grupo de discusso comp.os.minix na Usenet em 1992. Esse debate foi descrito por DiBona, Ockman e Stone.150

Processos
Um processo uma instncia de um programa em execuo.151 Todo processo no Linux tem um pai (processo criador) e um nmero identificador (PID). O pai de todos os processos num ambiente Linux o init, cujo PID 1. Este processo criado pelo processo 0, que um encadeamento (thread) do prprio ncleo. O processo init ir permanecer em execuo at o desligamento do sistema, e sua funo monitorar e criar os processos que implementam as camadas exteriores do sistema operacional. Os processos so criados pela chamadas de sistema fork() (processos tradicionais ou heavy weight) e clone() (processos leves ou light weight). Para otimizar a criao de processos tradicionais, o Linux usa o recurso de copy-onwrite: quando um processo-filho criado, ele compartilha as mesmas pginas de memria do pai. Quando um dos dois tenta escrever na memria, gerada uma interrupo para o ncleo, que ento copia o contedo das pginas de memria para novas molduras de pginas, e estas so atribudas ao processo que efetuou a escrita.

150DiBONA, Chris; OCKMAN, Sam; STONE, Mark. Open sources: voices from the open source revolution. Sebastopol: O'Reilly. 1999. 151

Para manter um ambiente multitarefa e possibilitar o multiprocessamento, o Linux mantm algumas estruturas importantes, das quais podemos citar duas: (i) o descritor do processo (task_struct), que contm todas as informaes relativas ao processo; (ii) uma fila (runqueue) de processos por processador. Quando o sistema possui mais de um processador, o agendador do Linux faz o balanceamento de carga entre as filas.

Agendamento
Para poder fazer um adequado compartilhamento de tempo do processador, o Linux usa duas classificaes para avaliar qual a prioridade que um processo deve ter: (i) determina a responsividade do processo (tempo real, interativo, em segundo plano); (ii) verifica se o processo usa muito tempo de processador (CPUbound) ou faz muitas operaes de entrada e sada (I/O-bound). Essas duas classes so razoavelmente independentes. Um processo pode executar em segundo plano (um daemon, por exemplo) e ser consumidor de recursos de entrada e sada (um servidor de banco de dados) ou usar muito tempo de processador (um compilador). Um processo que executa em tempo real foi assim definido pelo seu programador, mas o agendador do Linux necessita fazer uma anlise heurstica para saber se um processo interativo ou est executando em segundo plano. O Linux utiliza um sistema de prioridades, onde um processo que possui prioridade maior tem precedncia sobre um de prioridade menor para obter o processador. A identificao da prioridade de um processo pode ser esttica ou dinmica e varia de 1, a maior prioridade, a 139, a menor. Os nmeros 1 a 99 so atribudos a processos de tempo real e 100 a 139 so atribudos a processos tradicionais (interativos e segundo plano). Um processo em tempo real classificado em FIFO (first-in, first-out) ou RR (Round-Robin) e somente ser retirado do processador nos seguintes casos: (i) fim de execuo; (ii) para ser substitudo por um processo de maior prioridade; (iii) executar uma operao de bloqueio; (iv) espontaneamente; (v) RR e esgotou seu quantum de processamento. Um processo tradicional tem inicialmente atribuda uma prioridade esttica (em geral 120) que determina o seu quantum de processamento, mas pode ter uma prioridade dinmica, que o valor analisado pelo agendador quando percorrer a lista de processos para determinar qual ir usar o processador. A prioridade dinmica pode alterar o valor da prioridade esttica em 5 pontos, para mais (penalidade) ou para menos (bnus), dependendo do passado do processo. O passado ir beneficiar o processo se o mesmo ficou muito tempo fora do processador (sleep time). Caso este tempo seja pequeno, o processo ser penalizado. Obs.: essa estrutura acima pode ser modificada a partir da release 2.6.23 ou posterior, com a introduo do CFS (completely fair scheduler).

Gerenciamento de memria
O Linux utiliza memria virtual, que possui, pelo menos, 4 funes bsicas: (i) assegurar que cada aplicao (processo) tenha seu prprio espao de endereamento, comeando em zero-problema de relocao;152153 (ii) proteo de memria, para impedir que um processo utilize um endereo de memria que no lhe pertena;154 (iii) compartilhamento de memriaprocessos diferentes podem compartilhar cdigo ou dados;155 (iv) possibilitar que uma aplicao utilize mais memria do que a fisicamente existente (essa a funo mais bvia). Seu cdigo divide-se em duas partes. Uma dependente da arquitetura, onde so definidos o endereamento virtual e fsico, o tamanho de pgina e o tratamento das tabelas de pginas. Na parte independente ficam o controle de alocao e liberao de memria e o esquema de substituio pginas. O Linux utiliza tamanhos de pginas de acordo com a arquitetura. Os processadores x86 utilizam pginas de 4 KiB (padro), 2 MiB (caso seja utilizado o recurso de PAE Page Address Extension da Intel) ou de 4 MiB. Nas arquiteturas RISC o tamanho padro de 8 KiB, mas no o nico. O endereamento virtual dividido em espao do usurio e espao do ncleo. O primeiro privativo de cada processo, com incio no endereo lgico zero e terminando no endereo determinado pela macro PAGE_OFFSET (v. figura 1). O espao do ncleo nico e comea depois do espao do usurio. Na arquitetura x86 PAGE_OFFSET determina um valor de 3 GiB para o espao do usurio e 1 GiB para o espao do ncleo. (Figura 1: est faltando) O cdigo do Linux carregado no incio do espao do ncleo, sendo seguido pela rea fisicamente mapevel (mem_map, estrutura que indexa as pginas fsicas, e as pginas propriamente ditas). Na arquitetura x86, os ltimos 128 MiB do espao do ncleo so reservados para alocao de memria no contgua e memria alta, limitando a memria fsica enderevel pelo Linux, na compilao padro, a 896 MiB. Um endereo virtual no Linux (v. figura 2), dividido em 5 campos: diretrio de pginas (PGD), diretrio superior de pginas (PUD), diretrio intermedirio de pginas (PMD), tabela de pginas (PTE) e deslocamento (offset). A arquitetura x86 possui um espao de endereamento de 32 bits; quando so utilizadas pginas de 4 KiB (o padro) o PUD e o PMD no so utilizados; o PGD e o PTE usam 10 bits cada, e o deslocamento usa 12 bits. (Figura 2: est faltando)

152 153STALLINGS, William. Operating systems: internals and design principles. 5.ed. Upper Saddle River: Pearson Prentice Hall. 2005. 154 155

O esquema de substituio de pginas no Linux usa o algoritmo LRU (por aproximao) mantendo duas listas de envelhecimento (aging). A primeira (active_list) contm as pginas atualmente em uso (as pginas mais recentemente referenciadas estaro mais prximas do incio da lista) e a segunda (inactive_list) contm as candidatas a paginao (page out). A paginao para disco pode ocorrer sob demanda, quando algum processo solicitar pgina e no houver alguma disponvel. Neste caso, a pgina no final da lista inactive_list liberada. Entretanto, existe um processo chamado kswapd, inicializado pelo ncleo, que verifica, periodicamente, o nmero de pginas livres. Caso este nmero seja menor que pages_low, kswapd acordado para liberar pginas. Se o valor chegar a pages_min, kswapd entra num regime sncrono para agilizar a liberao. Quando o valor de pginas livres atingir pages_high, kswapd vai dormir.

Sistema de arquivos
O gerenciamento de arquivos no Linux baseia-se num esquema de vrios nveis, onde a camada principal o VFS (Virtual File System), que esconde da aplicao as caractersticas dos diversos sistemas de arquivo reconhecidos pelo Linux. Quando uma aplicao solicita uma operao sobre algum arquivo, essa solicitao encaminhada para o VFS, que reenvia a solicitao para um dos SA registrados. O VFS utiliza uma estrutura chamada superbloco para manter as informaes referentes aos diversos sistemas de arquivos montados (tipo, ponto de montagem, dispositivo de bloco utilizado, arquivos abertos). Tambm utiliza nsi, semelhantes aos ns-i do EXT2, com as informaes sobre os arquivos (permisses, blocos utilizados, dono, etc.). Os sistemas de arquivos registrados no VFS podem ser classificados em 3 grupos: (i) dispositivos de blocos (EXT2, EXT3, Reiserfs, XFS, VFAT); (ii) associados a rede (NFS, SMB); (iii) dispositivos especiais (procfs, tempfs). Todos esses sistemas podem ser carregados como mdulos. O Ext2 est deixando de ser o padro, particularmente por sua deficincia quando ocorre uma pane. Neste caso, o sistema operacional deve executar uma varredura completa para verificar o estado do sistema (fsck). Outros sistemas foram criados para sanar essa deficincia, utilizando um recurso chamado journaling, que a utilizao de um registro (log) de alteraes (journal). Os sistemas de arquivos desse tipo mais importantes so: Ext3, Reiserfs, XFS e JFS.

Pnico do ncleo
Um pnico do ncleo (em ingls: kernel panic) um erro de sistema norecupervel detectado pelo ncleo, ao contrrio dos erros de impresso e utilizao por cdigo do espao de utilizador. possvel que o cdigo do ncleo indique essa condio ao invocar a funo panic localizada no ficheiro-cabealho sys/system.h. No entanto, grande parte dos pnicos so o resultado de excepes do processador no-lidadas no cdigo do ncleo, tal como referncias a moradas de memria invlidas. So normalmente no indicativo de erros algures na cadeia de chamadas que levam ao pnico.

Portabilidade
Embora Linus Torvalds no tenha tido como objetivo inicial tornar o Linux um sistema portvel, ele evoluiu nessa direo. O Linux hoje, o ncleo de sistema operacional com maior portabilidade, correndo em sistemas desde o iPaq, um computador porttil, at o IBM S/390, um denso e altamente custoso mainframe. De qualquer modo, importante notar que os esforos de Linus foram tambm dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicaes de uma variedade de cdigos fonte no seu sistema; portanto o Linux originalmente tornou-se popular em parte devido ao esforo para que os cdigos fonte GPL ou outros favoritos de todos corressem em Linux. O Linux hoje funciona em dezenas de plataformas, desde mainframes at um relgio de pulso, passando por vrias arquitecturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC etc., com grande penetrao tambm em sistemas embarcados, como handhelds, PVR, vdeo-jogos e centros multimdia, entre outros.

Miscelnea
Mascote
Tux, mascote do projeto

O mascote do Linux (ncleo e pinguim chamado Tux, criado pelo qual a mascote um disse, "O Linus gosta de Tux foi sugerido para ficou assim.

tudo que relacionado) um por Larry Ewing. O motivo pinguim , como Torvalds pinguins. isso." O nome representar Torvalds' Unix, e

Termos de

licenciamento

Inicialmente, Torvalds lanou o Linux sob uma licena que proibia qualquer explorao comercial, mas mais tarde adoptou a GPL (verso 2 exclusivamente). Esta licena permite a distribuio e at a venda de verses do Linux mas exige que todas essas cpias sejam lanadas sob a mesma licena e que sejam acompanhadas com o cdigo-fonte. Torvalds descreveu o licenciamento do Linux sob a GPL como "a melhor coisa que fez desde sempre." Uma dvida que levantada na aplicao da GPL no Linux a considerao sob a lei de direitos de autor de mdulos carregveis como sendo ou no "trabalho derivado" e, consequentemente, serem submetidos aos termos da GPL. Torvalds declarou que mdulos que usam apenas um conjunto pblico e limitado do interface do ncleo podem, por vezes, ser trabalho no-derivado, assim permitindo alguns drivers distribudos apenas em formato binrio e outros mdulos que no respeitem os termos da GPL. Contudo, nem todos os contribuintes do ncleo concordam com esta interpretao e at Torvalds concorda que muitos mdulos do ncleo so claramente obras derivadas.

Ver tambm
TORVALDS, Linus; DIAMOND, David (2001). Just For Fun: The story of an accidental revolutionary. HarperBusiness. ISBN 0-06-662072-4 (hardcover); HarperAudio ISBN 0-694-52539-1 (audio tape, abridged ed., read by David Diamond) - on the beginnings of the Linux kernel; No Brasil: S por Prazer. Campus. ISBN 85-352-0801-1. Lista de distribuies de Linux Comparao entre distribuies Linux LINUX Guia de Comandos Installfest Lei de Linus

Ligaes externas
www.kernel.org (em ingls) The Linux Kernel Archives, the official kernel repository, acessado pela ltima vez h 56 semanas e 6 dias KernelTrap (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Cobertura sobre o kernel em LWN.net (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Linux Kernel Source Code Viewer (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Linux Kernel Janitor (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Linux Device Drivers, 3rd Edition (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Understanding the Linux Kernel, 2nd Edition (em ingls), acessado pela ltima vez h 56 semanas e 6 dias LinkSys and binary modules] (em ingls) LWN.net Weekly Edition, October 16, 2003, acessado pela ltima vez h 56 semanas e 6 dias The Wonderful World of Linux 2.6 (em ingls) Joseph Pranevich; December 2003, acessado pela ltima vez h 56 semanas e 6 dias O Maravilhoso Mundo do Linux 2.6 (em portugus) traduo do artigo acima por Cesar A. K. Grossmann, acessado pela ltima vez h 56 semanas e 6 dias Understanding the Linux 2.6.8.1 CPU Scheduler (em ingls) Josh Aas, 17th February 2005, acessado pela ltima vez h 56 semanas e 6 dias Linux Online - Linux Kernel Information (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Open Directory - Linux: Kernel (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Google Directory - Linux > Kernel (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Linux Links - The Linux Portal: Kernel (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Loads of Linux Links (em ingls), acessado pela ltima vez h 56 semanas e 6 dias VGER.KERNEL.ORG (em ingls) Linux Kernel Developers' email list, acessado pela ltima vez h 56 semanas e 6 dias Linux Kernel Newbies.org (em ingls), acessado pela ltima vez h 56 semanas e 6 dias linux kernel links (em ingls) linux kernel source and news, acessado pela ltima vez h 56 semanas e 6 dias

Foca GNU/Linux: Pgina oficial: (em portugus) Um guia completo sobre sistemas operacionais GNU/Linux, acessado pela ltima vez h 56 semanas e 6 dias What is Linux (em ingls), acessado pela ltima vez h 56 semanas e 6 dias O que Linux (em ingls), acessado pela ltima vez h 56 semanas e 6 dias GNU/Linux distro timeline (em ingls), acessado pela ltima vez h 56 semanas e 6 dias GNU/Linux naming controversy (em ingls), acessado pela ltima vez h 56 semanas e 6 dias Linux: The 0.01 Release (em ingls), acessado pela ltima vez h 56 semanas e 6 dias

Linus Torvalds
Linus Torvalds
Linus Torvalds aos 35 anos de idade

Linus Benedict 28 de Dezembro de ncleo do sistema muitas vezes chamado "Linux". Linus Torvalds pertence Finlandssvensk, um representando 6% dos que falam sueco. Ele de Helsinki. Vive Clara, na Califrnia, com trs filhas. Atualmente Development Labs

Torvalds (Helsnquia, 1969) o criador do operacional GNU/Linux, simplesmente de comunidade dos extrato da populao habitantes da Finlndia, estudou na Universidade atualmente em Santa a sua mulher Tove e suas trabalha na Open Source (OSDL).

Biografia
Comeou a lidar com a informtica quando tinha 11 anos. O av, Leo Waldemar Tornqvist, um matemtico e estatstico da Universidade comprou um dos primeiros computadores Commodore em 1980 e pediu-lhe ajuda para us-lo. Tornou-se to interessado que passou um vero inteiro dentro de casa ou, melhor dizendo, no quarto em frente ao computador desenvolvendo o que restava do ncleo.

Em 1983 Richard Stallman criou a Free Software Foundation (GNU project). Em 1986 Marice J. Bach publicou Design of the Unix Operating System. Em 1988 Linus foi admitido na Universidade de Helsinki. No mesmo ano Andy Tanenbaum traz a pblico o Sistema Operacional Minix, um Unix para fins didticos e que rodava em IBM/PC. Em 1990 Torvalds comea a aprender C em seus estudos. No fim dos anos 80 ele tomou contato com os computadores IBM/PC compatveis e em 1991 comprou um 80386. Com 21 anos, 5 j de experincia programando (em C), ele tinha contato com o Sistema Unix da Universidade (SunOS, atualmente Solaris) e desejava rodar a verso de Tannenbaum (Minix) no seu recm adquirido 80386. Entretanto, descontente com os recursos do Minix, especialmente em relao ao emulador de terminal do Minix que ele utilizaria para acessar remotamente o Unix da Universidade, comea a desenvolver o seu prprio emulador de terminal que no rodaria sobre o Minix, mas diretamente no hardware do PC 386. Este projeto pessoal foi sendo modificado gradualmente e adquirindo caractersticas de um Sistema Operacional independente do Minix. Este o incio do desenvolvimento do ncleo Linux, relatado pelo prprio Linus Torvalds em seu livro Just for fun. O ncleo Linux foi inicialmente desenvolvido por Linus Torvalds numa tentativa de criar um sistema operacional similar ao Unix que rodava em processadores Intel 80386. O projeto foi lanado em 1991 em uma famosa mensagem para a Usenet em que ele divulgou que estava disposto a disponibilizar o cdigo-fonte e contar com a colaborao de outros programadores. Desde os primeiros dias, ele recebeu ajuda de hackers do Minix, e hoje recebe contribuies de milhares de programadores dos mais diversos locais do mundo. Em 1997 Linus Torvalds recebeu os prmios "1997 Nokia Foundation Award'y" e "Lifetime Achievement Award at Uniforum Pictures". No mesmo ano finaliza os estudos superiores (1988 - 1997) passou 10 anos como estudante e investigador na Universidade de Helsinki, coordenando o desenvolvimento do ncleo do S.O. desde 1992. Torvalds trabalhou na Transmeta (fabricante de processadores para portteis) entre 1997 e 2003, e neste ano juntou-se Open Source Development Labs (OSDL), uma fundao criada para ajudar no desenvolvimento do ncleo Linux, como OSDL fellow. Fazem parte dessa fundao vrias grandes empresas do ramo da informtica, como IBM, Sun, Nokia e outras. Torvalds possui a marca registrada "Linux" e supervisiona156 o uso (ou abuso) da marca atravs da organizao sem fins lucrativos Linux International.

Curiosidades

156Ttulo ainda no informado (favor adicionar).

Uma vez, o seu av comprou um veleiro montvel com cerca de 1000 peas para ser montado com o neto, Linus e pudessem velejar juntos. Mas no dia em que o veleiro chegou j era tarde, o av preferiu esperar at amanh. Mas Linus no conseguiu aguentar tanto tempo e montou o veleiro sozinho. O seu av ficou espantado pois, um veleiro destes muito difcil de ser montado. O nome do mascote Tux (o pingim do Linux), foi escolhido por votao, pelo prprio Linus. Segundo ele "gostaria de um pingim cheio, satisfeito por ter comido muitos peixes". Diz a lenda que o motivo por trs da escolha do Tux como mascote foi uma mordidela que Linus levou de um pinguim num jardim zoolgico. Ainda a cerca da mordidela, eis a lenda: Linus estava em um zoolgico, parece que alimentando os pingins, e eis que toma uma mordida em um dedo, que havia dodo bastante. Ao perceber a dor que sentiu de um animal de pequeno porte como um pingim, Linus pensa: "Se um animal to pequeno consegue me machucar assim, porque meu pequeno S.O. no pode 'machucar' um maior?"

Ver tambm
Commons Wikiquote Hacker Linux Free Software Foundation Just for fun, livro de Torvalds.

Ligaes externas
Entrevista Blog pessoal (em ingls)

Tux
Tux, o mascote GNU/Linux. Trata-se de um pingim gordo e satisfeito.

O Tux a mascote operativo GNU/Linux. O Ewing em 1996, um tem um ar satisfeito e mascote do Linux ser Linus Torvalds, o criador , por vezes, alegado Torvalds UniX, um nome Hughes, em vez da pinguins aparentam O Tux foi criado para logotipos para Linux. O criado por Larry Ewing pacote de software livre lanado por ele sob as

oficial do sistema Tux, criado por Larry pinguim gorducho que saciado. A ideia da um pinguim veio de do ncleo Linux. que o nome deriva de sugerido por James explicao que os vestir um smoking. um concurso de logotipo vencedor foi usando o GIMP (um de edio grfica) e foi seguintes condies:

A autorizao para o uso e/ou modificao desta imagem concedida desde que me reconhea lewis@isc.tamu.edu e o GIMP, caso algum pergunte [13] Segundo Jeff Ayers, Linus Torvalds tinha uma "fixao por aves marinhas gordas e desprovidas da capacidade de vo!" e o Torvalds reivindica que contraiu uma "penguinite" aps ter sido gentilmente mordiscado por um pinguim: "A penguinitie faz com que passemos as noites acordados s a pensar em pinguins e a sentir um grande amor por eles." A suposta doena de Torvalds , pois claro, uma piada, mas ele foi mesmo mordido por um pequeno pinguim numa visita a Canberra. O Tux tornou-se num icone para a comunidade Linux e Open Source, com um grupo de utilizadores de linux britnico adoptando um pinguim no Jardim Zoolgico de Bristol. Ele muito mais famoso que o seu grande amigo, GNU, um pacfico e tmido gnu que representa o Projecto GNU. Ele frequentemente vestido ou retratado de maneiras diferentes, dependendo do contexto; por exemplo, quando representando o algoritmo de segurana PaX, ele usa um capacete e enverga um machado e um escudo, e os seus olhos so vermelhos. O Tux a estrela de um jogo para Linux chamado Tux Racer, em que o jogador guia o Tux abaixo duma variedade de montes gelados na sua barriga, tentando apanhar arenques e a bater o limite de tempo. Tux tambm uma personagem do webcomics, User Friendly. Em algumas distribuies de Linux, caso o suporte a framebuffer esteja ativado, o Tux sada o utilizador durante o processo de boot. Em sistemas com mltiplos processadores so exibidos vrios Tuxes, sendo um para cada processador. Tux aparece tambm nos textos de der Luiz sendo um super heri nos textos Tux e a equipe fedora TUX tambm o nome do servidor web baseado no ncleo de Linux, que capaz de servir pginas de web estticas muito mais rapidamente que servidores tradicionais, tais como o servidor Apache HTTP, software esse mantido pela Red Hat.

Tributos ao Tux
O pinguim Ted uma personagem no popular webcomic Ctrl Alt Del. Ted, sendo o animal de estimao do nico guru de Linux na tira, claramente um tributo ao Tux.

Alguns programas do Tux


Imagem do game Super Tux.

Super Tux Milestone 1 Tux Walk 1.0 2004 Tux Racer 2002 Super Tux Milestone 2 Tux Paint TuxGuitar

(0.1.2)2003

(1.234) 2005

Ver tambm
Glenda - Mascote do Sistema Operacional Plan 9

Ligaes externas
Linux 2.0 Penguins (Larry Ewing) A complete history of Tux Wired News story on Tux The Linux Logo Competition site Desenhando o Tux no InkScape (em portugus)

Lei de Linus
Com um grande nmero de tendem a ser detectados e fotografia mostra entusiastas de sobre Linux. colaboradores, erros em sistemas corrigidos mais facilmente. A software livre em um encontro

A Lei de Linus (Linus's formulada pelo hacker Eric dela o seguinte: "Dados olhos suficientes, (Given enough eyeballs, all bugs are shallow)

Law) uma lei epigramtica S. Raymond. O enunciado todos os erros so triviais"

A frase possui relao com o modo de funcionamento da base do cdigo aberto (open source) e da internet, em que com um grande nmero de colaboradores ("olhos"), qualquer problema em um sistema pode ser detectado e corrigido. Na proporo em que os colaboradores aumentam, a facilidade com que as correes so feitas tambm aumenta, ou seja, o nmero de colaboradores diretamente proporcional facilidade de deteco e correo do erro.

Surgimento e uso
Eric S. Raymond

O adgio foi publicado por famoso hacker e cone no e do software livre em seu descrito no captulo 10 ("O Aberto"). O nome da lei Linus Torvalds, criador do um software livre. De certa forma, podemos semelhana com o ditado engorda o boi".

Eric S. Raymond um movimento do cdigo aberto ensaio A Catedral e o Bazar, Contexto Social do Cdigo uma aluso ao finlands sistema operacional Linux, dizer que tal lei possui popular "O olho do dono

Os conceitos expressados pela Lei de Linus so to universais que a lei tem sido constantemente usada fora do contexto puramente informtico. Um exemplo a Wikipdia, que segue um modelo baseado na lei de Linus, j que, podendo ser editada por qualquer pessoa, muitos erros podem ser gerados, mas se houver um grande nmero de colaboradores para cuidar dos erros, eles podem ser facilmente contornados. Isso bem conhecido pelos administradores (ou sysops) de cada Wikipdia, que cuidam da manuteno do projeto. Larry Sanger, co-fundador da Wikipdia, afirmou certa vez, sobre o fato de que qualquer pessoa pode criar e editar artigos na Wikipdia, que "dados olhos suficientes, todos os erros so triviais", em uma aluso direta lei de Linus. Tom Arriola, o desenvolvedor do Crime Scene (Cena do Crime), um site que d aos seus milhares de membros a tarefa de resolver coletivamente mistrios de assassinatos fictcios, chamou de "efeito ocular" uma verso que postulou da Lei de Linus: "Quanto mais olhos vem algo, mais provvel que algum veja alguma coisa que ningum viu antes."157

A tica hacker
Linus Torvalds

157Terdiman, Daniel (2005-02-14). Brute Force for Brain Teasers. URL acessada em 16 de Abril de 2006.

A noo do prprio Linus conjunto com as definies registrada no prlogo do De acordo com essa pressiona os humanos pode categorias. O avano bemoutra determina o processo categorias so, em ordem: a o entretenimento. A sobrevivncia a base da portanto um fator de sistema socio-econmico bem uma preocupao cotidiana.

sobre a lei foi usada em filosficas do hacker ativo, livro A tica Hacker.158 definio, a atividade que ser dividida em trs sucedido de uma fase para de evoluo. Estas trs sobrevivncia, a vida social e prpria existncia. motivao, mas em um desenvolvido, no passa de

A vida social um fator de motivao muito forte. Em muitos casos, maior considerao dada para os laos sociais do que para a "auto-pessoa". So tarefas semelhantes aos conceitos de "morrer por sua famlia/por religio/pelo pas". O entretenimento a ltima das trs categorias. Esse "entretenimento" no est relacionado com aes como jogar jogos eletrnicos ou assistir a televiso, mas fazer algo interessante e estimulante, um estmulo positivo para a base de nossas aes. Linus Torvalds assim descreveu esta ltima fase: " a ginstica mental necessria na tentativa de explicar o universo". Pode-se observar a aderncia dessas trs categorias com as cinco necessidades da conhecida Hierarquia de necessidades de Maslow: fisiologia, segurana, amor/relacionamento, estima e realizao pessoal, amplamente conhecidas no terreno da Administrao. Concluindo, o hacker portanto precisar fazer uso do computador para que sobreviva. O computador passa a ser o principal meio de obter relaes sociais, mas acima de tudo, entretenimento. O desenvolvimento de um sistema opensource realizada mais por causa da paixo dos desenvolvedores no seu prprio projeto, e no para meios puramente comerciais.

158Himanen, Pekka; Linus Torvalds, Manuel Castells (2001-01-30). The Hacker Ethic, Random House. ISBN 0375505660.

Crticas
Alguns estudos contestaram a Lei de Linus, citando o nmero relativamente pequeno de contribuies feitas para projetos open source por pessoas "de fora", isto , pessoas que no pertencem a um pequeno grupo principal de colaboradores.159 Isso , em grande parte, o resultado do investimento necessrio que os colaboradores precisam realizar para manter positivamente os ajustes na interface do usurio e entender um pouco do cdigo antes que possam efetivamente contribuir para o mesmo. Alguns projetos tambm no confiam em contribuies externas, temendo que eles possam criar bugs difceis de serem encontrados ou brechas na segurana, e assim esses projetos criam um inconveniente processo de reviso que pode prejudicar desenvolvimento externo. Os defensores do cdigo aberto argumentam, no entanto, que existem maneiras de se minimizar estes problemas e de se facilitar a integrao de colaboradores externos. Seguindo prticas efetivas de engenharia de software, possvel produzir um cdigo de fcil manuteno. Os exemplos podem incluir o uso de componentes modulares com acoplamento frouxo, ou um bom conjunto de testes para a verificao das contribuies externas, ou uma simples estratgia de desenvolvimento suportada por ferramentas como o autoconf. Tambm considerado uma ajuda importante ter uma boa documentao, incluindo tanto uma viso geral quanto descries detalhadas da interface, opcionalmente suportadas por ferramentas como o Javadoc e ferramentas de visualizao de cdigo. Porm nem todos os projetos open source implementam tais medidas. Outro argumento contra o cdigo aberto o de que falhas de segurana podem ser facilmente encontradas pelo exame do cdigo fonte, destruindo efetivamente qualquer segurana por obscuridade (en:security through obscurity). Outros dizem que isso um ponto forte: significa que no apenas usurios maliciosos, mas tambm desenvolvedores externos e usurios legtimos, podem encontrar tal falha de segurana mais facilmente e diagnosticar ataques mais rapidamente. Por serem expostos rapidamente e para mais pessoas, os problemas de segurana podem ser consertados antes que a aplicao esteja completamente desenvolvida e eles se tornem um problema mais srio.

Ver tambm
Eric S. Raymond A Catedral e o Bazar Linus Torvalds Software livre
159Obasanjo, Dare (2002). The Myth of Open Source Security Revisited. URL acessada em 16 de Abril de 2006

Reviso por pares

Ligaes externas
Leis epigramticas

Guia de comandos para Linux/Unix


Esta uma lista de programas de computador para o sistema operacional Linux e sistemas compatveis, como o Unix.

Comentrios
A linha de comando do sistema operacional Linux permite a realizao de inmeras tarefas atravs de seus comandos, de manipulao de arquivos a verificao do trfego em rede. Para exibir uma descrio detalhada de cada comando abra uma console ou xterm e digite man comando, onde comando o comando em questo. Outro detalhe muito importante! pratique cada comando muitas vezes at que se torne algo natural.

Comandos de manipulao de diretrio


mkdir cria um diretrio exemplo: mkdir docsrmdir exclui um diretorio (se estiver vazio)rm -rf exclui um diretrio e todo o seu contedocd entra num diretrio (exemplo: cd docs) ou retorna para HOMEcd ~ vai direto para o diretrio home do usurio logado.cd volta ao ltimo diretrio acessadopwd exibe o local do diretrio atualls listar o contedo do diretriols -alh mostra o contedo detalhado do diretriols -ltr mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t)du (Unix)du -msh mostra o tamanho do diretrio em Megabyteswhereis mostra onde se encontra determinado arquivo (binrios) exemplo: whereis sambawhich mostra qual arquivo binrio est sendo chamado pelo shell quando chamado via linha de comando

Dicas teis
Qual o maior diretrio?
Para obter uma listagem de diretrios em sistemas GNU/Linux, ordenados do maior para o menor, use o comando:

du -Sk | sort -nr | more

ou
du -Sh | sort -nr | more

para exibir resultado em UNID (Kbytes,Mbytes ou Gbytes)

O tamanho de cada diretrio ou subdiretrio


du -ach --max-depth=1 /var/du -ach --max-depth=1 /var/ --max-depth=1 /var/ | sort -nr | more | sort -nrdu -ach

Criar diretrios dentro de diretorios


mkdir -p teste teste1 teste2 teste3

Criar uma rvore completa de diretrios


mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}

A regra aqui a seguinte:


para cada pasta que conter subpastas use "nome/{}"dentro das chaves coloque os nomes separados por vrgulae no esquea de usar o parmetro '-p' no comeo do comando!

Comandos para manipulao de arquivos


cat (Unix)cat mostra o contedo de um arquivo binrio ou textotac semelhante ao cat mas inverte a ordem tail mostra as ltimas 10 linhas de um arquivo (util para ler logs)head mostra as primeiras 10 linhas de um arquivoless mostra o contedo de um arquivo de texto com controlevi editor de ficheiros de textovim verso melhorada do editor supracitadorm remoo de arquivos (tambm remove diretrios)cp (Unix)cp copia diretrios 'cp -r' copia recursivamentemv move ou renomeia arquivos e diretrioschmod altera as permisses de arquivos ou directrioschown altera o dono de arquivos ou diretrioscmd>txt cria um novo arquivo(txt) com o resultado do comando(cmd)cmd>>txt adiciona o resultado do comando(cmd) ao fim do arquivo(txt)touch touch foo.txt cria um arquivo foo.txt vazio; tambm altera data e hora de modificao para agora> arquivo.txt mais rpido que o touch para criao de arquivossplit divide um arquivorecode recodifica um arquivo ex: recode iso-8859-15..utf8 file_to_change.txt[mc] poderoso editor de texto

Comandos para administrao


man mostra informaes sobre um comando adduser adiciona usuriosaddgroup adiciona gruposapropos realiza pesquisa por palavra ou stringdmesg exibe as mensagens da inicializao(log)du_(Unix)du exibe estado de ocupao dos discos/partiesfind comando de busca ex: find ~/ -cmin -3userdel remove usurioschfn altera informao relativa a um utilizadorwho informa quem est logado no sistemawhoami informa com qual usurio voc est logadopasswd modifica senha (password) de usuriosumask define padres de criao de arquivos e diretriosps (Unix)ps mostra os processos correntesps -aux mostra todos os processos correntes no sistemakill manda um sinal para um processo. Os sinais SIGTERM e SIGKILL encerram o processo.killall manda um sinal para todos os processos.su troca para o super-usurio root ( exigida a senha)su user troca para o usurio especificado em 'user' ( exigida a senha)chown altera a propriedade de arquivos e pastas (dono)env mostra variaveis do sistema

Comandos para administrao de rede


ifconfig mostra as interfaces de redes ativas e as informaes relacionadas a cada uma delasroute mostra as informaes referentes as rotasmtr mostra rota at determinado IPnmap lista as portas de sistemas remotos/locais atras de portas abertas. Pode verificar sistema operacional em execuo no host remoto.netstat exibe as portas e protocolos abertos no sistema.iptraf analisador de trafego da rede com interface grfica baseada em dilogostcpdump sniffer muito popular. Sniffer uma ferramenta que "ouve" os pacotes que esto passando pela rede.traceroute traa uma rota do host local at o destino mostrando os roteadores intermediriosnslookup consultas a servios DNSdig consultas a servios DNS

Referncias
Foca GNU/Linux UNIX ON-LINE Man Pages

Anexo:Lista de distribuies de Linux


Distribuies de propsito geral
ALT Linux Arch Linux Debian 1. BrDesktop 2. Damn Small Linux 3. Famelix 4. Freedows 5. Insigne GNU Linux 6. KeeP-OS 7. Knoppix 1. Kurumin 3. Big Linux NG 2. DreamLinux

8. Linex 9. Resulinux 10. 11. 12. 13. 1. Alinex 2. Fluxbuntu 3. gNewSense 4. Gobuntu 5. Goobuntu 6. Jolicloud 7. Kubuntu 1. Kubuntu Netbook Remix 2. Linux Educacional 8. Linux Mint 9. Ubuntu Netbook Remix 10. 11. 12. 13. 14. Foresight Linux Gentoo 1. Guaranix 2. Librix 3. Litrix Linux 4. Sabayon Linux 5. Tutoo Ubuntu Studio Ultimate Edition Xubuntu ZeVenOS Xandros 3.0 Rxart Satux Skolelinux Ubuntu

GoboLinux Linux From Scratch Neo Dizinha OpenSuSE Puppy Linux Red Hat Linux 1. Caixa Mgica 2. CentOS 3. Fedora 1. Ekaaty 2. Insigne GNU Linux 3. Libertas 4. Muriqui 5. Vixta 4. Mandriva 1. PCLinuxOS 5. Yellow Dog Linux Resulinux Slackware 1. GoblinX 2. Slax 3. Vector Linux - verso 3

Distribuies LiveCD
As distribuies em LiveCD rodam direto do cd-rom. ALT Linux Arch Linux Arco-Debian Linux

Big Linux Caixa Mgica LiveCD CentOS CLive (baseada em Conectiva Linux) (baseada no Kurumin) Damn Small Linux Dizinha Linux Dreamlinux Famelix XP/Vista Fedora Fenix Linux Gentoo GoblinX Gnoppix Incognito Insigne GNU Linux Litrix Linux Linux Mint Linux Educacional Kya Linux Kanotix KeeP-OS Knoppix Kubuntu Kurumin NUbuntu LinuxFX Mandriva Mepis Moblin (baseada em Knoppix) (Baseada no Kurumin) Kurumin Games (baseada em Debian Linux) 3.0 Linius (Basado em caixa mgica) (baseada em Slackware Linux) (baseada no Kurumin) (baseada em Knoppix) Kalango Linux (baseada em Debian/Fedora) (baseada em Knoppix) (Baseada em Debian e Knoppix) Ambiente similar ao Windows

Morphix Neo Dizinha NimbleX openSUSE Paipix PCLinuxOS PHLAK (Baseado no Morphix) (baseada no Ubuntu) (live-DVD) Poseidon Linux Puppy Linux Quantix Resulinux Sabayon Linux Sacix Satux Slax (Baseada em Debian ) (baseada em Slackware Linux)

Super OS Tatui x Ubuntu Vixta Yoper (baseada em Debian Linux) (projeto baseado no Fedora com aparencia do Windows Vista)

Distribuies de propsito especial


andLinux , verso do Ubuntu que roda integrada ao Windows junto com o Explorer. ngstrm Android Google. - Desenvolvida para o console portatil Pandora. - Sistema operacional voltada para smartphones, desenvolvida pela

Arm-Linux BackTrack BrazilFW Coyote Linux Cytrun Linux (Fuso do Whax com Auditor Security Collection) Bootable Business Card

Dyne:Bolic Edubuntu Embedded Debian Endian Firewall EOS Enhanced Operating System de produtos. F.I.R.E FREESCO GeexBox Indymix IPCop Linux Educacional - Voltados para uso de professores, gestores e alunos da rede pblica de ensino brasileira. Live Android PC's. Mikrotik Musix Mythbuntu Openfiler Pentoo Portable Ubuntu for Windows Windows junto com o Explorer. Progeny Debian Sentry Firewall Skolelinux Sysresccd - Distro com ferramentas essenciais para manuteno em geral Terabeauts - Distro em disquete destinada a criao e manuteno de sistemas de arquivos The Linux Router Project Tupiserver Ubuntu Studio UcLinux - Outra verso do Ubuntu que roda integrada ao - um projeto que visa a utilizao do sistema Android para - Desenvolvida para automatizar instalao

Desktops

Desktop padro KDE 4.3 Desktop Gnome 2.20 Desktop do Xfce - GoblinX

O sistema operacional de interfaces para que o com o sistema interfaces grficas e a comando. As interfaces grficas inicialmente por Douglas chamadas de ambientes GUI(Graphical User exemplos para o Linux so: Kde Gnome LXDE Xfce Fluxbox Blanes Blackbox Windowmaker Afterstep Enlightenment IceWM FVWM Kahakai ZappWM dwm SithWM Whim Karmen Sawfish XIGE Framer Mavosxwm WindowLab OpenBox

Linux possui dois tipos usurio possa interagir operacional. As interface de linha de foram desenvolvidas C. Engelbart e tambm grficos, Desktop's ou Interfaces). Alguns

xmonad

Desktops 3D
Os desktops 3D, so na verdade, Plugins para adicionar efeitos incrveis s outras interfaces: AIGLX/Beryl XGL/Compiz Compiz Fusion160 Metisse KWin gerenciador de janelas do KDE com efeitos nativos.

Sistemas mveis (Mobile)


Motomagx - sistema especialmente desenvolvido para celulares Motorola LinuxMod - sistema baseado no Motomagx

Interpretadores de comandos
Usando o Bash - Framebuffer

Representando a modo texto, ou Interface) do Linux, eles controle remoto e sistema.Exemplos de comando, tambm interpretadores de sh ksh pdksh bash csh tcsh zsh

interface de acesso no CLI(Command Line so a principal forma de gerenciamento do interfaces de linha chamados de Shell's ou comandos:

160Os programas Beryl e Compiz se uniram e deram origem ao programa Compiz Fusion.

ash dash rc rsh ssh screen (*) O screen um gerenciador de sesses em modo texto

Você também pode gostar