aula 2

31
IMPLEMENTAÇÃO DO SISTEMA DE ARQUIVO UNIVERSIDADE GREGÓRIO SEMEDO

Upload: domingos-campos

Post on 16-Nov-2015

217 views

Category:

Documents


3 download

DESCRIPTION

sistemas de arquivos

TRANSCRIPT

1 Introduo

Universidade gregrio semedo

Implementao do Sistema de Arquivo

ndicendice24Sistema de Arquivo124.1Arquivo124.1.1Qual a importncia124.1.2Atributos dos Arquivos124.1.3Estrutura do Arquivo134.1.4Tipos de Arquivo144.1.5Operaes sobre Arquivos164.1.6Arquivos mapeados na Memria164.2Diretrio174.2.1Organizao do Sistema184.3Implementao do Sistema de Arquivo194.3.1Implementao de Arquivos204.3.2Tipos de implementao de arquivo204.4Implementao de Diretrio214.4.1Tipos de implementao de diretrio214.4.2Algoritmo de busca no diretrio225MS-DOS235.1Histria do MS-DOS235.1.1O PC IBM235.1.2MS-DOS Verso 1.0255.1.3MS-DOS Verso 2.0255.1.4MS-DOS Verso 3.0265.1.5MS-DOS Verso 4.0265.1.6MS-DOS Verso 5.0265.2O Sistema de Arquivo27Referncias e Bibliografia46Data e Assinaturas48ResumoSistema Operacional um software importante do computador que controla todos os seus recursos. Os aplicativos que criamos como programadores so executados sobre o sistema operacional, e importante conhecer como ele funciona para termos a base necessria para desenvolver programas mais rpidos e confiveis.Sabemos que importante conhecer o sistema operacional, mas ele em geral complexo e extenso por gerenciar vrios mdulos. Assim, h uma procura por mtodos para um melhor entendimento dos vrios tpicos relacionados ao SO. A fim de ajudar nesse sentido surgiram nas ltimas duas dcadas vrios softwares educacionais e de cdigo aberto.

