Estrutura Sequencial de Records
Implementação de ficheiros de baixo nível
Ficheiros são o mecanismo pelo qual os utilizadores guardam informação de uma sessão para outra. Eles também são utilizados para guardar informação por longos períodos de tempo.
Da perspectiva do programador, ficheiros são a abstracção fundamental dos dispositivos de armazenamento secundários (como fitas magnéticas ou unidades de disco), embora o software de sistema também pode prover outras abstracções de alto-nível como é o caso da memória virtual. Cada ficheiros é uma colecção de dados armazenada num dispositivo. O gestor de ficheiros implementa esta abstracção e provê directórios para organizar ficheiros. também provê um espectro de comandos para ler e escrever os conteúdos de um ficheiros, fixa a posição read/write de um ficheiros, fixa e usa o mecanismo de protecção, muda a propriedade, lista ficheiros num directório, e remove arquivos.
Este modelo de operação é tão prevalecente que pode ser construído facilmente no modelo de processo. Por exemplo, quando um processo é criado em UNIX, tem acesso automaticamente a três ficheiros:
Um ficheiros é um recipiente para uma colecção de informação. O gestor de ficheiros fornece um mecanismo de protecção que permite aos utilizadores da máquina administrar os como processos executados por utilizadores diferentes podem ter acesso a informação em um ficheiro.
O sistema de ficheiros mantém uma estrutura de dados chamada descritor de ficheiros no qual armazena informação detalhada sobre cada ficheiros. Cada gestor de ficheiros armazena diferente informação, embora a maioria mantém as seguintes entradas:
O sistema de ficheiros mantém uma estrutura de dados chamada descritor de ficheiros no qual armazena informação detalhada sobre cada ficheiros. Cada gestor de ficheiros armazena diferente informação, embora a maioria mantém as seguintes entradas:
Um ficheiro sequencial estruturado é uma sucessão de registros lógicos, indexada pelos inteiros não-negativos. Como com ficheiros de sequência de bytes o acesso ao ficheiro é definido por uma posição de ficheiros, mas esta posição indexa registros no ficheiro em vez de bytes. Operações no ficheiro são as seguintes:
· ·Open(filename). Abre o ficheiro
· Close (fileID). Fecha o ficheiro.
· GetRecord (fileID, record). Retorna o endereço do registo pela posição do ficheiro.
· PutRecord (fileID, registro). Escreve um designado registo na posição corrente do ficheiro.
· Seek (fileId, Posição). Move a posição do ficheiros para apontar ao registo designado.
Ficheiros sequenciais indexados não são úteis em algumas
aplicações. Ficheiros sequenciais indexados forçam o programa para
administrar o índice de forma que eles possam ter acesso a registos desejados.
Ficheiros sequenciais indexados são extensamente usados para ficheiros que têm números muito grandes de registros, particularmente se os registros são frequentemente referenciados de uma forma não-sequencial.
Há muitas aplicações nas quais o campo de índice deve ser procurado pela aplicação antes de um registro. Ficheiros invertidos podem suportar múltiplos campos de índice.
Normalmente o DBMS é constituído por vários ficheiros, estruturados de forma a que os dados possam ser acedidos mais rapidamente.
A definição de dados e linguagens de manipulação e os seus processos são entidades complexas não fazendo parte de um sistema operativo. Alguns DBMSs usam os ficheiros normais providos pelo sistema operativo para uso genérico.
O dispositivo de armazenamento pode ser um dispositivo de acesso sequencial como por exemplo uma tape (fita magnética), ou um dispositivo de acesso aleatório como por exemplo os discos rígidos.
A realização dos ficheiros necessita de um suporte para tradução da sequência de bytes no bloco lógico para o registo de bloco, no dispositivo físico.
A realização do disco do sistema de ficheiros de baixo-nível deve fornecer um mecanismo para administrar uma colecção de blocos para armazenar os bytes de um ficheiros particular de forma que eles podem ser acedidos como se estivessem armazenados como um fluxo de byte contíguo.
A operação Open instrui o gestor de ficheiros a inicializar as estruturas de dados internas precisas para administrar o I/O. Especificamente, executa os seguintes passos:
1. Localiza o descritor de ficheiros no sistema de ficheiros.
2. Obtém informação relativa ao ficheiros no descritor de ficheiros e informação relativo ao processo no descritor de processo.
3. Verifica autorização de acesso ao ficheiro.
4. Cria uma entrada em uma file status table (tabela de status de ficheiros) para manter a interacção do processo com o ficheiro.
5. Aloca recursos necessários para manter o uso do ficheiro, como buffer de I/O (Entrada e Saída).
Administração de bloco é a parte mais importante do gestor de ficheiros para dispositivos de armazenamento aleatório.
Existem vários métodos de gerir os blocos:
o Desvantagens
Implementação simples
Estratégias de alocação contígua tenderão a fragmentar o espaço de disco físico (embora o disco possa ser compactado para eliminar a fragmentação).
o Vantagens
Períodos de acesso muito rápidos para transferência de ficheiros, porque todos os blocos do ficheiro estão próximos no disco (reduzindo o disco assim movimento de cabeça quando o ficheiros é inteiramente copiado).
Cada ficheiro é mantido numa lista ligada de blocos
o Vantagens
Não existe fragmentação.
Todos os blocos podem ser utilizados.
o Desvantagens
Acesso muito lento.
Utilizado no DOS.
o Vantagens
O acesso é muito mais rápido do que no caso anterior (Lista Ligada) pois contém uma tabela de index. Uma vez que a tabela de index está em memória, para aceder a uma parte do ficheiro basta consultar a tabela e fica-se a saber onde procurar no disco.
o Desvantagens
Como a tabela está em memória, o n.º de blocos é restringido pela memória.
Associa-se a cada ficheiro uma pequena tabela, designada por index-node.
Utilizado no UNIX.
Um directório é um conjunto de ficheiros logicamente associados a outros directórios de ficheiros.
Directórios de UNIX têm a estrutura em forma de grafo.
O gestor de ficheiros proporciona aos utilizadores um conjunto de comandos para administrar um directório, incluindo estes:
· enumerate. Retorna uma lista de todos dos ficheiros e subdirectórios.
· copy. Cria uma copia de um ficheiro existente.
· rename. Muda o nome simbólico de um ficheiro existente.
· delete. Remove o ficheiro identificado do directório
Computadores com dispositivos de armazenamento que têm mídia removíveis (como tapes de fita e disquetes) devem poder mudar a estrutura de ficheiros do sistema. O modelo usado por UNIX para montar e desmontar mídia removíveis é comum à maioria dos gestores de ficheiros.
O comando mount junta um sistema de ficheiros numa hierarquia de directório existente. Faz substituindo um directório no sistema de ficheiros permanente pela raiz do sistema de ficheiros do dispositivo a montar.
Isto é, os ficheiros contidos no dispositivo (por exemplo a drive de disquetes) depois de montados são utilizados como se fossem uma directoria do disco rígido.