Você está na página 1de 51

Colgio Tcnico Universitrio CTU Curso Tcnico de Informtica Industrial

Professor: Stnio S Rosrio F. Soares

Disciplina: Introduo a Sistemas Operacionais Material de Apoio

-1-

Este material o resultado da compilao de vrios outros materiais utilizados na apresentao da disciplina de Introduo a Sistemas Operacionais. Os primeiros trs captulos foram extrados de material elaborado por mim e pelas professoras Cristiane Targa e Melba Gorza quando ministramos as disciplinas de Introduo Informtica e Informtica I na Universidade Federal Fluminense, bem como do material do Prof. Sandro, disponvel no site do CTU. O Captulo 4, que trata do Sistema Operacional Linux foi integralmente obtido no endereo http://200.129.176.74/~bruno/.

-2-

Captulo 1 Evoluo Histrica do Hardware


Este captulo para os alunos curiosos, aqueles que no perdem oportunidade de saber um pouco alm do contedo da matria. No ser cobrado diretamente nas avaliaes, mas certamente importante que o profissional tcnico tenha uma idia do que foi o passado das suas ferramentas de trabalho.

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

Embora a mquina de diferenas funcionasse razoavelmente bem, Babbage logo cansouse dela, pois podia executar apenas um algoritmo. Ele comeou ento a dedicar o seu tempo no projeto e construo de uma mquina sucessora, a mquina analtica (1834). Esta mquina possua quatro componentes: o armazenamento (memria), o engenho (a unidade de clculo), a seo de entrada (leitora de cartes perfurados) e a seo de sada (sada perfurada e impressa). O armazenamento tinha capacidade de guardar 1000 valores de 50 dgitos, sejam eles operandos ou resultados de operaes. O engenho podia aceitar operandos do armazenamento, som-los, subtra-los, multiplic-los ou dividi-los, e retornar o resultado ao armazenamento. Tal como a mquina de diferenas, ela era totalmente mecnica. O grande avano da mquina analtica era de ser de uso geral. Ela lia instrues de cartes perfurados e as executava. Algumas instrues comandavam a mquina para buscar dois nmeros no armazenamento, lev-los ao engenho, sofrerem a operao (por exemplo, soma) e ter o resultado enviado de volta ao armazenamento. Perfurando um programa diferente nos cartes de entrada, era possvel fazer com que a mquina analtica executasse clculos diferentes, algo que no era verdade na mquina de diferenas. Uma vez que a mquina analtica era programvel, ela precisava de software. Para produzir este software, Babbage contratou uma jovem chamada Ada Augusta Lovelace, sendo esta a primeira programadora do mundo. A linguagem de programao Ada foi assim denominada em sua homenagem. O prximo grande marco de desenvolvimento ocorreu nos anos 30, quando um estudante de engenharia alemo chamado Konrad Zuse construiu uma srie de mquinas de calcular automticas utilizando rels (aparelhos/circuitos) eletromagnticos. Zuse no conhecia o trabalho de Babbage, e suas mquinas foram destrudas por um bombardeio a Berlim em 1944, de forma que seu trabalho no teve qualquer influncia nas mquinas posteriores. Mesmo assim, ele foi um dos pioneiros neste campo. Logo depois, nos Estados Unidos, duas pessoas tambm projetaram calculadoras, John Atanasoff e George Stibbitz. A mquina de Atanasoff era surpreendentemente avanada para sua poca. Ela utilizava aritmtica binria alm de tcnicas utilizadas ainda hoje na manuteno da carga de memrias. Infelizmente, a mquina nunca se tornou realmente operacional. De certa forma, Atanasoff foi como Babbage: um visionrio derrotado pela inadequada tecnologia de hardware de seu tempo. O computador de Stibbitz, embora mais primitivo que o de Atanasoff, funcionava realmente. Enquanto Zuse, Stibbitz e Atanasoff estavam projetando calculadoras automticas, um jovem chamado Howard Aiken estava realizando manualmente tediosos clculos numricos como parte de sua pesquisa de doutorado em Harvard. Aps seu doutorado, Aiken reconheceu a importncia de clculos feitos por mquina. Comeou a ler sobre o assunto, descobriu o trabalho de Babbage e, baseado neste, construiu em 1944 o seu primeiro computador com rels, o Mark I. Ele era capaz de armazenar 72 valores de 23 dgitos. Para entrada e sada, utilizava-se fita de papel perfurado e foi o primeiro computador de origem americana para propsitos gerais. Quando Aiken acabou de construir o sucessor, o Mark II, computadores com rels estavam obsoletos. A era eletrnica tinha comeado. Como conseqncia do esforo de guerra, o governo ingls colocou em operao, em 1943, o COLOSSUS. Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construdo pela Alemanha, denominado ENIGMA. Devido sua arquitetura muito especfica, voltada para a elucidao de mensagens, o COLOSSUS foi um equipamento nico, cujo maior mrito ter sido o primeiro computador digital. 1. Primeira Gerao Vlvulas (1945-1955) -4-

Os equipamentos desenvolvidos at o incio dos anos 40 eram fundamentados na utilizao de rels eletromecnicos. A utilizao de vlvulas mecnicas foi um marco que caracterizou esta nova era, que inicia a histria dos computadores eletrnicos digitais. Esta gerao comeou com a construo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de ps-graduao J. Presper Eckert. O ENIAC surgiu a partir de um projeto apresentado ao Exrcito Americano em 1943 para a construo de um computador destinado a efetuar clculos que seriam utilizados nas frentes de combate. As suas 18.000 vlvulas eletrnicas, seus 1.500 rels, alm de 800 quilmetros de fio utilizados, contriburam para o peso de 30 toneladas e um enorme consumo de energia eltrica. Tudo isso era necessrio para fazer funcionar uma arquitetura com vinte registradores, cada um capaz de conter nmeros decimais de at dez dgitos, sendo capaz de realizar 100.000 operaes aritmticas por segundo. A programao era elaborada atravs da utilizao de chaves com mltiplas posies. O projeto somente foi concludo em 1946 e, por isso, no pde ser utilizado nas operaes militares da Segunda Guerra. Maurice Wilkes, pesquisador da universidade de Cambridge, inspirado no trabalho de Mauchley e Eckert, construiu o EDSAC, em 1949, o primeiro computador eletrnico funcionando com programa armazenado. Isso significa que um programa no era mais representado por um conjunto de chaves posicionadas. As instrues do programa passavam a ser inseridas no equipamento, assim como os dados a serem processados, isto , eram sinais eltricos armazenados numa parte que recebeu a denominao de memria. Enquanto isso, Mauchley e Eckert trabalhavam no sucessor do ENIAC, denominado EDVAC (Eletronic Discret Variable Automatic Calculator). O projeto no foi a frente, em virtude de aspectos ligados fundao de uma empresa fabricante de computadores, que aps a evoluo natural dos fatos deu origem ento denominada UNIVAC (hoje transformada em UNISYS, aps fuso com a Burroughs). Surgiu, em 1951, o UNIVAC I, o primeiro computador eletrnico a ser usado comercialmente. Os projetos para a construo de computadores surgiam a partir de concepes dos seus criadores, no havendo ainda linhas gerais de comportamento quanto a possveis padres de arquitetura. Entre todas as tentativas, merece especial ateno aquela apresentada por John von Neumann. Tendo participado da equipe que desenvolveu o ENIAC, alm de suas idias sobre computador de programa armazenado terem sido utilizadas no EDSAC, von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanados de Princeton. A partir desse trabalho, o processo de desenvolvimento de computadores nunca mais seria o mesmo. 2) Segunda Gerao Transistores (1955-1965) Durante os anos 50 (mais ou menos 1955), surgiu um novo dispositivo capaz de substituir a vlvula eletrnica com vantagens: o transistor, marcando o incio da segunda gerao de computadores. Alguns projetos criados na gerao anterior foram redesenhados para utilizarem transistores em substituio s vlvulas eletrnicas. Entre outros aspectos de relevncia, o transistor abriu a perspectiva da reduo significativa dos tamanhos dos circuitos eletrnicos digitais. Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fsico, tendo, porm, capacidades de processamento rivalizadas com aquelas dos de grande porte. Talvez o mais famoso tenha sido o PDP-1, fabricado em 1961, com 4 KB de memria principal, palavras de 18 bits e ciclo de 5 microssegundos. O seu preo estava na faixa de 120.000 dlares. Esse projeto evoluiu a ponto de, em poucos anos, surgir o PDP-8, um campeo de vendas na linha dos chamados minicomputadores. A grande inovao desse novo -5-

modelo era a utilizao de um recurso denominado barramento unificado, uma novidade na poca na maneira de interligar os componentes internos do computador. Entre os computadores de segunda gerao cuja existncia tornou-se digna de nota, no se pode deixar de mencionar o B5000, produzido pela empresa Burroughs, hoje com a denominao de UNISYS. A preocupao dos seus projetistas, ao contrrio dos que atuavam nas outras empresas do gnero, no era com o hardware e sim com o software. O equipamento foi construdo com a inteno de executar programas codificados em Algol 60, uma linguagem precursora do Pascal. 1. Terceira Gerao Circuitos Integrados (1965-1980) As pesquisas sobre a utilizao do transistor continuaram tendo resultado no surgimento de um novo componente, o circuito integrado. Essa foi a denominao atribuda ao dispositivo resultante da montagem de um conjunto de diversos transistores, interligados de acordo com um plano definido, em uma nica pastilha de silcio (surge, ento, o chip). A principal conseqncia disso foi a possibilidade imediata da construo de computadores mais rpidos, mais baratos e menores que seus ancestrais baseados apenas em transistores. A partir dessa gerao, uma empresa em particular experimentou notvel expanso: a IBM. Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto solues para problemas comerciais quanto para problemas cientficos, utilizando a nova tecnologia de circuitos integrados. Quanto aos aspectos tcnicos, os conceitos de canal e multiprogramao marcaram profundamente essa gerao. O canal representou uma grande inovao na capacidade de ligao de dispositivos perifricos CPU. Tratava-se de um pequeno computador, cuja programao era especificamente voltada a converter sinais entre a CPU e um ou mais perifricos. Eram distinguidos em duas categorias, a saber: canal seletor, para perifricos de alta velocidade e canal multiplexador, para perifricos de baixa velocidade. Quanto multiprogramao, esta representou uma inovao ainda mais arrojada. Tratava-se de um novo conceito de uso do computador, onde vrios programas podiam ser carregados ao mesmo tempo na memria e disputar a utilizao do processador. Por exemplo, o programa denominado A usava o processador durante um pequeno intervalo de tempo, salvava os resultados intermedirios e em seguida o liberava para o prximo programa da fila de espera. Passando algum tempo, chegava novamente a vez do programa A utilizar o processador, repetindo-se tudo at o final da execuo do mesmo. A velocidade com que tudo isso era feito dava a impresso de que todos os programas estavam funcionando ao mesmo tempo. Ainda durante esse perodo, os minicomputadores ganharam importante espao no mercado, pois eram equipamentos capazes de atender maioria das necessidades das organizaes, porm a custo bem menor que o de um equipamento de grande porte. 3) Quarta Gerao Computadores Pessoais e VLSI (a partir de 1980) O avano da tecnologia eletrnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip. Por volta de 1980, j era possvel colocar milhes de transistores num nico chip, devido tcnica chamada Very Large Scale Integration (VLSI). A conseqncia mais imediata desse fato foi a reduo dos tamanhos e dos preos dos equipamentos, apesar do aumento das suas capacidades de armazenamento. Estava estabelecida a quarta gerao de computadores. -6-

A partir dessa poca, profundas mudanas comearam a ocorrer nos hbitos dos usurios, em virtude da possibilidade da miniaturizao dos componentes utilizados na construo de computadores. Durante muito tempo, os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaes como apoio s suas necessidades de informatizao, muito mais devido falta de alternativas tecnolgicas do que real necessidade de usar equipamentos com aquele porte. Computadores de menor porte tornaram-se substitutos naturais para muitos casos onde outrora um mainframe era recomendado. O advento dos chamados microcomputadores, contudo, produziu a mais profunda mudana j ocorrida na indstria de Informtica. De maneira muito repentina, o usurio passou a ter nas mos um grande poder de processamento, que contribuiu de modo definitivo para o processo de dissipar o mito que ainda existia em torno dos grandes computadores. Essa a situao atual em que se encontra a tecnologia da Informtica, estando, cada vez mais, ocorrendo a autonomia do usurio.

