Sistemas de Arquivos: conceitos, atributos e gerência

Classificado em Computação

Escrito em em português com um tamanho de 11,6 KB

Agenda

  • Introdução
  • Arquivos
  • Uso de Arquivos
  • Organização de Volumes
  • Sistemas de Arquivos
  • Bibliografia

Bibliografia

  • TANENBAUM, Andrew. Sistemas Operacionais – Projeto e Implementação. 2ª ed., Bookman, 1999.
  • MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª ed., LTC, 2007.
  • OLIVEIRA, Rômulo et al. Sistemas Operacionais. 3ª ed., Sagra Luzzatto, 2004.
  • TANENBAUM, Andrew. Sistemas Operacionais Modernos. 2ª ed., Prentice Hall do Brasil, 2003.
  • TANENBAUM et al. Sistemas Distribuídos, IBM Press, 2002.
  • DONDA, Daniel. Guia de certificação Windows Server 2003. 2ª ed. Rio de Janeiro: Brasport, 2006. 327 p. ISBN 85-7452-263-5.
  • BADDINI, Francisco. Windows Server 2003 em português: implementação e administração. 6ª ed. São Paulo: Érica, 2007. 371 p. ISBN 978-85-7194-983-6.

Introdução

Um sistema operacional tem por finalidade permitir que os usuários do computador executem aplicações, como editores de texto, jogos, reprodutores de áudio e vídeo, etc. Essas aplicações processam informações como textos, músicas e filmes, armazenados sob a forma de arquivos em um disco rígido ou outro meio. Este módulo apresenta a noção de arquivo, suas principais características e formas de acesso.

Desde os primórdios da computação percebeu-se a necessidade de armazenar informações para o uso posterior. Hoje uma parte importante na computação consiste em recuperar e apresentar informações previamente armazenadas, como documentos, fotografias, músicas e vídeos. Geralmente essas informações devem ser armazenadas em um dispositivo não-volátil que preserve seu conteúdo mesmo quando o computador estiver desligado.

Uso de Arquivos

Um arquivo é basicamente um conjunto de dados armazenado em um dispositivo físico não-volátil, com um nome ou outra referência que permita sua localização posterior. Do ponto de vista do usuário e das aplicações, o arquivo é a unidade básica de armazenamento de informação em um dispositivo não-volátil, pois para eles não há forma mais simples de armazenamento persistente de dados.

Arquivos são extremamente versáteis em conteúdo e capacidade: podem conter desde um texto ASCII com alguns bytes até sequências de vídeo com dezenas de gigabytes, ou mesmo mais. Como um dispositivo de armazenamento pode conter milhões de arquivos, estes são organizados em estruturas hierárquicas denominadas diretórios.

Estrutura de Arquivos

A organização física e lógica dos arquivos e diretórios dentro de um dispositivo é denominada sistema de arquivos. Um sistema de arquivos pode ser visto como uma imensa estrutura de dados armazenada de forma persistente em um dispositivo físico.

Existe um grande número de sistemas de arquivos, dentre os quais podem ser citados o NTFS (nos sistemas Windows), Ext2/Ext3/Ext4 (Linux), HPFS (MacOS), FFS (Solaris) e FAT (usado em pendrives USB, máquinas fotográficas digitais e leitores MP3).

Atributos de Arquivos

Conforme apresentado, um arquivo é uma unidade de armazenamento de informações que podem ser dados, código executável, etc. Cada arquivo é caracterizado por um conjunto de atributos, que podem variar de acordo com o sistema de arquivos utilizado. Os atributos mais usuais são:

  • Nome: string de caracteres que identifica o arquivo para o usuário, como foto1.jpg, relatorio.pdf, hello.c, etc.
  • Tipo: indicação do formato dos dados contidos no arquivo, como áudio, vídeo, imagem, texto, etc. Muitos sistemas operacionais usam parte do nome do arquivo para identificar o tipo de seu conteúdo, na forma de uma extensão: .doc, .jpg, .mp3, etc.
  • Tamanho: indicação do tamanho do conteúdo do arquivo, em bytes ou registros.
  • Datas: para fins de gerência, é importante manter as datas mais importantes relacionadas ao arquivo, como data de criação, último acesso e última modificação do conteúdo.
  • Proprietário: em sistemas multiusuários, cada arquivo tem um proprietário, que deve estar corretamente identificado.
  • Permissões de acesso: indicam que usuários têm acesso a que arquivo e que formas de acesso são permitidas (leitura, escrita, remoção, etc.).
  • Localização: indicação do dispositivo físico onde o arquivo se encontra e da posição do arquivo dentro do mesmo.
  • Outros atributos: vários outros atributos podem ser associados a um arquivo, por exemplo para indicar se é um arquivo de sistema, se está visível a usuários, se tem conteúdo binário ou textual, etc. Cada sistema de arquivos normalmente define seus próprios atributos específicos, além dos atributos usuais.

Gerência de Arquivos

Controle de Acesso

Como arquivos são entidades que sobrevivem à existência do processo que as criou, é importante definir claramente o proprietário de cada arquivo e que operações ele e outros usuários do sistema podem efetuar sobre o mesmo. A forma mais usual de controle de acesso a arquivos consiste em associar os seguintes atributos a cada arquivo e diretório do sistema de arquivos:

  • Proprietário: identifica o usuário dono do arquivo, geralmente aquele que o criou. Muitos sistemas permitem definir também um grupo proprietário do arquivo, ou seja, um grupo de usuários com acesso diferenciado sobre o mesmo.
  • Permissões de acesso: definem que operações cada usuário do sistema pode efetuar sobre o arquivo. Existem muitas formas de definir permissões de acesso a recursos em um sistema computacional; no caso de arquivos, a mais difundida emprega listas de controle de acesso (ACL - Access Control Lists) associadas a cada arquivo.

