610 likes | 767 Views
Sistema de Arquivos. Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani. Gerência de Arquivos. É um dos serviços mais visíveis do SO. Arquivos são normalmente implementados a partir de discos magnéticos.
E N D
Sistema de Arquivos Ambientes Operacionais Prof. Simão Sirineo Toscanistoscani@inf.pucrs.brwww.inf.pucrs.br/~stoscani
Gerência de Arquivos • É um dos serviços mais visíveis do SO. • Arquivos são normalmente implementados a partir de discos magnéticos. • Como um acesso a disco demora cerca de 10000 vezes mais que um acesso à memória, são necessárias estruturas de dados e algoritmos que otimizem os acessos ao disco.
Arquivo • Coleção de dados relacionados entre si • Referenciados através de nomes • Possuem atributos como: • tipo • momento da criação • tamanho • nome do criador
Tipos de Arquivos • Cada arquivo possui uma estrutura interna, conforme sua aplicação: • Um arquivo texto (.doc) é composto por uma sequência de caracteres organizados em linhas e parágrafos • um programa executável é uma seqüência de bytes representando instruções em código de máquina • um programa fonte é uma seqüência de caracteres que representam comandos de uma linguagem de programação (arquivos tipo “somente texto”, que não admitem qualquer tipo de formatação especial)
Sistemas Baseados em Fita • Inicialmente, cada arquivo era gravado em uma única fita. Haviam dois problemas: • Arquivos muito grandes não cabiam em uma fita • Arquivos pequenos geravam desperdício de espaço • Criação de sistemas multi-volume, para suprir necessidades de arquivos grandes • Utilização de diretórios permitiram armazenar diversos arquivos em uma única fita
Sistemas Baseados em Fitas • Diretório: criado para localizar a partição em que se encontra cada arquivo na fita. • Cada entrada do diretório contém um nome de arquivo e sua posição na fita.
Sistemas Baseados em Fita • Leitura de arquivo: • localizar e carregar a fita indicada pelo usuário • localizar no diretório a entrada correspondente ao arquivo • posicionar a fita no ponto correspondente ao início do arquivo • iniciar a leitura • terminar a leitura quando encontrar a marca de fim de arquivo
Sistemas Baseados em Disco • Um disco é dividido em trilhas • O número de trilhas é particular de cada dispositivo • Cada trilha dividida em setores • Setor a menor unidade de informação que pode ser lida ou escrita em um disco
Sistemas Baseados em Disco • Acesso a um setor: • informar face, trilha e setor desejado • as cabeças de leitura e gravação são deslocadas até a trilha correta (tempo de seek), • o cabeçote da face correta é selecionado eletronicamente • esperar até o setor desejado passar por baixo do cabeçote (tempo de latência)
Sistemas Baseados em Disco • Normalmente, uma unidade de disco rígido é formada por vários discos superpostos (no máximo 8 discos, com a tecnologia atual) • Cilindro: é formado pelas trilhas que estão na mesma posição, porém em diferentes faces (no caso de 8 discos superpostos cada cilindro é formado por 16 trilhas). • Não é necessário deslocar as cabeças para acessar trilhas de um mesmo cilindro
Sistemas Baseados em Disco • Hoje em dia, o SO trata o disco como um vetor de blocos, cada bloco corresponde a um setor. • Vantagem do disco sobre a fita: • possibilidade de acessar facilmente qualquer setor a qualquer momento (a fita permite apenas o acesso seqüencial)
Sistemas Baseados em Discos • Os discos possuem diretórios • Os diretórios são armazenados no próprio disco, normalmente em um endereço fixo • Isto possibilita a remoção do disco sem perda das informações correspondentes aos arquivos
Suporte a Arquivos • Chamadas de sistema permitem as seguintes operações sobre arquivos: • criar um arquivo • escrever no arquivo • ler o arquivo • remover o arquivo • reposicionar o ponto de acesso ao arquivo
Operações em Arquivos • Criar um arquivo: • necessita de dois passos: • encontrar e alocar espaço suficiente no disco, • adicionar uma entrada no diretório para conter as informações referentes ao arquivo (nome, localização, ...)
Operações em Arquivos • Escrever no Arquivo: • para escrever em uma arquivo o usuário deve fornecer o nome do arquivo e o bloco com a informação a ser escrita • O SO procura a localização do final do arquivo no disco, escreve o bloco e atualiza o ponteiro de final de arquivo
Operações em Arquivos • Ler o Arquivo: • o usuário executa uma chamada de sistema fornecendo o nome do arquivo e a posição da memória principal para onde as informações do bloco serão copiadas
Operações em Arquivos • Remover o Arquivo: • pesquisa o diretório e remove a entrada correspondente ao arquivo. Libera o espaço em disco ocupado pelo arquivo
Operações em Arquivos • Reposicionar o arquivo: • consiste em localizar a entrada no diretório correspondente ao arquivo e modificar o valor do ponteiro que indica a posição corrente do arquivo
Operações em Arquivos • Todas as operações sobre um arquivo envolvem uma pesquisa no diretório em busca da entrada correspondente ao arquivo desejado. • Cada entrada do diretório corresponde a um descritor de arquivo • O descritor contém todas as informações necessárias para a manipulação do arquivo
Tabela de Descritores de Arquivos Abertos (TDAA) • O acesso a um arquivo é feito através do seu descritor • Para evitar a pesquisa freqüente ao disco, o SO mantém na memória uma Tabela de Descritores de Arquivos Abertos • O arquivo é aberto quando ele começa a ser utilizado (desse modo, todas as informações sobre os arquivos em uso são mantidas na memória principal)
TDAA e TAAP • Um mesmo arquivo pode ser utilizado simultaneamente por vários processos (i.é, uma mesma entrada da TDAA pode ser utilizada por vários processos) • Por isso, cada entrada da TDAA contém uma indicação de quantos processos estão utilizando o arquivo correntemente • O mesmo arquivo pode estar sendo acessado por diferentes processos em pontos diferentes e com direitos de acesso diferentes • Por isso, cada processo contém uma tabela extra com informações apenas sobre os arquivos abertos por esse processo. Essa tabela é denominada Tabela de Arquivos Abertos por Processo (TAAP)
Tabela de Arquivos Abertos por Processo (TAAP) • No mínimo, a TAAP contém em cada entrada as seguintes informações: • Posição corrente no arquivo; • Tipo de acesso (apenas leitura ou leitura e escrita); • Apontador para a entrada correspondente na TDAA.
TDAA e TAAP Tanto a TDAA como as TAAP devem ficar na memória do sistema operacional, fora do acesso dos processos de usuário.
Métodos de Acesso • Acesso seqüencial • Acesso direto • Acesso indexado
Acesso Seqüencial • Uma leitura sempre acessa o próximo registro e avança um ponteiro sobre o arquivo • O ponteiro indica qual a próxima posição a ser lida ou escrita
Acesso Direto • O arquivo é uma seqüência numerada de registros (blocos) • Qualquer registro pode ser diretamente lido ou escrito
Acesso indexado • Envolve a construção de índices nos descritores de arquivos • Usa como base o serviço de acesso direto
Gerência do Espaço Livre • Espaço em disco é limitado, por isto é necessário reaproveitar todo o espaço disponível • Lista de setores livres: mantida pelo SO para controlar os espaços livres no disco
Métodos de Alocação • Contígua • Encadeada • Indexada
Alocação Contígua • Cada arquivo ocupa um conjunto de blocos (setores) contíguos no disco • Para localizar um arquivo basta saber o número do primeiro setor e o tamanho do arquivo em blocos • Para acessar o arquivo de forma seqüencial, o SO mantém o número do último bloco acessado
Alocação Contígua • Dificulta o processo de localizar espaço livre para novos arquivos • Usa os algoritmos: • first-fit: utiliza o primeiro espaço grande o suficiente que for encontrado • best-fit: utiliza espaço livre que deixa a menor sobra • worst-fit: maior sobra
Alocação Contígua • No momento da criação, é difícil determinar o número de blocos a serem alocados para o arquivo • É difícil aumentar o tamanho do arquivo
Alocação Encadeada • Cada arquivo corresponde a uma lista encadeada de blocos, estando os mesmos em qualquer local do disco • Diretório possui apenas o endereço do bloco inicial e o número de blocos (ou endereço do último bloco) • Cada bloco possui o endereço do bloco seguinte (ponteiros associados a cada bloco)
Alocação Encadeada • Os arquivos podem ser criados com tamanho zero • Inserções em arquivos resultam na retirada de blocos da lista de livres e inserção dos mesmos na lista que forma o arquivo
Alocação Encadeada • Não permite acesso direto a um bloco • Eficiente na implementação de acesso seqüencial • Não confiável: caso ocorra algum problema com um bloco, boa parte do arquivo é perdida, pois cada bloco possui um link para o setor seguinte
Alocação Indexada • Cada arquivo possui um bloco de índices • O diretório possui o endereço do bloco de índices de cada arquivo • Para acessar um bloco específico do arquivo é necessário acessar o bloco de índices para determinar o seu endereço físico no disco • Os arquivos podem ser criados com tamanho zero
Alocação Indexada • Permite acesso direto • Ocupa-se um setor inteiro para índices • Para arquivos grandes são necessários vários setores de índices
Tamanho da tabela de índices • Uma questão importante é o tamanho da tabela de índices. O número de entradas na tabela define o tamanho máximo de um arquivo no sistema. • Se cada bloco físico tem 4 Kbytes, para que o tamanho máximo de um arquivo seja 4 Gbytes, é necessário uma tabela de índices com “4 Gbytes ÷ 4 Kbytes” entradas, ou seja, 1.048.576 entradas (o que é um exagero) • Por outro lado, uma tabela de índices com apenas 5 entradas seria suficiente para um arquivo de 20 Kbytes (este é o tamanho médio dos arquivos em sistemas de propósito geral)
Tamanho da tabela de índices • A solução típica que compatibiliza eficiência na representação de arquivos pequenos e tamanho máximo satisfatório para arquivos grandes é empregar níveis de indireção na indexação. • O slide a seguir mostra o uso de índices (apontadores diretos e indiretos) no sistema Unix
Sistema de Diretórios • Diretório de nível único • Diretório de dois níveis • Diretórios em forma de árvore
Diretório de Nível Único • Todos os arquivos fazem parte do mesmo diretório • Problemas de organizaçãono caso de muitos arquivos. É necessário nome único para cada arquivo
Diretório de Dois Níveis • Criam-se diretórios separados para cada usuário • No diretório principal mantem-se apenas os endereços dos diretórios dos usuários • Proteção contra acessos indevidos
Diretórios Estruturados em Árvore • Os usuários podem criar seus próprios sub-diretórios para organizar seus arquivos • A árvore possui um diretório raiz • Cada arquivo possui um pathname (nome do arquivo composto pelos nomes de diretórios que formam o caminho da raiz até ele)
Formas de Implementar Diretórios • Basicamente, um diretório contém um conjunto de descritores (que apontam para outros diretórios ou para arquivos de dados) • A forma mais simples de implementar diretórios é considerá-los como arquivos especiais, cujo conteúdo é manipulado pelo próprio SO • Diretórios passam a ser arquivos cujo conteúdo é definido pelo SO e cujo acesso, por parte de usuários, é controlado
Formas de Implementar Diretórios • Um diretório pode ser organizado na forma de: • um conjunto de descritores de arquivos • um conjunto de endereços de descritores de arquivos
Diretório organizado como um conjunto de descritores de arquivos • O diretório contém diretamente os registros descritores (de arquivos ou diretórios) • Desvantagens: • (1) os nomes ficam fortemente vinculados aos descritores de arquivos (impede, p.ex., que se use mais de um nome para um mesmo arquivo); • (2) os diretórios tendem a ser maiores e estão mais sujeitos a inconsistências, pois estão espalhadas por todo o disco.