-7-

Captulo 2 Organizao Interna de Computadores


1) Conceitos Bsicos no Mundo do Computador Um computador digital uma mquina capaz de nos solucionar problemas atravs da execuo de instrues que lhe so fornecidas. Denomina-se programa uma seqncia de instrues que descreve como executar uma determinada tarefa. Os circuitos eletrnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instrues simples para as quais todos programas devem ser convertidos antes que eles possam ser executados. Estas instrues bsicas raramente so mais complicadas do que:

Somar dois valores Verificar se um nmero igual a zero Mover um dado de uma parte da memria do computador para outra

Juntas, as instrues primitivas do computador formam uma linguagem que torna possvel as pessoas se comunicarem com o computador. Tal linguagem denominada linguagem de mquina. Ao se projetar um novo computador deve-se decidir que instrues devem estar presentes nesta linguagem de mquina. Como a maioria das linguagens de mquina muito simples, difcil e tedioso utiliz-las. Este problema pode ser atacado de duas maneiras principais, ambas envolvendo o projeto de um novo conjunto de instrues de uso mais conveniente para as pessoas do que o conjunto de instrues embutidas na mquina. Juntas, estas novas instrues formam uma linguagem que chamaremos de L2, exatamente como as instrues embutidas na mquina formam uma linguagem, que chamaremos de L1. Os dois conceitos diferem na maneira com que os programas escritos em L2 so executados pelo computador, que, afinal de contas, pode apenas executar programas escritos em linguagem de mquina, L1. Um mtodo de execuo de um programa escrito em L2 consiste, em primeiro lugar, em substituir cada instruo por uma seqncia equivalente de instrues L1. O programa resultante composto inteiramente de instrues L1. O computador ento executa o novo programa em L1 em vez do programa em L2. Esta tcnica conhecida como traduo. A outra tcnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuo examinando uma instruo de cada vez e executando a seqncia equivalente de instrues L1 diretamente. Esta tcnica no requer a gerao de um novo programa em L1. Denomina-se interpretao, e o programa que a executa denomina-se interpretador. Vamos ver estes conceitos mais detalhadamente no captulo 3. -8-

A traduo e a interpretao so similares. Em ambos os mtodos, as instrues em L2 so executadas pelas seqncias equivalentes de instrues em L1. A diferena que, na traduo, o programa inteiro em L2 primeiramente convertido para um programa em L1, o programa em L2 abandonado, e ento o novo programa em L1 executado. Na interpretao, depois de cada instruo L2 ser examinada e decodificada, ela executada imediatamente. Nenhum programa traduzido gerado. Os programas escritos na linguagem de mquina de um computador podem ser executados diretamente pelos circuitos eletrnicos do computador, sem quaisquer interpretadores ou tradutores intermedirios. Esses circuitos eletrnicos, juntamente com a memria e os dispositivos de entrada/sada, constituem o hardware do computador. O hardware composto de objetos tangveis circuitos integrados, placas de circuito impresso, cabos, fontes de alimentao, memrias, leitoras de cartes, impressoras, terminais, etc. em lugar de idias abstratas, algoritmos ou instrues. O software, ao contrrio, consiste em algoritmos (instrues detalhadas que dizem como fazer algo) e suas representaes para o computador ou seja, os programas. Os programas podem estar representados em cartes perfurados, fitas magnticas, discos e outros meios, mas a essncia do software est no conjunto de instrues que constitui os programas, no nos meios fsicos sobre os quais eles esto gravados. Uma forma intermediria entre o hardware e o software o firmware, que consiste no software embutido em dispositivos eletrnicos durante a fabricao. O firmware utilizado quando se espera que os programas raramente ou nunca sero mudados, por exemplo, em brinquedos ou instrumentos. Um tema central dentro da computao que tambm ser adotado por ns : Hardware e software so logicamente equivalentes. Qualquer operao efetuada pelo software pode tambm ser implementada diretamente no hardware, e qualquer instruo executada pelo hardware pode tambm ser simulada pelo software. A deciso de se colocar certas funes em hardware e outras em software baseia-se em fatores tais como: custo, velocidade, confiabilidade e freqncia esperada de alteraes.

-9-

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

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

CPU

Dispositivos de entrada e sada

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

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

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

Esta seqncia de passos freqentemente referida como o ciclo busca-decodificaexecuta. Ela o centro da operao de todos os computadores. 2.1.2)Organizao da CPU A organizao interna de parte de uma CPU von Neumann mostrada na Figura 2.2. Esta parte chamada de fluxo de dados e constitudo por registradores e pela ALU. Os registradores alimentam os dois registradores de entrada da ALU, denominados, na figura, de registradores A e B. Estes registradores mantm as entradas da ALU enquanto ela est executando a operao.
A+B

Registradores

ALU

A+B

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

- 11 -

A prpria ALU executa adio (como na figura), subtrao e outras operaes simples com suas entradas, produzindo um resultado no seu registrador de sada. Este resultado pode ser armazenado de volta em um registrador da CPU e, de l, de volta memria, se desejado. As instrues podem ser divididas em trs categorias:

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

2.2)Memria Principal A memria a parte do computador onde programas e dados so armazenados. Consiste no local de onde a CPU apanha os dados a serem processados, onde guarda valores intermedirios e para onde envia os resultados finais do processamento, sendo assim, um elemento bsico para o funcionamento da CPU. Sem uma memria de onde a CPU possa ler e escrever informaes no existiriam computadores de programa armazenado. A unidade bsica de armazenamento o digito binrio, chamado bit (binary digit). Um bit pode conter os valores 0 ou 1. Principais Tipos de Memrias RAM (Random Access Memory Memria de Acesso Direto): memrias nas quais as operaes de escrita e leitura so possveis. ROM (Read-Only Memory Memria Somente de Leitura): os dados presentes nessa memria no podem ser modificados sob quaisquer circunstncias. Tais dados so inseridos na memria na hora de sua fabricao e a nica forma de alterar os seus dados a sua substituio.

Endereos de Memria As memrias so compostas de um determinado nmero de clulas (ou posies), cada uma podendo armazenar uma parte da informao. Cada clula tem um nmero, chamado de seu endereo, pelo qual os programas podem referenci-la. Se a memria tem n clulas, elas tero endereos de 0 a n-1. Todas as clulas em uma memria possuem o mesmo nmero de bits. A figura 2.3 mostra trs organizaes diferentes para uma memria de 96 bits. Note que clulas adjacentes tm endereos consecutivos. Um byte consiste num conjunto de 8 bits. Bytes, por sua vez, podem ser agrupados em palavras (words), sendo que o nmero de bytes por palavra pode variar de computador para computador.

- 12 -

1 Clula

1 Clula

1 Clula

0 1 2 3 4 5 6 7 8 9 10 11
8 bits

0 1 2 3 4 5 6 7
12 bits

0 1 2 3 4 5
16 bits

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

O significado da clula que ela a menor unidade enderevel. At recentemente, a maioria dos fabricantes de computador padronizavam a clula de 8 bits que, como j visto, chamada de byte. Com a necessidade de maior espao de endereamento, alguns fabricantes A unidade de medida de memria igual a 1 byte. A seguir, mostramos as relaes entre a unidade de medida de memria e seus mltiplos:
Mltiplo 1 Kilobyte 1 Megabyte 1 Gigabyte 1 Terabyte Abreviatura 1KB 1MB 1GB 1TB Valor 210 B = 1024 B 220 B = 1024 KB 230 B = 1024 MB 240 B = 1024 GB

comearam a utilizar a word como unidade enderevel, onde uma word pode ser igual a um ou mais bytes, dependendo do fabricante. 2.3) Memria Secundria Como toda palavra na memria (principal) precisa ser diretamente acessvel em um intervalo de tempo muito curto, ela relativamente cara. Consequentemente, os computadores possuem tambm memrias secundrias que so memrias mais lentas, baratas e tambm so muito grandes. Tais memrias so utilizadas para armazenar grande quantidade de dados que a memria principal no capaz de suportar. i) Fitas Magnticas A fita magntica foi o primeiro tipo de memria secundria. Uma unidade de fita de computador anloga a um gravador de rolo convencional: uma fita enrolada em um rolo alimentador, passa por uma cabea de gravao e chega a um rolo receptor. Variando a corrente - 13 -

na cabea de gravao, o computador pode gravar informaes na fita em forma de pequenos pontos magnetizados. A Figura 2.4 mostra como a informao organizada em uma fita magntica. Cada frame possui um byte, alm de um bit extra, chamado de bit de paridade, para aumentar a confiabilidade. Aps a unidade de fita terminar a gravao de um registro fsico (uma seqncia de frames), ela deixa um espao na fita, enquanto reduz a velocidade. Se o programa escreve pequenos registros fsicos na fita, a maior parte da fita ser gasta por esses espaos, denominados gaps. A utilizao da fita pode ser mantida alta gravando-se registros fsicos bem maiores que o gap. As fitas magnticas so dispositivos de acesso seqencial. Se a fita est posicionada no incio, para ler o registro n necessrio ler antes os registros fsicos de 1 a n-1, um de cada vez. Se a informao desejada se encontra prxima ao fim da fita, o programa ter que ler quase a fita inteira, o que poder levar vrios minutos. Forar a CPU, que pode executar milhes de instrues por segundo, a esperar, por exemplo, 200 segundos enquanto a fita avana, um desperdcio. Por isso, as fitas so mais adequadas quando os dados precisam ser acessados seqencialmente.
Registro Fsico Gap entre registros

trilha

Direo do movimento da fita

frame

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

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

O endereo na memria principal de onde a informao vem ou para onde vai; Se a informao para ser lida do disco ou se para ser escrita nele.

Cabea de leitura/gravao (uma por face)

Direo do movimento do brao

Figura 2.5: Um disco com quatro pratos

As transferncias de informao no disco sempre comeam no incio de um setor, nunca no meio. Se uma transferncia de mltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro, nenhum tempo perdido porque a mudana de uma cabea para outra feita eletronicamente. Entretanto, se a transferncia atravessa o limite de um cilindro, o tempo de uma rotao pode ser perdido no reposicionamento das cabeas no prximo cilindro e na espera pelo setor 0. Se a cabea de leitura est sobre um cilindro errado, ela precisa primeiramente ser movida. Este movimento chamado seek (procura), e o seu tempo denominado seek time. Uma vez que a cabea est posicionada corretamente, necessrio esperar at que o setor inicial passe sob a cabea, antes de iniciar a transferncia. Este tempo, por sua vez, conhecido como latncia rotacional. O tempo total de acesso igual ao seek time mais a latncia rotacional mais o tempo de transferncia. Quase todos os computadores utilizam discos com vrios pratos, como descrito anteriormente, para o armazenamento de dados. Eles so freqentemente denominados discos rgidos (hard disks - HD). O tipo mais conhecido o disco winchester, que uma unidade selada (para evitar contaminao com poeira). As cabeas em uma unidade winchester tm forma aerodinmica e flutuam em um colcho de ar gerado pela rotao dos pratos. iii) Discos ticos Nos ltimos anos, discos ticos (em oposio aos magnticos) tornaram-se disponveis. Tais discos foram inicialmente desenvolvidos para gravar programas de televiso, mas eles logo passaram a tambm ser utilizados como dispositivos de armazenamento de computadores. - 15 -

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magnticos e devido a esta capacidade, os discos ticos tm sido objeto de grande pesquisa e vm sofrendo uma evoluo incrivelmente rpida. A primeira gerao de discos ticos se baseia na mesma tecnologia dos compact discs usados em udio, e os discos presentes nesta gerao so chamados CD-ROMs (Compact Disk Read Only Memory). Informaes em um CD-ROM so escritas como um espiral nico contnuo, diferentemente dos discos magnticos com suas trilhas e cilindros discretos. Os CD-ROMs so potencialmente teis na distribuio de grandes bases de dados, especialmente aquelas que misturam textos e imagens. Uma biblioteca completa de leis, medicina ou literatura de 250 livros grossos cabe facilmente em um CD-ROM, assim como uma enciclopdia totalmente ilustrada. Um curso por computador formado por milhares de slides coloridos, cada qual acompanhado por 10 segundos de narrao, outro candidato para CDROM. Apesar desse enorme potencial, os CD-ROMs no so escrevveis, o que limita sua utilidade como dispositivos de armazenamento de computadores. A inteno de se ter um meio escrevvel conduziu prxima gerao: os discos ticos WORM (Write Once Read Many). Este dispositivo permite que os usurios escrevam informaes nos discos ticos, mas isso s pode ser feito uma vez. Tais discos so bons para arquivar dados, relatrios, e outras informaes que so (semi) permanentes. Eles no so muito apropriados para guardar arquivos temporrios de rascunho. Mas, dada a grande capacidade desses discos, o estilo descartvel de apenas acrescentar arquivos temporrios at que o disco esteja cheio, e ento jog-lo fora, aceitvel. claro que a existncia de discos que s podem ser escritos uma vez provoca um impacto na forma em que os programas so escritos. A terceira fase de evoluo dos discos ticos o meio tico apagvel. Discos ticos escrevveis no iro substituir os discos winchester convencionais por algum tempo, por duas razes. Primeiro, o seu seek time muito superior ao dos discos winchester. Depois, sua taxa de transferncia bem inferior apresentada pelos discos magnticos. Por isso, o desempenho dos discos magnticos simplesmente muito melhor. Enquanto os discos ticos iro sem dvida melhorar com o tempo, os discos magnticos iro, provavelmente, melhorar to rpido quanto, mantendo-se na frente.

