professor: stênio sã rosário f. soares disciplina ...ssoares/conteudo/ctu/iso/apostilaso.pdf ·...

51
Colégio Técnico Universitário – CTU Curso Técnico de Informática Industrial Professor: Stênio Sã Rosário F. Soares Disciplina: Introdução a Sistemas Operacionais Material de Apoio - 1 -

Upload: buitu

Post on 17-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Coleacutegio Teacutecnico Universitaacuterio ndash CTU

Curso Teacutecnico de Informaacutetica Industrial

Professor Stecircnio Satilde Rosaacuterio F Soares

Disciplina Introduccedilatildeo a Sistemas Operacionais

Material de Apoio

- 1 -

Este material eacute o resultado da compilaccedilatildeo de vaacuterios outros materiais utilizados na apresentaccedilatildeo da disciplina de Introduccedilatildeo a Sistemas Operacionais Os primeiros trecircs capiacutetulos foram extraiacutedos de material elaborado por mim e pelas professoras Cristiane Targa e Melba Gorza quando ministramos as disciplinas de Introduccedilatildeo agrave Informaacutetica e Informaacutetica I na Universidade Federal Fluminense bem como do material do Prof Sandro disponiacutevel no site do CTU O Capiacutetulo 4 que trata do Sistema Operacional Linux foi integralmente obtido no endereccedilo http20012917674~bruno

- 2 -

Capiacutetulo 1

Evoluccedilatildeo Histoacuterica do Hardware

Este capiacutetulo eacute para os alunos curiosos aqueles que natildeo perdem oportunidade de saber um pouco aleacutem do conteuacutedo da mateacuteria Natildeo seraacute cobrado diretamente nas avaliaccedilotildees mas certamente eacute importante que o profissional teacutecnico tenha uma ideacuteia do que foi o passado das suas ferramentas de trabalho

Centenas de computadores de diferentes tipos tecircm sido projetadas e construiacutedas durante a evoluccedilatildeo do computador digital moderno A maioria jaacute foi esquecida mas alguns tiveram um impacto significativo nas ideacuteias modernas A seguir daremos uma visatildeo breve de alguns destes desenvolvimentos-chave histoacutericos para conseguir uma melhor compreensatildeo de como chegamos ateacute onde estamos agora

1) Geraccedilatildeo Zero ndash Computadores Mecacircnicos (1642-1945)

Antes do surgimento dos algarismos araacutebicos os caacutelculos eram efetuados atraveacutes do aacutebaco um instrumento criado provavelmente pelos Sumeacuterios um povo que habitava a Mesopotacircmia por volta de 500 aC A palavra aacutebaco vem do grego abax que significa taacutebua de caacutelculo Era constituiacutedo por um conjunto de bolinhas atravessadas por um fio pelo qual podiam deslizar Certas regiotildees do Oriente mantecircm ainda hoje o costume de utilizar o aacutebaco como instrumento para efetuar caacutelculos

A primeira pessoa a construir uma maacutequina de calcular foi o cientista francecircs Blaise Pascal em cuja honra deu-se o nome agrave linguagem de programaccedilatildeo Pascal Este aparelho construiacutedo em 1642 quando Pascal tinha apenas 19 anos foi projetado para ajudar seu pai um coletor de impostos para o governo francecircs Era inteiramente mecacircnico utilizava engrenagens e funcionava atraveacutes de uma manivela (operaccedilatildeo manual)

A maacutequina de Pascal podia apenas subtrair e somar poreacutem trinta anos mais tarde o matemaacutetico alematildeo Baratildeo Gottfried Wilhelm von Leibniz construiu uma outra maacutequina mecacircnica que podia tambeacutem multiplicar e dividir De fato Leibniz construiu o equivalente a uma calculadora de bolso de quatro funccedilotildees haacute mais de trecircs seacuteculos

Nada mais aconteceu durante 150 anos ateacute que um professor de matemaacutetica na Universidade de Cambridge Charles Babbage projetou e construiu sua maacutequina de diferenccedilas Este dispositivo mecacircnico que do mesmo modo que o de Pascal soacute podia somar e subtrair foi projetado para calcular tabelas de nuacutemeros uacuteteis agrave navegaccedilatildeo A maacutequina foi projetada para executar um algoritmo simples o meacutetodo das diferenccedilas finitas utilizando polinocircmios O aspecto mais importante da maacutequina de diferenccedilas era seu meacutetodo de saiacuteda ela perfurava os resultados numa placa de cobre Seria o meacutetodo de escrita percursor do advento dos cartotildees perfurados e discos

- 3 -

Embora a maacutequina de diferenccedilas funcionasse razoavelmente bem Babbage logo cansou-se dela pois podia executar apenas um algoritmo Ele comeccedilou entatildeo a dedicar o seu tempo no projeto e construccedilatildeo de uma maacutequina sucessora a maacutequina analiacutetica (1834) Esta maacutequina possuiacutea quatro componentes o armazenamento (memoacuteria) o engenho (a unidade de caacutelculo) a seccedilatildeo de entrada (leitora de cartotildees perfurados) e a seccedilatildeo de saiacuteda (saiacuteda perfurada e impressa) O armazenamento tinha capacidade de guardar 1000 valores de 50 diacutegitos sejam eles operandos ou resultados de operaccedilotildees O engenho podia aceitar operandos do armazenamento somaacute-los subtraiacute-los multiplicaacute-los ou dividi-los e retornar o resultado ao armazenamento Tal como a maacutequina de diferenccedilas ela era totalmente mecacircnica

O grande avanccedilo da maacutequina analiacutetica era de ser de uso geral Ela lia instruccedilotildees de cartotildees perfurados e as executava Algumas instruccedilotildees comandavam a maacutequina para buscar dois nuacutemeros no armazenamento levaacute-los ao engenho sofrerem a operaccedilatildeo (por exemplo soma) e ter o resultado enviado de volta ao armazenamento Perfurando um programa diferente nos cartotildees de entrada era possiacutevel fazer com que a maacutequina analiacutetica executasse caacutelculos diferentes algo que natildeo era verdade na maacutequina de diferenccedilas

Uma vez que a maacutequina analiacutetica era programaacutevel 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 programaccedilatildeo Ada foi assim denominada em sua homenagem

O proacuteximo grande marco de desenvolvimento ocorreu nos anos 30 quando um estudante de engenharia alematildeo chamado Konrad Zuse construiu uma seacuterie de maacutequinas de calcular automaacuteticas utilizando releacutes (aparelhoscircuitos) eletromagneacuteticos Zuse natildeo conhecia o trabalho de Babbage e suas maacutequinas foram destruiacutedas por um bombardeio a Berlim em 1944 de forma que seu trabalho natildeo teve qualquer influecircncia nas maacutequinas posteriores Mesmo assim ele foi um dos pioneiros neste campo

Logo depois nos Estados Unidos duas pessoas tambeacutem projetaram calculadoras John Atanasoff e George Stibbitz A maacutequina de Atanasoff era surpreendentemente avanccedilada para sua eacutepoca Ela utilizava aritmeacutetica binaacuteria aleacutem de teacutecnicas utilizadas ainda hoje na manutenccedilatildeo da carga de memoacuterias Infelizmente a maacutequina nunca se tornou realmente operacional De certa forma Atanasoff foi como Babbage um visionaacuterio 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 automaacuteticas um jovem chamado Howard Aiken estava realizando manualmente tediosos caacutelculos numeacutericos como parte de sua pesquisa de doutorado em Harvard Apoacutes seu doutorado Aiken reconheceu a importacircncia de caacutelculos feitos por maacutequina Comeccedilou a ler sobre o assunto descobriu o trabalho de Babbage e baseado neste construiu em 1944 o seu primeiro computador com releacutes o Mark I Ele era capaz de armazenar 72 valores de 23 diacutegitos Para entrada e saiacuteda utilizava-se fita de papel perfurado e foi o primeiro computador de origem americana para propoacutesitos gerais Quando Aiken acabou de construir o sucessor o Mark II computadores com releacutes estavam obsoletos A era eletrocircnica tinha comeccedilado

Como consequumlecircncia do esforccedilo de guerra o governo inglecircs colocou em operaccedilatildeo em 1943 o COLOSSUS Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construiacutedo pela Alemanha denominado ENIGMA Devido agrave sua arquitetura muito especiacutefica voltada para a elucidaccedilatildeo de mensagens o COLOSSUS foi um equipamento uacutenico cujo maior meacuterito eacute ter sido o primeiro computador digital

1 Primeira Geraccedilatildeo ndash Vaacutelvulas (1945-1955)

- 4 -

Os equipamentos desenvolvidos ateacute o iniacutecio dos anos 40 eram fundamentados na utilizaccedilatildeo de releacutes eletromecacircnicos A utilizaccedilatildeo de vaacutelvulas mecacircnicas foi um marco que caracterizou esta nova era que inicia a histoacuteria dos computadores eletrocircnicos digitais

Esta geraccedilatildeo comeccedilou com a construccedilatildeo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de poacutes-graduaccedilatildeo J Presper Eckert O ENIAC surgiu a partir de um projeto apresentado ao Exeacutercito Americano em 1943 para a construccedilatildeo de um computador destinado a efetuar caacutelculos que seriam utilizados nas frentes de combate As suas 18000 vaacutelvulas eletrocircnicas seus 1500 releacutes aleacutem de 800 quilocircmetros de fio utilizados contribuiacuteram para o peso de 30 toneladas e um enorme consumo de energia eleacutetrica Tudo isso era necessaacuterio para fazer funcionar uma arquitetura com vinte registradores cada um capaz de conter nuacutemeros decimais de ateacute dez diacutegitos sendo capaz de realizar 100000 operaccedilotildees aritmeacuteticas por segundo A programaccedilatildeo era elaborada atraveacutes da utilizaccedilatildeo de chaves com muacuteltiplas posiccedilotildees O projeto somente foi concluiacutedo em 1946 e por isso natildeo pocircde ser utilizado nas operaccedilotildees 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 eletrocircnico funcionando com programa armazenado Isso significa que um programa natildeo era mais representado por um conjunto de chaves posicionadas As instruccedilotildees do programa passavam a ser inseridas no equipamento assim como os dados a serem processados isto eacute eram sinais eleacutetricos armazenados numa parte que recebeu a denominaccedilatildeo de memoacuteria

Enquanto isso Mauchley e Eckert trabalhavam no sucessor do ENIAC denominado EDVAC (Eletronic Discret Variable Automatic Calculator) O projeto natildeo foi a frente em virtude de aspectos ligados agrave fundaccedilatildeo de uma empresa fabricante de computadores que apoacutes a evoluccedilatildeo natural dos fatos deu origem agrave entatildeo denominada UNIVAC (hoje transformada em UNISYS apoacutes fusatildeo com a Burroughs) Surgiu em 1951 o UNIVAC I o primeiro computador eletrocircnico a ser usado comercialmente

Os projetos para a construccedilatildeo de computadores surgiam a partir de concepccedilotildees dos seus criadores natildeo havendo ainda linhas gerais de comportamento quanto a possiacuteveis padrotildees de arquitetura Entre todas as tentativas merece especial atenccedilatildeo aquela apresentada por John von Neumann Tendo participado da equipe que desenvolveu o ENIAC aleacutem de suas ideacuteias sobre computador de programa armazenado terem sido utilizadas no EDSAC von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanccedilados de Princeton A partir desse trabalho o processo de desenvolvimento de computadores nunca mais seria o mesmo

2) Segunda Geraccedilatildeo ndash Transistores (1955-1965)

Durante os anos 50 (mais ou menos 1955) surgiu um novo dispositivo capaz de substituir a vaacutelvula eletrocircnica com vantagens o transistor marcando o iniacutecio da segunda geraccedilatildeo de computadores

Alguns projetos criados na geraccedilatildeo anterior foram redesenhados para utilizarem transistores em substituiccedilatildeo agraves vaacutelvulas eletrocircnicas Entre outros aspectos de relevacircncia o transistor abriu a perspectiva da reduccedilatildeo significativa dos tamanhos dos circuitos eletrocircnicos digitais Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fiacutesico tendo poreacutem 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 memoacuteria principal palavras de 18 bits e ciclo de 5 microssegundos O seu preccedilo estava na faixa de 120000 doacutelares Esse projeto evoluiu a ponto de em poucos anos surgir o PDP-8 um campeatildeo de vendas na linha dos chamados minicomputadores A grande inovaccedilatildeo desse novo

- 5 -

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Este material eacute o resultado da compilaccedilatildeo de vaacuterios outros materiais utilizados na apresentaccedilatildeo da disciplina de Introduccedilatildeo a Sistemas Operacionais Os primeiros trecircs capiacutetulos foram extraiacutedos de material elaborado por mim e pelas professoras Cristiane Targa e Melba Gorza quando ministramos as disciplinas de Introduccedilatildeo agrave Informaacutetica e Informaacutetica I na Universidade Federal Fluminense bem como do material do Prof Sandro disponiacutevel no site do CTU O Capiacutetulo 4 que trata do Sistema Operacional Linux foi integralmente obtido no endereccedilo http20012917674~bruno

- 2 -

Capiacutetulo 1

Evoluccedilatildeo Histoacuterica do Hardware

Este capiacutetulo eacute para os alunos curiosos aqueles que natildeo perdem oportunidade de saber um pouco aleacutem do conteuacutedo da mateacuteria Natildeo seraacute cobrado diretamente nas avaliaccedilotildees mas certamente eacute importante que o profissional teacutecnico tenha uma ideacuteia do que foi o passado das suas ferramentas de trabalho

Centenas de computadores de diferentes tipos tecircm sido projetadas e construiacutedas durante a evoluccedilatildeo do computador digital moderno A maioria jaacute foi esquecida mas alguns tiveram um impacto significativo nas ideacuteias modernas A seguir daremos uma visatildeo breve de alguns destes desenvolvimentos-chave histoacutericos para conseguir uma melhor compreensatildeo de como chegamos ateacute onde estamos agora

1) Geraccedilatildeo Zero ndash Computadores Mecacircnicos (1642-1945)

Antes do surgimento dos algarismos araacutebicos os caacutelculos eram efetuados atraveacutes do aacutebaco um instrumento criado provavelmente pelos Sumeacuterios um povo que habitava a Mesopotacircmia por volta de 500 aC A palavra aacutebaco vem do grego abax que significa taacutebua de caacutelculo Era constituiacutedo por um conjunto de bolinhas atravessadas por um fio pelo qual podiam deslizar Certas regiotildees do Oriente mantecircm ainda hoje o costume de utilizar o aacutebaco como instrumento para efetuar caacutelculos

A primeira pessoa a construir uma maacutequina de calcular foi o cientista francecircs Blaise Pascal em cuja honra deu-se o nome agrave linguagem de programaccedilatildeo Pascal Este aparelho construiacutedo em 1642 quando Pascal tinha apenas 19 anos foi projetado para ajudar seu pai um coletor de impostos para o governo francecircs Era inteiramente mecacircnico utilizava engrenagens e funcionava atraveacutes de uma manivela (operaccedilatildeo manual)

A maacutequina de Pascal podia apenas subtrair e somar poreacutem trinta anos mais tarde o matemaacutetico alematildeo Baratildeo Gottfried Wilhelm von Leibniz construiu uma outra maacutequina mecacircnica que podia tambeacutem multiplicar e dividir De fato Leibniz construiu o equivalente a uma calculadora de bolso de quatro funccedilotildees haacute mais de trecircs seacuteculos

Nada mais aconteceu durante 150 anos ateacute que um professor de matemaacutetica na Universidade de Cambridge Charles Babbage projetou e construiu sua maacutequina de diferenccedilas Este dispositivo mecacircnico que do mesmo modo que o de Pascal soacute podia somar e subtrair foi projetado para calcular tabelas de nuacutemeros uacuteteis agrave navegaccedilatildeo A maacutequina foi projetada para executar um algoritmo simples o meacutetodo das diferenccedilas finitas utilizando polinocircmios O aspecto mais importante da maacutequina de diferenccedilas era seu meacutetodo de saiacuteda ela perfurava os resultados numa placa de cobre Seria o meacutetodo de escrita percursor do advento dos cartotildees perfurados e discos

- 3 -

Embora a maacutequina de diferenccedilas funcionasse razoavelmente bem Babbage logo cansou-se dela pois podia executar apenas um algoritmo Ele comeccedilou entatildeo a dedicar o seu tempo no projeto e construccedilatildeo de uma maacutequina sucessora a maacutequina analiacutetica (1834) Esta maacutequina possuiacutea quatro componentes o armazenamento (memoacuteria) o engenho (a unidade de caacutelculo) a seccedilatildeo de entrada (leitora de cartotildees perfurados) e a seccedilatildeo de saiacuteda (saiacuteda perfurada e impressa) O armazenamento tinha capacidade de guardar 1000 valores de 50 diacutegitos sejam eles operandos ou resultados de operaccedilotildees O engenho podia aceitar operandos do armazenamento somaacute-los subtraiacute-los multiplicaacute-los ou dividi-los e retornar o resultado ao armazenamento Tal como a maacutequina de diferenccedilas ela era totalmente mecacircnica

O grande avanccedilo da maacutequina analiacutetica era de ser de uso geral Ela lia instruccedilotildees de cartotildees perfurados e as executava Algumas instruccedilotildees comandavam a maacutequina para buscar dois nuacutemeros no armazenamento levaacute-los ao engenho sofrerem a operaccedilatildeo (por exemplo soma) e ter o resultado enviado de volta ao armazenamento Perfurando um programa diferente nos cartotildees de entrada era possiacutevel fazer com que a maacutequina analiacutetica executasse caacutelculos diferentes algo que natildeo era verdade na maacutequina de diferenccedilas

Uma vez que a maacutequina analiacutetica era programaacutevel 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 programaccedilatildeo Ada foi assim denominada em sua homenagem

O proacuteximo grande marco de desenvolvimento ocorreu nos anos 30 quando um estudante de engenharia alematildeo chamado Konrad Zuse construiu uma seacuterie de maacutequinas de calcular automaacuteticas utilizando releacutes (aparelhoscircuitos) eletromagneacuteticos Zuse natildeo conhecia o trabalho de Babbage e suas maacutequinas foram destruiacutedas por um bombardeio a Berlim em 1944 de forma que seu trabalho natildeo teve qualquer influecircncia nas maacutequinas posteriores Mesmo assim ele foi um dos pioneiros neste campo

Logo depois nos Estados Unidos duas pessoas tambeacutem projetaram calculadoras John Atanasoff e George Stibbitz A maacutequina de Atanasoff era surpreendentemente avanccedilada para sua eacutepoca Ela utilizava aritmeacutetica binaacuteria aleacutem de teacutecnicas utilizadas ainda hoje na manutenccedilatildeo da carga de memoacuterias Infelizmente a maacutequina nunca se tornou realmente operacional De certa forma Atanasoff foi como Babbage um visionaacuterio 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 automaacuteticas um jovem chamado Howard Aiken estava realizando manualmente tediosos caacutelculos numeacutericos como parte de sua pesquisa de doutorado em Harvard Apoacutes seu doutorado Aiken reconheceu a importacircncia de caacutelculos feitos por maacutequina Comeccedilou a ler sobre o assunto descobriu o trabalho de Babbage e baseado neste construiu em 1944 o seu primeiro computador com releacutes o Mark I Ele era capaz de armazenar 72 valores de 23 diacutegitos Para entrada e saiacuteda utilizava-se fita de papel perfurado e foi o primeiro computador de origem americana para propoacutesitos gerais Quando Aiken acabou de construir o sucessor o Mark II computadores com releacutes estavam obsoletos A era eletrocircnica tinha comeccedilado

Como consequumlecircncia do esforccedilo de guerra o governo inglecircs colocou em operaccedilatildeo em 1943 o COLOSSUS Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construiacutedo pela Alemanha denominado ENIGMA Devido agrave sua arquitetura muito especiacutefica voltada para a elucidaccedilatildeo de mensagens o COLOSSUS foi um equipamento uacutenico cujo maior meacuterito eacute ter sido o primeiro computador digital

1 Primeira Geraccedilatildeo ndash Vaacutelvulas (1945-1955)

- 4 -

Os equipamentos desenvolvidos ateacute o iniacutecio dos anos 40 eram fundamentados na utilizaccedilatildeo de releacutes eletromecacircnicos A utilizaccedilatildeo de vaacutelvulas mecacircnicas foi um marco que caracterizou esta nova era que inicia a histoacuteria dos computadores eletrocircnicos digitais

Esta geraccedilatildeo comeccedilou com a construccedilatildeo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de poacutes-graduaccedilatildeo J Presper Eckert O ENIAC surgiu a partir de um projeto apresentado ao Exeacutercito Americano em 1943 para a construccedilatildeo de um computador destinado a efetuar caacutelculos que seriam utilizados nas frentes de combate As suas 18000 vaacutelvulas eletrocircnicas seus 1500 releacutes aleacutem de 800 quilocircmetros de fio utilizados contribuiacuteram para o peso de 30 toneladas e um enorme consumo de energia eleacutetrica Tudo isso era necessaacuterio para fazer funcionar uma arquitetura com vinte registradores cada um capaz de conter nuacutemeros decimais de ateacute dez diacutegitos sendo capaz de realizar 100000 operaccedilotildees aritmeacuteticas por segundo A programaccedilatildeo era elaborada atraveacutes da utilizaccedilatildeo de chaves com muacuteltiplas posiccedilotildees O projeto somente foi concluiacutedo em 1946 e por isso natildeo pocircde ser utilizado nas operaccedilotildees 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 eletrocircnico funcionando com programa armazenado Isso significa que um programa natildeo era mais representado por um conjunto de chaves posicionadas As instruccedilotildees do programa passavam a ser inseridas no equipamento assim como os dados a serem processados isto eacute eram sinais eleacutetricos armazenados numa parte que recebeu a denominaccedilatildeo de memoacuteria

Enquanto isso Mauchley e Eckert trabalhavam no sucessor do ENIAC denominado EDVAC (Eletronic Discret Variable Automatic Calculator) O projeto natildeo foi a frente em virtude de aspectos ligados agrave fundaccedilatildeo de uma empresa fabricante de computadores que apoacutes a evoluccedilatildeo natural dos fatos deu origem agrave entatildeo denominada UNIVAC (hoje transformada em UNISYS apoacutes fusatildeo com a Burroughs) Surgiu em 1951 o UNIVAC I o primeiro computador eletrocircnico a ser usado comercialmente

Os projetos para a construccedilatildeo de computadores surgiam a partir de concepccedilotildees dos seus criadores natildeo havendo ainda linhas gerais de comportamento quanto a possiacuteveis padrotildees de arquitetura Entre todas as tentativas merece especial atenccedilatildeo aquela apresentada por John von Neumann Tendo participado da equipe que desenvolveu o ENIAC aleacutem de suas ideacuteias sobre computador de programa armazenado terem sido utilizadas no EDSAC von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanccedilados de Princeton A partir desse trabalho o processo de desenvolvimento de computadores nunca mais seria o mesmo

2) Segunda Geraccedilatildeo ndash Transistores (1955-1965)

Durante os anos 50 (mais ou menos 1955) surgiu um novo dispositivo capaz de substituir a vaacutelvula eletrocircnica com vantagens o transistor marcando o iniacutecio da segunda geraccedilatildeo de computadores

Alguns projetos criados na geraccedilatildeo anterior foram redesenhados para utilizarem transistores em substituiccedilatildeo agraves vaacutelvulas eletrocircnicas Entre outros aspectos de relevacircncia o transistor abriu a perspectiva da reduccedilatildeo significativa dos tamanhos dos circuitos eletrocircnicos digitais Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fiacutesico tendo poreacutem 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 memoacuteria principal palavras de 18 bits e ciclo de 5 microssegundos O seu preccedilo estava na faixa de 120000 doacutelares Esse projeto evoluiu a ponto de em poucos anos surgir o PDP-8 um campeatildeo de vendas na linha dos chamados minicomputadores A grande inovaccedilatildeo desse novo

- 5 -

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Capiacutetulo 1

Evoluccedilatildeo Histoacuterica do Hardware

Este capiacutetulo eacute para os alunos curiosos aqueles que natildeo perdem oportunidade de saber um pouco aleacutem do conteuacutedo da mateacuteria Natildeo seraacute cobrado diretamente nas avaliaccedilotildees mas certamente eacute importante que o profissional teacutecnico tenha uma ideacuteia do que foi o passado das suas ferramentas de trabalho

Centenas de computadores de diferentes tipos tecircm sido projetadas e construiacutedas durante a evoluccedilatildeo do computador digital moderno A maioria jaacute foi esquecida mas alguns tiveram um impacto significativo nas ideacuteias modernas A seguir daremos uma visatildeo breve de alguns destes desenvolvimentos-chave histoacutericos para conseguir uma melhor compreensatildeo de como chegamos ateacute onde estamos agora

1) Geraccedilatildeo Zero ndash Computadores Mecacircnicos (1642-1945)

Antes do surgimento dos algarismos araacutebicos os caacutelculos eram efetuados atraveacutes do aacutebaco um instrumento criado provavelmente pelos Sumeacuterios um povo que habitava a Mesopotacircmia por volta de 500 aC A palavra aacutebaco vem do grego abax que significa taacutebua de caacutelculo Era constituiacutedo por um conjunto de bolinhas atravessadas por um fio pelo qual podiam deslizar Certas regiotildees do Oriente mantecircm ainda hoje o costume de utilizar o aacutebaco como instrumento para efetuar caacutelculos

A primeira pessoa a construir uma maacutequina de calcular foi o cientista francecircs Blaise Pascal em cuja honra deu-se o nome agrave linguagem de programaccedilatildeo Pascal Este aparelho construiacutedo em 1642 quando Pascal tinha apenas 19 anos foi projetado para ajudar seu pai um coletor de impostos para o governo francecircs Era inteiramente mecacircnico utilizava engrenagens e funcionava atraveacutes de uma manivela (operaccedilatildeo manual)

A maacutequina de Pascal podia apenas subtrair e somar poreacutem trinta anos mais tarde o matemaacutetico alematildeo Baratildeo Gottfried Wilhelm von Leibniz construiu uma outra maacutequina mecacircnica que podia tambeacutem multiplicar e dividir De fato Leibniz construiu o equivalente a uma calculadora de bolso de quatro funccedilotildees haacute mais de trecircs seacuteculos

Nada mais aconteceu durante 150 anos ateacute que um professor de matemaacutetica na Universidade de Cambridge Charles Babbage projetou e construiu sua maacutequina de diferenccedilas Este dispositivo mecacircnico que do mesmo modo que o de Pascal soacute podia somar e subtrair foi projetado para calcular tabelas de nuacutemeros uacuteteis agrave navegaccedilatildeo A maacutequina foi projetada para executar um algoritmo simples o meacutetodo das diferenccedilas finitas utilizando polinocircmios O aspecto mais importante da maacutequina de diferenccedilas era seu meacutetodo de saiacuteda ela perfurava os resultados numa placa de cobre Seria o meacutetodo de escrita percursor do advento dos cartotildees perfurados e discos

- 3 -

Embora a maacutequina de diferenccedilas funcionasse razoavelmente bem Babbage logo cansou-se dela pois podia executar apenas um algoritmo Ele comeccedilou entatildeo a dedicar o seu tempo no projeto e construccedilatildeo de uma maacutequina sucessora a maacutequina analiacutetica (1834) Esta maacutequina possuiacutea quatro componentes o armazenamento (memoacuteria) o engenho (a unidade de caacutelculo) a seccedilatildeo de entrada (leitora de cartotildees perfurados) e a seccedilatildeo de saiacuteda (saiacuteda perfurada e impressa) O armazenamento tinha capacidade de guardar 1000 valores de 50 diacutegitos sejam eles operandos ou resultados de operaccedilotildees O engenho podia aceitar operandos do armazenamento somaacute-los subtraiacute-los multiplicaacute-los ou dividi-los e retornar o resultado ao armazenamento Tal como a maacutequina de diferenccedilas ela era totalmente mecacircnica

O grande avanccedilo da maacutequina analiacutetica era de ser de uso geral Ela lia instruccedilotildees de cartotildees perfurados e as executava Algumas instruccedilotildees comandavam a maacutequina para buscar dois nuacutemeros no armazenamento levaacute-los ao engenho sofrerem a operaccedilatildeo (por exemplo soma) e ter o resultado enviado de volta ao armazenamento Perfurando um programa diferente nos cartotildees de entrada era possiacutevel fazer com que a maacutequina analiacutetica executasse caacutelculos diferentes algo que natildeo era verdade na maacutequina de diferenccedilas

Uma vez que a maacutequina analiacutetica era programaacutevel 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 programaccedilatildeo Ada foi assim denominada em sua homenagem

O proacuteximo grande marco de desenvolvimento ocorreu nos anos 30 quando um estudante de engenharia alematildeo chamado Konrad Zuse construiu uma seacuterie de maacutequinas de calcular automaacuteticas utilizando releacutes (aparelhoscircuitos) eletromagneacuteticos Zuse natildeo conhecia o trabalho de Babbage e suas maacutequinas foram destruiacutedas por um bombardeio a Berlim em 1944 de forma que seu trabalho natildeo teve qualquer influecircncia nas maacutequinas posteriores Mesmo assim ele foi um dos pioneiros neste campo

Logo depois nos Estados Unidos duas pessoas tambeacutem projetaram calculadoras John Atanasoff e George Stibbitz A maacutequina de Atanasoff era surpreendentemente avanccedilada para sua eacutepoca Ela utilizava aritmeacutetica binaacuteria aleacutem de teacutecnicas utilizadas ainda hoje na manutenccedilatildeo da carga de memoacuterias Infelizmente a maacutequina nunca se tornou realmente operacional De certa forma Atanasoff foi como Babbage um visionaacuterio 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 automaacuteticas um jovem chamado Howard Aiken estava realizando manualmente tediosos caacutelculos numeacutericos como parte de sua pesquisa de doutorado em Harvard Apoacutes seu doutorado Aiken reconheceu a importacircncia de caacutelculos feitos por maacutequina Comeccedilou a ler sobre o assunto descobriu o trabalho de Babbage e baseado neste construiu em 1944 o seu primeiro computador com releacutes o Mark I Ele era capaz de armazenar 72 valores de 23 diacutegitos Para entrada e saiacuteda utilizava-se fita de papel perfurado e foi o primeiro computador de origem americana para propoacutesitos gerais Quando Aiken acabou de construir o sucessor o Mark II computadores com releacutes estavam obsoletos A era eletrocircnica tinha comeccedilado

Como consequumlecircncia do esforccedilo de guerra o governo inglecircs colocou em operaccedilatildeo em 1943 o COLOSSUS Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construiacutedo pela Alemanha denominado ENIGMA Devido agrave sua arquitetura muito especiacutefica voltada para a elucidaccedilatildeo de mensagens o COLOSSUS foi um equipamento uacutenico cujo maior meacuterito eacute ter sido o primeiro computador digital

1 Primeira Geraccedilatildeo ndash Vaacutelvulas (1945-1955)

- 4 -

Os equipamentos desenvolvidos ateacute o iniacutecio dos anos 40 eram fundamentados na utilizaccedilatildeo de releacutes eletromecacircnicos A utilizaccedilatildeo de vaacutelvulas mecacircnicas foi um marco que caracterizou esta nova era que inicia a histoacuteria dos computadores eletrocircnicos digitais

Esta geraccedilatildeo comeccedilou com a construccedilatildeo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de poacutes-graduaccedilatildeo J Presper Eckert O ENIAC surgiu a partir de um projeto apresentado ao Exeacutercito Americano em 1943 para a construccedilatildeo de um computador destinado a efetuar caacutelculos que seriam utilizados nas frentes de combate As suas 18000 vaacutelvulas eletrocircnicas seus 1500 releacutes aleacutem de 800 quilocircmetros de fio utilizados contribuiacuteram para o peso de 30 toneladas e um enorme consumo de energia eleacutetrica Tudo isso era necessaacuterio para fazer funcionar uma arquitetura com vinte registradores cada um capaz de conter nuacutemeros decimais de ateacute dez diacutegitos sendo capaz de realizar 100000 operaccedilotildees aritmeacuteticas por segundo A programaccedilatildeo era elaborada atraveacutes da utilizaccedilatildeo de chaves com muacuteltiplas posiccedilotildees O projeto somente foi concluiacutedo em 1946 e por isso natildeo pocircde ser utilizado nas operaccedilotildees 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 eletrocircnico funcionando com programa armazenado Isso significa que um programa natildeo era mais representado por um conjunto de chaves posicionadas As instruccedilotildees do programa passavam a ser inseridas no equipamento assim como os dados a serem processados isto eacute eram sinais eleacutetricos armazenados numa parte que recebeu a denominaccedilatildeo de memoacuteria

Enquanto isso Mauchley e Eckert trabalhavam no sucessor do ENIAC denominado EDVAC (Eletronic Discret Variable Automatic Calculator) O projeto natildeo foi a frente em virtude de aspectos ligados agrave fundaccedilatildeo de uma empresa fabricante de computadores que apoacutes a evoluccedilatildeo natural dos fatos deu origem agrave entatildeo denominada UNIVAC (hoje transformada em UNISYS apoacutes fusatildeo com a Burroughs) Surgiu em 1951 o UNIVAC I o primeiro computador eletrocircnico a ser usado comercialmente

Os projetos para a construccedilatildeo de computadores surgiam a partir de concepccedilotildees dos seus criadores natildeo havendo ainda linhas gerais de comportamento quanto a possiacuteveis padrotildees de arquitetura Entre todas as tentativas merece especial atenccedilatildeo aquela apresentada por John von Neumann Tendo participado da equipe que desenvolveu o ENIAC aleacutem de suas ideacuteias sobre computador de programa armazenado terem sido utilizadas no EDSAC von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanccedilados de Princeton A partir desse trabalho o processo de desenvolvimento de computadores nunca mais seria o mesmo

2) Segunda Geraccedilatildeo ndash Transistores (1955-1965)

Durante os anos 50 (mais ou menos 1955) surgiu um novo dispositivo capaz de substituir a vaacutelvula eletrocircnica com vantagens o transistor marcando o iniacutecio da segunda geraccedilatildeo de computadores

Alguns projetos criados na geraccedilatildeo anterior foram redesenhados para utilizarem transistores em substituiccedilatildeo agraves vaacutelvulas eletrocircnicas Entre outros aspectos de relevacircncia o transistor abriu a perspectiva da reduccedilatildeo significativa dos tamanhos dos circuitos eletrocircnicos digitais Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fiacutesico tendo poreacutem 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 memoacuteria principal palavras de 18 bits e ciclo de 5 microssegundos O seu preccedilo estava na faixa de 120000 doacutelares Esse projeto evoluiu a ponto de em poucos anos surgir o PDP-8 um campeatildeo de vendas na linha dos chamados minicomputadores A grande inovaccedilatildeo desse novo

- 5 -

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Embora a maacutequina de diferenccedilas funcionasse razoavelmente bem Babbage logo cansou-se dela pois podia executar apenas um algoritmo Ele comeccedilou entatildeo a dedicar o seu tempo no projeto e construccedilatildeo de uma maacutequina sucessora a maacutequina analiacutetica (1834) Esta maacutequina possuiacutea quatro componentes o armazenamento (memoacuteria) o engenho (a unidade de caacutelculo) a seccedilatildeo de entrada (leitora de cartotildees perfurados) e a seccedilatildeo de saiacuteda (saiacuteda perfurada e impressa) O armazenamento tinha capacidade de guardar 1000 valores de 50 diacutegitos sejam eles operandos ou resultados de operaccedilotildees O engenho podia aceitar operandos do armazenamento somaacute-los subtraiacute-los multiplicaacute-los ou dividi-los e retornar o resultado ao armazenamento Tal como a maacutequina de diferenccedilas ela era totalmente mecacircnica

O grande avanccedilo da maacutequina analiacutetica era de ser de uso geral Ela lia instruccedilotildees de cartotildees perfurados e as executava Algumas instruccedilotildees comandavam a maacutequina para buscar dois nuacutemeros no armazenamento levaacute-los ao engenho sofrerem a operaccedilatildeo (por exemplo soma) e ter o resultado enviado de volta ao armazenamento Perfurando um programa diferente nos cartotildees de entrada era possiacutevel fazer com que a maacutequina analiacutetica executasse caacutelculos diferentes algo que natildeo era verdade na maacutequina de diferenccedilas

Uma vez que a maacutequina analiacutetica era programaacutevel 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 programaccedilatildeo Ada foi assim denominada em sua homenagem

O proacuteximo grande marco de desenvolvimento ocorreu nos anos 30 quando um estudante de engenharia alematildeo chamado Konrad Zuse construiu uma seacuterie de maacutequinas de calcular automaacuteticas utilizando releacutes (aparelhoscircuitos) eletromagneacuteticos Zuse natildeo conhecia o trabalho de Babbage e suas maacutequinas foram destruiacutedas por um bombardeio a Berlim em 1944 de forma que seu trabalho natildeo teve qualquer influecircncia nas maacutequinas posteriores Mesmo assim ele foi um dos pioneiros neste campo

Logo depois nos Estados Unidos duas pessoas tambeacutem projetaram calculadoras John Atanasoff e George Stibbitz A maacutequina de Atanasoff era surpreendentemente avanccedilada para sua eacutepoca Ela utilizava aritmeacutetica binaacuteria aleacutem de teacutecnicas utilizadas ainda hoje na manutenccedilatildeo da carga de memoacuterias Infelizmente a maacutequina nunca se tornou realmente operacional De certa forma Atanasoff foi como Babbage um visionaacuterio 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 automaacuteticas um jovem chamado Howard Aiken estava realizando manualmente tediosos caacutelculos numeacutericos como parte de sua pesquisa de doutorado em Harvard Apoacutes seu doutorado Aiken reconheceu a importacircncia de caacutelculos feitos por maacutequina Comeccedilou a ler sobre o assunto descobriu o trabalho de Babbage e baseado neste construiu em 1944 o seu primeiro computador com releacutes o Mark I Ele era capaz de armazenar 72 valores de 23 diacutegitos Para entrada e saiacuteda utilizava-se fita de papel perfurado e foi o primeiro computador de origem americana para propoacutesitos gerais Quando Aiken acabou de construir o sucessor o Mark II computadores com releacutes estavam obsoletos A era eletrocircnica tinha comeccedilado

Como consequumlecircncia do esforccedilo de guerra o governo inglecircs colocou em operaccedilatildeo em 1943 o COLOSSUS Tratava-se de um equipamento destinado a decifrar as mensagens codificadas por um dispositivo construiacutedo pela Alemanha denominado ENIGMA Devido agrave sua arquitetura muito especiacutefica voltada para a elucidaccedilatildeo de mensagens o COLOSSUS foi um equipamento uacutenico cujo maior meacuterito eacute ter sido o primeiro computador digital

1 Primeira Geraccedilatildeo ndash Vaacutelvulas (1945-1955)

- 4 -

Os equipamentos desenvolvidos ateacute o iniacutecio dos anos 40 eram fundamentados na utilizaccedilatildeo de releacutes eletromecacircnicos A utilizaccedilatildeo de vaacutelvulas mecacircnicas foi um marco que caracterizou esta nova era que inicia a histoacuteria dos computadores eletrocircnicos digitais

Esta geraccedilatildeo comeccedilou com a construccedilatildeo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de poacutes-graduaccedilatildeo J Presper Eckert O ENIAC surgiu a partir de um projeto apresentado ao Exeacutercito Americano em 1943 para a construccedilatildeo de um computador destinado a efetuar caacutelculos que seriam utilizados nas frentes de combate As suas 18000 vaacutelvulas eletrocircnicas seus 1500 releacutes aleacutem de 800 quilocircmetros de fio utilizados contribuiacuteram para o peso de 30 toneladas e um enorme consumo de energia eleacutetrica Tudo isso era necessaacuterio para fazer funcionar uma arquitetura com vinte registradores cada um capaz de conter nuacutemeros decimais de ateacute dez diacutegitos sendo capaz de realizar 100000 operaccedilotildees aritmeacuteticas por segundo A programaccedilatildeo era elaborada atraveacutes da utilizaccedilatildeo de chaves com muacuteltiplas posiccedilotildees O projeto somente foi concluiacutedo em 1946 e por isso natildeo pocircde ser utilizado nas operaccedilotildees 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 eletrocircnico funcionando com programa armazenado Isso significa que um programa natildeo era mais representado por um conjunto de chaves posicionadas As instruccedilotildees do programa passavam a ser inseridas no equipamento assim como os dados a serem processados isto eacute eram sinais eleacutetricos armazenados numa parte que recebeu a denominaccedilatildeo de memoacuteria

