Índice

 

 

Ficheiros

Descritor de ficheiros

Descritor de Ficheiro do Unix

Ficheiros Estruturados

            Ficheiros Sequenciais Orientados a Registos

            Ficheiros Indexados Sequencialmente

            Ficheiros Invertidos

Sistemas de Gestão de Bases de Dados

Implementação de Ficheiros de Baixo Nível

            Operadores Open e Close

            Gestão de Blocos

                        Alocação Contígua

                        Listas Ligadas

                        Alocação Indexada

Directorias

            Estrutura de Directorias

            Implementação de Directorias

            Abrir um Ficheiro numa Directoria Hierárquica

            Montando Ficheiros de Sistemas Removíveis

Bibliografia

 


Ficheiros

 

 

            Ficheiros são os mecanismos pelos quais os utilizadores salvam a informação de uma sessão para outra, são também usados para armazenar informação por longos períodos de tempo.

            Da perspectiva de uma programador, os ficheiros são fundamentalmente uma forma de abstracção de dispositivos de armazenamento secundários como por exemplo discos magnéticos, ainda que o software de sistema possa fornecer outras abstracções de alto nível tal como a memória virtual. O gestor de ficheiros implementa esta abstracção para fornecer directorias onde organizar os ficheiros.

            A grande maioria de programas de aplicação lêem a informação de um ou vários programas, processam os dados, e depois enviam o resultado para um ou mais ficheiros.

            Quando um processo e criado em Unix ele tem automaticamente acesso a três ficheiros nomeadamente:

-         stdin como abstracção de um dispositivo de entrada

-         stdout como abstracção de um dispositivo de saída

-         stderr como um ficheiro de erros

Nos sistemas Unix, por defeito os ficheiros stdin, stdout e stderr referem-se a dispositivos de comunicação e não dispositivos de armazenamento, ainda que os dispositivos correspondentes sejam usados utilizando o interface de ficheiros.

 

Descritor de ficheiros

 

 

            O descritor de ficheiros e uma estrutura de dados onde e armazenada informação detalhada de cada ficheiro, alguns desses detalhes são:

 

            External Name - E o nome que um utilizador geralmente associa com um ficheiro.

            Current State – Um ficheiro pode ter vários estar em vários estados de funcionamento tais como archived o que significa que foi escrito num baixo nível na hierarquia de armazenamento; closed quer dizer que o ficheiro se encontra num dispositivo de armazenamento online e que pode ser acedido em milisegundos; open for reading, que quer dizer que o ficheiro esta alocado para um processo que esta a ler o ficheiro ; open for writing que quer dizer que o ficheiro alocado para um processo que esta a escrever o ficheiro; open for execution; apen for appending; etc...

            Sharable – Se vários processos podem ter dado ficheiro aberto esse ficheiro diz-se partilhável, ficheiro o qual pode ser partilhado para leitura, escrita, execução, etc.

            Owner - Este identificador associa o utilizador cujo processo criou o ficheiro. O sistema de ficheiros pode permitir que o dono do ficheiro possa ser trocado.

            User – A listagem de processos que tem o ficheiro actualmente aberto.

            Locks – Alguns sistemas de ficheiros permitem que um processo tranque um ficheiro quando ele é aberto.

            Protection Settings – Sistemas Operativos diferentes têm características de protecção diferentes. Os modos de protecção mínimos são de escrita e de leitura

            Length – Numero de bytes que um ficheiro contem.

            Time of creation – Tempo de sistema no qual o ficheiro foi criado.

            Time of Modification – Tempo de sistema no qual o ficheiro foi escrito pela a ultima vez.

            Time of Last Access – Tempo de sistema no qual o ficheiro foi lido ou executado pela ultima vez.

            Reference Count – E o numero de directorias em que um dado ficheiro aparece.

Storage Device Details – Este campo identifica como os blocos do ficheiro           podem ser acedidos.

 

Descritor de Ficheiro do Unix

 

O descritor de ficheiros no Unix e conhecido como inode: Um inode no unix contem a seguinte information:

 

Mode –Especificação de permissões do dono e de outros utilizadores

UID – ID do utilizador que criou o ficheiro.

Group ID – ID do grupo que tem acesso ao ficheiro.

Length in Bytes – Numero de bytes do ficheiro,

Length in Blocks – Numero de blocos usados para implementar o ficheiro.

Last Modification – Data da ultima escrita no ficheiro.

Last Access – Data da ultima leitura ou execução do ficheiro-

Last Inode Modification – Data da ultima modificação do Inode.

Reference Count – Numero de directorias onde o ficheiro aparece.

Block References – Apontadores para blocos no ficheiro.

 

 

Ficheiros Estruturados

 

            Genericamente um ficheiro estruturado pode ser usado para guardar qualquer tipo de informação, imagens de programas, recolocar objectos de programas, bibliotecas, dados numéricos organizados segundo as necessidades de um conjunto de aplicações, dados de texto tais como programas fonte, etc.

 

Ficheiros Sequenciais Orientados a Registos

 

            Uma estrutura sequencial de ficheiros e uma sequência lógica de registos, indexados por números inteiros não negativos. Tal como nos ficheiros byte-stream, acesso ao ficheiro e definido por uma posição do ficheiro, mas esta posição indexa registos no ficheiro invés de bytes.

            Existem varias operações tais como:

            -Open(nome de ficheiro) – Abre um ficheiro e retorna um identificador do ficheiro para ser usado noutras operações.

            -Close(Id do ficheiro) – Fecha um ficheiro.

            -getRecord(ID do ficheiro, registo) – Retorna o registo identificado pela posição do ficheiro.

            -putRecord(ID do ficheiro, registo) – Escreve um registo na dada posição.

            -Seek(ID do ficheiro) – Move a posição do ficheiro para o registo dado.

 

