[Notas] Sistema operacional (11) - Implementação do sistema de arquivos

Prefácio

O sistema de arquivos fornece um mecanismo para armazenamento online e acesso ao conteúdo do arquivo, incluindo dados e programas. O sistema de arquivos reside permanentemente no armazenamento externo, que pode armazenar permanentemente grandes quantidades de dados.

Este capítulo discute principalmente como armazenar e acessar arquivos no armazenamento externo mais comumente usado, ou seja, disco. Discuta o uso de vários métodos para organizar arquivos, alocar espaço em disco, restaurar espaço livre, rastrear localização de dados e outras partes do sistema operacional para fornecer interfaces de memória externa e problemas de desempenho.

1. Estrutura do sistema de arquivos

Por que escolher o disco como espaço de armazenamento externo para manter o sistema:

  • Pode ser reescrito no local
  • Qualquer informação do disco pode ser acessada diretamente.
  • Econômico.
  • Discutiremos a estrutura do disco em detalhes no próximo capítulo.

Memória e disco: para melhorar a eficiência de I / O, a memória direta e a I / O de disco são transferidas em unidades de blocos ao invés de bytes executados. Cada bloco é um ou mais setores. Dependendo da unidade de disco, o setor varia de 32 a 4096B, geralmente 512B.

O sistema de arquivos geralmente tem um design hierárquico:

Insira a descrição da imagem aqui

  • Equipamento: equipamento de E / S, incluindo impressoras, teclados, etc.
  • Controle de E / S: É composto de driver de dispositivo e manipulador de interrupção para realizar a transmissão de informações entre a memória e o disco.
  • Sistema de arquivos básico: você só precisa enviar comandos gerais para o driver de dispositivo apropriado para ler e gravar blocos físicos no disco. Cada bloco é identificado por seu endereço de disco numérico.
  • Módulo de organização de arquivos: Conheça o arquivo e seus blocos físicos e lógicos. Conhecendo o tipo de alocação de arquivo usado e a localização do arquivo, o módulo de organização de arquivo pode converter o endereço do bloco lógico no endereço do bloco físico usado pelo sistema de arquivo básico.
  • Sistema de arquivo lógico: O sistema de arquivo lógico gerencia metadados. Os metadados incluem todas as estruturas de dados do sistema de arquivos, mas não incluem os dados reais. O sistema de arquivos lógico gerencia a estrutura de diretório de acordo com o nome do arquivo de símbolo fornecido e fornece as informações necessárias para o módulo de organização de arquivo. O sistema de arquivos lógico mantém a estrutura do arquivo por meio do bloco de controle de arquivo .
  • Bloco de controle de arquivo (FCB): contém informações do arquivo, incluindo proprietário, permissões e localização do conteúdo do arquivo.
  • Programa do usuário

2. Implementação do sistema de arquivos

1. Visão Geral

Diferentes sistemas operacionais têm diferentes sistemas de arquivos, mas ainda têm algumas regras gerais

Regra geral parte 1:

  • Bloco de controle de inicialização (para cada volume): ** Contém a confiança de que o sistema precisa para inicializar o sistema operacional a partir desse volume. Se o disco não tiver um sistema operacional, o conteúdo deste bloco está vazio. Geralmente é a primeira parte do volume. O sistema de arquivos UFS é chamado de bloco de inicialização **, o sistema de arquivos NTFS é chamado de setor de inicialização da partição .
  • Bloco de controle de volume (para cada volume): ** Contém informações detalhadas sobre o volume, como o número de partições, o tamanho do bloco, o número e ponteiros de blocos livres, o número e ponteiros de FCBs livres, etc. O sistema de arquivos UFS é chamado de superbloco e o sistema de arquivos NTFS é chamado de tabela de arquivos mestre **.
  • Estrutura do diretório: A estrutura do diretório de cada sistema de arquivos é usada para organizar os arquivos. No UFS, ele contém o nome do arquivo e o número do nó do índice relacionado . Ele é armazenado na tabela de arquivos mestre em NTFS .

As informações na memória são usadas para gerenciamento do sistema de arquivos e armazenadas em cache para melhorar o desempenho. Esses dados são carregados quando o sistema de arquivos é instalado e descartados quando é descarregado.

Regras gerais parte 2:

  • Uma tabela de instalação na memória, incluindo informações sobre todos os volumes instalados.
  • Um cache de estrutura de diretório na memória, usado para armazenar as informações de diretório recentemente visitadas.
  • A tabela de arquivos abertos em todo o sistema inclui cópias FCB e outras informações para cada arquivo aberto.
  • A tabela de arquivos abertos de um único processo inclui um ponteiro para a entrada apropriada na tabela de arquivos abertos em todo o sistema e outras informações.