Enquanto isso Mauchley e Eckert trabalhavam no sucessor do ENIAC denominado EDVAC (Eletronic Discret Variable Automatic Calculator) O projeto natildeo foi a frente em virtude de aspectos ligados agrave fundaccedilatildeo de uma empresa fabricante de computadores que apoacutes a evoluccedilatildeo natural dos fatos deu origem agrave entatildeo denominada UNIVAC (hoje transformada em UNISYS apoacutes fusatildeo com a Burroughs) Surgiu em 1951 o UNIVAC I o primeiro computador eletrocircnico a ser usado comercialmente

Os projetos para a construccedilatildeo de computadores surgiam a partir de concepccedilotildees dos seus criadores natildeo havendo ainda linhas gerais de comportamento quanto a possiacuteveis padrotildees de arquitetura Entre todas as tentativas merece especial atenccedilatildeo aquela apresentada por John von Neumann Tendo participado da equipe que desenvolveu o ENIAC aleacutem de suas ideacuteias sobre computador de programa armazenado terem sido utilizadas no EDSAC von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanccedilados de Princeton A partir desse trabalho o processo de desenvolvimento de computadores nunca mais seria o mesmo

2) Segunda Geraccedilatildeo ndash Transistores (1955-1965)

Durante os anos 50 (mais ou menos 1955) surgiu um novo dispositivo capaz de substituir a vaacutelvula eletrocircnica com vantagens o transistor marcando o iniacutecio da segunda geraccedilatildeo de computadores

Alguns projetos criados na geraccedilatildeo anterior foram redesenhados para utilizarem transistores em substituiccedilatildeo agraves vaacutelvulas eletrocircnicas Entre outros aspectos de relevacircncia o transistor abriu a perspectiva da reduccedilatildeo significativa dos tamanhos dos circuitos eletrocircnicos digitais Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fiacutesico tendo poreacutem 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 memoacuteria principal palavras de 18 bits e ciclo de 5 microssegundos O seu preccedilo estava na faixa de 120000 doacutelares Esse projeto evoluiu a ponto de em poucos anos surgir o PDP-8 um campeatildeo de vendas na linha dos chamados minicomputadores A grande inovaccedilatildeo desse novo

- 5 -

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Os equipamentos desenvolvidos ateacute o iniacutecio dos anos 40 eram fundamentados na utilizaccedilatildeo de releacutes eletromecacircnicos A utilizaccedilatildeo de vaacutelvulas mecacircnicas foi um marco que caracterizou esta nova era que inicia a histoacuteria dos computadores eletrocircnicos digitais

Esta geraccedilatildeo comeccedilou com a construccedilatildeo do ENIAC (Eletronic Numerical Integrator and Computer) pelo engenheiro americano John Mauchley e seu aluno de poacutes-graduaccedilatildeo J Presper Eckert O ENIAC surgiu a partir de um projeto apresentado ao Exeacutercito Americano em 1943 para a construccedilatildeo de um computador destinado a efetuar caacutelculos que seriam utilizados nas frentes de combate As suas 18000 vaacutelvulas eletrocircnicas seus 1500 releacutes aleacutem de 800 quilocircmetros de fio utilizados contribuiacuteram para o peso de 30 toneladas e um enorme consumo de energia eleacutetrica Tudo isso era necessaacuterio para fazer funcionar uma arquitetura com vinte registradores cada um capaz de conter nuacutemeros decimais de ateacute dez diacutegitos sendo capaz de realizar 100000 operaccedilotildees aritmeacuteticas por segundo A programaccedilatildeo era elaborada atraveacutes da utilizaccedilatildeo de chaves com muacuteltiplas posiccedilotildees O projeto somente foi concluiacutedo em 1946 e por isso natildeo pocircde ser utilizado nas operaccedilotildees 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 eletrocircnico funcionando com programa armazenado Isso significa que um programa natildeo era mais representado por um conjunto de chaves posicionadas As instruccedilotildees do programa passavam a ser inseridas no equipamento assim como os dados a serem processados isto eacute eram sinais eleacutetricos armazenados numa parte que recebeu a denominaccedilatildeo de memoacuteria

Enquanto isso Mauchley e Eckert trabalhavam no sucessor do ENIAC denominado EDVAC (Eletronic Discret Variable Automatic Calculator) O projeto natildeo foi a frente em virtude de aspectos ligados agrave fundaccedilatildeo de uma empresa fabricante de computadores que apoacutes a evoluccedilatildeo natural dos fatos deu origem agrave entatildeo denominada UNIVAC (hoje transformada em UNISYS apoacutes fusatildeo com a Burroughs) Surgiu em 1951 o UNIVAC I o primeiro computador eletrocircnico a ser usado comercialmente

Os projetos para a construccedilatildeo de computadores surgiam a partir de concepccedilotildees dos seus criadores natildeo havendo ainda linhas gerais de comportamento quanto a possiacuteveis padrotildees de arquitetura Entre todas as tentativas merece especial atenccedilatildeo aquela apresentada por John von Neumann Tendo participado da equipe que desenvolveu o ENIAC aleacutem de suas ideacuteias sobre computador de programa armazenado terem sido utilizadas no EDSAC von Neumann conduziu um projeto chamado IAS no Instituto de Estudos Avanccedilados de Princeton A partir desse trabalho o processo de desenvolvimento de computadores nunca mais seria o mesmo

2) Segunda Geraccedilatildeo ndash Transistores (1955-1965)

Durante os anos 50 (mais ou menos 1955) surgiu um novo dispositivo capaz de substituir a vaacutelvula eletrocircnica com vantagens o transistor marcando o iniacutecio da segunda geraccedilatildeo de computadores

Alguns projetos criados na geraccedilatildeo anterior foram redesenhados para utilizarem transistores em substituiccedilatildeo agraves vaacutelvulas eletrocircnicas Entre outros aspectos de relevacircncia o transistor abriu a perspectiva da reduccedilatildeo significativa dos tamanhos dos circuitos eletrocircnicos digitais Esse importante fato permitiu que surgissem computadores de menor tamanho sob o ponto de vista fiacutesico tendo poreacutem 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 memoacuteria principal palavras de 18 bits e ciclo de 5 microssegundos O seu preccedilo estava na faixa de 120000 doacutelares Esse projeto evoluiu a ponto de em poucos anos surgir o PDP-8 um campeatildeo de vendas na linha dos chamados minicomputadores A grande inovaccedilatildeo desse novo

- 5 -

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

modelo era a utilizaccedilatildeo de um recurso denominado barramento unificado uma novidade na eacutepoca na maneira de interligar os componentes internos do computador

Entre os computadores de segunda geraccedilatildeo cuja existecircncia tornou-se digna de nota natildeo se pode deixar de mencionar o B5000 produzido pela empresa Burroughs hoje com a denominaccedilatildeo de UNISYS A preocupaccedilatildeo dos seus projetistas ao contraacuterio dos que atuavam nas outras empresas do gecircnero natildeo era com o hardware e sim com o software O equipamento foi construiacutedo com a intenccedilatildeo de executar programas codificados em Algol 60 uma linguagem precursora do Pascal

1 Terceira Geraccedilatildeo ndash Circuitos Integrados (1965-1980)

As pesquisas sobre a utilizaccedilatildeo do transistor continuaram tendo resultado no surgimento de um novo componente o circuito integrado Essa foi a denominaccedilatildeo atribuiacuteda ao dispositivo resultante da montagem de um conjunto de diversos transistores interligados de acordo com um plano definido em uma uacutenica pastilha de siliacutecio (surge entatildeo o chip) A principal consequumlecircncia disso foi a possibilidade imediata da construccedilatildeo de computadores mais raacutepidos mais baratos e menores que seus ancestrais baseados apenas em transistores

A partir dessa geraccedilatildeo uma empresa em particular experimentou notaacutevel expansatildeo a IBM Uma nova linha de produtos foi anunciada apresentando arquitetura capaz de abranger tanto soluccedilotildees para problemas comerciais quanto para problemas cientiacuteficos utilizando a nova tecnologia de circuitos integrados

Quanto aos aspectos teacutecnicos os conceitos de canal e multiprogramaccedilatildeo marcaram profundamente essa geraccedilatildeo O canal representou uma grande inovaccedilatildeo na capacidade de ligaccedilatildeo de dispositivos perifeacutericos agrave CPU Tratava-se de um pequeno computador cuja programaccedilatildeo era especificamente voltada a converter sinais entre a CPU e um ou mais perifeacutericos Eram distinguidos em duas categorias a saber canal seletor para perifeacutericos de alta velocidade e canal multiplexador para perifeacutericos de baixa velocidade

Quanto agrave multiprogramaccedilatildeo esta representou uma inovaccedilatildeo ainda mais arrojada Tratava-se de um novo conceito de uso do computador onde vaacuterios programas podiam ser carregados ao mesmo tempo na memoacuteria e disputar a utilizaccedilatildeo do processador Por exemplo o programa denominado A usava o processador durante um pequeno intervalo de tempo salvava os resultados intermediaacuterios e em seguida o liberava para o proacuteximo programa da fila de espera Passando algum tempo chegava novamente a vez do programa A utilizar o processador repetindo-se tudo ateacute o final da execuccedilatildeo do mesmo A velocidade com que tudo isso era feito dava a impressatildeo de que todos os programas estavam funcionando ao mesmo tempo

Ainda durante esse periacuteodo os minicomputadores ganharam importante espaccedilo no mercado pois eram equipamentos capazes de atender agrave maioria das necessidades das organizaccedilotildees poreacutem a custo bem menor que o de um equipamento de grande porte

3) Quarta Geraccedilatildeo ndash Computadores Pessoais e VLSI (a partir de 1980)

O avanccedilo da tecnologia eletrocircnica digital foi gradativamente permitindo que se colocassem cada vez mais transistores num chip Por volta de 1980 jaacute era possiacutevel colocar milhotildees de transistores num uacutenico chip devido agrave teacutecnica chamada Very Large Scale Integration (VLSI) A consequumlecircncia mais imediata desse fato foi a reduccedilatildeo dos tamanhos e dos preccedilos dos equipamentos apesar do aumento das suas capacidades de armazenamento Estava estabelecida a quarta geraccedilatildeo de computadores

- 6 -

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

A partir dessa eacutepoca profundas mudanccedilas comeccedilaram a ocorrer nos haacutebitos dos usuaacuterios em virtude da possibilidade da miniaturizaccedilatildeo dos componentes utilizados na construccedilatildeo de computadores Durante muito tempo os computadores de grande porte (conhecidos como mainframes) foram utilizados por muitas organizaccedilotildees como apoio agraves suas necessidades de informatizaccedilatildeo muito mais devido agrave falta de alternativas tecnoloacutegicas do que agrave 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 mudanccedila jaacute ocorrida na induacutestria de Informaacutetica De maneira muito repentina o usuaacuterio passou a ter nas matildeos 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 eacute a situaccedilatildeo atual em que se encontra a tecnologia da Informaacutetica estando cada vez mais ocorrendo a autonomia do usuaacuterio

- 7 -

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Capiacutetulo 2

Organizaccedilatildeo Interna de Computadores

1) Conceitos Baacutesicos no Mundo do Computador

Um computador digital eacute uma maacutequina capaz de nos solucionar problemas atraveacutes da execuccedilatildeo de instruccedilotildees que lhe satildeo fornecidas Denomina-se programa uma sequumlecircncia de instruccedilotildees que descreve como executar uma determinada tarefa Os circuitos eletrocircnicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruccedilotildees simples para as quais todos programas devem ser convertidos antes que eles possam ser executados Estas instruccedilotildees baacutesicas raramente satildeo mais complicadas do que

diams Somar dois valoresdiams Verificar se um nuacutemero eacute igual a zerodiams Mover um dado de uma parte da memoacuteria do computador para outra

Juntas as instruccedilotildees primitivas do computador formam uma linguagem que torna possiacutevel as pessoas se comunicarem com o computador Tal linguagem eacute denominada linguagem de maacutequina Ao se projetar um novo computador deve-se decidir que instruccedilotildees devem estar presentes nesta linguagem de maacutequina Como a maioria das linguagens de maacutequina eacute muito simples eacute difiacutecil e tedioso utilizaacute-las

Este problema pode ser atacado de duas maneiras principais ambas envolvendo o projeto de um novo conjunto de instruccedilotildees de uso mais conveniente para as pessoas do que o conjunto de instruccedilotildees embutidas na maacutequina Juntas estas novas instruccedilotildees formam uma linguagem que chamaremos de L2 exatamente como as instruccedilotildees embutidas na maacutequina formam uma linguagem que chamaremos de L1 Os dois conceitos diferem na maneira com que os programas escritos em L2 satildeo executados pelo computador que afinal de contas pode apenas executar programas escritos em linguagem de maacutequina L1

Um meacutetodo de execuccedilatildeo de um programa escrito em L2 consiste em primeiro lugar em substituir cada instruccedilatildeo por uma sequumlecircncia equivalente de instruccedilotildees L1 O programa resultante eacute composto inteiramente de instruccedilotildees L1 O computador entatildeo executa o novo programa em L1 em vez do programa em L2 Esta teacutecnica eacute conhecida como traduccedilatildeo

A outra teacutecnica consiste em receber o programa escrito em L2 como dado de entrada e efetuar a execuccedilatildeo examinando uma instruccedilatildeo de cada vez e executando a sequumlecircncia equivalente de instruccedilotildees L1 diretamente Esta teacutecnica natildeo requer a geraccedilatildeo de um novo programa em L1 Denomina-se interpretaccedilatildeo e o programa que a executa denomina-se interpretador Vamos ver estes conceitos mais detalhadamente no capiacutetulo 3

- 8 -

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

A traduccedilatildeo e a interpretaccedilatildeo satildeo similares Em ambos os meacutetodos as instruccedilotildees em L2 satildeo executadas pelas sequumlecircncias equivalentes de instruccedilotildees em L1 A diferenccedila eacute que na traduccedilatildeo o programa inteiro em L2 eacute primeiramente convertido para um programa em L1 o programa em L2 eacute abandonado e entatildeo o novo programa em L1 eacute executado Na interpretaccedilatildeo depois de cada instruccedilatildeo L2 ser examinada e decodificada ela eacute executada imediatamente Nenhum programa traduzido eacute gerado

Os programas escritos na linguagem de maacutequina de um computador podem ser executados diretamente pelos circuitos eletrocircnicos do computador sem quaisquer interpretadores ou tradutores intermediaacuterios Esses circuitos eletrocircnicos juntamente com a memoacuteria e os dispositivos de entradasaiacuteda constituem o hardware do computador O hardware eacute composto de objetos tangiacuteveis ndash circuitos integrados placas de circuito impresso cabos fontes de alimentaccedilatildeo memoacuterias leitoras de cartotildees impressoras terminais etc ndash em lugar de ideacuteias abstratas algoritmos ou instruccedilotildees

O software ao contraacuterio consiste em algoritmos (instruccedilotildees detalhadas que dizem como fazer algo) e suas representaccedilotildees para o computador ndash ou seja os programas Os programas podem estar representados em cartotildees perfurados fitas magneacuteticas discos e outros meios mas a essecircncia do software estaacute no conjunto de instruccedilotildees que constitui os programas natildeo nos meios fiacutesicos sobre os quais eles estatildeo gravados

Uma forma intermediaacuteria entre o hardware e o software eacute o firmware que consiste no software embutido em dispositivos eletrocircnicos durante a fabricaccedilatildeo O firmware eacute utilizado quando se espera que os programas raramente ou nunca seratildeo mudados por exemplo em brinquedos ou instrumentos

Um tema central dentro da computaccedilatildeo que tambeacutem seraacute adotado por noacutes eacute

Qualquer operaccedilatildeo efetuada pelo software pode tambeacutem ser implementada diretamente no hardware e qualquer instruccedilatildeo executada pelo hardware pode tambeacutem ser simulada pelo software A decisatildeo de se colocar certas funccedilotildees em hardware e outras em software baseia-se em fatores tais como custo velocidade confiabilidade e frequumlecircncia esperada de alteraccedilotildees

- 9 -

Hardware e software satildeo logicamente equivalentes

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

2) Organizaccedilatildeo Interna de Computadores

Um computador eacute formado por

Processadores Memoacuterias Dispositivos de entrada e saiacuteda

Esses trecircs componentes satildeo conectados atraveacutes de barramentos atraveacutes dos quais se faz possiacutevel a comunicaccedilatildeo A organizaccedilatildeo de um computador simples orientado a barramento eacute mostrada na Figura 21

21)Processadores (CPU)

A unidade central de processamento (Central Processing Unit - CPU) eacute o ldquoceacuterebrordquo do computador Sua funccedilatildeo eacute executar programas armazenados na memoacuteria principal buscando suas instruccedilotildees examinando-as e entatildeo executando uma apoacutes a outra

A CPU eacute composta por vaacuterias partes distintas A unidade de controle (UC) eacute responsaacutevel pela busca de instruccedilotildees da memoacuteria principal e determinaccedilatildeo de seus tipos A unidade loacutegica e aritmeacutetica (ALU) faz operaccedilotildees (tais como adiccedilatildeo e o ou) necessaacuterias agrave execuccedilatildeo das instruccedilotildees A CPU conteacutem ainda uma memoacuteria pequena de alta velocidade usada para armazenar dados (entrada ou saiacuteda) resultados temporaacuterios obtidos durante a execuccedilatildeo das instruccedilotildees e certas informaccedilotildees de controle Esta memoacuteria eacute formada por um conjunto de registradores cada qual com uma funccedilatildeo especiacutefica

O registador mais importante eacute o contador de programa (program counter - PC) que aponta para a proacutexima instruccedilatildeo a ser executada O registrador de instruccedilatildeo (instruction register - IR) eacute tambeacutem importante Ele conteacutem a instruccedilatildeo que estaacute sendo executada A maioria dos computadores tem outros registradores para por exemplo o armazenamento de resultados intermediaacuterios

211)Execuccedilatildeo de Instruccedilotildees

- 10 -

Memoacuteria Principal Teclado

Impressora

Unidade de Controle

Unidade Loacutegica e

Aritmeacutetica

Registra-dores

CPU

Dispositivos de entrada e saiacuteda

Barramento

Figura 21 A organizaccedilatildeo de um computador simples com uma CPU e dois dispositivos de ES

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

A CPU executa cada instruccedilatildeo atraveacutes de uma seacuterie de passos

1 Buscar a proacutexima instruccedilatildeo da memoacuteria para o IR2 Atualizar o PC para que ele aponte para a proacutexima instruccedilatildeo3 Determinar o tipo de instruccedilatildeo4 Se a instruccedilatildeo usar dados de memoacuteria determinar onde eles estatildeo5 Buscar os dados (se houver algum) para registradores internos da CPU6 Executar a instruccedilatildeo7 Armazenar os resultados em locais apropriados8 Voltar ao passo 1 para iniciar a execuccedilatildeo da proacutexima instruccedilatildeo

Esta sequumlecircncia de passos eacute frequumlentemente referida como o ciclo busca-decodifica-executa Ela eacute o centro da operaccedilatildeo de todos os computadores

212)Organizaccedilatildeo da CPU

A organizaccedilatildeo interna de parte de uma CPU von Neumann eacute mostrada na Figura 22 Esta parte eacute chamada de fluxo de dados e eacute constituiacutedo 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 mantecircm as entradas da ALU enquanto ela estaacute executando a operaccedilatildeo

- 11 -

Registradores

A + B

A

B