- 16 -

Captulo 3 Sistemas Operacionais


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

Sistemas Monoprocessados:

As mquinas de um nico processador, das dcadas de quarenta e cinqenta, no eram flexveis nem muito eficientes. A execuo de programas exigia uma considervel preparao de equipamentos, incluindo a montagem de fitas e a colocao fsica de cartes perfurados em leitoras de carto, o posicionamento de chaves, e assim por diante. Logo, a exececuo de cada programa, chamada de job, se tornava uma tarefa bem desgastante. Quando vrios usurios desejavam compartilhar uma mesma mquina, era comum o emprego de folhas de reserva de horrio. Durante o perodo de tempo alocado a um usurio, a mquina ficava totalmente sob sua responsabilidade e controle. A sesso normalmente comeava com a instalao do programa, seguida de curtos perodos de execuo do mesmo, e era freqentemente finalizada com um esforo desesperado de fazer alguma coisa adicional, enquanto o usurio seguinte j comeava a exibir indcios de impacincia. Em ambientes assim, os sistemas operacionais comearam a surgir como ambientes de software destinados a simplificar a instalao dos programas do usurio e a tornar mais suave a transio de um job e outro. Um primeiro progresso consistiu na separao entre usurios e equipamentos, eliminando a movimentao fsica de pessoas para dentro e para fora da sala do computador. Para isso, um operador de computadores era contratado para executar a operao propriamente dita da mquina. Aos que desejassem usar o computador, era solicitado que os programas a serem executados fossem submetidos ao operador, juntamente com os dados necessrios e com eventuais instrues especiais sobre a operao do programa, devendo o usurio retornar posteriormente para receber os resultados. O operador, por sua vez, transferia esse material para a memria, de onde o sistema operacional poderia acess-los, para promover - 17 -

sua execuo. Os jobs presentes na memria aguardavam para serem executados em uma fila de jobs (processamento em batch/lotes). A principal desvantagem dos tradicionais processamentos em lotes a falta de interao do usurio com o programa uma vez submetido este ltimo fila de jobs. Este procedimento aceitvel para algumas aplicaes, como o caso do processamento de folhas de pagamento, em que os dados e todas as decises do processo esto estabelecidos a priori. Contudo, no aceitvel quando o usurio necessita interagir com o programa durante a sua execuo. Como exemplo, pode-se citar os sistemas de reserva de passagens ou similares, pois tanto as reservas como os cancelamentos devem ser notificados assim que ocorrerem. Outro exemplo corresponde aos sistemas de processamento de texto, pois neles os documentos so escritos e reescritos dinamicamente. Um outro exemplo ainda so os jogos para computadores, para os quais a interao com a mquina a caracterstica mais significativa. Para satisfazer essas necessidades, novos sistemas operacionais foram desenvolvidos, capazes de proporcionar tal processo interativo. Esses sistemas permitem a execuo de programas que mantenham dilogo com o usurio atravs de terminais ou estaes de trabalho. Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real. Essa denominao se deve necessidade de coordenao das atividades executadas pela mquina com outras que se passam no ambiente em que a mquina est imersa. Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs, os atuais usurios passaram a exigir uma resposta muito rpida do sistema, com o qual se comunicam remotamente a partir de suas estaes de trabalho. Se os sistema interativos permitissem atender a apenas um usurio de cada vez, o processamento em tempo real no deveria apresentar qualquer problema. Porm, computadores eram caros, e, por isso, cada um deles deveria servir simultaneamente a mais de um usurio. Por outro lado, sendo comum o fato de vrios usurios solicitarem servios interativos ao computador ao mesmo tempo, as caractersticas exigidas de um sistema de tempo real passaram a constituir um obstculo concreto. Se o sistema operacional, neste ambiente de multiusurios, insistisse em executar somente um job de cada vez, um nico usurio apenas acabaria recebendo um atendimento satisfatrio em tempo real. Uma soluo para este problema podera ser trazida por um sistema operacional que revezasse a execuo dos vrios jobs atravs de um processo denominado compartilhamento de tempo (time-sharing). Mais precisamente, time-sharing refere-se tcnica de dividir o tempo em intervalos ou fatias (time slices), e restringir a execuo, dentro de cada uma dessas fraes de tempo, a um job de cada vez. Ao trmino de cada um desses intervalos, o job corrente retirado do processamento e um outro acionado. Revezando rapidamente, desta maneira, a execuo dos jobs, cria-se a iluso de que vrios jobs esto sendo executados simultaneamente. Dependendo dos tipos de jobs que estivessem sendo executados, os antigos sistemas timesharing chegaram a atender simultaneamente cerca de 30 usurios, com uma aceitvel resposta em tempo real. Atualmente, a tcnica de time-sharing utilizada tanto em sistemas com um nico usurio como tambm em ambientes multiusurios, embora o primeiro seja, usualmente, denominado multitasking, referindo-se iluso que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo. Independentemente do nmero de usurios do ambiente, constatouse que o conceito de time-sharing promovia o aumento da eficincia global de uma mquina. Esta constatao mostrou-se particularmente surpreendente ao se levar em conta o considervel processamento adicional exigido para a implementao do revezamento que caracteriza a tcnica de time-sharing. Por outro lado, na ausncia de time-sharing, um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifricos completem suas tarefas, ou que um - 18 -

usurio faa sua prxima solicitao ao sistema. Em ambientes com time-sharing este tempo pode ser cedido a alguma outra tarefa. Assim, enquanto uma tarefa espera pela sua vez de utilizar o processador, a outra pode prosseguir a sua execuo. Como resultado, em um ambiente timesharing, um conjunto de tarefas pode ser concludo em tempo menor do que o faria se executado de modo seqencial.

Sistemas Multiprocessados:

Mais recentemente, a necessidade de compartilhar informao e recursos entre diferentes mquinas suscitou o desejo de unir tais mquinas para o intercmbio de informao. Para preencher tal necessidade, popularizaram-se os sistemas com computadores interconectados, conhecidos como redes de computadores. De fato, o conceito de uma mquina central grande, servindo a muitos usurios, foi substitudo pelo conceito de muitas mquinas pequenas, conectadas por uma rede na qual os usurios compartilham recursos espalhados pela rede (tais como servio de impresso, pacotes de software, equipamentos de armazenamento de dados). O principal exemplo a Internet, uma rede de redes que hoje une milhes de computadores do mundo todo. Muitos dos problemas de coordenao que ocorrem em projetos de redes so iguais ou semelhantes aos enfrentados pelos sistemas operacionais. De fato, o software de controle de rede pode ser visto como um sistema operacional projetado para grandes redes. Deste ponto de vista, o desenvolvimento de software de redes uma extenso natural do campo dos sistemas operacionais. Enquanto as redes mais antigas foram construdas como um conjunto de computadores individuais, levemente interligados, cada qual sob o controle do seu prprio sistema operacional, as recentes pesquisas na rea de redes esto se concentrando nos sistemas estruturados como grandes redes, cujos recursos so igualmente compartilhados entre as tarefas presentes na rede. Essas tarefas so designadas para serem executadas nos processadores da rede, de acordo com a necessidade, sem levar em considerao a real posio fsica de tais processadores. As redes representam apenas um exemplo dos projetos de multiprocessadores que esto inspirando o desenvolvimento dos modernos sistemas operacionais. Enquanto uma rede produz um sistema multiprocessado mediante a combinao de mquinas, cada qual contendo apenas um nico processador, outros sistemas multiprocessadores so projetados como computadores nicos, contendo, porm, mais de um processador. Um sistema operacional para tais computadores no apenas coordenar a competio entre as vrias tarefas que so de fato executadas simultaneamente, mas tambm controlar a alocao de tarefas aos diversos processadores. Este processo envolve problemas de balanceamento de carga (para garantir que os processadores sejam utilizados de modo eficiente) bem como escalonamento (diviso das tarefas em vrias subtarefas, cujo nmero seja compatvel com o nmero de processadores disponveis na mquina). Desta forma, o desenvolvimento de sistemas multiprocessados criou dimenses adicionais no estudo de sistemas operacionais, uma rea que dever manter-se em franca atividade pelos anos vindouros. 2) Arquitetura dos Sistemas Operacionais Para entender a arquitetura de um sistema operacional tpico, til analisar todos os tipos de software que ele contm. Para tanto, iniciemos com um estudo de como agrupar programas segundo uma classificao. Tal classificao invariavelmente, separa em diferentes classes, mdulos semelhantes de software, da mesma forma como os fusos horrios vizinhos definem, no - 19 -

relgio, mesmo para comunidades geograficamente prximas, a diferena de uma hora, mesmo que no haja, entre tais localidades, diferenas significativas no horrio solar. Alm disso, no caso de classificao de software, a dinmica e a falta de uma autoridade definitiva no assunto conduzem a classificaes e terminologias contraditrias. Logo, a classificao seguinte (Figura 3.1) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita.
Software Aplicao Utilitrio Shell Figura 3.1: Classificao de software Sistema S.O. Kernel

Software:

Primeiramente, dividamos o software de um computador em duas grandes categorias: software aplicativo e software de sistema. Software aplicativo consiste de programas que executam determinadas tarefas no computador. Um computador utilizado para manter o cadastro de uma companhia industrial conter softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didticos. Exemplos de software aplicativo incluem planilhas eletrnicas, sistemas de banco de dados, editores de textos, jogos e software de desenvolvimento de programas. Em contraste com o software aplicativo, um software de sistema executa aquelas tarefas que so comuns nos sistemas computacionais em geral. Num certo sentido, o software de sistema desenha o ambiente em que se desenvolve o software aplicativo. Na classe de software de sistema, podem ser consideradas duas categorias, uma das quais consiste do prprio sistema operacional, e a outra, de mdulos de software do tipo conhecido como utilitrio. A maioria dos softwares de instalao consiste de programas que executam tarefas, embora no includas no sistema operacional, essenciais instalao de algum software no computador. De certo modo, softwares utilitrios consistem de mdulos de software que ampliam as capacidades do sistema operacional. Por exemplo, a capacidade de efetuar a formatao de um disco ou a cpia de um arquivo no so, em geral, implementadas pelo prprio sistema operacional, mas sim por programas utilitrios. Outros exemplos de softwares utilitrios incluem os programas para comunicao por modem, para linhas telefnicas, software para mostrar a previso do tempo na tela, e, em nmero cada vez mais crescente de mquinas, o software de tratamento das atividades relacionadas com as redes de computadores. A distino entre software aplicativo e software utilitrio no muito ntida. Muitos usurios consideram que a classe de software utilitrio deve incluir todos os softwares que acompanham o sistema operacional por ocasio de sua compra. Por outro lado, eles tambm classificam os sistemas de desenvolvimento de programas como software utilitrio, desde que tais pacotes sempre acompanhem o sistema operacional por ocasio de sua venda. A distino entre o software utilitrio e o sistema operacional igualmente vaga. Alguns sistemas consideram os softwares que executam servios bsicos, tais como listar os arquivos do disco, - 20 -

como sendo softwares utilitrios; outros os incluem como partes integrantes do sistema operacional. fcil verificar que, implementando-se certos programas na forma de software utilitrio, o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos bsicos exigidos pelo sistema computacional. Alm disso, as rotinas implementadas como software utilitrio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalao. No incomum encontrar companhias ou indivduos que tiveram que alterar ou ampliar algum dos softwares utilitrios que acompanham originalmente o sistema operacional.

