Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 23 : Uso de arquivos - Coggle Diagram
Cap 23 : Uso de arquivos
Interface de acesso
A interface é composta por um descritor de arquivo: representação lógica do arquivo, e um conjunto de funções para manipular o arquivo
Interface de baixo nível: oferecida ao processos pelo sistemas operacional através de chamadas do sistema e por isso depende dele
Interface de alto nível: funções na linguagem de programação usada para implementar a aplicação. Auxilia na portabilidade de programas entre sistemas operacionais
-
Descritores de arquivo
O descritor é criado no momento da abertura do arquivo e serve como referência para o mesmo nas operações
Descritores de alto nível: representam arquivos dentro de uma aplicação. Dependem da linguagem de programação. Ex: classe File em Java
Descritores de baixo nível: dependem do sistema operacional. Em UNIX esse descritor é um inteiro que indica a posição do arquivo em uma tabela de arquivos abertos
-
Abertura de um arquivo
Consiste basicamente em preparar as estruturas de memória necessárias para acessar os dados do arquivo
1) No processo: aplicação solicita a abertura do arquivo e o suporte de execução recebe a chamada da função, trata os parâmetros e invoca uma chamada de sistema
2) No núcleo: o núcleo recebe a chamada de sistema, localiza o arquivo no dispositivo físico, verifica se o processo tem permissão, cria uma estrutura de dados na memória do núcleo para representar o arquivo, insere uma referência na tabela de arquivos abertos, e devolve à aplicação essa referência
3) No processo: o suporte de execução recebe a referência do núcleo, cria um descritor de alto nível e devolve o acesso à aplicação
-
Formas de acesso
Acesso sequencial
Os dados são sempre lidos e escritos em sequência, do início para o final do arquivo
-
-
Quando o ponteiro chega ao final, apenas escritas são permitidas
-
Acesso aleatório
-
Caso se conheça a posição de um dado, não é preciso percorrer o arquivo até achá-lo
Forma de acesso muito usada em gerenciadores de bancos de dados e aplicações que precisam acessar rapidamente certos dados
No caso geral, os sistema usam acesso sequencial com possibilidade de reposicionar o ponteiro
-
Acesso indexado
-
-
A maioria dos sistemas não implementa essa funcionalidade no núcleo, mas ela pode ser obtida através de bibliotecas
-
Controle de Acesso
-
-
ACL (Access control lists): lista que indica quais usuários estão autorizados a acessar o arquivo e como podem acessá-lo. Pouco prático se o sistema tiver muitos usuários ou arquivo, pode as listas ficam extensas e difíceis de gerenciar
Abordagem UNIX: três tipos de usuários (User, Group e Others) e três permissões (Read, Write e Execute) de forma que são precisos nove bits para fazer o controle de acesso
O controle de acesso geralmente é realizado somente na abertura do arquivo. Se as permissões forem mudadas enquanto o arquivo estiver aberto o processo não irá perceber a mudança. Controle contínuo tem impacto negativo sobre o desempenho do sistema
Interface de acesso C
-
FILE * fopen(const char filename, const char opentype): abre o arquivo e devolve uma referência a ele
-
int fputc (int c, FILE *f): escreve um caractere no arquivo
-
-
int fseek (FILE *f, long int offset, int whence): move o ponteiro para a posição indicada
-
-
-
-