A B

ALU

A + B

Figura 22 O fluxo de dados para uma tiacutepica maacutequina von Neumann

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

A proacutepria ALU executa adiccedilatildeo (como na figura) subtraccedilatildeo e outras operaccedilotildees simples com suas entradas produzindo um resultado no seu registrador de saiacuteda Este resultado pode ser armazenado de volta em um registrador da CPU e de laacute de volta agrave memoacuteria se desejado

As instruccedilotildees podem ser divididas em trecircs categorias

diams Registrador-memoacuteria ndash essas instruccedilotildees permitem que dados sejam buscados da memoacuteria para registradores onde podem ser usados como entradas para a ALU em instruccedilotildees seguintes por exemplo

diams Registrador-registrador ndash um exemplo tiacutepico deste tipo de instruccedilatildeo consiste em buscar dois operandos dos registradores levaacute-los para os registradores de entrada da ALU executar alguma operaccedilatildeo com eles e armazenar o resultado de volta num registrador (situaccedilatildeo ilustrada na Figura 22)

diams Memoacuteria-memoacuteria ndash sua execuccedilatildeo eacute similar agrave execuccedilatildeo de uma instruccedilatildeo registrador-registrador

22)Memoacuteria Principal

A memoacuteria eacute a parte do computador onde programas e dados satildeo armazenados Consiste no local de onde a CPU apanha os dados a serem processados onde guarda valores intermediaacuterios e para onde envia os resultados finais do processamento sendo assim um elemento baacutesico para o funcionamento da CPU Sem uma memoacuteria de onde a CPU possa ler e escrever informaccedilotildees natildeo existiriam computadores de programa armazenado

A unidade baacutesica de armazenamento eacute o digito binaacuterio chamado bit (binary digit) Um bit pode conter os valores 0 ou 1

Principais Tipos de Memoacuterias

RAM (Random Access Memory ndash Memoacuteria de Acesso Direto) memoacuterias nas quais as operaccedilotildees de escrita e leitura satildeo possiacuteveis

ROM (Read-Only Memory ndash Memoacuteria Somente de Leitura) os dados presentes nessa memoacuteria natildeo podem ser modificados sob quaisquer circunstacircncias Tais dados satildeo inseridos na memoacuteria na hora de sua fabricaccedilatildeo e a uacutenica forma de alterar os seus dados eacute a sua substituiccedilatildeo

Endereccedilos de Memoacuteria

As memoacuterias satildeo compostas de um determinado nuacutemero de ceacutelulas (ou posiccedilotildees) cada uma podendo armazenar uma parte da informaccedilatildeo Cada ceacutelula tem um nuacutemero chamado de seu endereccedilo pelo qual os programas podem referenciaacute-la Se a memoacuteria tem n ceacutelulas elas teratildeo endereccedilos de 0 a n-1 Todas as ceacutelulas em uma memoacuteria possuem o mesmo nuacutemero de bits A figura 23 mostra trecircs organizaccedilotildees diferentes para uma memoacuteria de 96 bits Note que ceacutelulas adjacentes tecircm endereccedilos consecutivos

- 12 -

Um byte consiste num conjunto de 8 bits Bytes por sua vez podem ser agrupados em palavras (words) sendo que o nuacutemero de bytes por palavra pode variar de computador para computador

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

O significado da ceacutelula eacute que ela eacute a menor unidade endereccedilaacutevel Ateacute recentemente a maioria dos fabricantes de computador padronizavam a ceacutelula de 8 bits que como jaacute visto eacute chamada de byte Com a necessidade de maior espaccedilo de endereccedilamento alguns fabricantes

comeccedilaram a utilizar a word como unidade endereccedilaacutevel onde uma word pode ser igual a um ou mais bytes dependendo do fabricante

23) Memoacuteria Secundaacuteria

Como toda palavra na memoacuteria (principal) precisa ser diretamente acessiacutevel em um intervalo de tempo muito curto ela eacute relativamente cara Consequentemente os computadores possuem tambeacutem memoacuterias secundaacuterias que satildeo memoacuterias mais lentas baratas e tambeacutem satildeo muito grandes Tais memoacuterias satildeo utilizadas para armazenar grande quantidade de dados que a memoacuteria principal natildeo eacute capaz de suportar

i) Fitas Magneacuteticas

A fita magneacutetica foi o primeiro tipo de memoacuteria secundaacuteria Uma unidade de fita de computador eacute anaacuteloga a um gravador de rolo convencional uma fita eacute enrolada em um rolo alimentador passa por uma cabeccedila de gravaccedilatildeo e chega a um rolo receptor Variando a corrente

- 13 -

0

1

2

3

45

6

7

8

910

118 bits

1 Ceacutelula

0

1

2

3

45

6

712 bits

1 Ceacutelula

0

1

2

3

45

16 bits

1 Ceacutelula

Figura 23 Trecircs formas de organizar uma memoacuteria de 96 bits

A unidade de medida de memoacuteria eacute igual a 1 byte A seguir mostramos as relaccedilotildees entre a unidade de medida de memoacuteria e seus muacuteltiplos

Muacuteltiplo

M

Abreviatura Valor

V

1 Kilobyte 1KB

K

210 B = 1024 B1 Megabyte 1MB 220 B = 1024 KB1 Gigabyte 1GB

G

230 B = 1024 MB

M

1 Terabyte 1TB

T

240 B = 1024 GB

G

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

na cabeccedila de gravaccedilatildeo o computador pode gravar informaccedilotildees na fita em forma de pequenos pontos magnetizados

A Figura 24 mostra como a informaccedilatildeo eacute organizada em uma fita magneacutetica Cada frame possui um byte aleacutem de um bit extra chamado de bit de paridade para aumentar a confiabilidade Apoacutes a unidade de fita terminar a gravaccedilatildeo de um registro fiacutesico (uma sequumlecircncia de frames) ela deixa um espaccedilo na fita enquanto reduz a velocidade Se o programa escreve pequenos registros fiacutesicos na fita a maior parte da fita seraacute gasta por esses espaccedilos denominados gaps A utilizaccedilatildeo da fita pode ser mantida alta gravando-se registros fiacutesicos bem maiores que o gap

As fitas magneacuteticas satildeo dispositivos de acesso sequumlencial Se a fita estaacute posicionada no iniacutecio para ler o registro n eacute necessaacuterio ler antes os registros fiacutesicos de 1 a n-1 um de cada vez Se a informaccedilatildeo desejada se encontra proacutexima ao fim da fita o programa teraacute que ler quase a fita inteira o que poderaacute levar vaacuterios minutos Forccedilar a CPU que pode executar milhotildees de instruccedilotildees por segundo a esperar por exemplo 200 segundos enquanto a fita avanccedila eacute um desperdiacutecio Por isso as fitas satildeo mais adequadas quando os dados precisam ser acessados sequumlencialmente

ii) Discos Riacutegidos

Um disco eacute um pedaccedilo metal ao qual uma cobertura magnetizaacutevel foi aplicada no processo de fabricaccedilatildeo geralmente de ambos os lados A informaccedilatildeo eacute gravada em um certo nuacutemero de ciacuterculos concecircntricos chamados trilhas (veja Figura 25) Os discos possuem tipicamente entre 40 e algumas centenas de trilhas por superfiacutecie Cada unidade de disco possui uma cabeccedila moacutevel que pode aproximar-se ou afastar-se do centro do disco A cabeccedila eacute suficientemente pequena para ler ou gravar informaccedilotildees exatamente em uma trilha A unidade de disco possui frequumlentemente vaacuterios discos empilhados verticalmente Em tal configuraccedilatildeo o braccedilo de leitura teraacute uma cabeccedila proacutexima a cada superfiacutecie e todas se movem juntas A posiccedilatildeo radial das cabeccedilas (distacircncia do eixo) eacute chamada cilindro Uma unidade de disco com n pratos (e 2n faces) teraacute 2n cabeccedilas e portanto 2n trilhas por cilindro

As trilhas satildeo divididas em setores e haacute normalmente entre 10 e 100 setores por trilha Um setor consiste em um certo nuacutemero de bytes tipicamente 512

Para especificar uma transferecircncia o programa deve fornecer as seguintes informaccedilotildees

O cilindro e a superfiacutecie que juntos definem uma uacutenica trilha O nuacutemero do setor onde comeccedila a informaccedilatildeo O nuacutemero de palavras a serem transferidas

- 14 -

Direccedilatildeo do movimento da fitatrilhaframe

Registro Fiacutesico Gap entre registros

Figura 24 A informaccedilatildeo eacute gravada na fita como uma sequumlecircnciade matrizes retangulares de bits

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

O endereccedilo na memoacuteria principal de onde a informaccedilatildeo vem ou para onde vai Se a informaccedilatildeo eacute para ser lida do disco ou se eacute para ser escrita nele

As transferecircncias de informaccedilatildeo no disco sempre comeccedilam no iniacutecio de um setor nunca no meio Se uma transferecircncia de muacuteltiplos setores ultrapassa o limite de uma trilha dentro de um cilindro nenhum tempo eacute perdido porque a mudanccedila de uma cabeccedila para outra eacute feita eletronicamente Entretanto se a transferecircncia atravessa o limite de um cilindro o tempo de uma rotaccedilatildeo pode ser perdido no reposicionamento das cabeccedilas no proacuteximo cilindro e na espera pelo setor 0

Se a cabeccedila de leitura estaacute sobre um cilindro errado ela precisa primeiramente ser movida Este movimento eacute chamado seek (procura) e o seu tempo eacute denominado seek time Uma vez que a cabeccedila estaacute posicionada corretamente eacute necessaacuterio esperar ateacute que o setor inicial passe sob a cabeccedila antes de iniciar a transferecircncia Este tempo por sua vez eacute conhecido como latecircncia rotacional O tempo total de acesso eacute igual ao seek time mais a latecircncia rotacional mais o tempo de transferecircncia

Quase todos os computadores utilizam discos com vaacuterios pratos como descrito anteriormente para o armazenamento de dados Eles satildeo frequumlentemente denominados discos riacutegidos (hard disks - HD) O tipo mais conhecido eacute o disco winchester que eacute uma unidade selada (para evitar contaminaccedilatildeo com poeira) As cabeccedilas em uma unidade winchester tecircm forma aerodinacircmica e flutuam em um colchatildeo de ar gerado pela rotaccedilatildeo dos pratos

iii) Discos Oacuteticos

Nos uacuteltimos anos discos oacuteticos (em oposiccedilatildeo aos magneacuteticos) tornaram-se disponiacuteveis Tais discos foram inicialmente desenvolvidos para gravar programas de televisatildeo mas eles logo passaram a tambeacutem ser utilizados como dispositivos de armazenamento de computadores

- 15 -

Direccedilatildeo do movimentodo braccedilo

Cabeccedila de leituragravaccedilatildeo(uma por face)

Figura 25 Um disco com quatro pratos

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Tais discos possuem uma capacidade de armazenamento muito superior aos discos magneacuteticos e devido a esta capacidade os discos oacuteticos tecircm sido objeto de grande pesquisa e vecircm sofrendo uma evoluccedilatildeo incrivelmente raacutepida

A primeira geraccedilatildeo de discos oacuteticos se baseia na mesma tecnologia dos compact discs usados em aacuteudio e os discos presentes nesta geraccedilatildeo satildeo chamados CD-ROMs (Compact Disk Read Only Memory)

Informaccedilotildees em um CD-ROM satildeo escritas como um espiral uacutenico contiacutenuo diferentemente dos discos magneacuteticos com suas trilhas e cilindros discretos

Os CD-ROMs satildeo potencialmente uacuteteis na distribuiccedilatildeo 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 enciclopeacutedia totalmente ilustrada Um curso por computador formado por milhares de slides coloridos cada qual acompanhado por 10 segundos de narraccedilatildeo eacute outro candidato para CD-ROM

Apesar desse enorme potencial os CD-ROMs natildeo satildeo escreviacuteveis o que limita sua utilidade como dispositivos de armazenamento de computadores A intenccedilatildeo de se ter um meio escreviacutevel conduziu agrave proacutexima geraccedilatildeo os discos oacuteticos WORM (Write Once Read Many) Este dispositivo permite que os usuaacuterios escrevam informaccedilotildees nos discos oacuteticos mas isso soacute pode ser feito uma vez Tais discos satildeo bons para arquivar dados relatoacuterios e outras informaccedilotildees que satildeo (semi) permanentes Eles natildeo satildeo muito apropriados para guardar arquivos temporaacuterios de rascunho Mas dada a grande capacidade desses discos o estilo descartaacutevel de apenas acrescentar arquivos temporaacuterios ateacute que o disco esteja cheio e entatildeo jogaacute-lo fora eacute aceitaacutevel

Eacute claro que a existecircncia de discos que soacute podem ser escritos uma vez provoca um impacto na forma em que os programas satildeo escritos

A terceira fase de evoluccedilatildeo dos discos oacuteticos eacute o meio oacutetico apagaacutevel

Discos oacuteticos escreviacuteveis natildeo iratildeo substituir os discos winchester convencionais por algum tempo por duas razotildees Primeiro o seu seek time eacute muito superior ao dos discos winchester Depois sua taxa de transferecircncia eacute bem inferior agrave apresentada pelos discos magneacuteticos Por isso o desempenho dos discos magneacuteticos eacute simplesmente muito melhor Enquanto os discos oacuteticos iratildeo sem duacutevida melhorar com o tempo os discos magneacuteticos iratildeo provavelmente melhorar tatildeo raacutepido quanto mantendo-se na frente

- 16 -

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Capiacutetulo 3

Sistemas Operacionais

As atuais aplicaccedilotildees dos computadores exigem frequumlentemente que uma uacutenica maacutequina execute tarefas que possam competir pela posse dos recursos disponiacuteveis na maacutequina Por exemplo uma maacutequina pode ser conectada a vaacuterios terminais ou estaccedilotildees de trabalho atendendo simultaneamente a diversos usuaacuterios Ateacute mesmo em computadores pessoais os usuaacuterios podem executar vaacuterias atividades ao mesmo tempo tais como a impressatildeo de um documento a modificaccedilatildeo de outro e a criaccedilatildeo de um graacutefico a ser inserido em algum trabalho Este tipo de utilizaccedilatildeo exige um alto grau de coordenaccedilatildeo para evitar que atividades independentes interfiram umas nas outras garantindo ainda uma comunicaccedilatildeo eficiente e confiaacutevel entre atividades interdependentes Tal coordenaccedilatildeo eacute efetuada por um programa denominado Sistema Operacional

1) Evoluccedilatildeo dos Sistemas Operacionais

Sistemas Monoprocessados

As maacutequinas de um uacutenico processador das deacutecadas de quarenta e cinquumlenta natildeo eram flexiacuteveis nem muito eficientes A execuccedilatildeo de programas exigia uma consideraacutevel preparaccedilatildeo de equipamentos incluindo a montagem de fitas e a colocaccedilatildeo fiacutesica de cartotildees perfurados em leitoras de cartatildeo o posicionamento de chaves e assim por diante Logo a exececuccedilatildeo de cada programa chamada de job se tornava uma tarefa bem desgastante Quando vaacuterios usuaacuterios desejavam compartilhar uma mesma maacutequina era comum o emprego de folhas de reserva de horaacuterio Durante o periacuteodo de tempo alocado a um usuaacuterio a maacutequina ficava totalmente sob sua responsabilidade e controle A sessatildeo normalmente comeccedilava com a instalaccedilatildeo do programa seguida de curtos periacuteodos de execuccedilatildeo do mesmo e era frequumlentemente finalizada com um esforccedilo desesperado de fazer alguma coisa adicional enquanto o usuaacuterio seguinte jaacute comeccedilava a exibir indiacutecios de impaciecircncia

Em ambientes assim os sistemas operacionais comeccedilaram a surgir como ambientes de software destinados a simplificar a instalaccedilatildeo dos programas do usuaacuterio e a tornar mais suave a transiccedilatildeo de um job e outro Um primeiro progresso consistiu na separaccedilatildeo entre usuaacuterios e equipamentos eliminando a movimentaccedilatildeo fiacutesica de pessoas para dentro e para fora da sala do computador Para isso um operador de computadores era contratado para executar a operaccedilatildeo propriamente dita da maacutequina Aos que desejassem usar o computador era solicitado que os programas a serem executados fossem submetidos ao operador juntamente com os dados necessaacuterios e com eventuais instruccedilotildees especiais sobre a operaccedilatildeo do programa devendo o usuaacuterio retornar posteriormente para receber os resultados O operador por sua vez transferia esse material para a memoacuteria de onde o sistema operacional poderia acessaacute-los para promover

- 17 -

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

sua execuccedilatildeo Os jobs presentes na memoacuteria aguardavam para serem executados em uma fila de jobs (processamento em batchlotes)

A principal desvantagem dos tradicionais processamentos em lotes eacute a falta de interaccedilatildeo do usuaacuterio com o programa uma vez submetido este uacuteltimo agrave fila de jobs Este procedimento eacute aceitaacutevel para algumas aplicaccedilotildees como eacute o caso do processamento de folhas de pagamento em que os dados e todas as decisotildees do processo estatildeo estabelecidos a priori Contudo natildeo eacute aceitaacutevel quando o usuaacuterio necessita interagir com o programa durante a sua execuccedilatildeo 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 satildeo escritos e reescritos dinamicamente Um outro exemplo ainda satildeo os jogos para computadores para os quais a interaccedilatildeo com a maacutequina eacute a caracteriacutestica mais significativa

Para satisfazer essas necessidades novos sistemas operacionais foram desenvolvidos capazes de proporcionar tal processo interativo Esses sistemas permitem a execuccedilatildeo de programas que mantenham diaacutelogo com o usuaacuterio atraveacutes de terminais ou estaccedilotildees de trabalho Estes sistemas interativos originaram o conceito conhecido como processamento em tempo real Essa denominaccedilatildeo se deve agrave necessidade de coordenaccedilatildeo das atividades executadas pela maacutequina com outras que se passam no ambiente em que a maacutequina estaacute imersa Insatisfeitos com a espera por toda uma noite pelos resultados dos seus jobs os atuais usuaacuterios passaram a exigir uma resposta muito raacutepida do sistema com o qual se comunicam remotamente a partir de suas estaccedilotildees de trabalho

Se os sistema interativos permitissem atender a apenas um usuaacuterio de cada vez o processamento em tempo real natildeo deveria apresentar qualquer problema Poreacutem computadores eram caros e por isso cada um deles deveria servir simultaneamente a mais de um usuaacuterio Por outro lado sendo comum o fato de vaacuterios usuaacuterios solicitarem serviccedilos interativos ao computador ao mesmo tempo as caracteriacutesticas exigidas de um sistema de tempo real passaram a constituir um obstaacuteculo concreto Se o sistema operacional neste ambiente de multiusuaacuterios insistisse em executar somente um job de cada vez um uacutenico usuaacuterio apenas acabaria recebendo um atendimento satisfatoacuterio em tempo real

Uma soluccedilatildeo para este problema podera ser trazida por um sistema operacional que revezasse a execuccedilatildeo dos vaacuterios jobs atraveacutes de um processo denominado compartilhamento de tempo (time-sharing) Mais precisamente time-sharing refere-se agrave teacutecnica de dividir o tempo em intervalos ou fatias (time slices) e restringir a execuccedilatildeo dentro de cada uma dessas fraccedilotildees de tempo a um job de cada vez Ao teacutermino de cada um desses intervalos o job corrente eacute retirado do processamento e um outro eacute acionado Revezando rapidamente desta maneira a execuccedilatildeo dos jobs cria-se a ilusatildeo de que vaacuterios jobs estatildeo sendo executados simultaneamente Dependendo dos tipos de jobs que estivessem sendo executados os antigos sistemas time-sharing chegaram a atender simultaneamente cerca de 30 usuaacuterios com uma aceitaacutevel resposta em tempo real