Shell:

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

Usurios

Usurios

Shell

Sistema Operacional

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

- 21 -

Kernel (Ncleo):

A parte interna de um sistema operacional , em geral, chamada kernel. O kernel de um sistema operacional contm os componentes de software que executam as funes mais bsicas necessrias ao funcionamento de cada instalao computacional em particular. Um destes mdulos bsicos o gerenciador de arquivos, cuja funo coordenar o uso dos recursos de armazenamento de massa do computador. Mais precisamente, o gerenciador de arquivos mantm "cpias" de todos os arquivos armazenados no dispositivo de armazenamento, mantm informao sobre a localizao de cada arquivo, sobre os usurios autorizados a acessar os diversos arquivos e sobre as reas disponveis no dispositivo de armazenamento, para novos arquivos ou para a extenso de arquivos existentes. Para auxiliar os usurios, a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretrios (folders). Tal procedimento permite ao usurio organizar seus arquivos de acordo com as respectivas finalidades, agrupando em cada mesmo diretrio arquivos referentes a um mesmo assunto. Alm disso, possvel criar uma organizao hierrquica, possibilitando que cada diretrio possa conter, por sua vez, subdiretrios. Uma seqncia de aninhamentos de nveis de diretrios denominada path ou caminho. Qualquer acesso a arquivos, por parte de algum mdulo de software, efetuado atravs do gerenciador de arquivos. O procedimento inicial consiste em solicitar ao gerenciador a autorizao para fazer acesso ao arquivo. Este procedimento conhecido como "abrir o arquivo". Se o gerenciador de arquivos aceitar o pedido, ele fornecer a informao necessria para encontrar e manipular tal arquivo. Tal informao mantida em uma rea da memria principal denominada descritor de arquivos. com base na informao contida nesse descritor de arquivo que operaes elementares individuais so executadas sobre o arquivo. Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que so os mdulos de software que executam a comunicao com os controladores promovendo nos dispositivos perifricos a execuo das operaes desejadas. Cada device driver, exclusivamente projetado para um dado tipo de dispositivo, converte solicitaes de alto nvel em comandos mais elementares, diretamente reconhecveis pelos controladores ou dispositivos associados quele device driver. Dessa maneira, os detalhes tcnicos associados aos dispositivos so confinados aos device drivers, ficando transparentes aos demais mdulos de software, seus usurios. Estes devem apenas enviar requisies de alto nvel aos device drivers e deixar a cargo destes a resoluo dos detalhes. Por exemplo, o driver para uma unidade de disco capaz de converter (com base na informao extrada do descritor de arquivo) um pedido de gravao de um trecho de arquivo em disco para uma seqncia de passos referenciando trilhas e setores, e transferir toda essa informao para o controlador apropriado. O controlador, por sua vez, se responsabiliza pelo posicionamento da cabea de leitura e gravao e pelo acompanhamento do processo. Em contraste, o driver para uma impressora efetua a converso de um pedido de impresso de um trecho de arquivo para um conjunto de operaes mais bsicas, envolvendo transferncias de caracteres, tipos de letras (fontes) e controles de impresso. De fato, os passos intermedirios necessrios variam, inclusive, de impressora para impressora. por isso que, quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente. Outro componente do kernel de um sistema operacional o gerenciador de memria, encarregado de coordenar o uso da memria principal. Em computadores monoprogramados, - 22 -

esta tarefa trivial, pois nestes casos o programa a executar alocado na memria principal, executado e, ento, substitudo pelo programa que executa a tarefa seguinte. Porm, em ambientes multiusurios, ou em ambientes multitarefa, nos quais a mquina se encarrega de vrias tarefas ao mesmo tempo, os deveres do gerenciador de memria so mais complexos. Nestes casos, muitos programas e blocos de dados devem coexistir na memria principal, cada qual em uma rea prpria, determinada pelo gerenciador de memria. Na medida das necessidades das diferentes atividades, o gerenciador de memria vai providenciando as reas necessrias, e mantendo um mapa das regies de memria no utilizadas. A tarefa do gerenciador de memria torna-se mais complexa quando a rea total de memria principal solicitada excede o espao realmente disponvel na mquina. Neste caso, o gerenciador de memria pode criar uma iluso de espao adicional alternando os programas e os dados entre a memria principal e o disco. Este espao ilusrio de memria chamado de memria virtual. Por exemplo, suponha que seja solicitada uma rea, na memria principal, de 64 MB, e que somente 32 MB estejam realmente disponveis. Para criar a iluso de um espao maior de memria, o gerenciador de memria divide a rea solicitada em partes chamadas pginas e armazena em disco o contedo destas pginas. medida que as diversas pginas forem sendo solicitadas, o gerenciador de memria pode armazen-las na memria fsica, em substituio a outras que j no sejam mais necessrias, de modo que as demais partes do software possam ser executadas, como se houvesse, de fato, 64 MB de memria principal. No kernel de um sistema operacional esto situados, tambm, o escalonador (scheduler) e o despachante (dispatcher) que sero estudados mais adiante.

Conceitos Bsicos:

Vimos como um sistema operacional se comunica com os usurios e como os seus componentes trabalham conjuntamente para coordenar a execuo de atividades dentro da mquina. Entretanto, ainda no analisamos como se inicia a execuo de um sistema operacional. Isto feito atravs de um procedimento conhecido como booting, executado pela mquina todas as vezes que esta ligada. Para compreender tal procedimento, deve-se, antes de tudo, compreender a razo de ser ele executado. Um processador projetado de forma tal que, todas as vezes que for ligado, o contedo do seu contador de instrues (PC) seja devidamente preenchido com um endereo predeterminado. nesse endereo que o processador encontra o programa a ser executado. Para assegurar que tal programa esteja sempre presente, a rea de memria , normalmente, projetada de tal modo que seu contedo seja permanente. Tal memria conhecida como memria ROM (Read-only memory). Uma vez que os padres de bits sejam instalados na ROM, o que se faz mediante um processo de gravao, tal informao se conserva indefinidamente, mesmo com o desligamento da mquina. No caso de computadores pequenos, como os utilizados como dispositivos em fornos de microondas, em sistemas de ignio de automveis e em receptores estreo de rdio, possvel implementar reas significativamente grandes da memria principal em tecnologia ROM, uma vez que, nestes casos, o objetivo principal no a flexibilidade, j que o programa a ser executado por tais dispositivos ser sempre o mesmo, todas as vezes que for acionado. Contudo, isto no ocorre em computadores de propsito geral, no sendo, pois, prtico transformar grandes reas de memria principal em ROM, nessas mquinas. De fato, em mquinas de propsito geral, a maior parte da memria voltil, o que significa que o seu contedo perdido sempre que a mquina for desligada.

- 23 -

Para ser possvel dar partida em uma mquina de propsito geral, a sua rea de memria ROM pr-programada com um pequeno programa chamado bootstrap, executado automaticamente toda vez que a mquina ligada. Ele faz o processador transferir o contedo de uma rea predeterminada do disco para uma regio voltil da memria principal (Figura 3.3). Na maioria dos casos, este material o sistema operacional. Uma vez transferido o sistema operacional para a memria principal, o bootstrap prepara o processador para execut-lo, e lhe transfere o controle da mquina. A partir de ento, todas as atividades da mquina passam a ser controladas pelo sistema operacional. 3) Coordenao das Atividades da Mquina Nesta seo, com base no conceito de processos, examinaremos como um sistema operacional coordena a execuo dos softwares de aplicao, dos utilitrios e dos diversos mdulos internos ao prprio sistema operacional.
Memria Principal ROM Programa bootstrap Armazenamento em disco

Memria Voltil (RAM)

Sistema Operacional

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

Memria Voltil (RAM)

Sistema Operacional

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

- 24 -

Conceito de Processo Um dos conceitos mais fundamentais dos sistemas operacionais modernos a distino entre um programa e a atividade de execut-lo. O programa apenas um conjunto esttico de comandos, enquanto sua execuo uma atividade dinmica, cujas propriedades mudam medida que o tempo avana. Esta atividade conhecida como processo. Um processo leva em conta a situao corrente da atividade, conhecida como estado do processo. Este estado inclui a posio do programa que est sendo correntemente executada (o valor do PC), bem como os valores contidos nos outros registradores do processador, e as posies associadas memria. Grosseiramente falando, o estado do processo fornece uma fotografia da situao da mquina num dado momento. Para enfatizar a distino entre um programa e um processo, note que um nico programa pode ser associado a mais de um processo em um mesmo instante. Por exemplo, em um sistema multiusurio, de tempo compartilhado, dois usurios podem, ao mesmo tempo, editar documentos separados. Ambas as atividades utilizam um mesmo programa editor de textos, mas cada qual caracteriza um processo separado, com seu prprio conjunto de dados. Nesta situao, o sistema operacional pode manter na memria principal uma s cpia do programa editor, e permitir que cada processo o utiliza sua maneira, durante a fatia de tempo que lhe couber. Em um computador de tempo compartilhado, natural ter vrios processos competindo pelas fatias de tempo. Estes processos englobam a execuo de programas aplicativos e utilitrios, bem como pores do sistema operacional. tarefa do sistema operacional coordenar todos estes processos. Essa atividade de coordenao inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifricos, rea na memria principal, acesso a dados e acesso ao processador), que processos independentes no interfiram uns com os outros, e que processos que se intercomunicam tenham a possibilidade de trocar informao entre si.

ADMINISTRAO DE PROCESSOS

As tarefas associdas coordenao de processos so manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional. Assim, o escalonador mantm um registro dos processos presentes no sistema computacional, inclui novos processos nesse conjunto, e remove processos que j completaram sua execuo. Para cuidar de todos os processos, o escalonador mantm, na memria principal, um conjunto de dados numa estrutura denominada tabela de processos. Cada vez que a mquina recebe uma nova tarefa, o escalonador cria para ela um processo, acrescentando uma nova linha tabela de processos. Esta linha contm diversos indicadores: a rea de memria designada para o processo (obtida por meio do gerenciador de memria), a prioridade do processo e um indicador de que o processo est pronto para ser executado ou espera de algum evento. Diz-se que um processo est pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir; o processo estar em estado de espera se seu progresso estiver sendo bloqueado at que seja registrada a ocorrncia de algum evento externo, tal como a concluso de um acesso ao disco ou recebimento de uma mensagem, enviada por algum outro processo. O escalonador mantm, ento, atualizada esta informao medida que o processo vai progredindo. O mais provvel que um dado processo ir alternar seu estado entre pronto para execuo e aguardando evento, sua prioridade ir variar ao longo de sua execuo e, certamente, o escalonador ir remov-lo da tabela de processos assim que suas atividades se completarem. O despachante o mdulo do kernel do sistema operacional cuja funo a de assegurar que os processos escalonados sejam de fatos executados. Em um sistema de tempo compartilhado esta tarefa realizada dividindo-se o tempo fsico em pequenas fatias, tipicamente - 25 -

inferior a 50 milissegundos, cada qual denominada quantum ou time slice. A "ateno" do processador revezada entre os processos, a cada qual concedido um intervalo de tempo no superior durao de um quantum (Figura 3.4). O procedimento de alternar o processador de um processo para outro denominado chaveamento de processos. Cada vez que um processo inicia o uso de sua fatia de tempo, o despachante dispara um circuito temporizador, encarregado de medir o prximo quantum. Ao trmino desse quantum, esse relgio gera um sinal denominado interrupo. O processador reage a este sinal de uma forma muito parecida quela pela qual algum reage quando interrompido durante a execuo de alguma tarefa: interrompe-se o que se estiver fazendo, registra-se o ponto da tarefa no qual se foi interrompido, e ento passa-se a cuidar do atendimento ao evento que provocou a interrupo. Quando o processador recebe uma interrupo, completa o seu ciclo corrente de execuo de instruo de mquina, quarda a posio em que se encontra e comea a executar um programa, chamado rotina de tratamento de interrupo, o qual deve ter sido depositado previamente em uma regio predeterminada da memria principal.

Interrupo

Processo B

Processo B

Chaveamento de processo

Processo A

Processo A

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

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

