Artigos


Sistema de Arquivos

1.             INTRODUÇÃO

Todo programa tem a necessidade de guardar e acessar informações. Durante a execução de um processo ele pode guardar certa quantidade de informações dentro de seu espaço de endereço, mas para alguns programas apenas esse espaço é pouco, sem contar que quando o processo é encerrado as informações são apagadas e isso pra alguns programas é uma coisa que não pode acontecer devido à importância de tais informações. Outro problema enfrentado á que quando vários processos precisarem acessar uma mesma informação ao mesmo tempo não é possível pelo fato de que apenas o processo onde ela esta armazenada é autorizado a fazer esse acesso, para resolver esse problema as informações passaram a ser independentes dos processos daí surgiu o nome arquivo, dessa forma os processos podem acessar e gravar novas informações caso seja necessário e essas informações não são apagadas quando se encerra o processo.

O responsável por gerenciar esses arquivos é o Sistema Operacional, ele é quem determina como eles vão ser estruturados, nomeados, implementados. Essa área do sistema operacional responsável por gerenciar os arquivos é chamada de Sistema de Arquivos.

1.1.VISÃO DO USUÁRIO

Segundo Freitas apostila p73), [...] “Para quem usa um Sistema Operacional, o sistema de arquivos é a parte com a qual ele tem contato.” [...]

Os pontos principais sob esse ponto de vista são:

·         O que é uma arquivo?

·         Como se dão nomes aos arquivos?

·         Como se protegem arquivos contra acessos não autorizados?

·         Que operações podem ser realizadas sobre um arquivo?

Para cada Sistema existe uma resposta diferente para essas perguntas.

1.2. PONTOS BÁSICOS COM RELAÇÃO A ARQUIVOS

Os Sistemas Operacionais permitem aos usuários definirem arquivos que apresentam operações especiais que são realizadas por chamadas de sistema, que permitem criar, apagar, escrever ou ler.

Outro ponto importante sobre os arquivos é que eles podem ser utilizados para tornar um dispositivo independente, ou seja, os Sistemas Operacionais podem fornecer acesso aos arquivos independente do dispositivo utilizado para o seu armazenamento.

Existem diferentes formas utilizadas para diferenciar um arquivo, isso é feito através da extensão, (ex.: os .exe, .bat, pdf, .doc, etc...).

Existem alguns sistemas que não utilizam as extensões dos arquivos para executa-los, por outro lado existem sistemas em que o tipo de extensão é extremamente importante na hora da execução, por exemplo se tivermos um arquivo que queremos compilar ele no Pascal, o sistema pode se recusar a rodar ele caso ele esteja com uma extensão que não seja .pas

1.3.DIRETÓRIOS

Segundo afirmam Machado & Maia (2007, p 216), A estrutura de diretórios é a forma como o sistema organiza na forma lógica os arquivos que estão armazenados no disco.

O diretório é uma estrutura de dados onde ficam guardadas as informações que são ligadas aos arquivos, cada entrada guarda informações sobre os atributos como localização física, nome, entre outros.

Quando abrimos um arquivo o sistema operacional vai até o sistema de diretórios,  procura e armazena em uma tabela as informações do atributo e localização do arquivo, essa tabela é mantida na memória principal. Essa tabela é fundamental para melhorar o desempenho do sistema uma vez que fica mantido nela todos os arquivos que foram abertos, sendo assim toda vez que precisarmos abri-los novamente ao invés do sistema ir busca-lo novamente na estrutura de diretórios ele busca nessa tabela que está na memória principal.

Mas é necessário que o arquivo seja fechado quando não estiver mais sendo utilizado, para que seja liberado espaço na tabela de arquivos abertos.

Single Level Directory (nível único), essa é a maneira mais simples de implementar uma estrutura de diretórios. Essa estrutura é caracterizada por ser composta apenas por um único diretório onde ficam contidos todos os arquivos do disco, porem este método acaba sendo bastante limitado por não permitir que os usuários criem arquivos com o mesmo nome, pelo simples motivo de que causaria conflitos na hora de acessar os arquivos.

Diante da limitação do sistema de nível único surgiu o UFD (User File Directory), com essa evolução cada usuario passa a possuir um diretório próprio, e para que o usuario pudesse ter acesso à seus arquivos foi criado um nível de diretórios adicional para controlar os diretórios destes usuários, o Master File Directory tem a finalidade de organizar os diretórios pessoais onde cada entrada indica seu respectivo diretório.

Depois disto surge o (Two Level Directory), que é semelhante a uma estrutura em árvore.

Nessa estrutura quando nos referimos a um arquivo além de informar o nome dele temos também que informar o diretório onde ele se encontra (path/caminho).