Atualmente a teacutecnica de time-sharing eacute utilizada tanto em sistemas com um uacutenico usuaacuterio como tambeacutem em ambientes multiusuaacuterios embora o primeiro seja usualmente denominado multitasking referindo-se agrave ilusatildeo que propiciam de haver mais de uma tarefa sendo executada ao mesmo tempo Independentemente do nuacutemero de usuaacuterios do ambiente constatou-se que o conceito de time-sharing promovia o aumento da eficiecircncia global de uma maacutequina Esta constataccedilatildeo mostrou-se particularmente surpreendente ao se levar em conta o consideraacutevel processamento adicional exigido para a implementaccedilatildeo do revezamento que caracteriza a teacutecnica de time-sharing Por outro lado na ausecircncia de time-sharing um computador acaba gastando mais tempo enquanto espera que seus dispositivos perifeacutericos completem suas tarefas ou que um

- 18 -

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

usuaacuterio faccedila sua proacutexima solicitaccedilatildeo 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 execuccedilatildeo Como resultado em um ambiente time-sharing um conjunto de tarefas pode ser concluiacutedo em tempo menor do que o faria se executado de modo sequumlencial

Sistemas Multiprocessados

Mais recentemente a necessidade de compartilhar informaccedilatildeo e recursos entre diferentes maacutequinas suscitou o desejo de unir tais maacutequinas para o intercacircmbio de informaccedilatildeo Para preencher tal necessidade popularizaram-se os sistemas com computadores interconectados conhecidos como redes de computadores De fato o conceito de uma maacutequina central grande servindo a muitos usuaacuterios foi substituiacutedo pelo conceito de muitas maacutequinas pequenas conectadas por uma rede na qual os usuaacuterios compartilham recursos espalhados pela rede (tais como serviccedilo de impressatildeo pacotes de software equipamentos de armazenamento de dados) O principal exemplo eacute a Internet uma rede de redes que hoje une milhotildees de computadores do mundo todo

Muitos dos problemas de coordenaccedilatildeo que ocorrem em projetos de redes satildeo 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 eacute uma extensatildeo natural do campo dos sistemas operacionais Enquanto as redes mais antigas foram construiacutedas como um conjunto de computadores individuais levemente interligados cada qual sob o controle do seu proacuteprio sistema operacional as recentes pesquisas na aacuterea de redes estatildeo se concentrando nos sistemas estruturados como grandes redes cujos recursos satildeo igualmente compartilhados entre as tarefas presentes na rede Essas tarefas satildeo designadas para serem executadas nos processadores da rede de acordo com a necessidade sem levar em consideraccedilatildeo a real posiccedilatildeo fiacutesica de tais processadores

As redes representam apenas um exemplo dos projetos de multiprocessadores que estatildeo inspirando o desenvolvimento dos modernos sistemas operacionais Enquanto uma rede produz um sistema multiprocessado mediante a combinaccedilatildeo de maacutequinas cada qual contendo apenas um uacutenico processador outros sistemas multiprocessadores satildeo projetados como computadores uacutenicos contendo poreacutem mais de um processador Um sistema operacional para tais computadores natildeo apenas coordenaraacute a competiccedilatildeo entre as vaacuterias tarefas que satildeo de fato executadas simultaneamente mas tambeacutem controlaraacute a alocaccedilatildeo 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 (divisatildeo das tarefas em vaacuterias subtarefas cujo nuacutemero seja compatiacutevel com o nuacutemero de processadores disponiacuteveis na maacutequina)

Desta forma o desenvolvimento de sistemas multiprocessados criou dimensotildees adicionais no estudo de sistemas operacionais uma aacuterea que deveraacute manter-se em franca atividade pelos anos vindouros

2) Arquitetura dos Sistemas Operacionais

Para entender a arquitetura de um sistema operacional tiacutepico eacute uacutetil analisar todos os tipos de software que ele conteacutem Para tanto iniciemos com um estudo de como agrupar programas segundo uma classificaccedilatildeo Tal classificaccedilatildeo invariavelmente separa em diferentes classes moacutedulos semelhantes de software da mesma forma como os fusos horaacuterios vizinhos definem no

- 19 -

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

reloacutegio mesmo para comunidades geograficamente proacuteximas a diferenccedila de uma hora mesmo que natildeo haja entre tais localidades diferenccedilas significativas no horaacuterio solar Aleacutem disso no caso de classificaccedilatildeo de software a dinacircmica e a falta de uma autoridade definitiva no assunto conduzem a classificaccedilotildees e terminologias contraditoacuterias Logo a classificaccedilatildeo seguinte (Figura 31) deveria ser vista mais como uma forma de enfrentar um assunto complexo do que como uma taxonomia universalmente aceita

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 conteraacute softwares aplicativos diferentes dos encontrados em um computador de um autor de livros didaacuteticos Exemplos de software aplicativo incluem planilhas eletrocircnicas 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 satildeo 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 proacuteprio sistema operacional e a outra de moacutedulos de software do tipo conhecido como utilitaacuterio A maioria dos softwares de instalaccedilatildeo consiste de programas que executam tarefas embora natildeo incluiacutedas no sistema operacional essenciais agrave instalaccedilatildeo de algum software no computador De certo modo softwares utilitaacuterios consistem de moacutedulos de software que ampliam as capacidades do sistema operacional Por exemplo a capacidade de efetuar a formataccedilatildeo de um disco ou a coacutepia de um arquivo natildeo satildeo em geral implementadas pelo proacuteprio sistema operacional mas sim por programas utilitaacuterios Outros exemplos de softwares utilitaacuterios incluem os programas para comunicaccedilatildeo por modem para linhas telefocircnicas software para mostrar a previsatildeo do tempo na tela e em nuacutemero cada vez mais crescente de maacutequinas o software de tratamento das atividades relacionadas com as redes de computadores

A distinccedilatildeo entre software aplicativo e software utilitaacuterio natildeo eacute muito niacutetida Muitos usuaacuterios consideram que a classe de software utilitaacuterio deve incluir todos os softwares que acompanham o sistema operacional por ocasiatildeo de sua compra Por outro lado eles tambeacutem classificam os sistemas de desenvolvimento de programas como software utilitaacuterio desde que tais pacotes sempre acompanhem o sistema operacional por ocasiatildeo de sua venda A distinccedilatildeo entre o software utilitaacuterio e o sistema operacional eacute igualmente vaga Alguns sistemas consideram os softwares que executam serviccedilos baacutesicos tais como listar os arquivos do disco

- 20 -

Software

Aplicaccedilatildeo Sistema

Utilitaacuterio SO

Shell Kernel

Figura 31 Classificaccedilatildeo de software

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

como sendo softwares utilitaacuterios outros os incluem como partes integrantes do sistema operacional

Eacute faacutecil verificar que implementando-se certos programas na forma de software utilitaacuterio o sistema operacional resulta mais simples do que seria se tivesse de contabilizar todos os recursos baacutesicos exigidos pelo sistema computacional Aleacutem disso as rotinas implementadas como software utilitaacuterio podem ser mais facilmente personalizadas de acordo com as necessidades de uma particular instalaccedilatildeo Natildeo eacute incomum encontrar companhias ou indiviacuteduos que tiveram que alterar ou ampliar algum dos softwares utilitaacuterios que acompanham originalmente o sistema operacional

Shell

A parte do sistema operacional que define a interface entre o sistema operacional e seus usuaacuterios eacute chamada shell O trabalho do shell eacute o de prover uma comunicaccedilatildeo natural com os usuaacuterios do computador Os shells modernos executam tal funccedilatildeo por meio de uma interface graacutefica com o usuaacuterio na qual os objetos a serem manipulados tais como arquivos e programas satildeo representados atraveacutes de iacutecones Essas interfaces permitem que os usuaacuterios solicitem a execuccedilatildeo de comandos ao sistema apontando e deslocando tais itens com o auxiacutelio do mouse Os shells mais antigos se comunicavam com os usuaacuterios via teclado e monitor atraveacutes de mensagens textuais

Embora o shell de um sistema operacional represente um papel importante na definiccedilatildeo da funcionalidade de um computador ele eacute somente uma interface entre o usuaacuterio e o verdadeiro nuacutecleo do sistema operacional como mostrado na Figura 32 Esta distinccedilatildeo entre o shell e as partes internas do sistema operacional eacute enfatizada pelo fato de alguns sistemas operacionais permitirem ao usuaacuterio selecionar entre diversos shells aquele que lhe for mais adequado Usuaacuterios do sistema operacional UNIX por exemplo podem selecionar uma variedade de shells incluindo o Borne shell o C Shell e o Korn shell Versotildees mais antigas do Windows eram essencialmente shells de substituiccedilatildeo ao MS-DOS Em casos como esse o sistema operacional permanece o mesmo exceto quanto agrave forma em que se comunica com o usuaacuterio

- 21 -

Sistema Operacional

Shell

Usuaacuterios Usuaacuterios

Usuaacuterios Usuaacuterios

Figura 32 O shell como interface entre o usuaacuterio e o sistema operacional

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Kernel (Nuacutecleo)

A parte interna de um sistema operacional eacute em geral chamada kernel O kernel de um sistema operacional conteacutem os componentes de software que executam as funccedilotildees mais baacutesicas necessaacuterias ao funcionamento de cada instalaccedilatildeo computacional em particular Um destes moacutedulos baacutesicos eacute o gerenciador de arquivos cuja funccedilatildeo eacute coordenar o uso dos recursos de armazenamento de massa do computador Mais precisamente o gerenciador de arquivos manteacutem coacutepias de todos os arquivos armazenados no dispositivo de armazenamento manteacutem informaccedilatildeo sobre a localizaccedilatildeo de cada arquivo sobre os usuaacuterios autorizados a acessar os diversos arquivos e sobre as aacutereas disponiacuteveis no dispositivo de armazenamento para novos arquivos ou para a extensatildeo de arquivos existentes

Para auxiliar os usuaacuterios a maioria dos gerenciadores de arquivos permite que estes sejam agrupados em conjuntos chamados pastas ou diretoacuterios (folders) Tal procedimento permite ao usuaacuterio organizar seus arquivos de acordo com as respectivas finalidades agrupando em cada mesmo diretoacuterio arquivos referentes a um mesmo assunto Aleacutem disso eacute possiacutevel criar uma organizaccedilatildeo hieraacuterquica possibilitando que cada diretoacuterio possa conter por sua vez subdiretoacuterios Uma sequumlecircncia de aninhamentos de niacuteveis de diretoacuterios eacute denominada path ou caminho

Qualquer acesso a arquivos por parte de algum moacutedulo de software eacute efetuado atraveacutes do gerenciador de arquivos O procedimento inicial consiste em solicitar ao gerenciador a autorizaccedilatildeo para fazer acesso ao arquivo Este procedimento eacute conhecido como abrir o arquivo Se o gerenciador de arquivos aceitar o pedido ele forneceraacute a informaccedilatildeo necessaacuteria para encontrar e manipular tal arquivo Tal informaccedilatildeo eacute mantida em uma aacuterea da memoacuteria principal denominada descritor de arquivos Eacute com base na informaccedilatildeo contida nesse descritor de arquivo que operaccedilotildees elementares individuais satildeo executadas sobre o arquivo

Outro componente do kernel corresponde a um conjunto de device drivers (acionadores de dispositivos) que satildeo os moacutedulos de software que executam a comunicaccedilatildeo com os controladores promovendo nos dispositivos perifeacutericos a execuccedilatildeo das operaccedilotildees desejadas Cada device driver exclusivamente projetado para um dado tipo de dispositivo converte solicitaccedilotildees de alto niacutevel em comandos mais elementares diretamente reconheciacuteveis pelos controladores ou dispositivos associados agravequele device driver

Dessa maneira os detalhes teacutecnicos associados aos dispositivos satildeo confinados aos device drivers ficando transparentes aos demais moacutedulos de software seus usuaacuterios Estes devem apenas enviar requisiccedilotildees de alto niacutevel aos device drivers e deixar a cargo destes a resoluccedilatildeo dos detalhes Por exemplo o driver para uma unidade de disco eacute capaz de converter (com base na informaccedilatildeo extraiacuteda do descritor de arquivo) um pedido de gravaccedilatildeo de um trecho de arquivo em disco para uma sequumlecircncia de passos referenciando trilhas e setores e transferir toda essa informaccedilatildeo para o controlador apropriado

O controlador por sua vez se responsabiliza pelo posicionamento da cabeccedila de leitura e gravaccedilatildeo e pelo acompanhamento do processo Em contraste o driver para uma impressora efetua a conversatildeo de um pedido de impressatildeo de um trecho de arquivo para um conjunto de operaccedilotildees mais baacutesicas envolvendo transferecircncias de caracteres tipos de letras (fontes) e controles de impressatildeo De fato os passos intermediaacuterios necessaacuterios variam inclusive de impressora para impressora Eacute por isso que quando se compra uma impressora nova ela geralmente vem acompanhada do driver correspondente

Outro componente do kernel de um sistema operacional eacute o gerenciador de memoacuteria encarregado de coordenar o uso da memoacuteria principal Em computadores monoprogramados

- 22 -

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

esta tarefa eacute trivial pois nestes casos o programa a executar eacute alocado na memoacuteria principal executado e entatildeo substituiacutedo pelo programa que executa a tarefa seguinte Poreacutem em ambientes multiusuaacuterios ou em ambientes multitarefa nos quais a maacutequina se encarrega de vaacuterias tarefas ao mesmo tempo os deveres do gerenciador de memoacuteria satildeo mais complexos Nestes casos muitos programas e blocos de dados devem coexistir na memoacuteria principal cada qual em uma aacuterea proacutepria determinada pelo gerenciador de memoacuteria Na medida das necessidades das diferentes atividades o gerenciador de memoacuteria vai providenciando as aacutereas necessaacuterias e mantendo um mapa das regiotildees de memoacuteria natildeo utilizadas

A tarefa do gerenciador de memoacuteria torna-se mais complexa quando a aacuterea total de memoacuteria principal solicitada excede o espaccedilo realmente disponiacutevel na maacutequina Neste caso o gerenciador de memoacuteria pode criar uma ilusatildeo de espaccedilo adicional alternando os programas e os dados entre a memoacuteria principal e o disco Este espaccedilo ilusoacuterio de memoacuteria eacute chamado de memoacuteria virtual Por exemplo suponha que seja solicitada uma aacuterea na memoacuteria principal de 64 MB e que somente 32 MB estejam realmente disponiacuteveis Para criar a ilusatildeo de um espaccedilo maior de memoacuteria o gerenciador de memoacuteria divide a aacuterea solicitada em partes chamadas paacuteginas e armazena em disco o conteuacutedo destas paacuteginas Agrave medida que as diversas paacuteginas forem sendo solicitadas o gerenciador de memoacuteria pode armazenaacute-las na memoacuteria fiacutesica em substituiccedilatildeo a outras que jaacute natildeo sejam mais necessaacuterias de modo que as demais partes do software possam ser executadas como se houvesse de fato 64 MB de memoacuteria principal

No kernel de um sistema operacional estatildeo situados tambeacutem o escalonador (scheduler) e o despachante (dispatcher) que seratildeo estudados mais adiante

Conceitos Baacutesicos

Vimos como um sistema operacional se comunica com os usuaacuterios e como os seus componentes trabalham conjuntamente para coordenar a execuccedilatildeo de atividades dentro da maacutequina Entretanto ainda natildeo analisamos como se inicia a execuccedilatildeo de um sistema operacional Isto eacute feito atraveacutes de um procedimento conhecido como booting executado pela maacutequina todas as vezes que esta eacute ligada Para compreender tal procedimento deve-se antes de tudo compreender a razatildeo de ser ele executado

Um processador eacute projetado de forma tal que todas as vezes que for ligado o conteuacutedo do seu contador de instruccedilotildees (PC) seja devidamente preenchido com um endereccedilo predeterminado Eacute nesse endereccedilo que o processador encontra o programa a ser executado Para assegurar que tal programa esteja sempre presente a aacuterea de memoacuteria eacute normalmente projetada de tal modo que seu conteuacutedo seja permanente Tal memoacuteria eacute conhecida como memoacuteria ROM (Read-only memory) Uma vez que os padrotildees de bits sejam instalados na ROM o que se faz mediante um processo de gravaccedilatildeo tal informaccedilatildeo se conserva indefinidamente mesmo com o desligamento da maacutequina

No caso de computadores pequenos como os utilizados como dispositivos em fornos de microondas em sistemas de igniccedilatildeo de automoacuteveis e em receptores esteacutereo de raacutedio eacute possiacutevel implementar aacutereas significativamente grandes da memoacuteria principal em tecnologia ROM uma vez que nestes casos o objetivo principal natildeo eacute a flexibilidade jaacute que o programa a ser executado por tais dispositivos seraacute sempre o mesmo todas as vezes que for acionado Contudo isto natildeo ocorre em computadores de propoacutesito geral natildeo sendo pois praacutetico transformar grandes aacutereas de memoacuteria principal em ROM nessas maacutequinas De fato em maacutequinas de propoacutesito geral a maior parte da memoacuteria eacute volaacutetil o que significa que o seu conteuacutedo eacute perdido sempre que a maacutequina for desligada

- 23 -

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Para ser possiacutevel dar partida em uma maacutequina de propoacutesito geral a sua aacuterea de memoacuteria ROM eacute preacute-programada com um pequeno programa chamado bootstrap executado automaticamente toda vez que a maacutequina eacute ligada Ele faz o processador transferir o conteuacutedo de uma aacuterea predeterminada do disco para uma regiatildeo volaacutetil da memoacuteria principal (Figura 33) Na maioria dos casos este material eacute o sistema operacional Uma vez transferido o sistema operacional para a memoacuteria principal o bootstrap prepara o processador para executaacute-lo e lhe transfere o controle da maacutequina A partir de entatildeo todas as atividades da maacutequina passam a ser controladas pelo sistema operacional

3) Coordenaccedilatildeo das Atividades da Maacutequina

Nesta seccedilatildeo com base no conceito de processos examinaremos como um sistema operacional coordena a execuccedilatildeo dos softwares de aplicaccedilatildeo dos utilitaacuterios e dos diversos moacutedulos internos ao proacuteprio sistema operacional

- 24 -

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 1 a maacutequina se inicia executando o programa bootstrap residente na memoacuteria O sistema operacional estaacute armazenado em disco

Programa bootstrapROM

MemoacuteriaVolaacutetil(RAM)

Memoacuteria Principal

Sistema Operacional

Armazenamento em disco

Passo 2 o programa bootstrap controla a transferecircncia do sistema operacional para a memoacuteria principal e em seguida lhe transfere o controle

Sistema operacional

Figura 33 O processo de booting

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Conceito de Processo

Um dos conceitos mais fundamentais dos sistemas operacionais modernos eacute a distinccedilatildeo entre um programa e a atividade de executaacute-lo O programa eacute apenas um conjunto estaacutetico de comandos enquanto sua execuccedilatildeo eacute uma atividade dinacircmica cujas propriedades mudam agrave medida que o tempo avanccedila Esta atividade eacute conhecida como processo Um processo leva em conta a situaccedilatildeo corrente da atividade conhecida como estado do processo Este estado inclui a posiccedilatildeo do programa que estaacute sendo correntemente executada (o valor do PC) bem como os valores contidos nos outros registradores do processador e as posiccedilotildees associadas agrave memoacuteria Grosseiramente falando o estado do processo fornece uma fotografia da situaccedilatildeo da maacutequina num dado momento

Para enfatizar a distinccedilatildeo entre um programa e um processo note que um uacutenico programa pode ser associado a mais de um processo em um mesmo instante Por exemplo em um sistema multiusuaacuterio de tempo compartilhado dois usuaacuterios 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 proacuteprio conjunto de dados Nesta situaccedilatildeo o sistema operacional pode manter na memoacuteria principal uma soacute coacutepia do programa editor e permitir que cada processo o utiliza agrave sua maneira durante a fatia de tempo que lhe couber

Em um computador de tempo compartilhado eacute natural ter vaacuterios processos competindo pelas fatias de tempo Estes processos englobam a execuccedilatildeo de programas aplicativos e utilitaacuterios bem como porccedilotildees do sistema operacional Eacute tarefa do sistema operacional coordenar todos estes processos Essa atividade de coordenaccedilatildeo inclui garantir que cada processo tenha acesso aos recursos de que necessita (dispositivos perifeacutericos aacuterea na memoacuteria principal acesso a dados e acesso ao processador) que processos independentes natildeo interfiram uns com os outros e que processos que se intercomunicam tenham a possibilidade de trocar informaccedilatildeo entre si