projeto das mquinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais. s vezes, a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador. Por exemplo, se um processo executar uma solicitao de entrada ou sada, por exemplo, solicitando dados de um disco, sua fatia de tempo ser "truncada" pelo sistema, uma vez que, de outra forma, tal processo desperdiar o tempo restante da fatia, aguardando que o controlador terminasse de executar a operao solicitada. Neste caso, o escalonador atualizar a tabela de processos, marcando o processo corrente como estando em estado de espera, e o despachante fornecer um novo quantum a outro processo que j esteja pronto para ser executado. Depois (talvez vrias centenas de milissegundos mais tarde), quando o controlador indicar que aquela operao de entrada ou sada foi completada, o escalonador reclassificar o processo como estando pronto para a execuo, habilitando-o assim a competir novamente por outra fatia de tempo. SISTEMA DE ARQUIVO. Todos ns sabemos que dados - sejam eles partes de programas ou dados propriamente dito, como um texto ou uma planilha - devem ser armazenados em um sistema de memria de massa, j que a memria (RAM) do micro apagada quando desligamos o computador. Memria de massa o nome genrico para qualquer dispositivo capaz de armazenar dados para uso posterior, onde inclumos disquetes, discos rgidos, CD-ROMs, ZIP drives e toda a parafernlia congnere.

Dados so armazenados em forma de arquivos e a maneira com que os arquivos so armazenados e manipulados dentro de um disco (ou melhor dizendo, dentro de um sistema de memria de massa) varia de acordo com o sistema operacional. Na maioria das vezes, um disco dividido em pequenas pores chamados setores. Dentro de cada setor cabem 512 bytes de informao. Multiplicando-se o nmero total de setores de um disco por 512 bytes, teremos a sua capacidade de armazenamento. No caso de um disco rgido, ele possui na verdade vrios discos dentro dele. Cada face de cada disco dividida em crculos concntricos chamados cilindros ou trilhas. Em cada trilha temos um determinado nmero de setores. claro que toda esta diviso invisvel, pois feita magneticamente. Para sabermos qual o nmero total de setores de um disco rgido, basta multiplicarmos sua geometria, ou seja, o seu nmero de cilindros, lados (parmetro tambm chamado de "cabeas") e setores por trilha. Um disco rgido que possua a geometria de 2448 cilindros, 16 cabeas e 63 setores por trilha, ter 2448 x 16 x 63 = 2.467.584 setores. Multiplicando-se o nmero total de setores por 512 bytes, teremos sua capacidade total, no caso 1.263.403.008 bytes. Importante notar que 1 KB no representa 1.000 bytes, mas sim 1.024, assim como 1 MB no representa 1.000.000 de bytes, mas sim 1.048.576. Muita gente arredonda e acaba errando nas contas. Lembre-se: 1 KB = 210, 1 MB = 220 e 1 GB = 230. No exemplo dado, o disco rgido seria de 1,18 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e no 1,26 GB como seria de se supor. O Sistema de Arquivos FAT-16 O sistema de arquivos utilizado pelo MS-DOS chama-se FAT-16. Neste sistema existe uma Tabela de Alocao de Arquivos (File Allocation Table, FAT) que na verdade um mapa de utilizao do disco. A FAT mapeia a utilizao do espao do disco, ou seja, graas a ela o sistema operacional capaz de saber onde exatamente no disco um determinado arquivo est armazenado. - 27 -

Existem vrias posies na FAT, sendo que cada posio aponta a uma rea do disco. Como cada posio na FAT-16 utiliza uma varivel de 16 bits, podemos ter, no mximo, 216 = 65.536 posies na FAT. Como em cada setor cabem apenas 512 bytes, conclumos que, teoricamente, poderamos ter discos somente de at 65.536 x 512 bytes = 33.554.432 bytes ou 32 MB. Por este motivo, o sistema FAT-16 no trabalha com setores, mas sim com unidades de alocao chamadas clusters, que so conjuntos de setores. Em vez de cada posio da FAT apontar a um setor, cada posio aponta para um cluster, que um conjunto de setores que poder representar 1, 2, 4 ou mais setores do disco. Tamanho do Cluster 2 KB 4 KB 8 KB 16 KB 32 KB Capacidade Mxima de Armazenamento 128 MB 256 MB 512 MB 1 GB 2 GB

O tamanho do cluster definido automaticamente pelo sistema operacional quando o disco formatado, seguindo a tabela. Um disco rgido de 630 MB utilizar clusters de 16 KB, enquanto um de 1,7 GB utilizar clusters de 32 KB. Como a menor unidade a ser acessada pelo sistema operacional ser o cluster, os arquivos devero ter, obrigatoriamente, tamanhos mltiplos do tamanho do cluster. Isto significa que um arquivo de 100 KB em um disco rgido que utilize clusters de 8 KB obrigatoriamente ocupar 13 clusters, ou 104 KB, pois este o valor mais prximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB. Neste caso, 4 KB sero desperdiados. Quanto maior o tamanho do cluster, maior o desperdcio. Se o mesmo arquivo de 100 KB for armazenado em um disco rgido que utilize clusters de 16 KB, ele obrigatoriamente utilizar 7 clusters, ou 112 KB. E, para o caso de um disco rgido com clusters de 32 KB, este mesmo arquivo ocupar 4 clusters, ou 128 KB. O desperdcio em disco um dos maiores problemas do sistema FAT, caracterstica que chamamos de slack space. Quando maior o tamanho do cluster, mais espao em disco desperdiado. Para saber qual o tamanho do cluster que est sendo utilizado em seu disco rgido, basta utilizar o comando CHKDSK, observando a linha "xxxxxx bytes em cada unidade de alocao", onde "xxxxx" o tamanho do cluster em bytes. Desse jeito vemos que o grande vilo do sistema FAT-16 o desperdcio em disco. H, contudo, outro grande problema: o sistema FAT-16 no reconhece diretamente discos maiores que 2 GB. Para que discos com mais de 2 GB possam ser utilizados, devemos particionlos, ou seja, dividi-los logicamente em outros - 28 -

menores que 2 GB. No caso de um disco rgido de 2,5 GB devemos obrigatoriamente dividi-lo em dois, podendo esta diviso ser, por exemplo, uma unidade de 2 GB e outra de cerca de 500 MB. FAT-32: A soluo definitiva? Junto com a ltima verso do Windows 95 (chamado Windows 95 OSR2), a Microsoft lanou um novo sistema de arquivos, denominado FAT-32. Este sistema estar presente tambm no sistema operacional Windows 98. Com o sistema FAT-32 o tamanho dos clusters sensivelmente menor, o que faz com que haja bem menos desperdcio. Este sistema permite, tambm, que discos rgidos de at 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente, sem a necessidade de particionamento.

O sistema FAT-32 apresenta, porm, uma srie de pequenos problemas: 1) Discos que utilizem o sistema FAT-32 no so "enxergados" por outros sistemas operacionais que no sejam o Windows 95 OSR2 ou superiores. At mesmo o Windows 95 tradicional (e tambm o MS-DOS) no acessa discos que estejam formatados com o sistema FAT-32. 2) Utilitrios de manuteno de disco rgido mais antigos tambm no acessam discos formatados em FAT-32, como, por exemplo, o Norton Utilities (As verses atuais j reconhecem discos em FAT-32). 3) No mais rpido. No geral cerca de 6% mais lento que o sistema FAT-16. Quanto mais clusters o disco rgido tiver e quanto menor eles forem, mais lento ser o sistema de armazenamento de dados. HPFS e NTFS: As verdadeiras solues! A verdadeira soluo para o problema de desperdcio em disco a utilizao de um outro sistema de arquivos que no o FAT. O sistema operacional OS/2, por exemplo, possua um excelente sistema de arquivos denominado HPFS (High Performance File System). O sistema operacional Windows NT (e tambm o Windows 2000 e Windows XP) tambm possui o seu prprio (e tambm excelente) sistema de arquivos, denominado NTFS (New Technology File System). No caso do OS/2 e do Windows NT, na hora de sua instalao o usurio pode optar em utilizar o sistema FAT-16 ou ento o HPFS/NTFS. A vantagem destes sistemas de arquivo que no h desperdcio em disco, pois no h clusters: a menor unidade de alocao o prprio setor de 512 bytes. A desvantagem bvia destes sistemas de arquivos: s podem ser utilizados em conjunto com os seus sistemas operacionais. Ou seja, no h como instalar o HPFS no Windows 95, MSDOS, etc... Outra desvantagem: assim como o sistema FAT-32, no so "enxergados" por outros sistemas operacionais diretamente (h, contudo, alguns "macetes" que permitem com que esta limitao seja transposta). - 29 -

Captulo 4 Introduo ao Linux


Linux um Sistema Operacional baseado em UNIX assim como o AIX da IBM, Solaris, SunOS, BSD e outros. Os direitos autorais pertencem a Linus Torvalds (Linux = Linus + Unix) e outros colaboradores e pode ser livremente distribudo sob os termos da GNU (General Public License GPL). Essa licena preserva os direitos autorais do software, mas assegura a distribuio dos programas com cdigo-fonte. Linux em si apenas o Kernel (Ncleo) do sistema operacional, a parte que controla o hardware, gerencia arquivos, separa processos, etc. Existem diversas combinaes de Linux com vrios utilitrios e aplicativos de modo a formar um sistema operacional completo. Cada uma dessas combinaes chamada de distribuio.

DISTRIBUIES
Distribuies so empresas que pegam o Linux e adicionam facilidades ou recursos, juntam com aplicativos e utilitrios desenvolvidos tambm por outras empresas e colocam seus CDs disposio dos interessados, juntamente com suportes manuais etc. Dentre as principais distribuies, podemos citar: _ Caldera, Conectiva, Corel, Debian, Mandrake, Redhat, Slackware, Suse, Tech Linux, Turbo Linux, Ubuntu Linux, Mandriva, etc.

Caractersticas
Free Software tem todo seu cdigo fonte(incluindo o Kernel, drivers, bibliotecas, etc.) aberto para qualquer um. Alm de ser um software livre o Linux possui outras caractersticas como: _ Modularidade O UNIX o nico em seu desenho modular, que permite usurios adicionar ou remover partes para adapt-lo as suas necessidades especficas. _ Multitasking (Capacidade de Multitarefa) A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente. _ Multiuser (Multiusurio) Um sistema multiusurio permite que vrios usurios utilizem o computador simultaneamente. _ Portabilidade A portabilidade a possibilidade dos softwares que operam em uma mquina operarem em uma outra diferente.

- 30 -

_ Multiprocessamento O UNIX foi aprimorado para trabalhar em mquinas de grande porte, suportando assim a utilizao de vrios processadores em um nico computador, e com a possibilidade de compartilhamento do processamento entre vrios usurios ao mesmo tempo.

Estrutura Organizacional
A estrutura organizacional pode ser divida em 4 partes principais: _ Kernel, Shell, processos e estrutura de arquivos. Kernel a base do Sistema Operacional, suporta os programas dos usurios e programas utilitrios como compiladores, linkers, sistemas de controle, cdigo fonte, etc. e implementa as seguintes funes: Escalonamento de processos; Gerenciamento de memria; Gerenciamento de dispositivos; Gerenciamento de arquivos; Interface de chamada do sistema; Interface de controle do operador.

VERSES DO KERNEL
Conveno para distinguir as verses estveis das no estveis: Verso v.x.y, onde: v nmero da verso. x nmero par verso estvel nmero impar verso no estvel (verses para beta teste caractersticas novas sendo acrescentada todo o tempo) y correes de bugs nenhuma caracterstica nova implementada. De tempos em tempos o Kernel apresenta-se como uma performance confivel passando a ser denominado como uma Kernel estvel. O desenvolvimento continua em uma nova verso do Kernel. Kernel mudado conforme novos devices e/ou drivers so adicionados e erros so corrigidos. Shell Shell o programa que conecta e interpreta os comandos digitados por um usurio. Ele o mediador entre o usurio e o sistema LINUX usado para interpretar os comandos. Esse programa l os comandos digitados pelo usurio e os executa utilizando os servios e/ou outros programas do sistema operacional.

- 31 -

Usurio solicita comando

Resultado do comando

Shell executa

Figura 1: Interao Usurio - Shell Dentre os Shells mais conhecidos pode-se citar: sh Bash ksh csh rsh Rsh Bourne Shell o mais tradicional(prompt $); Bourne Again Shell Shell padro do Linux; Korn Shell muito utilizado atualmente; C Shell considerado o mais poderoso largamente utilizado(prompt %); Remote Shell Shell remoto; Restricted Shell verso restrita do sh