Composição típica do FCB:
Insira a descrição da imagem aqui
uso do FCB: Para criar um novo arquivo, o aplicativo chama o sistema de arquivos lógico. O sistema de arquivos lógico conhece a forma da estrutura do diretório. Para criar um novo arquivo, ele alocará um novo FCB (se a implementação do sistema de arquivos criou todos os FCBs quando o sistema de arquivos é criado, então apenas um é alocado do conjunto de FCB livre). Em seguida, o sistema lê as informações do catálogo na memória, atualiza o catálogo e o PCB com o novo nome de arquivo e grava o resultado de volta no disco.

Estrutura do sistema de arquivos na memória: abrir arquivo à esquerda, ler arquivo à direita
Insira a descrição da imagem aqui

2. Particionamento e instalação

** Os discos são classificados como crus (cozidos): **

  • Disco bruto refere-se a um disco sem um sistema de arquivos, porque não há sistema de arquivos adequado para armazenar dados específicos e alguns bancos de dados usam discos brutos.
  • Um disco cozido é um disco que contém um sistema de arquivos.

Informações de inicialização: as informações de inicialização podem ser armazenadas em cada partição. Ele tem seu próprio formato, porque o sistema não possui um driver de dispositivo de sistema de arquivos no momento da inicialização.

Partição raiz: inclui o kernel do sistema operacional e outros arquivos do sistema, que são carregados na memória no momento da inicialização.

3. Sistema de arquivos virtual (sistema de arquivos virtual, VFS)

O sistema de arquivo virtual é uma camada de interface (interface VFS) entre o sistema de arquivo físico e o serviço do sistema de arquivo, que abstrai os detalhes desejados de cada sistema de arquivo físico e fornece uma chamada de sistema unificada para esses sistemas de arquivo diferentes interface.

  • A camada VFS define uma interface VFS clara para separar a operação geral do sistema de arquivos da implementação específica.
  • O VFS fornece um mecanismo para identificar exclusivamente um arquivo na rede.
  • O VFS pode distinguir entre arquivos locais e arquivos remotos, e pode ainda distinguir diferentes arquivos locais de acordo com os tipos de arquivo.

Insira a descrição da imagem aqui

Três, realização de diretório

1. Lista linear

A maneira mais simples de implementar um diretório é usar uma lista linear de nomes de arquivos de armazenamento e ponteiros de bloco de dados. Este método é simples de programar, mas demorado para ser executado.

2. Tabela de hash

As funções de hash são fáceis de encontrar, mas ocorrerão conflitos, reduzindo a eficiência. Mas ainda é melhor do que listas lineares.

Quatro, método de distribuição

Discutido aqui é como o arquivo é armazenado no disco.

1. Distribuição contínua

O método de alocação contínua requer que cada arquivo ocupe um conjunto de blocos independentes no disco. A estratégia de alocação pode ser combinada com a estratégia de alocação de memória no Capítulo 8 (primeiro, ótimo, máximo).

Vantagens: simples de implementar, suporta acesso sequencial e acesso direto, velocidade de acesso rápida, alta eficiência, adequado para a situação em que o conteúdo do arquivo não é alterado.

Desvantagens: como os arquivos são alocados em um espaço contíguo, o tamanho do arquivo é difícil de expandir, podendo ocorrer fragmentação externa.

  • Resolva o problema da fragmentação externa: transfira para outro disco, mescle o espaço livre e, em seguida, transfira-o de volta. Mas haverá tempo de inatividade .
  • Resolva o problema da incapacidade de expansão: através do ponteiro, quando o espaço não é suficiente, outro espaço é estendido. O espaço original é procurado por espaço de expansão através do ponteiro.

Alocação contínua de espaço em disco:
Insira a descrição da imagem aqui

2. Atribuição de link

A alocação de links resolve todos os problemas de alocação contínua. Com a alocação de links, cada arquivo é uma lista vinculada de blocos de disco, e os blocos de disco são distribuídos em qualquer lugar do disco.

Vantagens: implementação simples, apenas o primeiro endereço é necessário, não há problema de fragmentação externa, o arquivo pode ser expandido e não há necessidade de declarar o tamanho do arquivo com antecedência.

Desvantagens:

  • Cada bloco de arquivo possui um ponteiro e ocupa espaço;
  • Não pode ler diretamente;
  • Baixa confiabilidade, a perda de um bloco de dados intermediário causará a quebra da cadeia;