ADMINISTRACcedilAtildeO DE PROCESSOS

As tarefas associdas agrave coordenaccedilatildeo de processos satildeo manuseadas pelo escalonador (scheduler) e pelo despachante (dispatcher) no interior do kernel do sistema operacional Assim o escalonador manteacutem um registro dos processos presentes no sistema computacional inclui novos processos nesse conjunto e remove processos que jaacute completaram sua execuccedilatildeo Para cuidar de todos os processos o escalonador manteacutem na memoacuteria principal um conjunto de dados numa estrutura denominada tabela de processos Cada vez que a maacutequina recebe uma nova tarefa o escalonador cria para ela um processo acrescentando uma nova linha agrave tabela de processos Esta linha conteacutem diversos indicadores a aacuterea de memoacuteria designada para o processo (obtida por meio do gerenciador de memoacuteria) a prioridade do processo e um indicador de que o processo estaacute pronto para ser executado ou agrave espera de algum evento Diz-se que um processo estaacute pronto para ser executado se estiver em um estado a partir do qual sua atividade possa prosseguir o processo estaraacute em estado de espera se seu progresso estiver sendo bloqueado ateacute que seja registrada a ocorrecircncia de algum evento externo tal como a conclusatildeo de um acesso ao disco ou recebimento de uma mensagem enviada por algum outro processo O escalonador manteacutem entatildeo atualizada esta informaccedilatildeo agrave medida que o processo vai progredindo O mais provaacutevel eacute que um dado processo iraacute alternar seu estado entre pronto para execuccedilatildeo e aguardando evento sua prioridade iraacute variar ao longo de sua execuccedilatildeo e certamente o escalonador iraacute removecirc-lo da tabela de processos assim que suas atividades se completarem

O despachante eacute o moacutedulo do kernel do sistema operacional cuja funccedilatildeo eacute a de assegurar que os processos escalonados sejam de fatos executados Em um sistema de tempo compartilhado esta tarefa eacute realizada dividindo-se o tempo fiacutesico em pequenas fatias tipicamente

- 25 -

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

inferior a 50 milissegundos cada qual denominada quantum ou time slice A atenccedilatildeo do processador eacute revezada entre os processos a cada qual eacute concedido um intervalo de tempo natildeo superior agrave duraccedilatildeo de um quantum (Figura 34) O procedimento de alternar o processador de um processo para outro eacute 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 proacuteximo quantum Ao teacutermino desse quantum esse reloacutegio gera um sinal denominado interrupccedilatildeo O processador reage a este sinal de uma forma muito parecida agravequela pela qual algueacutem reage quando interrompido durante a execuccedilatildeo de alguma tarefa interrompe-se o que se estiver fazendo registra-se o ponto da tarefa no qual se foi interrompido e entatildeo passa-se a cuidar do atendimento ao evento que provocou a interrupccedilatildeo Quando o processador recebe uma interrupccedilatildeo completa o seu ciclo corrente de execuccedilatildeo de instruccedilatildeo de maacutequina quarda a posiccedilatildeo em que se encontra e comeccedila a executar um programa chamado rotina de tratamento de interrupccedilatildeo o qual deve ter sido depositado previamente em uma regiatildeo predeterminada da memoacuteria principal

Em nosso ambiente de tempo compartilhado o programa de tratamento de interrupccedilatildeo faz parte do proacuteprio despachante Assim como efeito do sinal de interrupccedilatildeo 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 poderaacute ser reduzida e as prioridaes dos demais aumentadas) O despachante entatildeo seleciona o processo de maior prioridade dentre os que se encontram prontos e reinicia a operaccedilatildeo do temporizador dando iniacutecio a uma nova fatia de tempo

Um ponto alto de um sistema de tempo compartilhado eacute a capacidade de parar um processo para continuaacute-lo mais tarde Caso ocorra uma interrupccedilatildeo 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 informaccedilatildeo acumulada ateacute tal ponto Em suma deveraacute ser capaz de recirar o ambiente existente imediatamente antes da ocorrecircncia da interrupccedilatildeo Tal ambiente eacute denominado estado do processo Este estado inclui o valor do contador de instruccedilotildees o conteuacutedo dos registradores e os das posiccedilotildees de memoacuteria relevantes Processadores projetados para operarem sistemas de tempo compartilhado incluem recursos para guardarem tal estado a cada ocorrecircncia de interrupccedilatildeo Possuem tambeacutem instruccedilotildees em linguagem de maacutequina para recarregar um estado anteriormente armazenado Tais caracteriacutesticas simplificam a tarefa de responsabilidade do despachante de efetuar a alternacircncia de processos e ilustram ateacute que ponto o

- 26 -

Processo A

Processo B

Processo A

Processo B

Tempo

Chaveamento de processo

Interrupccedilatildeo

Figura 34 Compartilhamento de tempo entre os processos A e B

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

projeto das maacutequinas modernas pode ser influenciado pelas necessidades dos sistemas operacionais

Agraves vezes a fatia de tempo de um processo termina antes do tempo determinado pelo temporizador Por exemplo se um processo executar uma solicitaccedilatildeo de entrada ou saiacuteda por exemplo solicitando dados de um disco sua fatia de tempo seraacute truncada pelo sistema uma vez que de outra forma tal processo desperdiccedilaraacute o tempo restante da fatia aguardando que o controlador terminasse de executar a operaccedilatildeo solicitada Neste caso o escalonador atualizaraacute a tabela de processos marcando o processo corrente como estando em estado de espera e o despachante forneceraacute um novo quantum a outro processo que jaacute esteja pronto para ser executado Depois (talvez vaacuterias centenas de milissegundos mais tarde) quando o controlador indicar que aquela operaccedilatildeo de entrada ou saiacuteda foi completada o escalonador reclassificaraacute o processo como estando pronto para a execuccedilatildeo habilitando-o assim a competir novamente por outra fatia de tempo

SISTEMA DE ARQUIVO

Todos noacutes 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 memoacuteria de massa jaacute que a memoacuteria (RAM) do micro eacute apagada quando desligamos o computador Memoacuteria de massa eacute o nome geneacuterico para qualquer dispositivo capaz de armazenar dados para uso posterior onde incluiacutemos disquetes discos riacutegidos CD-ROMs ZIP drives e toda a parafernaacutelia congecircnere

Dados satildeo armazenados em forma de arquivos e a maneira com que os arquivos satildeo armazenados e manipulados dentro de um disco (ou melhor dizendo dentro de um sistema de memoacuteria de massa) varia de acordo com o sistema operacional

Na maioria das vezes um disco eacute dividido em pequenas porccedilotildees chamados setores Dentro de cada setor cabem 512 bytes de informaccedilatildeo Multiplicando-se o nuacutemero total de setores de um disco por 512 bytes teremos a sua capacidade de armazenamento No caso de um disco riacutegido ele possui na verdade vaacuterios discos dentro dele Cada face de cada disco eacute dividida em ciacuterculos concecircntricos chamados cilindros ou trilhas Em cada trilha temos um determinado nuacutemero de setores Eacute claro que toda esta divisatildeo eacute invisiacutevel pois eacute feita magneticamente Para sabermos qual o nuacutemero total de setores de um disco riacutegido basta multiplicarmos sua geometria ou seja o seu nuacutemero de cilindros lados (paracircmetro tambeacutem chamado de cabeccedilas) e setores por trilha Um disco riacutegido que possua a geometria de 2448 cilindros 16 cabeccedilas e 63 setores por trilha teraacute 2448 x 16 x 63 = 2467584 setores Multiplicando-se o nuacutemero total de setores por 512 bytes teremos sua capacidade total no caso 1263403008 bytes

Importante notar que 1 KB natildeo representa 1000 bytes mas sim 1024 assim como 1 MB natildeo representa 1000000 de bytes mas sim 1048576 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 riacutegido seria de 118 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e natildeo 126 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 Alocaccedilatildeo de Arquivos (File Allocation Table FAT) que na verdade eacute um mapa de utilizaccedilatildeo do disco A FAT mapeia a utilizaccedilatildeo do espaccedilo do disco ou seja graccedilas a ela o sistema operacional eacute capaz de saber onde exatamente no disco um determinado arquivo estaacute armazenado

- 27 -

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Existem vaacuterias posiccedilotildees na FAT sendo que cada posiccedilatildeo aponta a uma aacuterea do disco Como cada posiccedilatildeo na FAT-16 utiliza uma variaacutevel de 16 bits podemos ter no maacuteximo 216 = 65536 posiccedilotildees na FAT Como em cada setor cabem apenas 512 bytes concluiacutemos que teoricamente poderiacuteamos ter discos somente de ateacute 65536 x 512 bytes = 33554432 bytes ou 32 MB

Por este motivo o sistema FAT-16 natildeo trabalha com setores mas sim com unidades de alocaccedilatildeo chamadas clusters que satildeo conjuntos de setores Em vez de cada posiccedilatildeo da FAT apontar a um setor cada posiccedilatildeo aponta para um cluster que eacute um conjunto de setores que poderaacute representar 1 2 4 ou mais setores do disco

Tamanho do Cluster Capacidade Maacutexima de Armazenamento

2 KB 128 MB

4 KB 256 MB

8 KB 512 MB

16 KB 1 GB

32 KB 2 GB

O tamanho do cluster eacute definido automaticamente pelo sistema operacional quando o disco eacute formatado seguindo a tabela Um disco riacutegido de 630 MB utilizaraacute clusters de 16 KB enquanto um de 17 GB utilizaraacute clusters de 32 KB Como a menor unidade a ser acessada pelo sistema operacional seraacute o cluster os arquivos deveratildeo ter obrigatoriamente tamanhos muacuteltiplos do tamanho do cluster

Isto significa que um arquivo de 100 KB em um disco riacutegido que utilize clusters de 8 KB obrigatoriamente ocuparaacute 13 clusters ou 104 KB pois este eacute o valor mais proacuteximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB Neste caso 4 KB seratildeo desperdiccedilados

Quanto maior o tamanho do cluster maior o desperdiacutecio Se o mesmo arquivo de 100 KB for armazenado em um disco riacutegido que utilize clusters de 16 KB ele obrigatoriamente utilizaraacute 7 clusters ou 112 KB E para o caso de um disco riacutegido com clusters de 32 KB este mesmo arquivo ocuparaacute 4 clusters ou 128 KB O desperdiacutecio em disco eacute um dos maiores problemas do sistema FAT caracteriacutestica que chamamos de slack space Quando maior o tamanho do cluster mais espaccedilo em disco eacute desperdiccedilado Para saber qual o tamanho do cluster que estaacute sendo utilizado em seu disco riacutegido basta utilizar o comando CHKDSK observando a linha xxxxxx bytes em cada unidade de alocaccedilatildeo onde xxxxx eacute o tamanho do cluster em bytes

Desse jeito vemos que o grande vilatildeo do sistema FAT-16 eacute o desperdiacutecio em disco Haacute contudo outro grande problema o sistema FAT-16 natildeo reconhece diretamente discos maiores que 2 GB Para que discos com mais de 2 GB possam ser utilizados devemos particionaacute-los ou seja dividi-los logicamente em outros

- 28 -

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

menores que 2 GB No caso de um disco riacutegido de 25 GB devemos obrigatoriamente dividi-lo em dois podendo esta divisatildeo ser por exemplo uma unidade de 2 GB e outra de cerca de 500 MB

FAT-32 A soluccedilatildeo definitiva

Junto com a uacuteltima versatildeo do Windows 95 (chamado Windows 95 OSR2) a Microsoft lanccedilou um novo sistema de arquivos denominado FAT-32 Este sistema estaraacute presente tambeacutem no sistema operacional Windows 98 Com o sistema FAT-32 o tamanho dos clusters eacute sensivelmente menor o que faz com que haja bem menos desperdiacutecio Este sistema permite tambeacutem que discos riacutegidos de ateacute 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente sem a necessidade de particionamento

O sistema FAT-32 apresenta poreacutem uma seacuterie de pequenos problemas

1) Discos que utilizem o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais que natildeo sejam o Windows 95 OSR2 ou superiores Ateacute mesmo o Windows 95 tradicional (e tambeacutem o MS-DOS) natildeo acessa discos que estejam formatados com o sistema FAT-32

2) Utilitaacuterios de manutenccedilatildeo de disco riacutegido mais antigos tambeacutem natildeo acessam discos formatados em FAT-32 como por exemplo o Norton Utilities (As versotildees atuais jaacute reconhecem discos em FAT-32)

3) Natildeo eacute mais raacutepido No geral eacute cerca de 6 mais lento que o sistema FAT-16 Quanto mais clusters o disco riacutegido tiver e quanto menor eles forem mais lento seraacute o sistema de armazenamento de dados

HPFS e NTFS As verdadeiras soluccedilotildees

A verdadeira soluccedilatildeo para o problema de desperdiacutecio em disco eacute a utilizaccedilatildeo de um outro sistema de arquivos que natildeo o FAT O sistema operacional OS2 por exemplo possuiacutea um excelente sistema de arquivos denominado HPFS (High Performance File System) O sistema operacional Windows NT (e tambeacutem o Windows 2000 e Windows XP) tambeacutem possui o seu proacuteprio (e tambeacutem excelente) sistema de arquivos denominado NTFS (New Technology File System)

No caso do OS2 e do Windows NT na hora de sua instalaccedilatildeo o usuaacuterio pode optar em utilizar o sistema FAT-16 ou entatildeo o HPFSNTFS A vantagem destes sistemas de arquivo eacute que natildeo haacute desperdiacutecio em disco pois natildeo haacute clusters a menor unidade de alocaccedilatildeo eacute o proacuteprio setor de 512 bytes

A desvantagem oacutebvia destes sistemas de arquivos soacute podem ser utilizados em conjunto com os seus sistemas operacionais Ou seja natildeo haacute como instalar o HPFS no Windows 95 MS-DOS etc Outra desvantagem assim como o sistema FAT-32 natildeo satildeo enxergados por outros sistemas operacionais diretamente (haacute contudo alguns macetes que permitem com que esta limitaccedilatildeo seja transposta)

- 29 -

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Capiacutetulo 4

Introduccedilatildeo ao Linux

Linux eacute 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 distribuiacutedo sob os termos da GNU (General Public License - GPL) Essa licenccedila preserva os direitos autorais do software mas assegura a distribuiccedilatildeo dos programas com coacutedigo-fonte

Linux em si eacute apenas o Kernel (Nuacutecleo) do sistema operacional a parte que controla o hardware gerencia arquivos separa processos etc

Existem diversas combinaccedilotildees de Linux com vaacuterios utilitaacuterios e aplicativos de modo a formar um sistema operacional completo Cada uma dessas combinaccedilotildees eacute chamada de distribuiccedilatildeo

DISTRIBUICcedilOtildeES

Distribuiccedilotildees satildeo empresas que pegam o Linux e adicionam facilidades ou recursos juntam com aplicativos e utilitaacuterios desenvolvidos tambeacutem por outras empresas e colocam seus CDrsquos agrave disposiccedilatildeo dos interessados juntamente com suportes manuais etc

Dentre as principais distribuiccedilotildees podemos citar_ Caldera Conectiva Corel Debian Mandrake Redhat Slackware Suse Tech Linux

Turbo Linux Ubuntu Linux Mandriva etc

Caracteriacutesticas

Free Software ndash tem todo seu coacutedigo fonte(incluindo o Kernel drivers bibliotecas etc) aberto para qualquer um

Aleacutem de ser um software livre o Linux possui outras caracteriacutesticas como

_ Modularidade ndash O UNIX eacute o uacutenico em seu desenho modular que permite usuaacuterios adicionar ou remover partes para adaptaacute-lo as suas necessidades especiacuteficas

_ Multitasking (Capacidade de Multitarefa) ndash A capacidade de Multitasking do UNIX permite que mais de uma tarefa seja realizada simultaneamente

_ Multiuser (Multiusuaacuterio) ndash Um sistema multiusuaacuterio permite que vaacuterios usuaacuterios utilizem o computador simultaneamente

_ Portabilidade ndash A portabilidade eacute a possibilidade dos softwares que operam em uma maacutequina operarem em uma outra diferente

- 30 -

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

_ Multiprocessamento ndash O UNIX foi aprimorado para trabalhar em maacutequinas de grande porte suportando assim a utilizaccedilatildeo de vaacuterios processadores em um uacutenico computador e com a possibilidade de compartilhamento do processamento entre vaacuterios usuaacuterios ao mesmo tempo

Estrutura Organizacional

A estrutura organizacional pode ser divida em 4 partes principais_ Kernel Shell processos e estrutura de arquivos

Kernel

Eacute a base do Sistema Operacional suporta os programas dos usuaacuterios e programas utilitaacuterios como compiladores linkers sistemas de controle coacutedigo fonte etc e implementa as seguintes funccedilotildees

bull Escalonamento de processosbull Gerenciamento de memoacuteriabull Gerenciamento de dispositivosbull Gerenciamento de arquivosbull Interface de chamada do sistemabull Interface de controle do operador

VERSOtildeES DO KERNEL

Convenccedilatildeo para distinguir as versotildees estaacuteveis das natildeo estaacuteveis

bullVersatildeo vxy ondev ndash nuacutemero da versatildeox ndash nuacutemero par versatildeo estaacutevel nuacutemero impar versatildeo natildeo estaacutevel (versotildees para beta teste ndash caracteriacutesticas novas sendo acrescentada todo o tempo)y ndash correccedilotildees de bugs ndash nenhuma caracteriacutestica nova implementadaDe tempos em tempos o Kernel apresenta-se como uma performance confiaacutevel passando

a ser denominado como uma Kernel estaacutevel O desenvolvimento continua em uma nova versatildeo do Kernel

Kernel eacute mudado conforme novos devices eou drivers satildeo adicionados e erros satildeo corrigidos

Shell

Shell eacute o programa que conecta e interpreta os comandos digitados por um usuaacuterio Ele eacute o mediador entre o usuaacuterio e o sistema LINUX usado para interpretar os comandos Esse programa lecirc os comandos digitados pelo usuaacuterio e os executa utilizando os serviccedilos eou outros programas do sistema operacional

- 31 -

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Figura 1 Interaccedilatildeo Usuaacuterio - Shell

Dentre os Shells mais conhecidos pode-se citar

bullsh Bourne Shell ndash o mais tradicional(prompt $)bullBash Bourne ndash Again Shell ndash Shell padratildeo do Linuxbullksh Korn Shell ndash muito utilizado atualmentebullcsh C Shell ndash considerado o mais poderoso ndash largamente utilizado(prompt )bullrsh Remote Shell ndash Shell remotobullRsh Restricted Shell ndash versatildeo restrita do sh

Processos

Um processo eacute um simples programa que estaacute rodando em seu espaccedilo de endereccedilamento virtual proacuteprio Os processos satildeo executados em background ou foreground e podem ser divididos em trecircs grupos principais

_ Interativos Batch e Deamons

TIPOS DE PROCESSOS

bull Processos interativos satildeo iniciados a partir de e controlados por uma sessatildeo terminalbull Processos batch ou em lote natildeo satildeo associados a nenhum terminal Ao inveacutes disso satildeo

submetidos a uma fila da qual jobs satildeo executados sequumlencialmentebull Deamons satildeo processos servidores inicialmente iniciados durante o boot que rodam

continuamente enquanto o sistema estiver ativo esperando em background ateacute que um processo requisite seus serviccedilos

ATRIBUTOS

- 32 -

Shell executa

Usuaacuterio solicita comando

Resultado do comando

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

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

Process ID PID eacute um nuacutemero que identifica unicamente esse processo e eacute usado para referir-se a ele

Parent Process ID PID eacute o processo pai do processo ou seja o processo que o criouTTY eacute o dispositivo de terminal associado com o processoUID real de um processo eacute o UID do usuaacuterio que o criou O UID efetivo eacute o UID que eacute