Ficheiros Indexados Sequencialmente

 

            O sistema de ficheiros tem que ser capaz de ler ou escrever para um dado registo independentemente da localização desse registo no ficheiro. Ficheiros indexados sequencialmente tem esta capacidade, enquanto retêm a possibilidade de aceder aos registos sequencialmente. Cada cabeçalho de um registo inclui um inteiro(index field). Este sistema de ficheiros utiliza um interface mais geral leitura/escrita do que os ficheiros sequenciais mais puros:

            -GetRecord(ID de ficheiro, Index) - Retorna o registo com o campo index com o valor do index.

            -putRecord(ID de ficheiro, registo) - Uma operação de acesso que escreve o certo registo numa posição do ficheiro designada pelo sistema de ficheiros e depois devolve o valor do campo index.

-deleteRecord(ID de ficheiro, index) – Remove um registo com o campo de index com o valor do index.

 

Ficheiros Invertidos

 

            Um ficheiro invertido e quando um registo e colocado num ficheiro, palavras chave no registo retiradas e colocadas na tabela de index com um ponteiro para o registo de onde a palavra chave aparece.

 

 

Sistemas de Gestão de Bases de Dados

 

            Uma base de dados e um conjunto de informação extremamente estruturada, geralmente guardada em vários ficheiros para minimizar tempos de acesso. A SGBD permite ao programador definir tipos de dados complexos que podem ser usados mais tarde pelo administrador de base de dados para organizar a forma como a informação e armazenada em ficheiros de forma a que seja acedida rapidamente.

 

Implementação de Ficheiros de Baixo Nível

 

            A realização do disco rígido em relação ao sistema de ficheiros de baixo nível tem que conter um mecanismo que gira vários conjuntos de blocos para guardar os bytes de um ficheiro tal que eles possam ser acedidos como se fossem sido guardados como um fluxo de bytes contíguo.

 

Operadores Open e Close

 

         O comando Open completa-se quando a autenticação, alocação da estrutura de dados e inicializaçao foi completada. A posição do processo do ficheiro vai estar no primeiro byte no ficheiro, e o processo pode começar a ler ou escrever conforme as permissões usadas para abrir o ficheiro.

            O comando close faz com que o gestor de ficheiros complete todas as operações pendentes, para libertar os buffers de I/O, para actualizar o descritor externo do ficheiro, etc.

 

Gestão de Blocos

 

            O armazenamento físico de blocos pode ser gerido de três maneiras diferentes: como um conjunto de blocos contíguo numa unidade de armazenamento secundaria, como uma listagem de blocos interconectados com links, ou como um conjunto de blocos interconectado por um index de ficheiro.

 

Alocação Contígua        

         A estratégia de alocação contígua e mapear N blocos lógicos no ficheiro para N destinos contíguos de blocos físicos. Esta estratégia faz com que a unidade de armazenamento acedida aleatoriamente se porte como se tivesse sido acedida sequencialmente, isto faz com que haja tempos de acesso muito rápidos para todo o tipo de transferencias de ficheiros visto tarem tão próximos uns dos outros no disco.

 

          Listas Ligadas

 

            Este tipo de gestão de blocos faz um armazenamento de um bloco com a informação contida num apontador referente a posição do bloco seguinte isto faz com que não seja necessário áreas inteiras do disco onde colocar um conjunto de blocos mas faz com que o acesso aos ficheiros seja mais lento visto blocos desse ficheiro estarem espalhados pelo disco.

 

             Alocação Indexada

 

         Este modo de gestão de blocos e em algo semelhante ao de listas ligadas mudando o facto que os ponteiros referentes aos blocos restantes do ficheiro estarem guardados numa tabela de index o que facilita o tempo de acesso ao ficheiro, o problema coloca-se no ponto em que a tabela estando em memória o numero de blocos e restringido.

 

Directorias

 

Uma directoria e o mecanismo pelo qual os humanos organizão uma serie de ficheiros num sistema. A directoria é um conjunto de ficheiros e possivelmente de outras directorias. O gestor de ficheiros fornece vários comandos para utilizar com directorias tais como:

            -enumerate – Retorna uma lista de todos os ficheiros e directorias dentro da directoria identificada.

            -copy – Cria um duplicado de um ficheiro já existente

            -rename – Muda o nome simbólico de um ficheiro

            -delete – Remove o ficheiro da directoria e depois destrói-o

            -traverse – Permite que um utilizador navegue pelas subdirectorias da directoria identificada.

 

Estrutura de Directorias

 

         Uma directoria e um estrutura de dados que lista ficheiros e subdirectorias da forma pretendida.

 

Implementação de Directorias

 

         Uma directoria mapeia a organização de ficheiros para dispositivos de armazenamento, isto e feito particionando a organização e atribuir partições para os dispositivos.

 

Abrir um Ficheiro numa Directoria Hierárquica

 

         O ficheiro e aberto usando um nome absoluto a rotina do comando open tem que primeiro procurar na directoria root para encontrar a entrada relativa a directoria de primeiro nível, como resultado a directoria de primeiro nível no caminho dado e aberta e procura a directoria de segundo nível, e continua.

 

Montando Ficheiros de Sistemas Removíveis

 

            O comando mount(Unix) acrescenta um sistema de ficheiros numa hierarquia de directorias já existente. Ele faz isto substituindo uma directoria no sistema de ficheiros permanente pela root do sistema de ficheiros montado quando e inserido o respectiva disquete, cd-rom, etc.

  Bibliografia

Gary J. Nutt, Operating Systems  - A modern perspective, Addison-Wesley, 1997