Uma lista de controle de acesso é basicamente uma lista indicando que usuários estão autorizados a acessar o arquivo, e como cada um pode acessá-lo. Um exemplo simples de listas de controle de acesso a arquivos seria:

[exemplo ilustrativo de ACL]

No entanto, essa abordagem se mostra pouco prática caso os sistemas tenham muitos usuários e/ou arquivos, pois as listas podem ficar muito extensas e difíceis de gerenciar. O UNIX usa uma abordagem bem mais simplificada para controle de acesso, que considera basicamente três tipos de usuários e três tipos de permissões:

  • Usuários: o dono do arquivo (User), o grupo do dono (Group) e terceiros (Others).
  • Permissões: ler (Read), escrever (Write) e executar (Execute).

Compartilhamento de Arquivos

Em um sistema multitarefa, é frequente ter arquivos acessados por mais de um processo, ou mesmo por mais de um usuário, caso as permissões de acesso ao mesmo o permitam. O acesso concorrente em leitura a um arquivo não acarreta problemas, mas a possibilidade de escritas e leituras simultâneas tem de ser prevista e tratada de forma adequada.

Algumas formas são adotadas para a resolução desses problemas, como a utilização de travas em arquivos que garantem o não acesso ao arquivo durante a utilização de um processo.

Organização de Volumes

Um computador normalmente possui um ou mais dispositivos para armazenar arquivos, que podem ser discos rígidos, discos óticos (CD-ROM, DVD-ROM), discos de estado sólido (baseados em memória flash, como pendrives USB), etc. Um disco rígido pode ser visto basicamente como um grande vetor de blocos de bytes. Esses blocos de dados, também denominados setores, têm tamanho fixo, geralmente entre 512 e 4.096 bytes, e são numerados sequencialmente.

As operações de leitura e escrita de dados nesses dispositivos são feitas bloco a bloco; por essa razão esses dispositivos são chamados dispositivos de bloco (block devices).

Em um computador padrão PC, o espaço de armazenamento de cada dispositivo é dividido em uma pequena área inicial de configuração e uma ou mais partições, que podem ser vistas como espaços independentes. A área de configuração é denominada MBR - Master Boot Record, e contém uma tabela de partições com informações sobre o particionamento do dispositivo. No início de cada partição geralmente há um bloco reservado, utilizado para a descrição do conteúdo daquela partição e para armazenar o código de lançamento do sistema operacional, se for uma partição inicializável (bootable partition). Esse bloco reservado é denominado bloco de inicialização ou VBR - Volume Boot Record.

Sistema de Arquivos

Vários problemas importantes devem ser resolvidos na construção de um sistema de arquivos, que vão do acesso de baixo nível aos dispositivos físicos de armazenamento à implementação da interface de acesso a arquivos para os programadores. Na implementação de um sistema de arquivos, considera-se que cada arquivo possui dados e meta-dados.

Os dados de um arquivo são o seu conteúdo em si (uma música, uma fotografia, um documento ou uma planilha); por outro lado, os meta-dados do arquivo são seus atributos (nome, datas, permissões de acesso, etc.) e todas as informações de controle necessárias para localizar e manter seu conteúdo no disco.

Drivers de Dispositivos

Os controladores de dispositivos são configurados e acessados pelo núcleo do sistema operacional através de drivers de dispositivos, que são componentes de software capazes de interagir com os controladores. Os drivers usam portas de entrada/saída, interrupções e canais de acesso direto à memória (DMA) para interagir com os controladores e realizar as operações de controle e de entrada/saída de dados. Como cada controlador define sua própria interface, também possui um driver específico.

Os drivers ocultam essas interfaces e fornecem às camadas superiores do núcleo uma interface padronizada para acesso aos dispositivos de armazenamento. Desta forma, os detalhes tecnológicos e particularidades de cada dispositivo são isolados, tornando o restante do sistema operacional independente da tecnologia subjacente.

Blocos Físicos e Lógicos

Um dos aspectos mais importantes dos sistemas de arquivos é a forma como o conteúdo dos arquivos é disposto dentro do disco rígido ou outro dispositivo de armazenamento secundário. Conforme visto anteriormente, um disco rígido pode ser visto como um conjunto de blocos de tamanho fixo (geralmente de 512 bytes). Os blocos do disco rígido são normalmente denominados blocos físicos.

Como esses blocos são pequenos, o número de blocos físicos em um disco rígido recente pode ser imenso: um disco rígido de 250 GBytes contém mais de 500 milhões de blocos físicos.

Para simplificar a gerência dessa quantidade de blocos físicos e melhorar o desempenho das operações de leitura/escrita, os sistemas operacionais costumam trabalhar com blocos lógicos ou clusters, que são grupos de 2^n blocos físicos consecutivos. Blocos lógicos com 4K, 8K, 16K e 32K bytes são frequentemente usados. A maior parte das operações e estruturas de dados definidas nos discos pelos sistemas operacionais são baseadas em blocos lógicos, que também definem a unidade mínima de alocação de arquivos e diretórios: cada arquivo ou diretório ocupa um ou mais blocos lógicos para seu armazenamento.

Questões

  1. Enumere os principais atributos de um arquivo.
  2. Enumere as principais operações sobre arquivos.

Entradas relacionadas: