O que é sistema de arquivos qual sua função e quais os mais utilizados pelos principais sos

Introdução

O armazenamento e a recuperação de informações são atividades comuns para qualquer tipo de aplicação. Todo programa armazena e recupera dados da memória secundária. Essa é uma atividade essencial em praticamente todos os programas e processos executados pelo sistema operacional.

Um processo deve ser capaz de ler e gravar dados de forma permanente nos dispositivos como discos, pen-drive e fitas, sob a forma de arquivos

. Alem disso, um processo deve poder compartilhar estes arquivos com outros processos, especialmente em sistemas multi processados. 

Os arquivos são a forma como o sistema operacional permite a gravação e leitura de dados. Os dados gravados ou lidos estão armazenados em arquivos que possuem uma estrutura definida.

Os arquivos podem armazenar tanto dados como programas do usuário.

A Gerência do Sistema de Arquivos

A parte do sistema operacional que gerencia os arquivos e as operações de arquivos é a gerência do sistema de arquivos. A gerência do sistema de arquivos também cuida da segurança no acesso aos arquivos, garantindo que um usuário não tenha acesso não autorizado a um arquivo que pertence a outro usuário. A gerência de arquivos também cuida do compartilhamento dos arquivos, através de uma rede, por vários processos e usuários do sistema operacional.

A gerência do sistema de arquivos é a parte mais visível do sistema operacional para o usuário pois ele está sempre manipulando arquivos, seja para criar ou editar seus documentos ou seja executando programas, que são arquivos, no computador.

Os Arquivos

Conceitualmente um arquivo é um conjunto de informações logicamente relacionadas. Este conjunto de informações podem ser um conjunto de dados ou um conjunto de instruções

. Um arquivo executável possui instruções em linguagem de máquina que são executadas pelo sistema operacional. Um arquivo também pode ser um arquivo de dados, com dados estruturados, contendo um determinado número de campos, com tamanhos definidos, posição inicial e posição final, etc. Um arquivo pode conter conteúdo multimídia, imagem, áudio, som, vídeo, etc.

Do ponto de vista do usuários temos diferentes tipos de arquivos porém para o sistema operacional um arquivo é tão somente um conjunto de registros definido pelo sistema de arquivos.

Armazenamento de Arquivos

Os arquivos são armazenados pelo sistema operacional em diferentes dispositivos físicos como fitas magnéticas, discos magnéticos, discos ópticos. O tipo de dispositivo onde o arquivo é armazenado deve ser isolado do sistema operacional, de forma que exista uma independência entre os arquivos a serem manipulados e o meio de armazenamento.

O sistema operacional, deve ser capaz de manipular arquivos independente do dispositivo físico onde estão armazenados.

Informações dos Arquivos

Um arquivo precisa ser identificado pelo sistema operacional através de um nome. Em todos os sistemas operacionais existem regras particulares para a definição de nomes de arquivos tais como tamanho do nome, caracteres usados para o nome do arquivo, distinção entre caracteres maiúsculos e minúsculos, etc. Alguns sistemas operacionais incluem uma extensão como sendo parte do nome do arquivo

. A extensão serve para identificar o tipo do conteúdo do arquivo. Em todos os sistemas operacionais é válida a regra de não ser permitido dois arquivos com o mesmo nome no mesmo diretório.

Organização de Arquivos

A organização de arquivos consistem em como os dados estão internamente armazenados.  A estrutura dos dados podem variar em função do tipo de informação do arquivo

. Arquivos texto e arquivos executáveis são muito diferentes e possuem propósitos diferentes, consequentemente estruturas diferentes podem se ajustar melhor a um tipo de arquivo do que a outro tipo.

Quando um arquivo é criado, o programa que o cria, determina a estrutura que será utilizada para armazenar os dados no arquivo.

A organização de arquivo mais simples é aquela em que os dados são organizados em uma sequência não estruturada de bytes. Neste tipo de organização não existe uma estrutura lógica definida para os dados. Esta forma de organização oferece grande flexibilidade para armazenar os dados. Entretanto, o acesso aos dados não permite um acesso direto a um dado do arquivo. Como não há estrutura definida não é possível calcular o endereço de um dado dentro do arquivo. Sem o endereço não é possível o acesso direto.

O que é sistema de arquivos qual sua função e quais os mais utilizados pelos principais sos


Alguns sistemas operacionais possuem diferentes organizações de arquivos e neste caso cada arquivo criado deve seguir alguma organização suportada pelo sistema de arquivos.

 As organizações mais conhecidas são a sequencial, a relativa e a indexada.

Nestas organizações os dados são organizados em registros que podem ter tamanho fixo ou tamanho variável.

Os Métodos de Acesso aos dados nos Arquivos

Em função de como o arquivo está organizado o sistema de arquivos pode recuperar registros de diferentes maneiras. 

Acesso Sequencial

Os primeiros sistemas operacionais só armazenavam arquivos em fitas magnéticas. Consequentemente a organização sequencial dos arquivos era usada. O acesso aos registros era feito na ordem em que os registros eram gravados. Não era possível acessar diretamente um registro. A gravação de registros era feita no final do arquivo. 

Acesso Direto

Com o surgimento dos discos magnéticos, foi possível o uso de novos métodos de acesso mais eficientes. O primeiro método a surgir foi o acesso direto que permite a leitura/gravação de um registro diretamente na sua posição. Este acesso é realizado através do número do registro que é a sua posição relativa ao início do arquivo. No acesso direto não há restrição com relação à ordem em que os registros são lidos ou gravados, sendo sempre necessário informar o número do registro. 

O acesso direto somente é possível quando o arquivo é definido com registros de tamanho fixo. Isto porque é feito um cálculo da posição do registro dentro do arquivo com base no tamanho do registro e do número do registro. Este cálculo de deslocamento permite encontrar a posição exata do registro dentro do arquivo e com isso o acesso direto é possível.

O acesso direto pode ser combinado com o acesso sequencial. Pode ser feito o acesso a um registro qualquer e depois acessar sequencialmente os demais registros do arquivo.

Acesso Indexado ou Acesso por Chave

O acesso indexado tem como base o acesso direto sendo que arquivos com organização indexada devem possuir uma área de índice onde existem ponteiros para os diversos registros. Quando o programa acessa um registro deve ser informada a chave do registro. Com essa chave o sistema de arquivos busca na área de índice o ponteiro correspondente à chave do registro. A partir do ponteiro o sistema de arquivos realiza um acesso direto ao registro no arquivo.

Operações de Entrada/Saída

Todas as operações de entrada/saída são gerenciadas pela gerencia do sistema que arquivos que possui um conjunto de operações de entrada/saída tais como tradução de nomes em endereços, leitura e gravação de dados e criação e eliminação de arquivos. Na realidade as rotinas de entrada/saída tem como função disponibilizar uma interface simples e uniforme entre a aplicação e os dispositivos de entrada/saída.

Os programas ao realizarem uma operação de leitura/gravação se comunicam com as rotinas de entrada/saída do sistema de arquivos e desta forma desconhecem detalhes dos dispositivos físicos.

Atributos dos Arquivos

Para suportar as operações de entrada/saída o sistema de arquivos mantem informações de cada arquivo criado. As informações são também chamadas de atributos dos arquivos e permitem ao sistema de arquivos conhecer entre outras coisas o tamanho de um arquivo, qual o usuário dono do arquivo, a data de criação, qual a organização do arquivo, quais as permissões de leitura/gravação/execução do arquivo, data do ultimo backup, senha para acesso ao arquivo.

Os atributos de um arquivo podem variar de acordo com o sistema operacional. Porém alguns atributos como tamanho, data de criação e permissões estão presentes em todos os sistemas operacionais.

Diretórios

O sistema de arquivos organiza os arquivos em estruturas conhecidas como diretórios. O diretório é uma estrutura de dados em árvore que contem elementos associados aos arquivos onde cada elemento armazena informações como a localização física, nome, organização do arquivo e demais atributos do arquivo. 

