Please enable JavaScript.
Coggle requires JavaScript to display documents.
Gerência de Armazenamento (Interface do Sistema de Arquivos [Cap. 10],…
Gerência de Armazenamento
Interface do Sistema de Arquivos
[Cap. 10]
Implementação do Sistema de Arquivos
[Cap. 11]
Estrutura de arquivo
Nenhuma: Sequência de bytes
Texto: Sequência de caracteres organizados em linhas.
Fonte: Sequência de sub-rotinas e funções.
Objeto: Sequência de bytes organizados em blocos que podem ser entendidos pelo linker do sistema.
Executável: Série de seções de código que o loader pode trazer para a memória e executar.
Quem decide? Sistema operacional ou Programa
Interface do Sistema de Arquivos
[Cap. 10]
Necessidade de Armazenamento
Grandes quantidades de informação têm de ser armazenadas
Informação armazenada tem de sobreviver ao fim do processo que a utiliza
Múltiplos processos devem poder acessar a informação de um modo concorrente
Conceito de Arquivo
Abstração criada pelo S.O. para gerenciar e representar os dados.
Do ponto de vista do usuário, é a menor alocação de armazenamento secundário.
Espaço de endereços lógicos contíguos.
Tipos: Dados (numéricos, caractere, binários) e Programa
Atributos do arquivo
Nome, Identificador (semelhante ao PID), Tipo (alguns S.A. tem), Local (ponteiro), Tamanho (quant. de bytes), Proteção (leitura, gravação, execução), Data e Hora, Usuário (dono do arquivo)
Informação sobre arquivos são mantidas na
estrutura de diretório
, que é mantida no disco mas não faz parte do arquivo.
Operações do arquivo
Arquivo é um tipo de dado abstrato.
TAD: Dados e Operações sobre os dados. (Lembra?)
Operações comuns: Criar, Gravar, Ler, Reposicionar dentro do arquivo, Excluir e Truncar
Abertura e Fechamento de arquivos
Open(Fi)
– procura a estrutura de diretório no disco para entrada Fi, e move conteúdo da entrada para memória
Guarda informações na tabela de arquivos abertos.
Pode informar: criar, somente leitura, leitura/escrita, somente acréscimo, etc.
Close (Fi)
– move o conteúdo da entrada Fi na memória para a estrutura de diretório no disco. Remove as informações da tabela acima. (E
libera o arquivo
)
Várias informações estão associadas a cada arquivo aberto: Ponteiro de arquivo, Contagem de arquivos abertos, Local do arquivo no disco e Direitos de acesso.
Lock de arquivo
Fornecido por alguns SOs e sistemas de arquivo.
Semelhante ao problema dos leitores-escritores.
Media o acesso a um arquivo.
Tipos
Obrigatório
: acesso é negado dependendo dos bloqueios mantidos e requisitados. Garante a integridade do lock. Usado no mundo Windows.
Consultivo
: os processos podem descobrir o status dos bloqueios e decidir o que fazer. Possibilidade de deadlock. Usado no mundo UNIX.
Tipos de Arquivo
Técnica comum (Windows): “nome.ext” (Nome do arquivo seguido de ‘.’ e uma extensão.). Ex: .doc, .txt, .mp3, .java, ...
Extensão indica o programa que abrirá o arquivo ou se o mesmo é executável (.exe)
macOS: Cada arquivo possui um tipo (TEXT, APPL, etc) e um atributo de criador (nome do programa que o criou)
UNIX: número mágico primitivo (em alguns casos) ou extensões.
Estrutura do arquivo
Definida pela aplicação
: O SO trata o arquivo como uma simples sequencia de bytes. A "interpretação" sobre como o arquivo está organizado internamente é feita pelo programador da aplicação (através de um bom projeto) ou é um padrão internacional (como o .mp3, .pdf, .jpeg, etc)
Definida pelo S.O.
: O SO impõe regras rígidas de como o arquivo deve ser internamente organizado. É o caso dos executáveis (.exe)
Métodos de Acesso
Sequencial
(o mais comum): O arquivo é lido registro a registro, em sequência.
Direto
: Análogo a um vetor/array. As divisões internas (registros) tem tamanhos conhecidos e é possível acessar um registro específico diretamente.
Indexado: Baseado no método direto, usa uma estrutura de índice para os registros. Semelhante ao que é feito num banco de dados.
Diretórios
Modo como o sistema organiza os diferentes arquivos contidos num disco
É a estrutura de dados que contém entradas associadas aos arquivos (metadados)
Cada partição de armazenamento tem seu próprio sistema de arquivos (logo, uma estrutura de diretórios exclusiva que está sempre no começo da partição)
Alias, o ato de "formatar" uma partição significa pura e simplesmente apagar toda essa estrutura e substituir por uma nova (em branco). Por isso é algo tão rápido! Os dados dos arquivos, em si, não são mexidos (por isso dá, com muito esforço, para tentar recuperar).
Quando um arquivo é aberto, o sistema operacional procura a sua entrada na estrutura de diretórios
As informações do arquivo são armazenadas em uma tabela mantida na memória principal (tabela de arquivo abertos) para fins de agilizar o acesso a disco.
Operações realizadas no diretório
Procurar, Renomear, Criar ou Excluir um arquivo
Listar um diretório
Percorrer o sistema de arquivos
Formas de Estruturar um Diretório
Sistemas de Diretório em Nível Único
Implementação mais simples, já que existe apenas um único diretório contendo todos os arquivos do disco
Bastante limitado já que não permite que usuários criem arquivos com o mesmo nome (daria conflito)
Estrutura de diretórios com dois níveis
Para cada usuário existe um diretório particular e assim poderia criar arquivos com qualquer nome.
Deve haver um nível de diretório adicional para controle que é indexado pelo nome do usuário.
Cada entrada aponta para o diretório pessoal.
Estrutura de diretórios Hierárquicos (em Árvore)
Adotado pela maioria dos sistemas operacionais
Logicamente melhor organizado
É possível criar quantos diretórios quiser
Um diretório pode conter arquivos e outros diretórios (chamados subdiretórios)
Cada arquivo possui um path único que descreve todos os diretórios da raiz (MFD – Master File Directory) até o diretório onde o arquivo está ligado
Na maioria dos S.O.s os diretórios são tratados como arquivos tendo atributos e identificação