utilizado para determinar o acesso do processo a recursos do sistema Usualmente RUID e EUID satildeo os mesmos e o processo tem os mesmos acessos que o usuaacuterio que os disparou

GID real e efetivo de um processo eacute o grupo primaacuterio ou corrente do usuaacuterio

Estrutura de Arquivos

Arquivos satildeo centrais para o UNIX de uma maneira natildeo encontrada em outros sistemas operacionais

O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica em forma de aacutervore conhecida como filesystem A base desta aacutervore eacute um diretoacuterio chamado root directory Em sistemas UNIX todo espaccedilo em disco disponiacutevel eacute combinado em uma uacutenica aacutervore de diretoacuterios abaixo do ldquordquo (root)

O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees Toda seguranccedila do sistema depende em grande parte da combinaccedilatildeo entre a propriedade e proteccedilotildees setadas em seus arquivos e suas contas de usuaacuterios e grupos

Resumindobull Tudo em UNIX eacute um arquivobull O UNIX tem uma organizaccedilatildeo de diretoacuterios hieraacuterquica chamada filesystembull O acesso a arquivos eacute organizado atraveacutes de propriedades e proteccedilotildees

Tipos de arquivos

Existem trecircs tipos de arquivos no UNIX

Arquivos Ordinaacuterios (ou arquivos comuns)

Satildeo arquivos que conteacutem dados binaacuterios ou caracteres ASCII Consiste de uma string de bytes de dados Por exemplo um arquivo criado atraveacutes de um editor de texto eacute um arquivo do tipo ordinaacuterio Uma subclasse de arquivos ordinaacuterios satildeo os arquivos hidden (oculto) O nome dos arquivos hidden comeccedilam sempre com um ponto (profile kshrc) e possuem funccedilotildees especiais Esses arquivos recebem a denominaccedilatildeo de hidden porque normalmente natildeo podem ser vistos em uma consulta a um diretoacuterio

Arquivos Diretoacuterios

Satildeo responsaacuteveis pela manutenccedilatildeo da estrutura hieraacuterquica do sistema de arquivos As informaccedilotildees satildeo armazenadas em arquivos ordinaacuterios estes satildeo agrupados em diretoacuterios que por sua vez tambeacutem satildeo agrupados em outros diretoacuterios

- 33 -

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Todo diretoacuterio conteacutem os nomes de arquivos e que correspondem respectivamente ao proacuteprio diretoacuterio e ao seu diretoacuterio pai Todo usuaacuterio possui um diretoacuterio default (home directory) e quando ele se conecta ao sistema o UNIX automaticamente o posiciona neste diretoacuterio

Arquivos Especiais

O UNIX trata todos os dispositivos fiacutesicos do sistema como arquivos especiais Cada dispositivo como terminais unidades de fita disco e impressoras possui um arquivo especial associado agrave ele Estes arquivos residem no diretoacuterio dev e natildeo referenciam dados eles possuem especificaccedilotildees sobre o tipo de dispositivo como terminal ou impressora e suas caracteriacutesticas como configuraccedilatildeo densidade de gravaccedilatildeo etc Os arquivos especiais podem ser acessados da mesma forma que os arquivos ordinaacuterios

Obs O nome do arquivo pode possuir ateacute 255 caracteres em sistemas BSD ou ateacute 14 caracteres em sistemas System V Alguns caracteres natildeo devem ser usados por possuiacuterem significado especial para o UNIX satildeo eles [ ] gt lt - $ amp e ldquordquo Para quem estaacute acostumado com o DOS notaraacute algumas diferenccedilas como os nomes de arquivos que no DOS tem apenas 8 caracteres de nome e 3 de extensatildeo No UNIX natildeo tem limite podendo ter vaacuterias extensotildees Os arquivos no UNIX natildeo possuem extensotildees poreacutem podemos incluir um ponto seguido de uma extensatildeo no nome de qualquer arquivo embora esta extensatildeo natildeo possua nenhum significado especial para os comandos UNIX

EX relatoacuteriotxtziptar

Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretoacuterios satildeo organizados hierarquicamente em forma de aacutervore em que a base eacute chamada de root Esta aacutervore pode ser facilmente observada na figura 2

Estrutura hieraacuterquica

Figura 2 Estrutura Hieraacuterquica

- 34 -

F T P J O Atilde O A N A A N D R Eacute A

H O M E B I N S B I N E T C D E V M N T

B I N M A N L O C A L L I B

U S R T M P L I B V A R P R O C

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Diretoacuterio Descriccedilatildeo dos arquivos que estatildeo nesse diretoacuterio Diretoacuterio raiz do sistema de arquivos eacute abaixo dele que se situam todos os outrosbin Arquivos executaacuteveis de comandos essenciaisboot Arquivos estaacuteticos necessaacuterios agrave inicializaccedilatildeo do sistemadev Arquivos de dispositivos (drives) do sistemaetc Arquivos de configuraccedilatildeo do sistemahome Lugar onde ficam os diretoacuterios locais(diretoacuterios pessoais) dos usuaacuterioslib Arquivos de bibliotecas essenciais ao sistema utilizados pelos programas em binmnt Usualmente eacute o ponto de montagem de dispositivos(drives) na maacutequinaproc Informaccedilotildees do kernel e dos processosroot Diretoacuterio local do superusuaacuteriosbin Arquivos essenciais (comandos especiais) ao sistema Normalmente soacute o

superusuaacuterio tem acesso a estes arquivostmp Diretoacuterio de arquivos temporaacuteriosusr Arquivos pertencentes aos usuaacuterios ( eacute a segunda maior hierarquia de diretoacuterios

presente no Linux soacute perdendo para o diretoacuterio raiz)Tabela 1 Estrutura de Diretoacuterios do Linux

Conexatildeo e Desconexatildeo com o Sistema

Figura 2 Conexatildeo com o sistema

Conexatildeo com o sistema

Para nos conectarmos ao sistema necessitamos de uma identificaccedilatildeo de usuaacuterio (login) e uma senha (password) de acesso como mostra a figura acima Caso ocorra algum erro na digitaccedilatildeo do login ou da password o sistema responde com a mensagem login incorrect e proporciona uma nova oportunidade ao usuaacuterio de se conectar

Havendo sucesso o shell apresenta um prompt indicando que estaacute pronto para receber comandos do usuaacuterio O prompt apresentado depende do shell que se estaacute utilizando no Bourne Shell e Korn Shell o prompt eacute o caracter $ enquanto no C Shell eacute o caracter sendo que para o usuaacuterio root o prompt apresentado seraacute sempre o caracter ldquordquo

As mensagens que satildeo enviadas ao usuaacuterio durante a conexatildeo com o sistema variam de instalaccedilatildeo para instalaccedilatildeo Normalmente incluem a data e hora da ultima conexatildeo do usuaacuterio ao sistema

- 35 -

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

TRAINING INFORMAacuteTICA

password ltRETURNgt

login ltRETURNgt

SHELL

etcpasswd

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Desconexatildeo do sistema

A desconexatildeo do sistema eacute feita atraveacutes do comando logout ou ainda digitando-se as teclas [Ctrl+D] Existe tambeacutem a opccedilatildeo de executar o comando exit

Atenccedilatildeo O sistema operacional UNIX eacute case sensitive ou seja faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas tratando-as como caracteres diferentes

Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos

Uma conta de usuaacuterio eacute um conjunto de nome de acesso mais uma senha que possibilitam que o usuaacuterio acesse a sua aacuterea do sistema Sendo assim uma mesma pessoa pode possuir vaacuterias contas basta que sejam criadas com nomes de acesso diferentes

Basicamente existem dois tipos de contas a conta do usuaacuterio comum que utiliza o sistema e suas ferramentas e a conta de superusuaacuterio ou conta de root onde eacute possiacutevel realizar as configuraccedilotildees do sistema A senha de root eacute muito importante pois algumas configuraccedilotildees soacute satildeo possiacuteveis tendo a mesma em matildeos

Um grupo eacute basicamente um conjunto de usuaacuterios Geralmente ele eacute criado quando se cria o usuaacuterio Mas tambeacutem podemos criaacute-lo quando queremos que os usuaacuterios tenham permissatildeo restrita a arquivos em comum

Existem vaacuterias formas de criar e manter usuaacuterios em um sistema Uma destas formas eacute atraveacutes da linha de comando O comando utilizado para criar uma nova conta de usuaacuterio eacute o comando useradd (ou adduser) Portanto para criar uma conta com o nome de acesso roberto como no exemplo basta digitar o comando (como superusuaacuterio)

useradd roberto

E para criar uma senha basta utilizar o comando passwd A senha pode conter qualquer caractere e eacute desejaacutevel que ela tenha no miacutenimo 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 estaraacute criada Uma linha seraacute incluiacuteda no arquivo etcpasswd com os dados do novo usuaacuterio incluindo o seu diretoacuterio de trabalho (homeroberto) sendo colocado o binbash como o interpretador de comandos padratildeo entre outros dados

Do mesmo modo para remover contas de usuaacuterios basta digitar o comando

userdel -r usuario

Todos os dados do usuaacuterio seratildeo apagados do arquivo etcpasswd e o diretoacuterio de trabalho do usuaacuterio seraacute apagadoAtraveacutes do modo texto o comando groupadd cria um novo grupo Para remover um grupo basta executar o comando groupdelExistem dois modos de incluir usuaacuterios em um grupo pelo modo texto atraveacutes do comando usermod ou diretamente no arquivo etcgroup Vejamos primeiramente como incluir usuaacuterios em um grupo editando diretamente o arquivo

- 36 -

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

supertestex504testeroberto

Note portanto que os usuaacuterios teste e roberto foram incluiacutedos no grupo superteste Para incluir mais usuaacuterios basta incluir uma viacutergula no fim da linha e o nome do usuaacuterio 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 usuaacuterio por comando Eacute possiacutevel colocar vaacuterios grupos mas deve-se tomar cuidado pois isto apaga a configuraccedilatildeo anterior

Comandos

Assim como outros Sistemas Operacionais o UNIXLinux necessita de comandos para ser utilizado em modo texto Neste curso vocecirc aprenderaacute alguns comandos baacutesicos e algumas comparaccedilotildees para usuaacuterios do DOS

Os comandos estudados seratildeo 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 Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

clear _____________________________________________________________________

who _____________________________________________________________________

whoami __________________________________________________________________

cd _______________________________________________________________________

find _____________________________________________________________________

ls _______________________________________________________________________

date _____________________________________________________________________

login _____________________________________________________________________

logout ____________________________________________________________________

exit ______________________________________________________________________

vi _______________________________________________________________________

su _______________________________________________________________________

Formato Padratildeo de uma Linha de Comando

$whoamialuno

$WHOAMIWHOAMI Command not found

Figura 3 Utilizaccedilatildeo correta de comandos

Como jaacute foi dito anteriormente o UNIX faz distinccedilatildeo entre letras maiuacutesculas e minuacutesculas A maioria dos comandos deve ser escrita com letras minuacutesculas caso contraacuterio o Shell natildeo os interpretaraacute corretamente Esta distinccedilatildeo tambeacutem eacute vaacutelida para nomes de arquivos ou seja os nomes cartatxt e CARTATXT satildeo considerados arquivos diferentes Os comandos UNIX natildeo podem ser abreviados e o formato padratildeo de uma linha de comando eacute o seguinte

comando [- opccedilatildeo] [argumento]

- 38 -

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

A opccedilatildeo ou opccedilotildees satildeo letras que redefinem ou modificam a accedilatildeo do comando enquanto que o argumento ou argumentos satildeo os objetos que sofreratildeo a accedilatildeo do comando Os nomes dos argumentos devem ser separados por espaccedilos em branco natildeo podendo ser utilizada a viacutergula Podemos poreacutem digitar mais de um comando em uma uacutenica linha desde que sejam separados por ponto e viacutergula ()

Comparaccedilatildeo DOS x LINUX

Tabela simplificada de correspondecircncia DOS - LINUXComando do DOS Correspondente no LINUXATTRIB chmodCD cdCLS clearCOMP diffCOPY cpDATE dateDEL rmDELTREE rm ndashrfDIR lsECHO echoEDIT viEDLIN edHELP manMD mkdirMORE moreMOVE mvPRINT lp lprRD rmdirREN mvSORT sortTIME dateTYPE catVER uname ndashaXCOPY cp ndashr

Tabela 2 Correspondecircncia DOS - LINUX

Obs Esta tabela mostra uma correspondecircncia entre alguns comandos do DOS e os comandos do UNIX e natildeo uma equivalecircncia Os comandos do UNIX satildeo em geral mais complexos e poderosos do que os correspondentes no DOS

Redirecionamento filtros e pipes

REDIRECIONAMENTO

Normalmente quando um comando eacute executado a saiacuteda eacute direcionada para a tela do terminal e a entrada direcionada do teclado Em vaacuterias situaccedilotildees se faz necessaacuterio redirecionar a entrada eou saiacuteda de um comando O UNIX permite fazecirc-lo de maneira simples e elegante utilizando siacutembolos de redirecionamento de entrada e saiacuteda

- 39 -

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Siacutembolo Descriccedilatildeogt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo eacute sobreposto caso

contraacuterio o arquivo eacute criadogtgt Redireciona a saiacuteda Caso o arquivo jaacute exista seu conteuacutedo natildeo eacute sobreposto

mas sim inserido no final do arquivolt Redireciona a entrada2gt Redireciona a saiacuteda de mensagens de erros

Tabela 3 siacutembolos de Redirecionamento

Exemplos

$ ls -l gt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o arquivo diretorlis

$ ls -l gtgt diretorlis$ cat diretorlis$

Redireciona a saiacuteda do comando ls da tela para o final do arquivo diretorlis

$ cat lt arqtxt$

Redireciona a entrada do comando cat do teclado para o arquivo arqtxt

$ date gt arqlis 2gt arqerr$

Redireciona a saiacuteda do comando date para o arquivo arqlis e redireciona qualquer mensagem de erro para arquivo arqerr

Filtros

Filtros satildeo comandos ou utilitaacuterios que manipulam dados de entrada e geram uma nova saiacuteda A seguir apresentamos os principais filtros

Sort

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo arquivo de saiacuteda

Exemplo

$ cat alunostxtFrancis

- 40 -

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

LPBessa$ sort -o alunosord alunostxt $ cat alunosordBessaFrancisLP$

Grep

O comando grep (global regular expression printer) procura todas as ocorrecircncias de um determinado padratildeo (string) em um ou mais arquivos de entrada A saiacuteda do comando eacute uma lista das linhas a onde o padratildeo foi encontrado

Exemplo

$ cat arqtxtamoamoramoraamorosoclamornamororamo$ grep moro arqtxtamorosonamoro$

Pipes

Suponha que vocecirc queira utilizar a saiacuteda de um comando como entrada de um segundo comando Uma maneira eacute criar um arquivo temporaacuterio para armazenar a saiacuteda do primeiro comando utilizar o mesmo arquivo como entrada no comando seguinte e posteriormente eliminar o arquivo temporaacuterio

Exemplo

$ who gt temptxt$ wc -l lt temptxt10$ rm temptxt$

O comando who que lista todos os usuaacuterios conectados ao sistema cria o arquivo temporaacuterio temptxt O comando wc -l que conta o nuacutemero de linhas do arquivo utiliza o mesmo arquivo temporaacuterio para informar quantos usuaacuterios estatildeo conectados ao sistema

- 41 -

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

O Unix permite que esse tipo de processamento seja implementado de forma bastante simples utilizando o conceito de pipeline Atraveacutes da barra vertical ( | ) ou pipe a saiacuteda de um comando pode ser direcionada para entrada de um outro comando sem a utilizaccedilatildeo de arquivos temporaacuterios A ideacuteia do pipeline pode ser comparada a uma linha de montagem onde uma linha de produccedilatildeo fornece insumos para outra linha sucessivamente

Exemplos

$ who | wc -l10

$ ls -l | grep txt$ | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios do diretoacuterio de trabalho O comando grep seleciona os arquivos que terminam com txt a partir da saiacuteda comando ls O comando sort ordena os arquivos selecionados pelo grep Finalmente a lista dos arquivos eacute impressa atraveacutes do comando lpr

$ ls -l | sort +4n | grep c$

O comando ls gera uma listagem completa dos arquivos e subdiretoacuterios de trabalho O comando sort ordena a saiacuteda em funccedilatildeo do tamanho de cada arquivo (+4n) O comando pega a saiacuteda ordenada e seleciona apenas aqueles que terminem com c

$ ls -l | sort +8 | grep ^d

O comando exibe uma lista de subdiretoacuterios ordenados crescentemente

$ who | sort | tee usuariostxt | wc -l

O comando tee permite recuperar resultados intermediaacuterios de pipes permitindo inclusive armazenar a saiacuteda de um pipe em um arquivo

Montando e Desmontando Dispositivos

Muitos usuaacuterios ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que jaacute usam o Linux sentem-se incentivados a experimentarem o sistema A grande maioria jaacute tem o sistema operacional Windows instalado e decide compartilhar o computador tambeacutem com o Linux Mas quase sempre o usuaacuterio necessita acessar arquivos presentes na particcedilatildeo do Windows Isso eacute perfeitamente possiacutevel atraveacutes de um processo conhecido como montagem da particcedilatildeo Algumas distribuiccedilotildees Linux montam as particcedilotildees Windows automaticamente mas em outras eacute necessaacuterio que o usuaacuterio faccedila isso manualmente Esse processo eacute simples e seraacute

- 42 -

Comando1

Comando2

Comando3

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

explicado aqui Os procedimentos a seguir devem ser executados como usuaacuterio root ou outro que tenha permissotildees de administrador

Discos

O primeiro passo eacute saber como identificar os discos (HD CD-ROM disquete) no Linux Tais dispositivos aleacutem de outros (como a porta LPT1) satildeo tidas como existentes no diretoacuterio dev O HD eacute identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante) O nuacutemero 0 indica a particcedilatildeo no HD Com isso a segunda particcedilatildeo 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 identificaccedilatildeo eacute fd0 Se houver outro drive este deve ser identificado como fd1 No caso dos CD-ROMS eles satildeo identificados como HDs Assim se por exemplo em seu computador haacute um HD e um CD-ROM o HD poderaacute ser reconhecido como hda e o CD como hdb

Montando a particcedilatildeo

Agora que jaacute se sabe o que satildeo e como funcionam os dispositivos no Linux seratildeo estudados os comandos mount e umount que satildeo os responsaacuteveis pela montagem dos dispositivos Mas antes de montar qualquer dispositivo eacute preciso saber quais dispositivos estatildeo ligados a ele Primeiramente os arquivos que mapeiam dispositivos estatildeo no diretoacuterio dev da estrutura de diretoacuterios de seu Linux Seratildeo mostrados a seguir os dispositivos que satildeo mais frequumlentemente utilizados para montagem Veja na Tabela 4 Perifeacutericos os dispositivos mais usados no cotidiano com seus respectivos perifeacutericos

Arquivo Mapeia qual perifeacuterico

hda Primeiro disco riacutegido instalado na maacutequina (master)

hdaXA particcedilatildeo X do primeiro disco riacutegido instalado hda1 mapeia a primeira particcedilatildeo do disco

hdb O segundo disco riacutegidoCD-ROM instalado na maacutequina (slave)

hdbXA particcedilatildeo X do primeiro disco riacutegido instalado hdb1 mapeia a primeira particcedilatildeo do disco

fd0 O primeiro drive de disquete

fd1 O segundo drive de disquete

cdrom O drive de CD-ROM instalado na maacutequina (caso exista)

Tabela 4 Perifeacutericos

Vale aqui uma lembranccedila em hdX o item X pode variar de acordo com o nuacutemero de particcedilotildees existentes no disco riacutegido e pode variar de acordo com o nuacutemero de discos riacutegidos instalados na maacutequina

- 43 -

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Para a particcedilatildeo Windows vocecirc deve saber qual das existentes eacute ela Em nosso exemplo vamos supocircr que o Windows estaacute na particcedilatildeo hda0 e o Linux na particcedilatildeo hda1 Tendo ciecircncia disso agora eacute necessaacuterio que vocecirc crie um diretoacuterio no Linux por onde a particcedilatildeo Windows deveraacute ser acessada ou seja o ponto de montagem Geralmente este diretoacuterio eacute criado dentro da pasta mnt mas pode ser criado em outro Para o nosso exemplo vamos chamar este diretoacuterio de win Assim seu caminho eacute mntwin