Processos
Um processo um simples programa que est rodando em seu espao de endereamento virtual prprio. Os processos so executados em background ou foreground e podem ser divididos em trs grupos principais: _ Interativos, Batch e Deamons.

TIPOS DE PROCESSOS
Processos interativos so iniciados a partir de, e controlados por uma sesso terminal. Processos batch, ou em lote, no so associados a nenhum terminal. Ao invs disso so submetidos a uma fila, da qual jobs so executados seqencialmente. Deamons so processos servidores, inicialmente iniciados durante o boot, que rodam continuamente enquanto o sistema estiver ativo, esperando, em background, at que um processo requisite seus servios.

ATRIBUTOS

- 32 -

Process ID (PID) Parent Process ID (PPID) TTY UID real e efetiva (RUID, EUID) GID real e efetiva (RGID, EGID)

Process ID, PID um nmero que identifica unicamente esse processo e usado para referir-se a ele. Parent Process ID, PID o processo pai do processo, ou seja, o processo que o criou. TTY o dispositivo de terminal associado com o processo. UID real de um processo o UID do usurio que o criou. O UID efetivo, o UID que utilizado para determinar o acesso do processo a recursos do sistema. Usualmente, RUID e EUID so os mesmos e o processo tem os mesmos acessos que o usurio que os disparou. GID real e efetivo de um processo o grupo primrio ou corrente do usurio.

Estrutura de Arquivos
Arquivos so centrais para o UNIX de uma maneira no encontrada em outros sistemas operacionais. O UNIX tem uma organizao de diretrios hierrquica em forma de rvore conhecida como filesystem. A base desta rvore um diretrio chamado root directory. Em sistemas UNIX, todo espao em disco disponvel combinado em uma nica rvore de diretrios abaixo do / (root). O acesso a arquivos organizado atravs de propriedades e protees. Toda segurana do sistema depende, em grande parte, da combinao entre a propriedade e protees setadas em seus arquivos e suas contas de usurios e grupos. Resumindo: Tudo em UNIX um arquivo; O UNIX tem uma organizao de diretrios hierrquica chamada filesystem; O acesso a arquivos organizado atravs de propriedades e protees.

Tipos de arquivos
Existem trs tipos de arquivos no UNIX: Arquivos Ordinrios (ou arquivos comuns): So arquivos que contm dados binrios ou caracteres ASCII. Consiste de uma string de bytes de dados. Por exemplo, um arquivo criado atravs de um editor de texto um arquivo do tipo ordinrio. Uma subclasse de arquivos ordinrios so os arquivos hidden (oculto). O nome dos arquivos hidden comeam sempre com um ponto (.profile, .kshrc) e possuem funes especiais. Esses arquivos recebem a denominao de hidden porque normalmente no podem ser vistos em uma consulta a um diretrio. Arquivos Diretrios So responsveis pela manuteno da estrutura hierrquica do sistema de arquivos. As informaes so armazenadas em arquivos ordinrios, estes so agrupados em diretrios, que por sua vez tambm so agrupados em outros diretrios. - 33 -