Quando um arquivo é aberto o sistema de arquivos busca sua entrada na estrutura de diretórios e armazena a localização e nome do arquivo em uma tabela mantida na memória principal. Esta tabela mantem todos os arquivos abertos e é mantida em memória por questões de desempenho das operações de arquivos. É importante que ao término de uso do arquivo o mesmo seja fechado para que os dados da tabela sejam liberados. 

A implementação mais simples de uma estrutura de diretórios é chamada de nível único. Neste caso não existem subdiretórios, apenas um único diretório. contendo todos os arquivos do disco. Este modelo é muito limitado e não é bom para segurança dos arquivos. 

Na maioria dos sistemas operacionais o diretório é tratado com um arquivo tendo identificação ( um nome ) e atributos.

Gerência de Espaço Livre em Disco

A criação de arquivos existe que seja feito um gerenciamento do espaço livre, quais blocos e setores estão livres para criação de arquivos. Este controle é feito através de uma estrutura de dados em memória que possui uma lista ou tabela onde podemos identificar blocos livres que pode ser alocados a um arquivo. Neste caso o espaço é removido da lista para que não seja alocado a outro arquivo. Da mesma forma, quando um arquivo é removido, os blocos são liberados e colocados de volta na lista de blocos livres.

Existem diferentes formais de gerenciar a alocação do espaço livre em disco.

Uma forma mais simples é usar uma tabela de bits ou mapa de bits. Cada entrada na tabela é associada a um bloco do disco representado por um bit, podendo assumir valor igual a 0 ( bloco livre ) ou 1 ( bloco alocado a algum arquivo ).

Uma outra forma é usar uma estrutura de dados de lista encadeada de todos os blocos livres do disco. Nesta forma de alocação de espaço livre, cada bloco possui o endereço do próximo bloco no disco. A partir do primeiro bloco livre encontrado é possível encontrar outros blocos livres para alocação ao arquivo através do acesso de forma encadeada.  

uma outra forma é considerar que blocos contínuos são geral alocados ou liberados simultaneamente.  Com isso podemos enxergar  disco como um conjunto de segmentos de blocos livres. Desta forma, mantem-se uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos livres que se seguem.

Esta técnica é conhecida com técnica de blocos livres.

Gerência de Alocação de Espaço em Disco

O sistema de arquivos também precisa gerenciar o espaço alocado aos arquivos pois na medida em que o tempo passa e atualizações são feitas, os arquivos mudam e com isso a necessidade de espaço para armazenamento também muda. Como o recurso é limitado, o espaço em disco, é necessário gerenciar também o espaço alocado aos arquivos.

Existem diferentes técnicas para gerenciamento do espaço alocado aos arquivos. As principais técnicas são as seguintes:

A Alocação Contígua

A alocação contígua consistem em armazenar um arquivo em blocos sequencialmente dispostos no disco. Neste tipo de alocação, o sistema de arquivos localiza um arquivo através do primeiro bloco e da sua extensão em blocos ( tamanho do arquivo ).

O principal problema para esta técnica de alocação de espaço é que caso um arquivo seja criado é necessário que haja blocos livres contíguos suficiente no disco para permitir a alocação. Nem sempre isso é possível pois com o tempo ocorre a fragmentação do disco. 

O acesso feito a arquivos dispostos contiguamente é sequencial ou direto. 

No momento em que o sistema de arquivo aloca um segmento de blocos contíguos a um arquivo pode ser que haja mais de um segmento disponível com o tamanho necessário para o arquivo. Neste caso existem algoritmos que são usados para escolher qual segmento de blocos será utilizado:

  • First-fit - Considera o primeiro segmento de blocos encontrado com tamanho suficiente para alocação ao arquivo.

  • Best-fit - Considera o segmento de blocos com menor tamanho suficiente para alocação ao arquivo.

  • Worst-fit - Considera o segmento de blocos com o maior tamanho para alocação ao arquivo.

Independente da técnica usada pelo sistema de arquivos a fragmentação de blocos no disco é o principal problema de se usar esta forma de alocação de espaço. Entretanto, este problema pode ser tratado com utilitários de desfragmentação do sistema de arquivos que pode ser usado periodicamente para resolver este problema.