IntroduoSistema Operacional um software importante do computador que controla todos os seus recursos, ele realiza aes como ativao e gerenciamento de memria ou controle dos dispositivos de entrada e sada. Fornece a base sobre a qual os programas aplicativos so executados. Os softwares como Word e Excel s podem rodar sobre um sistema operacional, ou seja, sobre uma plataforma de suporte. As plataformas mais famosas so o Windows, MacOS (sistema operacional do Macintosh), o MS-DOS e o Linux.Os aplicativos que criamos como programadores so executados sobre o sistema operacional, e importante conhecer como ele funciona para termos a base necessria para desenvolver programas mais rpidos e confiveis, tirando bom proveito do que o sistema pode nos oferecer. Caso nossos aplicativos tenham algum problema como estouro de pilha poderemos saber que resolveremos comprando mais memria ou gerenciando melhor a mesma.Sabemos que importante conhecer o sistema operacional, mas ele em geral complexo e extenso por gerenciar vrios mdulos. H uma grande dificuldade tambm relacionada compreenso dos conceitos e abstraes tais como entender o que processo ou concorrncia. Assim, h uma procura por mtodos para um melhor entendimento dos vrios tpicos relacionados ao SO. A fim de ajudar nesse sentido surgiram nas ltimas duas dcadas vrios softwares educacionais e de cdigo aberto. Estes SOs so usados como instrumento de ensino nas universidades para um estudo mais amplo, aprofundado e prtico dos conceitos de um sistema operacional j que o ensino feito por exemplos e experimentos. Exemplos destes sistemas educacionais so o Nachos [6,8], o Minix [1,2], o Amoeba [3,4] e o RCOS (Ron Chernich's Operating System) [9,10]. Este trabalho se baseia no sistema RCOS.O RCOS-java um software educacional e de cdigo aberto para entender como funciona o sistema operacional internamente e baseado na verso anterior do mesmo, escrita em C++. O seu desenvolvimento comeou em 1996 por quatro pessoas da Universidade Central do Queensland, Austrlia. Ele um software interessante por ter interface grfica e multitarefa, que simula um sistema operacional. O RCOS pretende explicar vrias partes do SO como escalonamento de processos (dependendo do algoritmo de ordenao de fila e quantum), comunicao entre processos e as instrues de cdigo da CPU. Porm o mdulo de gerenciamento de disco e sistema de arquivo ainda no se encontram implementados.A proposta deste trabalho desenvolver o mdulo de ensino sobre sistema de arquivo, estendendo assim o RCOS. Na proposta inicial do RCOS, este deveria basear-se no sistema arquivo do SO CP/M por ser simples. O mdulo desenvolvido foi baseado no sistema do MS-DOS 5.0, o qual apesar de antigo ainda hoje utilizado.

Sistema de Arquivo

Nesta seo sero definidos alguns conceitos para um melhor entendimento da explicao do desenvolvimento do projeto.Para a maioria dos usurios o sistema de arquivo a parte mais visvel do sistema operacional. O sistema de arquivo consiste de duas partes: arquivo, que armazena dados, e estrutura de diretrio qual organiza e tm as informaes sobre todos os arquivos do sistema. Abaixo explicaremos os conceitos de arquivo e diretrio juntamente com suas caractersticas.ArquivoQual a importnciaTodas as aplicaes computacionais precisam armazenar e recuperar informaes, abaixo lista-se trs razes: 1. Para algumas aplicaes o espao de endereamento virtual suficiente, porm para outras, tais como as bancrias, ele muito pequeno.2. O segundo problema que certas informaes precisam ser lidas depois, porm so perdidas quando o processo termina sua execuo. Estas informaes no podem ser perdidas quando ocorre uma falha qualquer do hardware, com a conseqente morte do processo.3. Outro problema quando vrios processos tm acesso ao mesmo conjunto de informaes ao mesmo tempo. Uma boa prtica de programao tornar a informao independente do processo.A soluo, para os problemas acima apontados, manter a informao armazenada em disco, ou em qualquer outro dispositivo externo de armazenamento, em unidades denominadas arquivos. Os arquivos so gerenciados por uma parte do Sistema Operacional denominado Sistema de Arquivos.Arquivos podem ser gravados em vrios tipos de mdia como: disco magntico, fita magntica, e disco ptico. Para que seja conveniente usar o computador, o sistema operacional proporciona uma viso lgica das informaes armazenadas, da a abstrao do que est no disco fsico para o usurio o arquivo.Atributos dos ArquivosQuando um processo cria um arquivo, preciso que tal arquivo receba um nome. Quando tal processo termina sua execuo, o arquivo continua a existir, podendo ser acessado por outros processos usando para tanto o nome atribudo ao arquivo.No MS-DOS, nomes em maisculo e minsculo identificam o mesmo arquivo. Ao contrrio do que acontece no Unix. H ainda a extenso do arquivo que indica a caracterstica do arquivo, isto ajuda um programa que use diferentes tipos de arquivo. No caso de um programa compilador para saber que arquivos compilar e quais linkar por exemplo.Cada arquivo tem necessariamente um nome como explicado acima e um conjunto de dados. Alm disso, o sistema operacional associa a cada arquivo algumas outras informaes, como por exemplo a data e a hora em que o arquivo foi criado e seu tamanho. Chamamos estes itens extras de atributos do arquivo. A lista de atributos varia muito de sistema pata sistema. Estes atributos tm vrios intuitos, como backup, controle de verso e segurana.Cada arquivo tem necessariamente um nome e um conjunto de dados. Alm disso, o sistema operacional associa a cada arquivo algumas outras informaes, como por exemplo a data e a hora em que o arquivo foi criado e seu tamanho. Chamamos estes itens extras de atributos do arquivo. A lista de atributos varia muito de sistema para sistema. Estes atributos tm vrios intuitos, como backup, controle de verso e segurana, mas os mais usados consistem dos seguintes:

Figura 41 Atributos do Arquivo

Estrutura do ArquivoTipos: Seqncia de bytes Seqncia de registros rvore

Figura 42 Estrutura do Arquivo

Tanto o Unix como o MS-DOS, tratam seus arquivos como uma seqncia de bytes, que d uma flexibilidade enorme ao sistema de arquivos. Os programas de usurio podem colocar o que desejarem nos arquivos e identific-los da forma que lhes for conveniente. O sistema operacional no ajuda em nada, mas tambm no atrapalha.

O primeiro passo para se estruturar um arquivo foi atravs do uso de registros. Neste modelo o arquivo uma seqncia de registros de tamanho fixo, cada um deles com estrutura interna caracterstica. Logo uma leitura retorna um registro e uma escrita grava um registro.

O terceiro tipo de estrutura de arquivo, na qual o arquivo composto de uma rvore de registros, no necessariamente do mesmo tamanho, cada um dos quais contendo um campo com chave numa posio fixa do registro. A rvore ordenada pelo campo da chave, de modo a permitir uma busca rpida pela chave. No exemplo mostrado a ordem alfabtica alfabtica.

Tipos de ArquivoMuitos sistemas operacionais suportam vrios tipos de arquivo. Por exemplo, o Unix e o MS-DOS tm; Arquivos regulares so aqueles que contm a informao do usurio. Arquivos de diretrio so arquivos do sistema usados na manuteno do sistema de arquivos. Arquivos Especiais de Caracteres esto diretamente ligados entrada/sada e so usados para a modelagem de dispositivos seriais de entrada/sada, tais como terminais, impressoras e redes. Arquivos Especiais Blocados so usados para modelar disco.

Em geral, os arquivos regulares so arquivos ASCII, ou binrios. De regra os arquivos ASCII so constitudos por linhas de texto e os arquivos binrios so simplesmente os arquivos que no so ASCII.

Figura 43 Tipo de Arquivo exe

Apesar de tecnicamente o arquivo ser uma seqncia de bytes no caso do Unix e MS-DOS, o sistema operacional s executar um arquivo que esteja num dado formato, ou seja, baseado numa estrutura. A estrutura de um arquivo binrio executvel, no caso do Unix, formado por 5 partes distintas: cabealho, texto, dados, bits de relocao e tabela de smbolos. O cabealho comea com um nmero mgico, que identifica o arquivo como um arquivo executvel (de forma a prevenir a execuo acidental de arquivos fora deste formato). Segue-se um conjunto de 16 bits fornecendo o tamanho de cada uma das partes componentes do arquivo, o endereo de incio da execuo e alguns bits de flag. Depois do cabealho vem o cdigo e os dados do programa, que so carregados na memria e relocados usando os bits de relocao. A tabela de smbolos usada para depurao.

Operaes sobre ArquivosPara fazer operaes sobre os arquivos podemos acess-los de duas formas: seqencial, ou seja, na ordem em que os mesmos foram armazenados nos arquivos; ou por acesso randmico ou aleatrio, o qual consiste naquele em que os registros e os bytes podem ser lidos em qualquer ordem.As chamadas de sistema mais comuns relacionadas ao sistema de arquivos so: create, delete, open, close, read, write, append, seek, get atrributes, set attributes, rename. Abaixo explicamos algumas delas. Create dois passos criam o arquivo. Primeiro v se tem espao no sistema de arquivo. Segundo, uma nova entrada precisa ser feita no diretrio. Write para escrever em um arquivo passa-se o nome do mesmo que procurado em que diretrio se encontra, depois gravado os dados que pode ser gravado a partir da posio corrente. Se a posio for a final do arquivo, o tamanho do mesmo cresce, seno o arquivo sobrescrito. Open o propsito desta chamada permitir que o sistema busque os atributos e a lista dos endereos em disco correspondentes a este arquivo, carregando estas informaes na memria principal, de maneira a tornar mais rpido os acessos subseqentes a este arquivo. Read para ler o arquivo passamos o nome do mesmo, da procuramos nos diretrios por uma entrada para esse arquivo. Usualmente os bytes so lidos a partir da posio atual do ponteiro, e o processo que chamou deve indicar a quantidade de informao a ser lida. Close quando no houver mais acesso a determinados arquivos, seus atributos e endereos de disco no precisam mais ser mantidos na memria, logo o arquivo pode ser fechado. Delete quando um arquivo no for mais necessrio ele deve ser removido Procuramos pelo nome do arquivo a ser removido, achando uma entrada de diretrio para ele no diretrio podemos apag-lo e a entrada do mesmo. H sistemas que apagam arquivos no usados por n dias. Arquivos mapeados na MemriaSe cada vez que precisarmos utilizar um arquivo tivermos que acessa-lo em disco, isso seria extremamente custoso e ineficiente, principalmente quando comparamos tal operao com a de acesso memria principal. Logo a mlehor soluo mapear arquivos na memria (no espao de endereamento do processo que estiver rodando).O mapeamento de arquivo funciona melhor em um sistema que suporte segmentao. Como mostrado na Figura 44, em tais sistemas, cada arquivo pode ser mapeado para um segmento prprio, de forma que o byte k do arquivo corresponda ao byte k do segmento. O processo deve ser segmentado antes de mapear seus arquivos no seu espao de endereamento. Aps isso o processo mapeia um arquivo existente abc em um segmento e cria um novo segmento para o arquivo xyz. Depois disso os arquivos so removidos do espao de endereamento, e ento o arquivo de sada passa a existir como se ele tivesse sido criado de maneira convencional de disco para o disco e no sendo copiado em memria antes de ir para o disco de fato.

Figura 44 Arquivos mapeados em MemriaApesar do mapeamento de processo eliminar a necessidade de entrada/sada, tornando a programao mais simples, ela tem alguns problemas: difcil para o sistema saber o tamanho exato do arquivo de sada xyz. fcil informar o nmero da pgina de mais alta ordem que foi escrita, mas no h como saber quantos bytes desta pgina foram escritos. Ocorre problema se o arquivo for mapeado por um processo e aberto por outro para fazer leitura. O sistema deve garantir que estes dois processos no esto tratando com duas verses inconsistentes do arquivo. O arquivo pode ser maior do que o segmento, ou mesmo maior do que todo o espao de endereamento virtual. A soluo seria fazer o mapeamento de pedaos do arquivo e no o arquivo inteiro.DiretrioPara tratar dos vrios arquivos existentes no disco, o sistema operacional faz uso do conceito de diretrio, que em muitos casos apenas um arquivo.

Figura 45 Organizao Tpica de Diretrio

Normalmente cada disco do sistema tm pelo menos uma partio onde os arquivos e diretrio residem. No diretrio existem entradas de diretrio que correspondem a cada arquivo ou sub-diretrio do mesmo. A Figura 45 mostra uma organizao tpica de diretrio, na qual pode haver um disco dividido em 2 parties ou dois discos formando uma mesma partio.O diretrio pode ser organizado de vrias maneiras, mas temos que ser capazes de realizar algumas operaes como: create, delete, opendir, closedir, readdir, rename, link, unlink. Create cria um diretrio. Ele vazio, contendo apenas o ponto e o pontoponto Delete apaga um diretrio, somente um diretrio vazio pode ser removido. O diretrio contendo apenas o ponto e o pontoponto, apesar de ser considerado vazio, geralmente no pode se apagado Opendir antes de o diretrio ser lido ele precisa ser aberto Closedir aps um diretrio ter sido lido ele precisa ser fechado para liberar espao na tabela de memria ReadDir retorna a prxima entrada em um diretrio aberto Rename Os diretrios podem mudar de nome assim como seus arquivos Link permite que um arquivo aparea em mais de um diretrio UnLink- remove a entrada de um diretrio

Organizao do Sistema

Nesta seo sero descritas algumas formas de esquemas lgicos de estrutura de diretrio.Um diretrio contm um conjunto de entradas, uma por arquivo. Uma das possibilidades cada entrada conter o nome do arquivo, seus atributos e os endereos no disco onde ele est armazenado, ou o nome do arquivo e um ponteiro para outra estrutura de dados onde se podem encontrar os atributos do arquivo e seus endereos no disco.Quando um arquivo aberto os atributos e seus endereos so colocados em uma tabela na memria. Todas as referncias subseqentes a tal arquivo usam as informaes da memria principal.Se temos arquivos diferentes como nomes iguais, eles no podem coexistir num mesmo diretrio logo surgiu a idia de hierarquia genrica, por exemplo, atravs de uma rvore de diretrios. Assim podemos ter tantos diretrios quantos necessrios.A forma mais comum aquela em que tem-se um nico nvel, ou seja, h apenas um diretrio simples. Todos os arquivos esto num mesmo diretrio, o qual fcil de dar suporte e entender. Esta forma tem limitaes principalmente quando o nmero arquivos e usurios crescem, pois j que os arquivos esto no mesmo diretrio, eles precisam ter nomes diferentes.A maior desvantagem do diretrio de um nico nvel a confuso dos nomes de arquivos criados pelos diferentes usurios. A soluo padro criar um diretrio separado para cada usurio. Nessa arquitetura cada usurio tem seu prprio diretrio.

Figura 46 Sistema de Arquivo Hierrquico

A terceira opo o Sistema de Diretrio Hierrquico onde resolvemos os problemas dos esquemas anteriores. Quando o sistema organizado como uma rvore de diretrio, necessria uma regra para a formao dos nomes dos arquivos. H 2 mtodos muito conhecidos. Em um a cada arquivo dado um nome de caminho absoluto composto do caminho do diretrio raiz at o arquivo. O segundo mtodo de formao de nome o nome de arquivo relativo, e usado em conjunto com o conceito de diretrio de trabalho ou diretrio corrente, ou seja, sabendo o diretrio corrente mais fcil digitar o nome do arquivo que todo o caminho absoluto.

Implementao do Sistema de Arquivo

Nesta seo sero abordadas as implementaes dos arquivos e do diretrio com base nas definies feitas sobre ambos anteriormente.

Implementao de Arquivos

O ponto-chave na implementao do armazenamento de arquivos associar blocos de disco a arquivos. H vrios mtodos tais como: Alocao Contgua, Alocao com Lista Ligada, Alocao com Lista Ligada Usando um ndice e Ns-i.Tipos de implementao de arquivoAlocao ContguaO mais simples de todos os esquemas de alocao, onde cada arquivo armazenado no disco como um bloco contnuo de dados. H 2 vantagens neste esquema: simples de implementar pois o controle de onde est o arquivo reduz-se a guardar o endereo em disco de seu primeiro bloco, e a performance tima porque todo o arquivo pode ser lido do disco em uma nica operao.Porm h 2 desvantagens: s pode ser usado se o tamanho do arquivo for conhecido no momento de sua criao, sem isso o sistema operacional no pode saber quanto espao em disco deve ser reservado. Outro problema a fragmentao do disco que torna-se cara devido a esta poltica de alocao. Alocao com Lista LigadaNeste mtodo mantm-se o espao alocado ao arquivo como uma lista ligada de blocos. A primeira palavra de cada bloco usada como um ponteiro para o prximo bloco. O restante do bloco usado para armazenamento das informaes pertencentes ao arquivo. As vantagens so: ao contrrio da alocao contgua, qualquer bloco do disco pode ser usado. No se perde espao por fragmentao do disco. Alm disso, a entrada do diretrio s precisa armazenar o endereo em disco do primeiro bloco do arquivo. O restante do arquivo pode ser encontrado comeando no ponto indicado no diretrio.As desvantagens deste mtodo so: o acesso randmico lento e mais difcil de implementar do que o seqencial. E, alm, disso a quantidade de informaes armazenadas em um bloco no mais uma potncia de dois, em funo da necessidade de se armazenar o ponteiro no bloco. Alocao com Lista Ligada Usando um ndiceAmbas as desvantagens apontadas para a alocao com listas ligadas podem ser eliminadas tirando-se o ponteiro de cada um dos blocos e colocando-os em uma tabela ou ndice na memria.Usando esta organizao, todo bloco fica disponvel para armazenamento da informao. Apesar do acesso ser randmico, mais simples de ser implementado. Apesar de a cadeia ter de ser seguida para encontrar um deslocamento dentro do arquivo, a cadeia est toda na memria e no h necessidade de acesso a disco. Basta que a entrada do diretrio contenha o nmero do bloco inicial. O MS-DOS usa este mtodo para alocao de espao em disco.A maior desvantagem que toda a tabela deve estar na memria durante todo o tempo.

Ns-iEste ltimo mtodo para controlar a correspondncia entre blocos no disco e arquivos consiste em associar a cada arquivo de uma pequena tabela denominada n-i(n ndice), que lista os atributos e os endereos em disco dos blocos do arquivo.Os primeiros endereos de disco so armazenados no prprio n-i, de maneira que, para arquivos pequenos, toda a informao encontrada diretamente no n, sendo a informao transferida do disco para a memria quando o arquivo for aberto. Em arquivos maiores, um dos endereos no n-i o endereo de um bloco do disco chamado bloco indireto simples . Tal bloco contm endereos adicionais no disco relativos ao arquivo em questo. Caso o arquivo seja maior usa-se o bloco indireto duplo que aponta para 2 blocos simples, ou o bloco indireto triplo que aponta para 3 blocos simples os quais apontam para mais dois blocos simples cada um deles. O Unix segue este esquema.

Implementao de Diretrio

Antes do arquivo ser lido ele precisa ser aberto. Ao abrir um arquivo, o sistema operacional usa o nome fornecido pelo usurio para procurar sua entrada no diretrio. Tal entrada fornece as informaes necessrias a encontrar os blocos deste arquivo. Dependendo do sistema, esta informao pode ser simplesmente um endereo do disco vlido para todo o arquivo (alocao contgua), o nmero do primeiro bloco do arquivo (alocao com listas ligadas), ou mesmo o nmero do n-i relativo ao arquivo. Nestes casos, a principal funo do diretrio mapear o nome ASCII do arquivo na informao necessria localizao do dado. Os atributos podem ser armazenados na entrada do diretrio ou outra possibilidade armazenar nos prprios ns nos sistemas que usam n-i.

Tipos de implementao de diretrio

Diretrios no CP/MS existe um diretrio e tudo o que o sistema operacional deve fazer procurar o nome do arquivo no diretrio e obter os nmeros dos blocos do disco bem como os atributos correspondentes a este arquivo.Diretrios no MS-DOSO MS-DOS e alguns outros sistemas usam rvores de diretrio na implementao de seus diretrios. Uma entrada para diretrio no MS-DOS possui 32 bytes e tem os seguintes campos: nome do arquivo, extenso, atributos, reservado, hora, data, nmero do primeiro bloco. Este nmero usado como ndice para uma tabela do tipo alocao com lista ligada. Seguindo a cadeia todos os blocos podem ser encontrados.No MS-DOS diretrios podem conter outros diretrios, levando a uma estrutura hierrquica para o sistema de arquivo.Diretrio no UnixA estrutura adotada pelo Unix bastante simples. Cada entrada contm simplesmente um nome de arquivo, e o nmero do seu n-i. Todas as informaes sobre tipo, tamanho, tempos, proprietrios e blocos de disco esto contidas no n-i.

Algoritmo de busca no diretrioO algoritmo para se abrir um arquivo basicamente o mesmo para qualquer sistema de diretrio hierrquico. Temos que localizar os blocos do disco correspondente ao nome do arquivo fornecido na chamada.Ex de caminho: /usr/ast/mboxEm primeiro lugar ele localiza o diretrio-raiz. No Unix, seu n-i est localizado num endereo fixo do disco. A seguir ele procura pelo primeiro componente do caminho, usr, no diretrio-raiz, para encontrar o nmero do seu n-i. Localizar o n-i a partir do seu nmero muito simples, uma vez que cada um deles tem uma localizao fixa no disco. A partir deste n-i, o sistema localiza o diretrio para /usr e busca nele as informaes sobre o prximo componente ast. Quando a entrada correspondente a ast for encontrada, o sistema obtm o n-i para o diretrio /usr/ast. Deste n-i ele pode encontrar o diretrio procurado e acessar mbox. O n-i deste arquivo ento transferido para a memria e mantido l at que o arquivo seja fechado.Nomes relativos so pesquisados da mesma forma que os absolutos, s que a busca iniciada do diretrio de trabalho, em vez de comear do diretrio-raiz.Cada diretrio tem entrada para . e .. que so colocados l quando criado o diretrio. A entrada tem o mesmo nmero do n-i do diretrio corrente, e a entrada tem o nmero do n-i do seu diretrio-pai, respectivamente.

MS-DOS

O desenvolvimento desse projeto foi baseado no sistema de arquivo do MS-DOS, abaixo tem-se a histria do MS-DOS, em que ele foi baseado e sua evoluo em relao aos sistemas da poca e em relao ao sistema de arquivo.MS-DOS um exemplo de sistema operacional para mquinas com um nico processador. O mesmo s roda em arquiteturas baseadas nos processadores Intel 8088 e seus sucessores. Apesar disso, o MS-DOS de longe, o sistema operacional mais utilizado de todos os tempos, tendo alcanado a respeitvel marca de 50 milhes de cpias vendidas. Esta seo foi baseada no livro Modern Operating Systems de Tanembaum [12]Histria do MS-DOSO primeiro computador pessoal foi o Altair, produzido em 1975 por uma companhia chamada MITS, de Albuquerque, Novo Mxico, EUA. Ele era baseado no microprocessador 8080, de oito bits, fabricado pela Intel, e tinha 256 bytes de memria. O Altair no tinha teclado, nem vdeo, e muito menos disco ou fita, mas seu preo muito baixo, em torno de 400 dlares, transformou-o num culto para os eletrnicos amadores, que cresceram a montando kits de rdios e televises vendidos em bancas de jornal. Um jovem chamado Bill Gates escreveu uma verso do BASIC para o Altair, que obteve um sucesso modesto junto aos usurios do microcomputador. Mais tarde este programa veio a fazer de Gates um bilionrio.Em poucos anos, muitas empresas comearam a produzir microcomputadores baseados no chip 8080. Em quase todas estas mquinas, rodava o sistema operacional chamado CP/M, produzido por uma pequena empresa da Califrnia, a Digital Research. Todos os computadores pessoais (chamados de microcomputadores) projetados de 1975 at o incio da dcada de 80 nada mais eram que brinquedos comprados e utilizados fundamentalmente pelas pessoas que tinham a eletrnica como hobby.O PC IBMNo incio dos anos 80, a IBM, que ento dominava a indstria de computadores, decidiu entrar no negcio da computao pessoal. No entanto, quando tomou uma deciso sobre o assunto, j era tarde para desenvolver um projeto prprio. Por conta disso, seus executivos decidiram fazer algo que no era usual para a cautelosa e burocrtica IBM. Enviaram um de seus agentes, Philip Estridge, para Boca Raton, na Flrida. Partiram de Westchester, Nova Iorque, com uma mala cheia de dinheiro, com a recomendao de no voltar a Nova Iorque sem um projeto de computador pessoal no bolso.Estridge percebeu logo que a nica maneira de se produzir rapidamente um computador pessoal era utilizando componentes-padro, em vez dos projetados internamente, pela prpria IBM, como ela sempre fazia. Nesta poca, a Intel j tinha produzido dois sucessores para o 8080, o 8086, de 16 bits, e o 8088, uma verso do 8086, com um barramento de oito bits. Estridge escolheu o 8088, pois os chips que davam suporte a este processador eram muito mais baratos que os do 8086, Esta deciso baseou-se no fato de o preo de venda da mquina ser o ponto de maior importncia de todo o projeto.Alm de no ter interesse em construir ela prpria os chips para equipar seu computador pessoal, a IBM estava muito menos interessada em escrever software para ele. Seus executivos sabiam que o BASIC era muito popular entre os usurios de computadores pessoais, de modo que eles foram consultar Bill Gates, que nesta poca j tinha fundado uma nova empresa, chamada Microsoft, a fim de licenciar o interpretador BASIC para ser usado no IBM-PC, Pediram tambm que Gates desenvolvesse um sistema operacional para a nova mquina.A Microsoft, porm, estava dedicada ao projeto de vender o UNIX, sob licena do Bell Labs (AT&T). Ocorre que o UNIX, originrio do mundo dos minicomputadores, precisava de 100k de memria s para o sistema operacional, e tambm de um disco rgido. A mquina da IBM tinha um total de 64k de memria, e no era equipada com disco rgido. Em funo disso, Gates sugeriu que a IBM usasse o CP/M-86, desenvolvido pela Digital Research. A IBM consultou a Digital Research, que respondeu que o desenvolvimento do CP/M-86 estava atrasado em relao ao cronograma original, e a IBM no podia esperar.Mais uma vez, a Microsoft foi procurada. Desta vez consultada sobre a possibilidade de escrever um sistema operacional com as mesmas caractersticas do CP/M-86. Os projetos de Gates o impediram de assumir a empreitada e realiz-la no prazo exigido pela IBM. Ele, porm, sabia que uma empresa vizinha da Microsoft, a Seatle Computer Products, havia desenvolvido um sistema operacional CP/M-like, denominado 86-DOS, para testar as placas de memria que ela produzia e vendia. A Microsoft ento comprou o 86-DOS, e em abril de 1981, contratou seu projetista, Tim Paterson, para torn-lo ainda menor. Eles mudaram o nome do sistema para MS-DOS (MicroSoft Disk Operating System), entregando-o IBM dentro do prazo combinado. Quando o IBM PC foi anunciado em agosto de 1981, o MS-DOS estava junto com ele.Na verso da IBM e de muitos outros fabricantes, a maior virtude do MS-DOS era a de permitir que os softwares desenvolvidos para CP/M, que rodavam no processador 8080 (o 8088 era compatvel com o 8080, e podia rodar a maioria de seus programas com pouqussimas modificaes), rodassem tambm sob o MS-DOS. Ningum poderia imaginar que 10 anos depois este pequeno sistema, que surgiu no mercado quase que por acidente, pudesse estar controlando o funcionamento de 50 milhes ou mais de computadores espalhados pelo mundo inteiro.Alm do mais, ningum, nem mesmo a IBM, tinha a menor idia do sucesso que o IBM PC iria alcanar. A IBM imaginava inicialmente que ele seria usado para jogos, Basta ver a freqncia de 4,77MHz do seu clock foi escolhida em funo da compatibilidade com a usada nos sistemas de televiso americanos, de maneira a permitir que as pessoas usassem seus prprios aparelhos de TV como vdeo, em vez de monitores especficos. O PC tambm vinha equipado com hardware para controlar aparelhos de gravao/reproduo de fitas cassete, que poderiam ser usadas como meio de armazenamento, e joysticks. Nenhum destes dois dispositivos teve muito uso, em virtude da inexistncia de softwares para eles.Provavelmente a melhor coisa que a IBM fez foi tornar o PC um sistema aberto. O projeto completo, inclusive as listagens da ROM e os diagramas eltricos foram descritos em detalhes em um livro que estava disponvel em todos os pontos de venda dos PCs. Isto fez com que fosse possvel usar no PC tanto produtos de hardware quanto de software, produzidos por terceiros, a exemplo do que foi feito para os milhares de fabricantes.De fato, com os diagramas de circuitos disponveis, e a mquina composta exclusivamente para os componentes no dedicados, que podiam ser comprados em qualquer loja de eletrnica, muitas empresas passaram a construir e a vender cpias do PC, conhecidas como clones, entretanto em competio direta com a prpria IBM. Foi devido a esta enorme carga de energia e criatividade que o PC teve tanto sucesso, e a reboque dele, o MS-DOS.MS-DOS Verso 1.0O sistema operacional era constitudo por trs programas: o ibmbio.com, que tratava do disco e do sistema de entrada/sada voltado a caracter; o ibmdos.com, que o gerenciador de arquivos e do disco, e o comannd.com.A primeira verso do MS-DOS, a exemplo do CP/M, suportava somente um nico diretrio, ou seja, no suportava sub-diretrios. Ao digitar o comando dir, para listar todos os arquivos do diretrio corrente, o que voc realmente via era a listagem de todos os arquivos do sistema. Apesar da verso 1.0 do MS-DOS ter sido compatvel com o CP/M, ela era melhor que este. O MS-DOS trazia informaes sobre o arquivo como o tamanho exato do mesmo, tinha um algoritmo melhor para alocao de disco e era muito mais rpido. A verso 1.1 foi liberada pela Microsoft em 1982 e tambm consertou alguns bugs.MS-DOS Verso 2.0A IBM em maro de 1983 lanou o PC/XT, seu primeiro computador pessoal equipado com disco rgido junto com a nova verso 2.0 do MS-DOS. O sistema de arquivo do MS-DOS foi quase todo inspirado no do Unix. O MS-DOS no sistema de arquivo usa o conceito de FAT e o Unix usa o conceito de I-nodes. As chamadas open, read, write e close estavam presentes na verso 2.0, exatamente com a mesma estrutura do Unix.No processo de adicionar novas caractersticas do Unix, o MS-DOS cresceu para 20.000 linhas de cdigo de montagem. Ele tambm tirou do mercado o CP/M-86, que finalmente tinha tido seu desenvolvimento terminado, e estabeleceu-se como o sistema operacional dominante para os PCs. Por ter introduzido o disco rgido nos PCs tornou-se possvel rodar aplicaes razoavelmente grandes, fazendo com que eles deixassem de ser computadores pessoais para se tornarem tambm mquinas comerciais. Empresas de pequeno, mdio e grande portes comearam a adquirir PCs.Nessa poca o MS-DOS era mantido por somente quatro pessoas na Microsoft. Com o crescimento da demanda mundial pelo sistema, a Microsoft contratou novos programadores e lanou a verso 2.05, que suportava horrios, datas, moedas, e smbolos decimais, usados em muitos pases do mundo.MS-DOS Verso 3.0A IBM lanou o PC/AT em agosto de 1984, seu primeiro computador pessoal baseado no chip 286. Nesta poca tambm surgiram discos de 10MB e o conceito de disco em RAM, atravs da qual uma parte da memria era usada como se fosse um disco muito rpido. Quase na mesma poca do lanamento do MS-DOS 3.3, a IBM e a Microsoft liberaram um sistema operacional completamente novo, denominado OS/2. Na viso das duas empresas, o OS/2 iria substituir o MS-DOS. Isto nunca aconteceu. O OS/2 foi liberado com muito atraso, e pior que isto, incompleto. Apesar dele ter muitas vantagens sobre o MS-DOS, tal como usar toda a memria disponvel, rodar em modo protegido, suportar multiprogramao de uma forma elegante, o mercado no se interessou muito pelo novo sistema. Em 1991, a Microsoft anunciou que estava abandonando completamente o OS/2, o que irritou profundamente a IBM, a ponto de romper sua aliana com a Microsoft, e assinar um acordo com a Apple Computer para fornecimento de seus softwares.MS-DOS Verso 4.0Depois da IBM ter se convencido que o OS/2 no iria ser aceito pelos usurios, ela surpreendeu lanando o MS-DOS verso 4.0, o qual a Microsoft tambm produziu. Para obter a verso 4.0 a mesma usou o mtodo de engenharia reversa, distribuindo-o atravs dos fabricantes de clones do PC. Tanto a IBM quanto a Microsoft se convenceram de que o MS-DOS no iria desaparecer pois em lugar de contribuir para exterminar o MS-DOS, como fora a inteno revelada de ambas as empresas, elas estavam melhorando o sistema que no deveria continuar.MS-DOS Verso 5.0A verso 5.0 foi anunciada em abril de 1991. Nesta verso foi considerada seriamente a questo da memria estendida. Apesar de ainda haver a restrio na memria estendida de apenas poder-se usar 640K, esta verso capaz de manter por mais tempo a maior parte de seu prprio cdigo na memria estendida, logo fica disponvel para os programas de usurio em torno de 600K. Esta nova verso passou a ser vendido em lojas e no mais apenas aos fabricantes de computador.A verso 5.0 do MS-DOS j era obsoleta quando foi anunciada. A IBM e a Microsoft j sabiam disso por isso investiram muito milhes de dlares no OS/2. Infelizmente o mercado reagiu mal ao OS/2. Quando ficou claro que o OS/2 no decolaria a Microsoft mudou sua estratgia e desenvolveu o Windows, com interface grfica e uso de mouse, que rodava em cima do MS-DOS. O lado positivo disto o fato de ele ter acumulado uma quantidade imensa de pacotes de aplicativos de alta qualidade.O Sistema de ArquivoO sistema de arquivo original do MS-DOS foi baseado no CP/M. A princpio s existia um diretrio. A partir da verso 2.0 foi adotado o modelo hierrquico do sistema de arquivo. A partir desta nova verso o diretrio raiz podia ter subdiretrios e estes tenham novos sub-diretrios. O sistema de arquivo usa os nomes . e .. para indicar diretrio corrente e diretrio-pai respectivamente.Os nomes dos arquivos tem at 8 caracteres, seguidos de uma extenso de at 3 caracteres. Os nomes so formados por qualquer seqncia legal de caracteres. O separador de diretrio no mesmo o \. Outra coisa interessante que os arquivos PROFESSOR, Professor, professor indicam um nico arquivo, ou seja, ele desconsidera maisculas e minsculas.Cada arquivo no MS-DOS tem atributos. Eles so quatro:1. Readonly o arquivo no pode ser modificado2. Archive o arquivo modificado desde o ltimo arquivamento3. System arquivo de sistema que no pode ser apagado pelo comando del4. Hidden arquivo no listado pelo comando dir

O MS-DOS suporta vrios discos, ento quando o usurio quiser remover um arquivo ele deve especificar o dispositivo como exemplo a: para unidade de disquete e c: para disco rgido por exemplo.O disquete e o disco rgido so organizados de forma diferente e vamos nos concentrar no segundo tipo. Todos os discos rgidos tm a mesma estrutura, mostrada na Figura 51. O setor de boot tem dados crticos para o sistema de arquivo, alm de cdigo para inicializar o sistema. Depois vm as tabelas que controlam todo o espao do disco. Elas so seguidas pelo diretrio-raiz e por todo o resto.

Figura 51 Organizao do disco no MS-DOSO setor de boot sempre comea com uma instruo de desvio incondicional, que salta pelas informaes do setor e vai para o incio do cdigo, sem se preocupar com a estrutura interna do disco. Depois vem uma lista de informaes como nmero de bytes do setor, o nmero de setores por bloco, o nmero de arquivos das tabelas de alocao, o tamanho do diretrio raiz, o tamanho do dispositivo e outros dados.Aps estes parmetros vem o cdigo de boot, e ao final a tabela de partio. Ela contm o comeo e o termino de cada uma das parties do disco, at um mximo de quatro parties, cada uma podendo conter um sistema de arquivo diferente. Alguma das parties deve ser marcada como ativa para quando o boot do disco for acionado saber qual sistema inicializar.Aps o setor de boot encontra-se a FAT (Tabela de Alocao de Arquivos File Allocation Table), a qual controla todos os espaos do dispositivo. Para ter-se confiabilidade esta tabela pode ser duplicada, de modo ao sistema tornar-se inacessvel caso a FAT principal no possa ser lida por qualquer motivo.A FAT contm uma entrada para cada bloco do disco. O tamanho do bloco obtido do setor de boot. O formato conceitual da FAT mostrado na Figura 52. O seu formato real retrocede s razes do MS-DOS, baseado no CP/M. H uma correspondncia um-para-um entre as entradas da FAT e os blocos do disco, exceto pelas duas primeiras entradas, as quais possuem o cdigo da classe do disco. No exemplo vemos que atravs da FAT descobrimos quais blocos ocupam cada arquivo.A entrada do diretrio de cada arquivo possui o nmero do primeiro bloco que o mesmo ocupa, ento a partir disso e com o auxlio da FAT temos que todo o arquivo encontrado. Os blocos livres na FAT so marcados com um smbolo especial. Quando o arquivo cresce o MS-DOS procura por uma entrada livre na FAT, e aloca este para o arquivo. E os blocos que esto com falha so marcados na FAT com outro smbolo significando isto.

Figura 52 FAT - Tabela de Alocao de ArquivoExemplo de passos seguidos pelo MS-DOS para a chamada OPEN: O MS-DOS vai na tabela de descritores de arquivo, mantida como array de 20 bytes. Cada byte armazena um ndice de 1 byte para a tabela de arquivos do sistema. Se for localizado um descritor de arquivo livre, busca-se uma posio livre na tabela de arquivo do sistema. Caso as duas operaes tenham sucesso o caminho analisado, se comear com \, o caminho absoluto e a busca comea do diretrio-raiz, seno o caminho relativo, e a busca comea do diretrio de trabalho. A entrada do diretrio copiada na tabela de arquivos do sistema, que tem uma entrada para cada arquivo aberto. Depois, o descritor de arquivo retorna ao processo que chamou OPE, e termina a execuo da chamada.

Figura 53 Entrada de Diretrio no MS-DOSCada entrada de diretrio no MS-DOS tem 32 bytes para cada arquivo ou diretrio contido nele, conforme Figura 53. Os primeiros 11 caracteres guardam o nome do arquivo e sua extenso, logo depois tem-se o byte de atributos, contendo os seguintes bits: A - Igual a 1 quando o arquivo modificado.D - Igual a 1 para indicar que a entrada referente a um diretrio.V - Igual a 1 para indicar que esta entrada para o nome de volume.S - Igual a 1 para arquivos de sistema, que no podem ser apagados.H - Igual a 1 para indicar arquivos escondidos, ou seja, no listados pelo dir. R - Igual a 1 para indicar arquivos que no podem ser escritos.

A data e a hora da ltima modificao feita no arquivo so armazenadas nos prximos campos. Os campos seguintes guardam nmero do primeiro bloco do arquivo e seu tamanho.Referncias e Bibliografia

[1]Minix MINIX INFORMATION SHEEThttp://www.cs.vu.nl/~ast/minix.htmlConsultado em 27 de Junho de 2002

[2]Minix Operating SystemAndrew S. Tanenbaum, Prentice-Hall, 1987

[3]Amoeba The Amoeba Distributed Operating SystemAndrew S. Tanenbaum & Gregory J. Sharp, Vrije Universiteit, De Boelelaan 1081aAmsterdam, The Netherlandshttp://www.cs.vu.nl/pub/amoeba/Intro.pdfConsultado em 5 de Junho de 2002

[4]Amoeba Andrew S. Tanenbaum, Sistemas Operacionais Modernos, 1992, LTC- Livros Tcnicos e Cientficos Editora S.A.

[5]Sistemas Operacionais - The kid operating systemhttp://kos.enix.org/docs.php?lang=enConsultado em 25 de Maio de 2002

[6]Nachos - General Nachos Documentationhttp://www.cs.washington.edu/homes/tom/nachos/Consultado em 12 de Junho de 2002

[7]Sistemas OperacionaisTechnical Resources and Course Web Site for,Operating Systems, Fourth Edition, by William Stallingshttp://williamstallings.com/OS4e.htmlConsultado em 19 de Junho de 2002

[8]Nachos API do Nachos java 5.0http://inst.eecs.berkeley.edu/~cs162/projects/doc/index.htmlConsultado em 12 de Junho de 2002

[9]RCOS Javahttp://rcosjava.sourceforge.net/Consultado em 21 de Junho de 2002

[10]RCOS - An Animated, Simulated Operating System in JavaDavid Jones and Andrew Newmanhttp://rcosjava.sourceforge.net/Papers/RCOSjava.htmlConsultado em 21 de Junho de 2002

[11] Pgina do Tanenbaumhttp://www.cs.vu.nl/~ast/Consultado em 22 de Junho de 2002

[12]Modern Operating SystemsAndrew S. Tanembaum, 2nd Edition, Prentice hall

[13]Applied Operating System Concepts, first editionSilberschatz A., Galvin P., Gagne Greg, Ano 2000, Wiley