Solução:

  • Reduza a ocupação do espaço do ponteiro: agrupe vários blocos em clusters e aloque-os por cluster em vez de bloco (mas isso aumentará a fragmentação interna).
  • Aumente a confiabilidade: use a tabela de alocação de arquivos (FAT) . O início de cada volume é usado para armazenar o FAT. Cada bloco possui uma entrada na tabela FAT, que pode ser indexada pelo número do bloco. O uso de FAT é semelhante a uma lista vinculada. A entrada do diretório contém o número do bloco do primeiro bloco do arquivo. A entrada FAT indexada pelo número do bloco contém o número do bloco do próximo bloco do arquivo. Esta cadeia continuará até o último bloco, e o valor da entrada FAT correspondente a este bloco é o valor de fim de arquivo.

Alocação de conexão de espaço em disco:
Insira a descrição da imagem aqui
FAT:
Insira a descrição da imagem aqui
Vantagens do FAT: Ao ler a tabela FAT na memória de uma vez por meio de E / S, o acesso aleatório a qualquer posição do arquivo pode ser realizado; alta estabilidade.

Deficiências FAT: Se a tabela FAT for lida na memória sem usar o cache, fará com que o FAT seja acessado primeiro para cada acesso, resultando em um longo tempo de acesso.

3. Alocação de índice

A alocação vinculada resolve o problema de fragmentação externa e declaração de tamanho de alocação contínua. No entanto, se o FAT não for usado, a alocação de links não pode suportar efetivamente o acesso direto, porque os ponteiros e blocos são distribuídos por todo o disco e devem ser lidos em ordem.

Alocação de índice: Este problema é resolvido juntando todos os ponteiros, ou seja, por meio de blocos de índice .

Vantagens: suporte a acesso sequencial, acesso aleatório; arquivo pode ser expandido, o tamanho do arquivo não precisa ser declarado com antecedência; alta estabilidade; sem fragmentação externa.

Desvantagem: desperdício de espaço. Por exemplo, cada arquivo tem apenas um ou dois blocos. Com a alocação de link, apenas um ponteiro é desperdiçado por bloco. Com a alocação de índice, embora apenas um ou dois ponteiros não estejam vazios, um bloco de índice completo deve ser alocado.

problema resolvido:

  • Para processar arquivos grandes, vários blocos de índice podem ser vinculados ou podem ser usados ​​índices de vários níveis.
  • Para evitar que pequenos arquivos desperdicem espaço, um esquema de combinação pode ser usado. Por exemplo , o inode no sistema de arquivos UNX .
    Insira a descrição da imagem aqui
    Inode em UNX:
    Insira a descrição da imagem aqui

Cinco, gerenciamento de espaço gratuito

1. vetor de bits

Vetor de bits: expressa o espaço livre como um bitmap, cada espaço livre é representado por 1 bit, se for livre é 1 e foi alocado como 0. Por exemplo, 10101101010100110110101010110.

Vantagens: relativamente simples de implementar, fácil de gerar arquivos com alocação contínua de espaço.

Desvantagens: Se houver muitos blocos de disco, o bitmap correspondente será muito grande.

2. Lista vinculada

Lista vinculada: conecte todos os blocos de disco livres com uma lista vinculada e armazene o ponteiro para o primeiro bloco livre em um local especial no disco e também armazene-o no cache.

Vantagens: pouco espaço de memória ocupado durante a consulta (ler a maior parte é suficiente)

Desvantagens: baixa confiabilidade, difícil encontrar muitos blocos livres. E a pesquisa consome muito tempo.

3. Grupo

Para a lista ligada livre, os endereços de n blocos livres podem ser armazenados no primeiro bloco livre, os seguintes n-1 blocos estão realmente vazios e o último bloco contém os endereços de outros n blocos livres.
Vantagens: O endereço de um grande número de blocos livres pode ser encontrado rapidamente.

4. Conte

Normalmente, existem vários blocos contíguos que precisam ser alocados ou liberados ao mesmo tempo, especialmente quando a alocação contígua e clusters são usados. Portanto, o endereço do primeiro bloco e o número n de blocos livres consecutivos após o primeiro bloco podem ser registrados.

Desta forma, cada entrada na tabela de espaço livre inclui o endereço do disco e o número. Embora cada entrada exija mais espaço do que a original, o comprimento total da tabela será menor, porque o número de blocos consecutivos geralmente é maior que 1.

Acho que você gosta

Origin blog.csdn.net/qq_41882686/article/details/112915794
Recomendado
Clasificación