Todo diretrio contm os nomes de arquivos "." e ".." , que correspondem respectivamente ao prprio diretrio e ao seu diretrio pai. Todo usurio possui um diretrio default (home directory), e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretrio. Arquivos Especiais O UNIX trata todos os dispositivos fsicos do sistema como arquivos especiais. Cada dispositivo, como terminais, unidades de fita, disco e impressoras, possui um arquivo especial associado ele. Estes arquivos residem no diretrio /dev, e no referenciam dados, eles possuem especificaes sobre o tipo de dispositivo, como terminal ou impressora, e suas caractersticas, como configurao, densidade de gravao, etc. Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinrios. Obs: O nome do arquivo pode possuir at 255 caracteres, em sistemas BSD, ou at 14 caracteres, em sistemas System V. Alguns caracteres no devem ser usados por possurem significado especial para o UNIX, so eles: "/", "*", "?", "[", "]", ">", "<", "-", "$", "'","""", "&", "!" e \. Para quem est acostumado com o DOS, notar algumas diferenas como os nomes de arquivos, que no DOS tem apenas 8 caracteres de nome e 3 de extenso. No UNIX no tem limite podendo ter vrias extenses. Os arquivos no UNIX no possuem extenses, porm podemos incluir um ponto seguido de uma extenso no nome de qualquer arquivo, embora esta extenso no possua nenhum significado especial para os comandos UNIX. EX: relatrio.txt.zip.tar Hierarquia de arquivos Como foi dito anteriormente os arquivos diretrios so organizados hierarquicamente em forma de rvore em que a base chamada de root. Esta rvore pode ser facilmente observada na figura 2. Estrutura hierrquica

Figura 2: Estrutura Hierrquica


/ HOME FTP JO O ANA B IN ANDRA S B IN ETC DEV B IN MNT MAN USR LO CAL TM P L IB L IB VAR PROC

- 34 -

Diretrio / /bin /boot /dev /etc /home /lib /mnt /proc /root /sbin /tmp /usr

Descrio dos arquivos que esto nesse diretrio. Diretrio raiz do sistema de arquivos. abaixo dele que se situam todos os outros. Arquivos executveis de comandos essenciais. Arquivos estticos necessrios inicializao do sistema. Arquivos de dispositivos (drives) do sistema. Arquivos de configurao do sistema. Lugar onde ficam os diretrios locais(diretrios pessoais) dos usurios. Arquivos de bibliotecas essenciais ao sistema, utilizados pelos programas em /bin. Usualmente o ponto de montagem de dispositivos(drives) na mquina. Informaes do kernel e dos processos. Diretrio local do superusurio. Arquivos essenciais (comandos especiais) ao sistema. Normalmente s o superusurio tem acesso a estes arquivos. Diretrio de arquivos temporrios. Arquivos pertencentes aos usurios. ( a segunda maior hierarquia de diretrios presente no Linux, s perdendo para o diretrio raiz).

Tabela 1: Estrutura de Diretrios do Linux

Conexo e Desconexo com o Sistema

SHELL /etc/passwd

TRAINING INFORMTICA

TRAINING INFORMTICA

login: password:

<RETURN> <RETURN>

login: password:

<RETURN> <RETURN>

Figura 2: Conexo com o sistema Conexo com o sistema Para nos conectarmos ao sistema necessitamos de uma identificao de usurio (login) e uma senha (password) de acesso, como mostra a figura acima. Caso ocorra algum erro na digitao do login ou da password, o sistema responde com a mensagem 'login incorrect' e proporciona uma nova oportunidade ao usurio de se conectar. Havendo sucesso o shell apresenta um prompt, indicando que est pronto para receber comandos do usurio. O prompt apresentado depende do shell que se est utilizando, no Bourne Shell e Korn Shell o prompt o caracter "$" enquanto no C Shell o caracter "%", sendo que para o usurio root o prompt apresentado ser sempre o caracter #. As mensagens que so enviadas ao usurio durante a conexo com o sistema variam de instalao para instalao. Normalmente incluem a data e hora da ultima conexo do usurio ao sistema. - 35 -

Desconexo do sistema A desconexo do sistema feita atravs do comando logout, ou ainda digitando-se as teclas [Ctrl+D]. Existe tambm a opo de executar o comando exit. Ateno: O sistema operacional UNIX case sensitive, ou seja, faz distino entre letras maisculas e minsculas, tratando-as como caracteres diferentes.

Criao e excluso de usurios e grupos


Uma conta de usurio um conjunto de nome de acesso mais uma senha que possibilitam que o usurio acesse a sua rea do sistema. Sendo assim, uma mesma pessoa pode possuir vrias contas, basta que sejam criadas com nomes de acesso diferentes. Basicamente, existem dois tipos de contas: a conta do usurio comum, que utiliza o sistema e suas ferramentas, e a conta de superusurio ou conta de root, onde possvel realizar as configuraes do sistema. A senha de root muito importante, pois algumas configuraes s so possveis tendo a mesma em mos. Um grupo basicamente um conjunto de usurios. Geralmente ele criado quando se cria o usurio. Mas tambm podemos cri-lo quando queremos que os usurios tenham permisso restrita a arquivos em comum. Existem vrias formas de criar e manter usurios em um sistema. Uma destas formas atravs da linha de comando. O comando utilizado para criar uma nova conta de usurio o comando useradd (ou adduser). Portanto, para criar uma conta com o nome de acesso roberto como no exemplo, basta digitar o comando (como superusurio): # useradd roberto E para criar uma senha, basta utilizar o comando passwd. A senha pode conter qualquer caractere e desejvel que ela tenha no mnimo 6 caracteres. # passwd roberto Changing password for user roberto New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully # Com isto, a nova conta estar criada. Uma linha ser includa no arquivo /etc/passwd com os dados do novo usurio, incluindo o seu diretrio de trabalho (/home/roberto), sendo colocado o / bin/bash como o interpretador de comandos padro, entre outros dados. Do mesmo modo, para remover contas de usurios basta digitar o comando: # userdel -r usuario Todos os dados do usurio sero apagados do arquivo /etc/passwd, e o diretrio de trabalho do usurio ser apagado. Atravs do modo texto o comando groupadd cria um novo grupo. Para remover um grupo basta executar o comando groupdel. Existem dois modos de incluir usurios em um grupo pelo modo texto: atravs do comando usermod ou diretamente no arquivo /etc/group. Vejamos primeiramente como incluir usurios em um grupo editando diretamente o arquivo: - 36 -

superteste:x:504:teste,roberto Note, portanto, que os usurios teste e roberto foram includos no grupo superteste. Para incluir mais usurios basta incluir uma vrgula no fim da linha e o nome do usurio a seguir. Vejamos agora o mesmo exemplo, utilizando o comando usermod: # usermod -G superteste teste # usermod -G superteste roberto O comando usermod inclui apenas um usurio por comando. possvel colocar vrios grupos, mas deve-se tomar cuidado pois isto apaga a configurao anterior.

Comandos
Assim como outros Sistemas Operacionais, o UNIX/Linux necessita de comandos para ser utilizado em modo texto. Neste curso voc aprender alguns comandos bsicos e algumas comparaes para usurios do DOS. Os comandos estudados sero os seguintes: cat ______________________________________________________________________ chmod ___________________________________________________________________ chown ___________________________________________________________________ chgrp ____________________________________________________________________ cp _______________________________________________________________________ kill ______________________________________________________________________ man _____________________________________________________________________ mkdir ____________________________________________________________________ more _____________________________________________________________________ less ______________________________________________________________________ mv ______________________________________________________________________ passwd ___________________________________________________________________ ps _______________________________________________________________________ pwd _____________________________________________________________________ rmdir ____________________________________________________________________ rm ______________________________________________________________________ - 37 -

clear _____________________________________________________________________ who _____________________________________________________________________ whoami __________________________________________________________________ cd _______________________________________________________________________ find _____________________________________________________________________ ls _______________________________________________________________________ date _____________________________________________________________________ login _____________________________________________________________________ logout ____________________________________________________________________ exit ______________________________________________________________________ vi _______________________________________________________________________ su _______________________________________________________________________

Formato Padro de uma Linha de Comando

$whoami aluno $WHOAMI WHOAMI: Command not found

Figura 3: Utilizao correta de comandos Como j foi dito anteriormente, o UNIX faz distino entre letras maisculas e minsculas. A maioria dos comandos deve ser escrita com letras minsculas, caso contrrio o Shell no os interpretar corretamente. Esta distino tambm vlida para nomes de arquivos, ou seja, os nomes carta.txt e CARTA.TXT so considerados arquivos diferentes. Os comandos UNIX no podem ser abreviados, e o formato padro de uma linha de comando o seguinte: comando [- opo...] [argumento...] - 38 -

A opo, ou opes, so letras que redefinem ou modificam a ao do comando, enquanto que o argumento, ou argumentos, so os objetos que sofrero a ao do comando. Os nomes dos argumentos devem ser separados por espaos em branco, no podendo ser utilizada a vrgula. Podemos porm digitar mais de um comando em uma nica linha, desde que sejam separados por ponto e vrgula (;).

Comparao DOS x LINUX


Tabela simplificada de correspondncia DOS - LINUX Comando do DOS Correspondente no LINUX ATTRIB chmod CD cd CLS clear COMP diff COPY cp DATE date DEL rm DELTREE rm rf DIR ls ECHO echo EDIT vi EDLIN ed HELP man MD mkdir MORE more MOVE mv PRINT lp, lpr RD rmdir REN mv SORT sort TIME date TYPE cat VER uname a XCOPY cp r Tabela 2: Correspondncia DOS - LINUX Obs: Esta tabela mostra uma correspondncia entre alguns comandos do DOS e os comandos do UNIX e no uma equivalncia. Os comandos do UNIX so, em geral, mais complexos e poderosos do que os correspondentes no DOS.

Redirecionamento, filtros e pipes


REDIRECIONAMENTO
Normalmente, quando um comando executado, a sada direcionada para a tela do terminal e a entrada direcionada do teclado. Em vrias situaes, se faz necessrio redirecionar a entrada e/ou sada de um comando. O UNIX permite faz-lo de maneira simples e elegante, utilizando smbolos de redirecionamento de entrada e sada: - 39 -

Descrio Redireciona a sada. Caso o arquivo j exista, seu contedo sobreposto, caso contrrio o arquivo criado. >> Redireciona a sada. Caso o arquivo j exista, seu contedo no sobreposto, mas sim inserido no final do arquivo. < Redireciona a entrada. 2> Redireciona a sada de mensagens de erros. Tabela 3: smbolos de Redirecionamento Exemplos: $ ls -l > diretor.lis $ cat diretor.lis $ Redireciona a sada do comando ls da tela para o arquivo diretor.lis. $ ls -l >> diretor.lis $ cat diretor.lis $ Redireciona a sada do comando ls da tela para o final do arquivo diretor.lis. $ cat < arq.txt $ Redireciona a entrada do comando cat do teclado para o arquivo arq.txt. $ date > arq.lis 2> arq.err $ Redireciona a sada do comando date para o arquivo arq.lis e redireciona qualquer mensagem de erro para arquivo arq.err. Filtros Filtros so comandos ou utilitrios que manipulam dados de entrada e geram uma nova sada. A seguir apresentamos os principais filtros: Sort: O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de sada. Exemplo: $ cat alunos.txt Francis - 40 -

Smbolo >

LP Bessa $ sort -o alunos.ord alunos.txt $ cat alunos.ord Bessa Francis LP $ Grep: O comando grep (global regular expression printer) procura todas as ocorrncias de um determinado padro (string) em um ou mais arquivos de entrada. A sada do comando uma lista das linhas a onde o padro foi encontrado. Exemplo: $ cat arq.txt amo amor amora amoroso clamor namoro ramo $ grep 'moro' arq.txt amoroso namoro $ Pipes Suponha que voc queira utilizar a sada de um comando como entrada de um segundo comando. Uma maneira criar um arquivo temporrio para armazenar a sada do primeiro comando, utilizar o mesmo arquivo como entrada no comando seguinte e, posteriormente, eliminar o arquivo temporrio. Exemplo: $ who > temp.txt $ wc -l < temp.txt 10 $ rm temp.txt $ O comando who, que lista todos os usurios conectados ao sistema, cria o arquivo temporrio temp.txt. O comando wc -l, que conta o nmero de linhas do arquivo, utiliza o mesmo arquivo temporrio para informar quantos usurios esto conectados ao sistema. - 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples, utilizando o conceito de pipeline. Atravs da barra vertical ( | ), ou pipe, a sada de um comando pode ser direcionada para entrada de um outro comando sem a utilizao de arquivos temporrios. A idia do pipeline pode ser comparada a uma linha de montagem, onde uma linha de produo fornece insumos para outra linha, sucessivamente.

Comando 1

Comando 2

Comando 3

.......

Exemplos: $ who | wc -l 10 $ ls -l | grep '\.txt$' | sort | lpr O comando ls gera uma listagem completa dos arquivos e subdiretrios do diretrio de trabalho. O comando grep seleciona os arquivos que terminam com '.txt', a partir da sada comando ls. O comando sort ordena os arquivos selecionados pelo grep. Finalmente a lista dos arquivos impressa atravs do comando lpr. $ ls -l | sort +4n | grep '\.c$' O comando ls gera uma listagem completa dos arquivos e subdiretrios de trabalho. O comando sort ordena a sada em funo do tamanho de cada arquivo (+4n). O comando pega a sada ordenada e seleciona apenas aqueles que terminem com '.c'. $ ls -l | sort +8 | grep '^d' O comando exibe uma lista de subdiretrios ordenados crescentemente. $ who | sort | tee usuarios.txt | wc -l O comando tee permite recuperar resultados intermedirios de pipes, permitindo, inclusive, armazenar a sada de um pipe em um arquivo.
Montando e Desmontando Dispositivos

Muitos usurios, ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que j usam o Linux, sentem-se incentivados a experimentarem o sistema. A grande maioria j tem o sistema operacional Windows instalado e decide compartilhar o computador tambm com o Linux. Mas quase sempre, o usurio necessita acessar arquivos presentes na partio do Windows. Isso perfeitamente possvel, atravs de um processo conhecido como montagem da partio. Algumas distribuies Linux montam as parties Windows automaticamente, mas em outras, necessrio que o usurio faa isso manualmente. Esse processo simples e ser - 42 -

explicado aqui. Os procedimentos a seguir devem ser executados como usurio root ou outro que tenha permisses de administrador. Discos O primeiro passo saber como identificar os discos (HD, CD-ROM, disquete) no Linux. Tais dispositivos, alm de outros (como a porta LPT1) so tidas como existentes no diretrio /dev/. O HD identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante). O nmero 0, indica a partio no HD. Com isso, a segunda partio deve ser identificada como hda1, a terceira como hda2, enfim. No caso de HDs SCSI, as letras hd devem ser trocadas por sd, ficando da seguinte forma: sda0, sda1, sda2, etc. No caso do drive de disquete, a sigla para sua identificao fd0. Se houver outro drive, este deve ser identificado como fd1. No caso dos CD-ROMS, eles so identificados como HDs. Assim, se por exemplo, em seu computador h um HD e um CD-ROM, o HD poder ser reconhecido como hda e o CD como hdb. Montando a partio Agora que j se sabe o que so e como funcionam os dispositivos no Linux, sero estudados os comandos mount e umount, que so os responsveis pela montagem dos dispositivos. Mas, antes de montar qualquer dispositivo, preciso saber quais dispositivos esto ligados a ele. Primeiramente, os arquivos que mapeiam dispositivos esto no diretrio /dev da estrutura de diretrios de seu Linux. Sero mostrados a seguir os dispositivos que so mais freqentemente utilizados para montagem. Veja na Tabela 4. Perifricos os dispositivos mais usados no cotidiano, com seus respectivos perifricos.

Arquivo Mapeia qual perifrico hda hdaX hdb hdbX fd0 fd1 cdrom Primeiro disco rgido instalado na mquina (master). A partio X do primeiro disco rgido instalado. hda1 mapeia a primeira partio do disco. O segundo disco rgido/CD-ROM instalado na mquina (slave). A partio X do primeiro disco rgido instalado. hdb1 mapeia a primeira partio do disco. O primeiro drive de disquete. O segundo drive de disquete. O drive de CD-ROM instalado na mquina (caso exista).

Tabela 4: Perifricos Vale aqui uma lembrana: em hd?X, o item X pode variar de acordo com o nmero de parties existentes no disco rgido e ? pode variar de acordo com o nmero de discos rgidos instalados na mquina. - 43 -

Para a partio Windows, voc deve saber qual das existentes ela. Em nosso exemplo, vamos supr que o Windows est na partio hda0 e o Linux na partio hda1. Tendo cincia disso, agora necessrio que voc crie um diretrio no Linux por onde a partio Windows dever ser acessada, ou seja, o ponto de montagem. Geralmente, este diretrio criado dentro da pasta /mnt/ mas pode ser criado em outro. Para o nosso exemplo, vamos chamar este diretrio de win. Assim, seu caminho /mnt/win. O prximo passo comando de montagem: mount - t [tipo] [caminho da partio] [ponto de montagem] Em nosso exemplo, o comando acima ficaria assim: mount -t vfat /dev/hda0 /mnt/win O tipo indica o sistema de arquivos utilizados na partio. Parties fat e fa32 so identificados como vfat. No caso de CD-ROM, o tipo deve ser especificado como iso9660. Por exemplo: mount -t iso9660 /dev/hdb /mnt/cdrom. As parties NTFS podem, teriocamente, serem montadas do mesmo jeito. No entanto, existem problemas de compatibilidade entre o kernel do Linux e o sistema de arquivos NTFS, motivo pelo qual, a montagem desse tipo de partio deve seguir procedimentos especiais, que no sero explicadas aqui. Se a partio que voc deseja montar for ext2 ou ext3, basta especificar estes nomes como tipo. No exemplo a seguir, ser demonstrado o procedimento para a montagem de um disquete formatado para Windows: # mount -t vfat /dev/fd0 /mnt/floppy Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em /dev/fd0, que do tipo vfat, disponibilizando-o no diretrio /mnt/floppy. Caso haja algum arquivo no diretrio onde foi montado o disquete (ou outro sistema de arquivos), esse contedo ficar indisponvel enquanto o sistema de arquivos estiver montado. O diretrio /mnt/floppy referenciar o diretrio raiz ("/") do sistema de arquivos montado. Existem vrios tipos de dispositivos que podem ser montados. Na Tabela 5. Tipos de sistema de arquivos constam os tipos mais utilizados.

Tipo Descrio vfat ext2 ext3 Disquete formatado para Windows. Disquete formatado para Linux. Disquete formatado para Linux.

iso966 CD-ROM. 0 Tabela 5: Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente, ou melhor, na hora do boot na mquina, voc deve editar o arquivo /etc/fstab, onde dever acrescentar uma nova linha, indicando a montagem do dispositivo. Esta opo interessante para HDs com mais de uma partio.

Nota

importante no remover um dispositivo (fsico), como um disquete de seu drive, enquanto ele permanecer montado. Existem operaes que so efetuadas quando um dispositivo desmontado. Uma delas a gravao de dados que possam estar no buffer de armazenamento, esperando ser gravados. Depois que um sistema de arquivos montado, pode-se utiliz-lo normalmente. Ao final da utilizao do sistema de arquivos, deve-se desmont-lo para que se possa, por exemplo, remover o CD do drive. Para isso utilizado o comando umount, que desmonta o sistema de arquivos. A sintaxe do comando umount : umount dispositivo ou ento: umount diretrio Normalmente, apenas o superusurio poder montar e desmontar um sistema de arquivos. Existe uma maneira simples para que o usurio comum acesse o disquete. So os comandos do pacote mtools. O mtools uma coleo de ferramentas que permite ao Linux manipular arquivos MSDOS. Sempre que possvel o comando tenta simular o comando equivalente a esse sistema. Por exemplo, comandos como mdir a: funcionam na unidade de disquetes a: sem qualquer montagem ou inicializao prvia[46]. Alguns comandos do pacote mtools so: mattrib, mbadblocks, mcd, mcopy, mdel, mdeltree, mdir, mdu, mformat, mkmanifest, mlabel, mmd, mmount, mmove, mrd, mread, mren, mtoolstest e mtype. Para utiliz-los, basta digitar o comando desejado em um terminal como no exemplo abaixo: $ mdir

Pacotes RPM
O sistema operacional Linux, at hoje, tem a fama de ter instalaes complicadas, o que, muitas vezes, no deixa de ser verdade. Na tentativa de resolver esses problemas de instalao, A empresa Red Hat criou uma tecnologia chamada RPM, que significa RedHat Package Manager (Gerenciador de Pacotes RedHat). O RPM um poderoso gerenciador de pacotes, que pode ser usado para criar, instalar, desinstalar, pesquisar, verificar e atualizar pacotes individuais de software. Um pacote consiste em armazenagem de arquivos e informaes, incluindo nome, verso e descrio. Veja a seguir, alguns comandos e suas respectivas funes, usadas nos pacotes RPM: rpm -ivh - Instalao de pacotes; rpm -Uvh - Atualizao de pacotes; rpm -qi - Informaes sobre o pacote; - 45 -

rpm -ql - Lista os arquivos do pacote; rpm -e - Desinstala o pacote; rpm -qa - Lista os pacotes instalados;

Utilizando o RPM O RPM tem 5 modos bsicos de operao, excluindo-se o modo de confeco de pacotes: instalao, desinstalao, atualizao, consulta e verificao. Voc pode obter mais informaes usando rpm --help ou man rpm. Vejamos cada modo: Instalao Pacotes RPM tm nomes de arquivos tais como foo-1.0-1/.i386.rpm, que incluem o nome do pacote (foo), verso (1.0), release (1) e plataforma (i386). A instalao de um pacote feita atravs de uma linha de comando, como por exemplo: $ rpm -ivh foo-1.0-1.i386.rpm foo ################################ Como se pode observar, o RPM apresenta o nome do pacote e apresenta uma sucesso de caracteres # atuando como uma rgua de progresso do processo de instalao. O processo de instalao foi desenvolvido para ser o mais simples possvel, porm eventualmente alguns erros podem acorrer: - Pacotes j instalados Se o pacote j tiver sido instalado anteriormente ser apresentada a seguinte mensagem: $ rpm -ivh foo-1.0-1.i386.rpm foo package foo-1.0-1 is already installed error: foo-1.0-1.i386.rpm cannot be installed Caso se deseje ignorar o erro, pode-se usar o parmetro --replacefiles na linha de comando; - Dependncias no resolvidas Pacotes RPM podem depender da instalao de outros pacotes, o que significa que eles necessitam destes pacotes para poderem ser executados adequadamente. Caso deseje instalar um pacote que dependa de outro pacote no localizado, ser apresentada a seguinte mensagem: $ rpm -ivh bar-1.0-1.i386.rpm failed dependencies: foo is needed by bar-1.0-1 Para corrigir este erro, ser necessrio instalar o pacote solicitado. Caso deseje que a instalao ocorra de qualquer forma, pode-se utilizar o parmetro --nodeps na linha de comando. Desinstalao Para desinstalar um pacote utilize o comando: $ rpm -e foo Onde foo o nome do pacote. Pode ser encontrado um erro de dependncia durante o processo de desinstalao de um pacote ( outro pacote necessita de sua existncia para funcionar corretamente). Neste caso ser apresentada a seguinte mensagem: $ rpm -e foo removing these package would break dependencies: foo is needed by bar-1.0-1 - 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o parmetro --nodeps na linha de comando. Atualizao Para atualizar um pacote utilize o comando: $ rpm -Uvh foo-2.0-1.i386.rpm foo ######################################## O RPM desinstalar qualquer verso anterior do pacote e far a nova instalao preservando as configuraes. Sugerimos utilizar sempre a opo -U, j que ela funciona perfeitamente, mesmo quando no h uma verso anterior do pacote. Uma vez que o RPM executa um processo de atualizao inteligente, apresentada uma mensagem do tipo: saving /etc/foo.conf as /etc/foo.conf.rpmsave O que significa que os arquivos de configurao existentes esto salvos, porm mudanas no software podem tornar este arquivo de configurao incompatvel com o pacote. Neste caso, as adequaes necessrias devem ser feitas pelo usurio. Como o processo de atualizao uma combinao dos processos de desinstalao e instalao, alguns erros podem ocorrer. Por exemplo, quando se quer atualizar um pacote com uma verso anterior verso corrente, ser apresentada a seguinte mensagem: # rpm -Uvh foo-1.0-1.i386.rpm foo package foo-2.0-1 (which is never) is already installed error: foo-1.0-1.i386.rpm cannot be installed Para forar uma atualizao de qualquer forma, deve-se usar o parmetro --oldpackage na linha de comando. Consulta A consulta base de dados de pacotes instalados feita atravs do comando rpm -q. Na sua utilizao, so apresentados o nome do pacote, verso e release. Por exemplo: $ rpm -q foo foo-2.0-1 Ao invs de especificar o nome do pacote, pode-se utilizar as seguintes opes aps o parmetro q: a - Consulta todos os pacotes instalados; f <file> - Consulta o pacote que contm o arquivo <file>; F - Funciona como o parmetro -f, exceto que funciona a partir do stdin (entrada padro), como por exemplo find /usr/bin | rpm -qF; p <arquivo do pacote> - Consulta o pacote originado pelo <arquivo do pacote>; P - Funciona como o parmetro -p, exceto que funciona a partir do stdin (entrada padro), como por exemplo find /mnt/cdrom/RedHat/RPMS | rpm -qP. H diversas formas de especificar que informaes devem ser apresentadas pelas consultas. As opes de seleo so: i - Apresenta as informaes do pacote, tais como nome, descrio, release, tamanho, data de criao, data de instalao e outras; l - Apresenta a lista de arquivos relacionados com o pacote; s - Apresenta o status dos arquivos do pacote. H dois estados possveis: normal ou missing (no localizado); d - Apresenta uma lista dos arquivos de documentao (pginas de manual, pginas info, README, etc.); c - Apresenta uma lista dos arquivos de configurao. Estes arquivos podem ser alterados aps a instalao para personalizao. Exemplos sendmail.cf, passwd, inittab, etc. - 47 -

Verificao A verificao de um pacote provoca a comparao dos arquivos instalados de um pacote com as informaes localizadas nas bases de dados do RPM. Entre outras coisas a verificao compara o tamanho, MD5 sum, permisses, tipo, dono e grupo de cada arquivo. Para verificar um pacote deve-se utilizar o comando: rpm -V <nome do pacote Pode-se usar as mesmas opes disponveis no processo de consultas. Exemplos: Para verificar um pacote que contenha um arquivo em especial: rpm -Vf /bin/vi Para verificar todos os pacotes instalados: rpm -Va Para verificar um pacote instalado e o arquivo de pacote RPM: rpm -Vp foo-1.0-1.i386.rpm

Permisses
Cada arquivo no UNIX apresenta trs nveis de proteo definidos por trs categorias de usurios. Todo arquivo ou diretrio tem um dono (user) e pertence a um grupo (group). Qualquer usurio do sistema que no seja o dono do arquivo e no pertena ao grupo do arquivo enquadrase na categoria outros (others). O administrador do sistema, o chamado superusurio (root), no pertence a nenhuma das categorias acima, tendo acesso irrestrito a todos os arquivos do sistema. Para cada categoria de usurio, trs tipos de acesso podem ser concedidos: leitura (read), escrita (write) e execuo (execute). O sistema UNIX no faz distino entre os acessos de escrita e eliminao, ou seja, um arquivo que pode ser alterado tambm pode ser eliminado. As tabelas abaixo mostram as permisses para arquivos e diretrios: Arquivos Descrio r Permisso para ler e copiar o arquivo. w Permisso para alterar ou eliminar o arquivo. x Permisso para executar o arquivo. Tabela 6: Permisses de arquivos Descrio Permisso para ler o contedo do diretrio (listar o nome dos arquivos). Permisso para criar, remover e renomear arquivos no diretrio. Permisso de busca: O usurio que no possuir esta permisso no poder se posicionar no diretrio nem acessar os arquivos na rvore abaixo deste diretrio. Tabela 7: Permisses de diretrios Atravs da opo -l do comando ls podemos visualizar o cdigo de proteo dos arquivos. Este cdigo est representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere). Os trs primeiros caracteres correspondem a proteo para o dono (user) do arquivo, os trs prximos definem a proteo para a categoria grupo (group) e os ltimos trs caracteres especificam a proteo do arquivo em relao ao demais usurios (other). - 48 Diretrios r w x

Exemplo: $ ls -al total 9 drwxr-x--x 7 drwxr-xr-x 9 -rwxr-x--x 1 -rwxr-x--x 1 drwxr-xr-x 2 avaliacao drwxr-xr-x 2
-rwxrw-r-1 bessa

bessa root bessa bessa bessa

instrutores instrutores instrutores instrutores instrutores

512 512 380 160 512

Dec Oct May May

12 11:32 20 09:11 12 16:03 12 18:25 Jan 05

. .. .cshrc .login 10:55 curso 13:07 prog

bessa instrutores
instrutores

512 Jan 09 15:53 979 Sep 29

970 Jun 16 11:03 dados.dat

-rwxrw-r-1 manual.doc drwxr-xr-x 2 $

bessa instrutores bessa instrutores

512 Feb 08 08:55

No exemplo acima analisemos o arquivo dados.dat. Ele do tipo ordinrio. O usurio bessa (dono do arquivo) pode ler, alterar e executar o arquivo. Todos os usurios que pertenam ao grupo instrutores podem ler e alterar o arquivo mas no podem executa-lo. Qualquer outro usurio s poder ler o arquivo. A proteo assinalada ao arquivo diretrio determina o primeiro nvel de proteo para todos os arquivos deste diretrio e tem prioridade sobre as protees associadas individualmente a cada arquivo. Por exemplo, caso um usurio no tenha permisso de escrita em um arquivo diretrio, no poder eliminar nenhum arquivo deste diretrio, ainda que as protees dos arquivos indiquem o contrrio.

Alterao das Permisses


Para alterarmos as permisses em um arquivo utilizamos o comando chmod (change file mode). Ele possui dois formatos: Formato 1 $ chmod [ugoa] [+=-] [rwx ugo] arquivos A letra u representa os privilgios do dono do arquivo; a letra g os privilgios do grupo e a letra o os privilgios dos demais usurios. A letra a (all) representa todas as categorias de usurios. O sinal + significa a adio de um privilgio e o sinal - a retirada de um privilgio. A opes r, w e x representam respectivamente as permisses de leitura, alterao e execuo. Podemos alterar vrios privilgios em um nico comando, separando-os por vrgulas. Classes de usurios e nveis de proteo que no forem especificados no comando no sero alterados. Exemplo: $ ls -l -rw-rw-rw1 jose alunos 138 $ chmod g-w,o-rw arquivo $ ls -l - 49 Jan 14 16:15 arquivo

-rw-r----$ Formato 2

jose

alunos 138

Jan 14 16:30 arquivo

$ chmod nnn arquivo Onde nnn o cdigo em octal que representa os tipos de acesso concedidos cada categoria de usurio. Cada permisso tem um nmero associado: execute = 1, write=2 e read = 4. A tabela abaixo ilustra as combinaes possveis: Nmero em Octal Permisses Descrio 0 --Nenhum acesso permitido. 1 --x Acesso execute 2 -wAcesso write 3 -wx Acesso write e execute 4 r-Acesso read 5 r-x Acesso read e execute 6 rwAcesso read e write 7 rwx Acesso read, write e execute Tabela 8: Representao de permisses atravs de nmero octal Exemplo: $ ls -l -rw-rw-rw1 jose $ chmod 640 arquivo $ ls -l -rw-r----$ 1 jose alunos 138 Jan 14 16:15 arquivo

alunos 138

Jan 14 16:30 arquivo

Alterao do Grupo e Dono


Se voc membro de mais de um grupo, voc pode eventualmente precisar alterar o grupo de um arquivo. Isto feito atravs do comando chgrp. Sua sintaxe : $ chgrp grupo arquivo Exemplos: $ ls -l arquivo -rw-r----1 jose alunos $ chgrp monitores arquivo $ ls -l arquivo -rw-r----1 jose monitores $ 138 138 Jan 14 16:15 arquivo Jan 14 16:25 arquivo

Caso desejemos saber todos os grupos existentes podemos listar o arquivo /etc/group com - 50 -

o comando: $ cat /etc/group. importante ressaltar que para utilizar o comando chgrp, o usurio deve pertencer ao novo grupo especificado e ser o dono do arquivo, ou ento o superusurio. Enquanto o comando chgrp permite a alterao do grupo do arquivo, o comando chown permite alterar o seu owner (dono). # chown dono arquivo Exemplos: # ls -l arquivo -rw-r----1 jose # chown luiz arquivo # ls -l arquivo -rw-r----1 luiz # alunos 138 alunos 138 Jan 14 16:15 arquivo Jan 14 16:25 arquivo

Este comando s pode ser utilizado pelo superusurio, pois s ele tem acesso a todas as contas e usernames do sistema.
Sites para consulta

Como o Linux um software gratuito, existem vrios sites com manuais e explicaes gratuitas sobre o mesmo, ou seja, grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites. Abaixo podemos conferir alguns desses sites: http://focalinux.cipsga.org.br/ site com vrios manuais para downloads. http://www.linuxiso.org/ site oficial do Linux onde todas as distribuies podem ser baixadas gratuitamente sem dificuldades. http://www.softwarelivre.gov.br/links site com vrios links importantes sobre o Linux. http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/hardware.html site oficial de suporte da Conectiva com explicaes de vrias dvidas comuns sobre diversas configuraes de hardware e software no Linux. http://www.rau-tu.unicamp.br/linux/ site de perguntas e respostas sobre Linux. Caso no encontre a resposta no site, voc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador.

- 51 -

Você também pode gostar