O Sistema de Arquivos é a parte mais visível de um Sistema Operacional, pois a manipulação de arquivos é uma atividade freqüentemente realizada pelos usuários, devendo sempre ocorrer de maneira uniforme, independente dos diferentes dispositivos de armazenamento.
Os arquivos são constituído de informações logicamente relacionados, podendo representar programas ou dados, ou melhor, é um conjunto de registros definidos pelo sistema de arquivos.
Um arquivo pode ser identificado por um nome, com formato e extensão máxima variando conforme o sistema operacional.
Alguns Sistemas Operacionais definem o arquivo em duas partes, possibilitando a identificação do seu tipo através da segunda parte, como exemplo: MeuPrograma.exe (executável), MeuTexto.txt (arquivo texto), MinhaClasse.Java (arquivo texto, fonte de um programa Java).
A organização dos arquivos consiste no modo como os dados estão internamente armazenados, podendo, sua estrutura, variar em função do tipo de informação contida no arquivo.
A forma mais simples de organização é através de uma seqüência não estruturadas de bytes. A aplicação deve definir toda a organização, com vantagem da flexibilidade, porém de inteira responsabilidade da aplicação.
Alguns Sistemas Operacionais estabelecem diferentes organizações de arquivos e cada arquivo deve seguir a um modelo suportado.
As organizações mais conhecidas e implementadas são a seqüencial, relativa e indexada.
Seqüencial:
Acesso Direto:
Acesso Direto + Acesso Seqüencial:
Acesso Indexado ou Acesso por Chave:
Realizadas através de System Calls, que fornecem uma interface simples e uniforme entre a aplicação e os diversos dispositivos, permitindo leitura/gravação, criação/eliminação de arquivos.
Os atributos são informações de controle dos arquivos que variam dependendo do Sistema Operacional, por exemplo: tamanho, proteção, identificação do criador e data e hora de criação;
Alguns atributos específicos são alterados apenas pelo próprio Sistema Operacional, como data e hora de criação, tamanho e outros podem ser alterados pelo usuário como proteção.
A organização por diretórios é o modo como o Sistema organiza logicamente os diversos arquivos contidos em um dispositivo físico de armazenamento.
O diretório contém entradas associadas aos arquivos onde são armazenadas informações como localização física, nome, organização e demais atributos.
Ao abrir um arquivo, o Sistema Operacional procura a sua entrada na estrutura de diretórios em uma tabela mantida na memória principal, contendo todos os arquivos. É necessário fechar o arquivo ao término de seu uso.
Nível Único:
Master File Directory (MFD):
Estrutura de diretórios em árvore:
O Sistema Operacional possui uma estrutura de dados que armazena informações que possibilitam ao sistema de arquivos gerenciar as áreas ou blocos livres.
Nessa estrutura, geralmente uma lista ou tabela, é possível identificar blocos livres que poderão ser alocados por um novo arquivo.
Quando um arquivo é eliminado, todos os seus blocos são liberados para a estrutura de espaços livres.
Mapa de Bits:
Lista encadeada:
Blocos Contíguos:
A alocação contígua consiste em armazenar um arquivo em blocos seqüencialmente dispostos, permitindo ao sistema localizar um arquivo através do endereço do primeiro bloco e da sua extensão em blocos. O aceso é feito de maneira simples, tanto para a forma seqüencial quanto para a direta.
Um problema desse tipo de alocação é que quando um arquivo é criado com n blocos, é necessário que exista uma cadeia de n blocos livres disposto seqüencialmente. Nesse tipo de alocação, o disco é visto como um grande vetor, com segmentos ocupados e livres.
A alocação em um novo segmento livre consiste técnicas para escolha, algumas das principais são:
A defragmentação busca solucionar o problema da fragmentação, reorganizando os arquivos no disco de maneira que só exista um único segmento de blocos. A defragmentação é lenta e deve ser realizada periodicamente.
Neste tipo de alocação, ocorre grande fragmentação dos arquivos devido aos blocos livres dos arquivos não precisarem ser contíguos, existe a quebra do arquivo em diversos pedaços, denominados extents. Essa fragmentação aumenta o tempo de acesso aos arquivos, pois exige que o mecanismo de leitura/gravação se desloque diversas vezes sob sua superfície. Dessa forma se torna necessário a execução da operação de defragmentação periódicamente
Um problema na alocação encadeada é que ela só permite o acesso seqüencial aos blocos dos arquivos, não possuindo acesso direto aos blocos e desperdiça espaço nos blocos com o armazenamento de ponteiros.
A alocação indexada soluciona o problema da alocação encadeada referente ao acesso direto aos blocos dos arquivos pois mantém os ponteiros de todos os blocos do arquivo em uma única estrutura denominada bloco de índice.
A proteção de acesso aos arquivos visa possibilitar o compartilhamento seguro de arquivos entre usuários, quando desejado. Em geral, existe concessão ou não de acessos como leitura, gravação, execução e eliminação.
Existem diferentes mecanismos de níveis de proteção. Alguns deles são:
Senha de Acesso:
Grupos de Usuários:
Lista de Controle de Acesso (Access Control List - ACL):
Um dos principais problemas para o desempenho do sistema é que o acesso é bastante lento comparado ao acesso a memória principal. Para contornar este problema, são implementados nos sistemas operacionais sistemas de cache
O buffer cache é uma área da memória que armazena informações de disco e busca minimizar o problema da lentidão, pois ao se acessar o disco, se a informação desejada estiver no buffer cache, não será necessário o acesso ao disco. O tamanho do buffer cache é limitado, necessitando políticas para substituição de blocos como FIFO ou Last Recently Used (LRU).
A falta de energia pode acarretar perda de dados que foram modificados no cache e não foram atualizados no disco. Neste caso, existem duas possíveis soluções:
[voltar]