O proacuteximo passo eacute comando de montagem

mount - t [tipo] [caminho da particcedilatildeo] [ponto de montagem]

Em nosso exemplo o comando acima ficaria assim

mount -t vfat devhda0 mntwin

O tipo indica o sistema de arquivos utilizados na particcedilatildeo Particcedilotildees fat e fa32 satildeo identificados como vfat No caso de CD-ROM o tipo deve ser especificado como iso9660 Por exemplo mount -t iso9660 devhdb mntcdrom As particcedilotildees 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 particcedilatildeo deve seguir procedimentos especiais que natildeo seratildeo explicadas aqui Se a particcedilatildeo que vocecirc deseja montar for ext2 ou ext3 basta especificar estes nomes como tipo

No exemplo a seguir seraacute demonstrado o procedimento para a montagem de um disquete formatado para Windows

mount -t vfat devfd0 mntfloppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em devfd0 que eacute do tipo vfat disponibilizando-o no diretoacuterio mntfloppy Caso haja algum arquivo no diretoacuterio onde foi montado o disquete (ou outro sistema de arquivos) esse conteuacutedo ficaraacute indisponiacutevel enquanto o sistema de arquivos estiver montado O diretoacuterio mntfloppy referenciaraacute o diretoacuterio raiz () do sistema de arquivos montado

Existem vaacuterios tipos de dispositivos que podem ser montados Na Tabela 5 Tipos de sistema de arquivos constam os tipos mais utilizados

Tipo Descriccedilatildeo

vfat Disquete formatado para Windows

ext2 Disquete formatado para Linux

ext3 Disquete formatado para Linux

iso9660

CD-ROM

Tabela 5 Tipos de sistema de arquivos

- 44 -

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Dica

Para montar dispositivos automaticamente ou melhor na hora do boot na maacutequina vocecirc deve editar o arquivo etcfstab onde deveraacute acrescentar uma nova linha indicando a montagem do dispositivo Esta opccedilatildeo eacute interessante para HDs com mais de uma particcedilatildeo

Nota

Eacute importante natildeo remover um dispositivo (fiacutesico) como um disquete de seu drive enquanto ele permanecer montado Existem operaccedilotildees que satildeo efetuadas quando um dispositivo eacute desmontado Uma delas eacute a gravaccedilatildeo de dados que possam estar no buffer de armazenamento esperando ser gravados

Depois que um sistema de arquivos eacute montado pode-se utilizaacute-lo normalmente Ao final da utilizaccedilatildeo do sistema de arquivos deve-se desmontaacute-lo para que se possa por exemplo remover o CD do drive Para isso eacute utilizado o comando umount que desmonta o sistema de arquivos A sintaxe do comando umount eacute

umount dispositivo

ou entatildeo

umount diretoacuterio

Normalmente apenas o superusuaacuterio poderaacute montar e desmontar um sistema de arquivos Existe uma maneira simples para que o usuaacuterio comum acesse o disquete Satildeo os comandos do pacote mtools O mtools eacute uma coleccedilatildeo de ferramentas que permite ao Linux manipular arquivos MS-DOS Sempre que possiacutevel 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 inicializaccedilatildeo preacutevia[46] Alguns comandos do pacote mtools satildeo mattrib mbadblocks mcd mcopy mdel mdeltree mdir mdu mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest e mtype Para utilizaacute-los basta digitar o comando desejado em um terminal como no exemplo abaixo

$ mdir

Pacotes RPM

O sistema operacional Linux ateacute hoje tem a fama de ter instalaccedilotildees complicadas o que muitas vezes natildeo deixa de ser verdade Na tentativa de resolver esses problemas de instalaccedilatildeo A empresa Red Hat criou uma tecnologia chamada RPM que significa RedHat Package Manager (Gerenciador de Pacotes RedHat)O RPM eacute 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 informaccedilotildees incluindo nome versatildeo e descriccedilatildeo Veja a seguir alguns comandos e suas respectivas funccedilotildees usadas nos pacotes RPM

rpm -ivh - Instalaccedilatildeo de pacotes rpm -Uvh - Atualizaccedilatildeo de pacotes rpm -qi - Informaccedilotildees 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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

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 baacutesicos de operaccedilatildeo excluindo-se o modo de confecccedilatildeo de pacotes instalaccedilatildeo desinstalaccedilatildeo atualizaccedilatildeo consulta e verificaccedilatildeo Vocecirc pode obter mais informaccedilotildees usando rpm --help ou man rpm Vejamos cada modo

Instalaccedilatildeo

Pacotes RPM tecircm nomes de arquivos tais como foo-10-1i386rpm que incluem o nome do pacote (foo) versatildeo (10) release (1) e plataforma (i386) A instalaccedilatildeo de um pacote eacute feita atraveacutes de uma linha de comando como por exemplo$ rpm -ivh foo-10-1i386rpmfoo Como se pode observar o RPM apresenta o nome do pacote e apresenta uma sucessatildeo de caracteres atuando como uma reacutegua de progresso do processo de instalaccedilatildeo O processo de instalaccedilatildeo foi desenvolvido para ser o mais simples possiacutevel poreacutem eventualmente alguns erros podem acorrer- Pacotes jaacute instaladosSe o pacote jaacute tiver sido instalado anteriormente seraacute apresentada a seguinte mensagem$ rpm -ivh foo-10-1i386rpm foo package foo-10-1 is already installed error foo-10-1i386rpm cannot be installedCaso se deseje ignorar o erro pode-se usar o paracircmetro --replacefiles na linha de comando- Dependecircncias natildeo resolvidasPacotes RPM podem depender da instalaccedilatildeo 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 natildeo localizado seraacute apresentada a seguinte mensagem$ rpm -ivh bar-10-1i386rpmfailed dependenciesfoo is needed by bar-10-1Para corrigir este erro seraacute necessaacuterio instalar o pacote solicitado Caso deseje que a instalaccedilatildeo ocorra de qualquer forma pode-se utilizar o paracircmetro --nodeps na linha de comando

Desinstalaccedilatildeo

Para desinstalar um pacote utilize o comando$ rpm -e fooOnde foo eacute o nome do pacote Pode ser encontrado um erro de dependecircncia durante o processo de desinstalaccedilatildeo de um pacote ( outro pacote necessita de sua existecircncia para funcionar corretamente) Neste caso seraacute apresentada a seguinte mensagem$ rpm -e foo removing these packagewould break dependenciesfoo is needed by bar-10-1

- 46 -

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Para ignorar a mensagem de erro e desinstalar o pacote deve ser utilizado o paracircmetro --nodeps na linha de comando

Atualizaccedilatildeo

Para atualizar um pacote utilize o comando$ rpm -Uvh foo-20-1i386rpmfoo O RPM desinstalaraacute qualquer versatildeo anterior do pacote e faraacute a nova instalaccedilatildeo preservando as configuraccedilotildees Sugerimos utilizar sempre a opccedilatildeo -U jaacute que ela funciona perfeitamente mesmo quando natildeo haacute uma versatildeo anterior do pacote Uma vez que o RPM executa um processo de atualizaccedilatildeo inteligente eacute apresentada uma mensagem do tiposaving etcfooconf as etcfooconfrpmsaveO que significa que os arquivos de configuraccedilatildeo existentes estatildeo salvos poreacutem mudanccedilas no software podem tornar este arquivo de configuraccedilatildeo incompatiacutevel com o pacote Neste caso as adequaccedilotildees necessaacuterias devem ser feitas pelo usuaacuterio Como o processo de atualizaccedilatildeo eacute uma combinaccedilatildeo dos processos de desinstalaccedilatildeo e instalaccedilatildeo alguns erros podem ocorrer Por exemplo quando se quer atualizar um pacote com uma versatildeo anterior agrave versatildeo corrente seraacute apresentada a seguinte mensagem rpm -Uvh foo-10-1i386rpmfoo package foo-20-1 (which is never) is already installed error foo-10-1i386rpmcannot be installedPara forccedilar uma atualizaccedilatildeo de qualquer forma deve-se usar o paracircmetro --oldpackage na linha de comando

Consulta

A consulta agrave base de dados de pacotes instalados eacute feita atraveacutes do comando rpm -q Na sua utilizaccedilatildeo satildeo apresentados o nome do pacote versatildeo e release Por exemplo$ rpm -q foo foo-20-1Ao inveacutes de especificar o nome do pacote pode-se utilizar as seguintes opccedilotildees apoacutes o paracircmetro q

bull a - Consulta todos os pacotes instalados bull f ltfilegt - Consulta o pacote que conteacutem o arquivo ltfilegt bull F - Funciona como o paracircmetro -f exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find usrbin | rpm -qF bull p ltarquivo do pacotegt - Consulta o pacote originado pelo ltarquivo do pacotegt bull P - Funciona como o paracircmetro -p exceto que funciona a partir do stdin (entrada padratildeo)

como por exemplo find mntcdromRedHatRPMS | rpm -qP Haacute diversas formas de especificar que informaccedilotildees devem ser apresentadas pelas consultas As opccedilotildees de seleccedilatildeo satildeo

bull i - Apresenta as informaccedilotildees do pacote tais como nome descriccedilatildeo release tamanho data de criaccedilatildeo data de instalaccedilatildeo e outras

bull l - Apresenta a lista de arquivos relacionados com o pacote bull s - Apresenta o status dos arquivos do pacote Haacute dois estados possiacuteveis normal ou

missing (natildeo localizado) bull d - Apresenta uma lista dos arquivos de documentaccedilatildeo (paacuteginas de manual paacuteginas info

README etc) bull c - Apresenta uma lista dos arquivos de configuraccedilatildeo Estes arquivos podem ser alterados

apoacutes a instalaccedilatildeo para personalizaccedilatildeo Exemplos sendmailcf passwd inittab etc

- 47 -

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Verificaccedilatildeo

A verificaccedilatildeo de um pacote provoca a comparaccedilatildeo dos arquivos instalados de um pacote com as informaccedilotildees localizadas nas bases de dados do RPM Entre outras coisas a verificaccedilatildeo compara o tamanho MD5 sum permissotildees tipo dono e grupo de cada arquivoPara verificar um pacote deve-se utilizar o comandorpm -V ltnome do pacotePode-se usar as mesmas opccedilotildees disponiacuteveis no processo de consultasExemplosPara verificar um pacote que contenha um arquivo em especialrpm -Vf binviPara verificar todos os pacotes instaladosrpm -VaPara verificar um pacote instalado e o arquivo de pacote RPMrpm -Vp foo-10-1i386rpm

Permissotildees

Cada arquivo no UNIX apresenta trecircs niacuteveis de proteccedilatildeo definidos por trecircs categorias de usuaacuterios Todo arquivo ou diretoacuterio tem um dono (user) e pertence a um grupo (group) Qualquer usuaacuterio do sistema que natildeo seja o dono do arquivo e natildeo pertenccedila ao grupo do arquivo enquadra-se na categoria outros (others) O administrador do sistema o chamado superusuaacuterio (root) natildeo pertence a nenhuma das categorias acima tendo acesso irrestrito a todos os arquivos do sistema

Para cada categoria de usuaacuterio trecircs tipos de acesso podem ser concedidos leitura (read) escrita (write) e execuccedilatildeo (execute) O sistema UNIX natildeo faz distinccedilatildeo entre os acessos de escrita e eliminaccedilatildeo ou seja um arquivo que pode ser alterado tambeacutem pode ser eliminado

As tabelas abaixo mostram as permissotildees para arquivos e diretoacuterios

Arquivos Descriccedilatildeor Permissatildeo para ler e copiar o arquivow Permissatildeo para alterar ou eliminar o arquivox Permissatildeo para executar o arquivo

Tabela 6 Permissotildees de arquivos

Diretoacuterios Descriccedilatildeor Permissatildeo para ler o conteuacutedo do diretoacuterio (listar o nome dos arquivos)w Permissatildeo para criar remover e renomear arquivos no diretoacuteriox Permissatildeo de busca O usuaacuterio que natildeo possuir esta permissatildeo natildeo poderaacute

se posicionar no diretoacuterio nem acessar os arquivos na aacutervore abaixo deste diretoacuterio

Tabela 7 Permissotildees de diretoacuterios

Atraveacutes da opccedilatildeo -l do comando ls podemos visualizar o coacutedigo de proteccedilatildeo dos arquivos Este coacutedigo estaacute representado pelos 9 caracteres que seguem o tipo de cada arquivo (primeiro caractere) Os trecircs primeiros caracteres correspondem a proteccedilatildeo para o dono (user) do arquivo os trecircs proacuteximos definem a proteccedilatildeo para a categoria grupo (group) e os uacuteltimos trecircs caracteres especificam a proteccedilatildeo do arquivo em relaccedilatildeo ao demais usuaacuterios (other)

- 48 -

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

Exemplo

$ ls -altotal 9drwxr-x--x 7 bessa instrutores 512 Dec 12 1132 drwxr-xr-x 9 root instrutores 512 Oct 20 0911 -rwxr-x--x 1 bessa instrutores 380 May 12 1603 cshrc-rwxr-x--x 1 bessa instrutores 160 May 12 1825 logindrwxr-xr-x 2 bessa instrutores 512 Jan 05 1055

avaliacaodrwxr-xr-x 2 bessa instrutores 512 Jan 09 1553 curso-rwxrw-r-- 1 bessa instrutores 970 Jun 16 1103 dadosdat-rwxrw-r-- 1 bessa instrutores 979 Sep 29 1307

manualdocdrwxr-xr-x 2 bessa instrutores 512 Feb 08 0855 prog $

No exemplo acima analisemos o arquivo dadosdat Ele eacute do tipo ordinaacuterio O usuaacuterio bessa (dono do arquivo) pode ler alterar e executar o arquivo Todos os usuaacuterios que pertenccedilam ao grupo instrutores podem ler e alterar o arquivo mas natildeo podem executa-lo Qualquer outro usuaacuterio soacute poderaacute ler o arquivo

A proteccedilatildeo assinalada ao arquivo diretoacuterio determina o primeiro niacutevel de proteccedilatildeo para todos os arquivos deste diretoacuterio e tem prioridade sobre as proteccedilotildees associadas individualmente a cada arquivo Por exemplo caso um usuaacuterio natildeo tenha permissatildeo de escrita em um arquivo diretoacuterio natildeo poderaacute eliminar nenhum arquivo deste diretoacuterio ainda que as proteccedilotildees dos arquivos indiquem o contraacuterio

Alteraccedilatildeo das Permissotildees

Para alterarmos as permissotildees 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 privileacutegios do dono do arquivo a letra g os privileacutegios do grupo e a letra o os privileacutegios dos demais usuaacuterios A letra a (all) representa todas as categorias de usuaacuterios O sinal + significa a adiccedilatildeo de um privileacutegio e o sinal - a retirada de um privileacutegio A opccedilotildees r w e x representam respectivamente as permissotildees de leitura alteraccedilatildeo e execuccedilatildeo Podemos alterar vaacuterios privileacutegios em um uacutenico comando separando-os por viacutergulas Classes de usuaacuterios e niacuteveis de proteccedilatildeo que natildeo forem especificados no comando natildeo seratildeo alterados

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod g-wo-rw arquivo$ ls -l

- 49 -

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Formato 2

$ chmod nnn arquivo

Onde nnn eacute o coacutedigo em octal que representa os tipos de acesso concedidos agrave cada categoria de usuaacuterio Cada permissatildeo tem um nuacutemero associado execute = 1 write=2 e read = 4 A tabela abaixo ilustra as combinaccedilotildees possiacuteveis

Nuacutemero em Octal Permissotildees Descriccedilatildeo0 --- Nenhum acesso permitido1 --x Acesso execute2 -w- Acesso write3 -wx Acesso write e execute4 r-- Acesso read5 r-x Acesso read e execute6 rw- Acesso read e write7 rwx Acesso read write e execute

Tabela 8 Representaccedilatildeo de permissotildees atraveacutes de nuacutemero octal

Exemplo

$ ls -l-rw-rw-rw- 1 jose alunos 138 Jan 14 1615 arquivo$ chmod 640 arquivo

$ ls -l-rw-r----- 1 jose alunos 138 Jan 14 1630 arquivo$

Alteraccedilatildeo do Grupo e Dono

Se vocecirc eacute membro de mais de um grupo vocecirc pode eventualmente precisar alterar o grupo de um arquivo Isto eacute feito atraveacutes do comando chgrp Sua sintaxe eacute

$ chgrp grupo arquivo

Exemplos

$ ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo$ chgrp monitores arquivo $ ls -l arquivo-rw-r----- 1 jose monitores 138 Jan 14 1625 arquivo$

Caso desejemos saber todos os grupos existentes podemos listar o arquivo etcgroup com

- 50 -

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta

o comando

$ cat etcgroup

Eacute importante ressaltar que para utilizar o comando chgrp o usuaacuterio deve pertencer ao novo grupo especificado e ser o dono do arquivo ou entatildeo o superusuaacuterio

Enquanto o comando chgrp permite a alteraccedilatildeo do grupo do arquivo o comando chown permite alterar o seu owner (dono)

chown dono arquivo

Exemplos

ls -l arquivo-rw-r----- 1 jose alunos 138 Jan 14 1615 arquivo chown luiz arquivo ls -l arquivo-rw-r----- 1 luiz alunos 138 Jan 14 1625 arquivo

Este comando soacute pode ser utilizado pelo superusuaacuterio pois soacute ele tem acesso a todas as contas e usernames do sistema

Sites para consulta

Como o Linux eacute um software gratuito existem vaacuterios sites com manuais e explicaccedilotildees gratuitas sobre o mesmo ou seja grande parte dos assuntos discutidos sobre o Linux pode ser encontrada nestes sites

Abaixo podemos conferir alguns desses siteshttpfocalinuxcipsgaorgbr site com vaacuterios manuais para downloadshttpwwwlinuxisoorg site oficial do Linux onde todas as distribuiccedilotildees podem ser

baixadas gratuitamente sem dificuldadeshttpwwwsoftwarelivregovbrlinks site com vaacuterios links importantes sobre o LinuxhttpwwwconectivacombrcpubptincConectivasuporteprhardwarehtml site

oficial de suporte da Conectiva com explicaccedilotildees de vaacuterias duacutevidas comuns sobre diversas configuraccedilotildees de hardware e software no Linux

httpwwwrau-tuunicampbrlinux site de perguntas e respostas sobre Linux Caso natildeo encontre a resposta no site vocecirc pode formular e enviar sua pergunta e aguardar uma resposta de um colaborador

- 51 -

  • Capiacutetulo 1
    • Evoluccedilatildeo Histoacuterica do Hardware
      • Capiacutetulo 2
        • Organizaccedilatildeo Interna
        • de Computadores
          • Capiacutetulo 3
            • Sistemas Operacionais
              • Capiacutetulo 4
                • Introduccedilatildeo ao Linux
                  • Distribuiccedilotildees
                  • Caracteriacutesticas
                  • Estrutura Organizacional
                  • Kernel
                    • Versotildees do Kernel
                      • Shell
                      • Processos
                        • Tipos de processos
                        • Atributos
                          • Estrutura de Arquivos
                          • Tipos de arquivos
                            • Arquivos Especiais
                              • Hierarquia de arquivos
                                • Estrutura hieraacuterquica
                                  • Conexatildeo e Desconexatildeo com o Sistema
                                    • Conexatildeo com o sistema
                                    • Desconexatildeo do sistema
                                      • Criaccedilatildeo e exclusatildeo de usuaacuterios e grupos
                                      • Comandos
                                      • Formato Padratildeo de uma Linha de Comando
                                      • Comparaccedilatildeo DOS x LINUX
                                      • Redirecionamento filtros e pipes
                                        • Redirecionamento
                                          • Filtros
                                          • Pipes
                                          • Montando e Desmontando Dispositivos
                                            • Montando a particcedilatildeo
                                              • Nota
                                                • Sites para consulta