Outro problema é que nem sempre é possível determinar o tamanho definitivo de um arquivo no momento de sua criação. Imagine um arquivo de carga por exemplo que vai sendo gravado com dados de uma consulta em um banco de dados. Neste caso a busca por um segmento de blocos com tamanho suficiente para alocar ao arquivo pode ser uma busca complexa.

A Alocação Encadeada

Na alocação encadeada um arquivo pode ser organizado com um conjunto de blocos ligados logicamente no disco, independente de sua localização física ou seja, não é necessário que os blocos sejam fisicamente contíguos no disco. Neste caso cada bloco possui um ponteiro para o bloco seguinte do arquivo e assim sucessivamente. É a mesma implementação da lista encadeada que aprendemos na disciplina de Estrutura de Dados.

Nesta técnica a fragmentação do disco não apresenta problema pois os blocos são ligados uns aos outros através do ponteiro e não necessitam estar fisicamente contíguos no disco.

Entretanto, a fragmentação pode comprometer operações de leitura do arquivo pois a cabeça de leitura do dispositivo terá que se movimentar várias vezes sobre a superfície do disco para fazer a leitura de todos os segmentos de blocos.

A alocação encadeada só permite acesso sequencial aos blocos do arquivo. Esta é uma das principais desvantagens desta técnica já que não é possível o acesso direto a um bloco.

A Alocação Indexada

Na alocação indexada é possível o acesso direto ao bloco. Para isso os endereços de todos os blocos são mantidos em uma estrutura em memória chamada bloco de índice.

A alocação indexada não usa informações de controle nos blocos de dados ( ponteiros ) como na alocação encadeada.

Proteção de acesso

Todo sistema de arquivo deve permitir o compartilhamento de arquivos por diversos usuários e processos mas daí surge o problema de proteção de acesso aos arquivos compartilhados por processos e usuários não autorizados. O sistema de arquivos deve garantir que somente usuários autorizados tenham acesso aos arquivos compartilhados.

A proteção de acesso é implementada através de controle de concessão de operações de leitura, gravação, execução e em alguns casos remoção aos usuários do sistema operacional. Em sistemas operacionais UNIX/LINUX é possível ampliar as concessões dessas operações aos usuários que pertençam ao mesmo grupo do usuário dono do arquivo ou ainda a outros usuários que não pertençam ao grupo do usuário dono do arquivo. 

A proteção de acesso aos diretórios é implementada para as operações de visualizar os arquivos de um diretório, criar/remover arquivos em um diretório e remover um diretório.

Basicamente, existem 3 mecanismos de proteção de acesso que estão disponíveis na maioria dos sistemas operacionais:

  • Senha de Acesso - O uso de senha de acesso ao arquivo é o mais simples. O usuário tem ou não acesso ao arquivo mediante o conhecimento da senha de acesso do arquivo. Caso o arquivo seja compartilhado este mecanismo não poderá ser usado pois todos os usuários teriam que saber a senha de acesso ao arquivo.

  • Grupos de Usuário - Cada usuário é associado a um grupo de usuários. Os usuários do mesmo grupo compartilham arquivos sem problemas. Este mecanismo na realidade implementa as permissões de leitura/ gravação e execução de arquivos que pertençam a um usuário, a um grupo de usuários e a outros usuários. Este mecanismo é usado em sistemas UNIX/LINUX.
  • Lista de Controle de Acesso - Cada arquivo possui uma lista de controle de acesso contendo quais usuários podem acessar o arquivo e quais as permissões que cada usuário possui. Esta lista pode ficar muito grande para arquivos compartilhados para muitos usuários. Existem também uma sobrecarga adicional pois a lista é consultada toda a vez que o arquivo é acessado. Este mecanismo é usado em sistemas Windows.

Qual a função de um sistema de arquivos?

Na prática, um sistema de arquivo (file system, do inglês) é um conjunto de estruturas lógicas, ou seja, feitas diretamente via software, que permite ao sistema operacional ter acesso e controlar os dados gravados no disco.

Quais são os principais sistemas de arquivos?

Tipos de Sistemas de Arquivos.

Quais os tipos de sistemas de arquivos utilizados nos sós?

Tipos de sistema de arquivos.

Como os arquivos são identificados pelos sós?

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.