“[...] A extensão do modelo de dois níveis para um de múltiplos níveis permitiu que os usuários fossem logicamente melhor organizados [...]”, (Machado & Maia (2007, p218)

Nesse tipo de estrutura o usuário pode criar inúmeros subdiretórios, um arquivo na estrutura em árvore pode ser indicado por um path absoluto que irá descrever cada diretório percorrido desde a raiz até o diretório em que se encontra o arquivo.





1.4.1.GERENCIAMENTO DO ESPACO DE DISCO

De acordo com ( Freitas apostila ) A forma do gerenciamento do espaço de disco  deve ser a principal preocupação do projetista  uma de  suas possibilidades  seria cada arquivo alocar um espaço sequencialmente mas ai teria o problema se algum arquivo tivesse a  necessidade de ser aumentado não teria a possibilidade de mudar seu endereço para um espaço maior pois é muito lento o processo  ou pela falta de espaço  no disco .

Outra forma seria criação de blocos de tamanho fixo , mas ocorreria o seguinte problema se fosse  criado blocos grandes arquivos menores ocupariam muito espaço, deixando o disco subutilizado ,no caso de blocos com menor espaço  o disco teria que fazer varias leituras no caso de arquivos maiores aumentando o tempo de espera.

A outra forma é identificar os blocos livres e os ocupados  utilizando o `bit map`ou`lista encadeada`   O mas utilizado é o lista encadeada .

“O método bit map ,se queremos encontrar espaço para um arquivo ,devemos ficar carregando as diversas partes do bit map do disco para a memoria ,pois como o disco esta cheio ,é difícil de encontrar blocos vazios ,o que torna o processo lento ,enquanto que na lista encadeada , basta carregar alista de blocos vazios ao invés de ter que carregar as diversas partes do bit map uma por vez até achar o espaço necessário” (Freitas,2000).

“A forma mais simples de implementar uma estrutura de espaços livres e através de uma tabela denominada mapa de bits(bit map).Cada entrada na tabela é associada a um bloco do disco representado por um bit, podendo  assumir  valor igual a 0 ou 1 nesta implementação apresenta como principal problema um excessivo gasto de memoria já que para cada bloco do disco deve existir uma entrada na tabela”(Machado & Maia,2007.Pag.220)

“Uma segunda maneira de realizar este controle é com uma estrutura  de lista encadeada de todos os blocos livres do disco .Para que isto seja possível ,cada bloco possui uma área reservada para armazenamento do endereço do próximo bloco .A partir do primeiro bloco livre é ,então possível o aceso sequencial aos demais  de forma encadeada .Este esquema  apresenta algumas restrições se considerarmos que além do espaço utilizado no bloco com informações de controle o algarismo de busca de espaço livre sempre deve realizar uma pesquisa sequencial na lista.”(Machado & Maia,2007,Pg.220)

1.4.2. ARMAZENAMENTO DE ARQUIVOS

Segundo (FREITAS, notas de aula) a algumas maneiras de fazer o armazenamento de arquivos.

E uma delas é a alocação de forma contigua no disco mais seria necessário ficar procurando por espaços vazios  para o armazenamento que não agrada  muito .

E a outra maneira seria a lista encadeada, pois a grande vantagem é evitar a fragmentação que ocorre quando usamos a alocação contigua, mais a lista encadeada  ocorre o problema de sobrecarga de leitura que deixa o processo lento dependendo da localização do arquivo.

E o modo criado que pode evitar esses problemas citados acima seria utilizar a FAT (file allocation table)

“FAT (file allocation table), que poderia ser chamado de lista encadeada usando tabela. Esta solução consiste em formatar a lista de blocos de um arquivo em uma estrutura especiais (tabela), que pode ser carregada completamente na memória, eliminando simultaneamente os dois inconvenientes apontada” (Freitas, Notas de Aulas).

“Mapa de Arquivo (FAT)

E geralmente muito grande para ser mantido na memória. Ele é armazenado em disco e trazido para a memória somente um bloco por vez, de acordo com o requerido;

Para se ler um arquivo de n blocos, pode-se ter que fazer até n acessos extras no disco para acessar o mapa de arquivo;

A esta sobrecarga será menor se as localizações dos blocos de cada Arquivo ficar no mesmo bloco do mapa de arquivo;

O inconveniente deste método e que os ponteiros dos arquivos estão todos localizados numa única tabela, a medida que os discos tornam-se maiores este esquema torna-se menos atrativo” (Francisco Silva (UFMA/LSD)2010 P.11)

1.4.3.      ARQUIVOS COMPARTILHADOS



Quando usuários diferentes se referem a arquivos compartilhados e esses arquivos aparecerem em diretórios diferentes, mas mantendo uma copia do esmo no disco.

Em sistemas onde o diretório possui o endereço dos blocos de arquivos. Pode-se realizar a ligação pela copia dos números de blocos dos diretórios de um usuário para outro. O problema e que quando e feita uma alteração no arquivo, ela não será mostrada aos outros usuários.

As soluções para esse problema seria as seguintes:

·         Não listar os números dos blocos no diretório, mas apenas um ponteiro para uma estrutura que lista esses blocos.

·         Podemos criar no novo diretório uma entrada de um tipo link, que contem ao invés das informações usuais sobre o arquivo, apenas um path para este. Este método e denominado ligação simbólica.




REFERENCIA BIBLIOGRAFICAS

Tanenbaum A. S., & woodhull A. S. (2000) Sistemas Operacionais: projeto e implementação 2ª Edição Porto Alegre: Bookman.

Machado F.B. & Maia L.P. (2007) Arquitetura de Sistemas Operacionais 4ª Edição Rio de Janeiro: LTC.

Freitas R.L. Notas de Aula – Sistemas Operacionais apostila

INTERNET

Francisco Silva (UFMA/LSD)2010 P.11