Sistema operacional --- gerenciamento de arquivos

Índice

1. Introdução ao gerenciamento de arquivos

1. Propriedades do arquivo

Nome do arquivo: O nome do arquivo é determinado pelo usuário que criou o arquivo. É principalmente para a conveniência do usuário encontrar o arquivo. Arquivos com o mesmo nome não são permitidos no mesmo diretório.
Identificador: O identificador de cada arquivo em um sistema é único e não possui legibilidade para os usuários, portanto, o identificador é apenas um nome interno utilizado pelo sistema operacional para diferenciar cada arquivo.
Tipo: indica o tipo do arquivo Localização: o caminho onde o arquivo está armazenado (para uso dos usuários) e o endereço no armazenamento externo (usado pelo sistema operacional, invisível para os usuários).
Tamanho: Indica o tamanho do arquivo.
Hora de criação, hora da última modificação.
Informações do proprietário do arquivo.
Informações de proteção: informações de controle de acesso para proteção de arquivos.

2. Organização de dados internos do arquivo

Arquivos não estruturados (como arquivos de texto) são compostos de alguns fluxos binários ou de caracteres, também conhecidos como "arquivos de streaming". Um arquivo estruturado (como uma tabela de banco de dados) consiste em um grupo de registros semelhantes, também conhecido como "arquivo de registro". Um registro é uma coleção de itens de dados relacionados e um item de dados é a unidade de dados mais básica em um sistema de arquivos.

insira a descrição da imagem aqui

3. Organização entre arquivos

Os usuários podem criar diretórios de camada por camada sozinhos e armazenar os arquivos correspondentes em cada camada de diretórios. Cada arquivo no sistema é organizado de maneira razoável e ordenada por meio de diretórios camada por camada. Um diretório também é um arquivo estruturado especial.

insira a descrição da imagem aqui

4. Funções fornecidas pelo sistema operacional para cima

insira a descrição da imagem aqui

Deve-se notar que antes de ler e escrever um arquivo, o arquivo precisa ser aberto. Depois de ler e gravar o arquivo, o arquivo precisa ser fechado. Várias operações básicas podem ser usadas para concluir operações mais complexas, como copiar arquivos, primeiro criar um novo arquivo vazio, depois ler o arquivo de origem na memória e depois gravar os dados na memória no novo arquivo.

5. Como armazenar arquivos em armazenamento externo

Assim como a memória, a memória externa também é composta de unidades de armazenamento, e cada unidade de armazenamento pode armazenar uma certa quantidade de dados (como 1B). Cada unidade de armazenamento corresponde a um endereço físico. Semelhante a como a memória é dividida em "blocos de memória", a memória externa é dividida em "blocos/blocos de disco/blocos físicos". O tamanho de cada bloco de disco é igual e cada bloco geralmente contém endereços que são potências inteiras de 2 (por exemplo, neste exemplo, um bloco contém 2 10 endereços , ou seja, 1 KB). Da mesma forma, o endereço lógico de um arquivo também pode ser dividido em (número do bloco lógico, endereço no bloco), e o sistema operacional também precisa converter o endereço lógico no endereço físico da memória externa (número do bloco físico, endereço no o bloco). O número de bits em um endereço dentro de um bloco depende do tamanho do bloco do disco. O sistema operacional aloca espaço de armazenamento para arquivos em unidades de "blocos", portanto, mesmo que um arquivo tenha apenas 10B de tamanho, ele ainda precisa ocupar um bloco de disco de 1KB. Os dados no armazenamento externo são lidos na memória interna em unidades de blocos.

insira a descrição da imagem aqui

6. Outras funções de gerenciamento de arquivos que precisam ser implementadas pelo sistema operacional

Compartilhamento de arquivos: permite que vários usuários compartilhem um arquivo.
Proteção de arquivo: como garantir que diferentes usuários tenham diferentes permissões de operação em arquivos.

7. Resumo

insira a descrição da imagem aqui

2. A estrutura lógica do arquivo

A chamada "estrutura lógica" refere-se a como os dados dentro do arquivo devem ser organizados do ponto de vista do usuário. A "estrutura física" refere-se a como os dados do arquivo são armazenados na memória externa do ponto de vista do sistema operacional. Semelhante à "estrutura lógica" e "estrutura física" de uma estrutura de dados. Por exemplo, uma "tabela linear" é uma estrutura lógica. Do ponto de vista do usuário, uma tabela linear é uma sequência de elementos sequenciais, como: a, b, c, d, e
...

A estrutura lógica da "lista linear" pode ser realizada com diferentes estruturas físicas, como lista de sequência/lista de links. Os elementos da lista sequencial são logicamente
adjacentes e fisicamente adjacentes; enquanto os elementos da lista encadeada podem não ser fisicamente adjacentes. Portanto, a tabela de sequência pode obter "
acesso aleatório", mas a "lista encadeada" não pode obter acesso aleatório.

Pode-se ver que a implementação específica do algoritmo está relacionada tanto à estrutura lógica quanto à estrutura física (o mesmo vale para o arquivo, e a implementação específica da operação do arquivo está relacionada à estrutura lógica
e à estrutura física do o arquivo)

insira a descrição da imagem aqui

1. Arquivos não estruturados e arquivos estruturados

Classificado conforme o arquivo possui estrutura, pode ser dividido em dois tipos: arquivo não estruturado e arquivo estruturado.
Arquivo não estruturado: Os dados dentro do arquivo são compostos por uma série de fluxos binários ou fluxos de caracteres. Também conhecido como "arquivos de streaming". Como o arquivo .txt no sistema operacional Windows.
Arquivos estruturados: compostos por um conjunto de registros semelhantes, também conhecidos como "arquivos gravados". Cada registro consiste em vários itens de dados. Como arquivos de tabela de banco de dados. Em geral, cada registro possui um item de dados que pode ser usado como uma chave. Dependendo se o comprimento (espaço de armazenamento ocupado) de cada registro é igual, ele pode ser dividido em dois tipos: registro de comprimento fixo e registro de comprimento variável.

2. Estrutura lógica com arquivos estruturados

insira a descrição da imagem aqui

2.1 Arquivos sequenciais

Arquivo sequencial: Os registros no arquivo são organizados sequencialmente (logicamente) um após o outro, e os registros podem ser de comprimento fixo ou variável. Fisicamente, cada registro pode ser armazenado sequencialmente ou encadeado. Armazenamento sequencial - registros que são logicamente adjacentes também são fisicamente adjacentes (semelhante a uma tabela sequencial). Armazenamento vinculado - registros logicamente adjacentes não são necessariamente fisicamente adjacentes (semelhante a uma lista vinculada).

insira a descrição da imagem aqui

A estrutura de string geralmente determina a ordem dos registros de acordo com o tempo em que são armazenados.

insira a descrição da imagem aqui

2.2 arquivo de índice

Crie uma tabela de índice para acelerar a recuperação de arquivos. Cada registro corresponde a uma entrada de índice. Esses registros no arquivo podem ser armazenados fisicamente de forma discreta. A própria tabela de índice é um arquivo sequencial de registros de tamanho fixo. Portanto, o item de índice correspondente ao i-ésimo registro pode ser encontrado rapidamente. As palavras-chave podem ser usadas como o conteúdo do número do índice e, se forem organizadas na ordem das palavras-chave, também podem suportar a pesquisa pela metade de acordo com as palavras-chave. Sempre que um registro é adicionado/excluído, a tabela de índices precisa ser modificada. Como o arquivo de índice tem uma velocidade de recuperação muito rápida, ele é usado principalmente em ocasiões que exigem alta pontualidade no processamento de informações.

Além disso, várias tabelas de índice podem ser criadas com diferentes itens de dados. Por exemplo, na tabela de informações do aluno, uma tabela de índice pode ser estabelecida com a palavra-chave "número do aluno". "Nome" também pode ser usado para criar uma tabela de índice. Desta forma, os arquivos podem ser recuperados rapidamente de acordo com o "nome".

insira a descrição da imagem aqui

2.3 Indexando arquivos sequenciais

Considere as desvantagens dos arquivos de índice: cada registro corresponde a uma entrada na tabela de índice, portanto, a tabela de índice pode ser muito grande. Por exemplo, cada registro de um arquivo ocupa apenas 8B em média e cada entrada de índice ocupa 32 bytes, então a tabela de índice é 4 vezes maior que o próprio conteúdo do arquivo, então a taxa de utilização do espaço de armazenamento é muito baixa.

Arquivos sequenciais indexados são uma combinação de ideias de arquivos indexados e sequenciais. No arquivo de sequência de índice, uma tabela de índice também é criada para o arquivo, mas a diferença é que não cada registro corresponde a uma entrada de índice, mas um grupo de registros corresponde a uma entrada de índice. Neste exemplo, os registros dos alunos são agrupados pelas iniciais dos nomes dos alunos. Cada grupo é um arquivo sequencial e os registros do grupo não precisam ser classificados por palavras-chave. As entradas de índice do arquivo de sequência de índice não precisam ser organizadas na ordem das palavras-chave, o que facilita muito a inserção de novas entradas.

insira a descrição da imagem aqui
Se um arquivo sequencial tiver 10.000 registros, o arquivo só poderá ser pesquisado sequencialmente desde o início (isso não se refere ao arquivo sequencial com registros de comprimento fixo ou estrutura sequencial) de acordo com o arquivo de pesquisa por palavra-chave, e uma média de 5.000 registros deve ser pesquisado.

Se a estrutura de arquivo de sequência de índice for adotada, 10.000 registros podem ser divididos em v10.000=100 grupos, cada grupo contém 100 registros. Você precisa pesquisar a tabela de índice sequencialmente para localizar os grupos (um total de 100 grupos, portanto, o comprimento da tabela de índice é 100 e você precisa verificar 50 vezes em média). Precisa verificar 50 vezes). Pode-se observar que após a adoção da estrutura de arquivo de sequência de índice, os tempos médios de busca são reduzidos para 50+50=100 vezes.

Da mesma forma, se o arquivo tiver 10 6 registros no total, ele poderá ser dividido em 1.000 grupos e cada grupo terá 1.000 registros. A recuperação de um registro com base em palavras-chave requer uma média de 500+500=1000 pesquisas. Ainda há muitas buscas, como resolver?

Para melhorar ainda mais a eficiência da recuperação, uma tabela de índice multinível pode ser estabelecida para arquivos sequenciais. Por exemplo, para um arquivo com 10 6 registros, você pode primeiro criar uma tabela de índice de baixo nível para o arquivo, e cada 100 registros são um grupo, portanto, há 10.000 entradas na tabela de índice de baixo nível (ou seja, 10.000 registros de comprimento fixo )

insira a descrição da imagem aqui

3. Resumo

insira a descrição da imagem aqui

insira a descrição da imagem aqui

3. Diretório de arquivos

1. Bloco de controle de arquivo

O próprio diretório é um arquivo estruturado que consiste em registros. Cada registro corresponde a um arquivo que deve ser colocado neste diretório. Um registro em um arquivo de diretório é um bloco de controle de arquivo (FCB), uma coleção ordenada de FCBs é chamada de diretório de arquivo e um FCB é uma entrada de diretório de arquivo.

O FCB contém as informações básicas do arquivo (nome do arquivo, endereço físico, estrutura lógica, estrutura física etc.), informações de controle de acesso (se legível/gravável, lista de usuários proibidos de acessar etc.), informações de uso (como o estabelecimento da hora do arquivo, hora da modificação, etc.). FCB implementa o mapeamento entre nomes de arquivos e arquivos. Permita que os usuários (programas do usuário) acessem por nome.

2. Estrutura do diretório

2.1 Estrutura de diretório de nível único

Os primeiros sistemas operacionais não suportavam diretórios de vários níveis e apenas uma tabela de diretório era estabelecida em todo o sistema, e cada arquivo ocupava uma entrada de diretório. A estrutura de diretório de nível único permite acesso por nome, mas nomes de arquivos duplicados não são permitidos. Portanto, ao criar um arquivo, é necessário primeiro verificar se existe um arquivo com o mesmo nome na tabela de diretórios e, em seguida, permitir que o arquivo seja criado após confirmar que o nome não está duplicado e inserir a entrada do diretório correspondente para o novo arquivo na tabela de diretórios. Uma estrutura de diretório de nível único não é adequada para um sistema operacional multiusuário.

insira a descrição da imagem aqui

2.2 Estrutura de diretório de dois níveis

Os primeiros sistemas operacionais multiusuário adotaram uma estrutura de diretório de dois níveis. Ele é dividido em diretório de arquivos principal (MFD, diretório de arquivos mestre) e diretório de arquivos do usuário (UFD, diretório de arquivos do usuário).

Adicione uma descrição da imagem

2.3 Estrutura de diretório multinível (estrutura de diretório em árvore)

Quando um usuário (ou processo de usuário) deseja acessar um arquivo, ele precisa identificar o arquivo com um nome de caminho de arquivo e o nome de caminho de arquivo é uma string. Os diretórios em todos os níveis são separados por "/". O caminho que começa no diretório raiz é chamado de caminho absoluto. O sistema encontrará o diretório de nível seguinte, camada por camada, de acordo com o caminho absoluto. Obviamente, é muito ineficiente pesquisar no diretório raiz todas as vezes. Portanto, você pode definir um diretório atual e começar a acessar caminhos relativos do diretório atual. A estrutura de diretórios em forma de árvore pode classificar os arquivos de maneira muito conveniente, a estrutura hierárquica é clara e também pode gerenciar e proteger arquivos com eficiência, mas a estrutura em forma de árvore não é conveniente para compartilhamento de arquivos.

insira a descrição da imagem aqui

2.4 Estrutura de diretórios do grafo acíclico

A estrutura de diretórios do gráfico acíclico adiciona algumas arestas direcionadas apontando para o mesmo nó com base na estrutura de diretórios da árvore, tornando todo o diretório um gráfico acíclico direcionado, que pode realizar de forma mais conveniente o compartilhamento de arquivos entre vários usuários. É possível apontar para o mesmo arquivo com nomes diferentes, ou até mesmo para o mesmo diretório (compartilhando tudo no mesmo diretório). Um contador compartilhado precisa ser definido para cada nó compartilhado para registrar quantos diretórios estão compartilhando o nó neste momento. Quando o usuário solicitar a exclusão do nó, o sistema não excluirá diretamente o nó compartilhado, mas apenas excluirá o FCB do usuário, e faça o contador compartilhado diminuir em 1 e exclua o nó somente quando o contador compartilhado for decrementado para 0.

Deve-se notar que compartilhar um arquivo é diferente de copiar um arquivo. Em um arquivo compartilhado, como cada usuário aponta para o mesmo arquivo, desde que um dos usuários modifique os dados do arquivo, todos os usuários podem ver a alteração do arquivo dados.

insira a descrição da imagem aqui

3. Inode

insira a descrição da imagem aqui

Na verdade, apenas as informações do "nome do arquivo" são necessárias no processo de pesquisa de diretórios em todos os níveis, e outras informações do arquivo precisam ser lidas apenas quando o nome do arquivo corresponder. Portanto, pode-se considerar "reduzir" a tabela de catálogos para melhorar a eficiência.

insira a descrição da imagem aqui

O ponteiro da tabela de índice aponta para o nó de índice e as informações de descrição do arquivo, exceto o nome do arquivo, são colocadas aqui. Supondo que um FCB tenha 64B e o tamanho de um bloco de disco seja 1KB, apenas 16 FCBs podem ser armazenados em cada bloco de disco. Se houver 640 entradas de diretório em um diretório de arquivo, um total de 640/16 = 40 blocos de disco serão ocupados. Portanto, para pesquisar o diretório de acordo com um determinado nome de arquivo, uma média de 320 entradas de diretório precisa ser consultada e o disco precisa ser iniciado 20 vezes em média (cada disco l/o lê uma parte). Se o mecanismo de nó de índice for usado, o nome do arquivo ocupa 14B e o ponteiro do nó de índice fica em 2B, então cada bloco de disco pode armazenar 64 entradas de diretório, então apenas 320/64=5 blocos de disco precisam ser lidos em média para recuperar o diretório por nome de arquivo. Obviamente, isso acelerará muito a recuperação de arquivos.

4. Resumo

insira a descrição da imagem aqui

4. A estrutura física do arquivo

1. Bloco de arquivo, bloco de disco

Semelhante à paginação de memória, as unidades de armazenamento em discos também são divididas em "blocos/blocos de disco/
blocos físicos". Em muitos sistemas operacionais, os blocos de disco têm o mesmo tamanho que os blocos de memória, as páginas. A troca de dados entre memória e disco (ou seja, operações de leitura/gravação, E/S de disco) é realizada em unidades de "blocos". Ou seja, leia um bloco de cada vez ou escreva um bloco de cada vez. No gerenciamento de memória, o espaço de endereço lógico de um processo é dividido em páginas. Da mesma forma, no gerenciamento de memória externa, para facilitar o gerenciamento de dados de arquivo, o espaço de endereço lógico do arquivo também é dividido em "blocos" de arquivo, um por um. Portanto, o endereço lógico do arquivo também pode ser expresso na forma de (número do bloco lógico, endereço dentro do bloco). O sistema operacional aloca espaço de armazenamento para arquivos em unidades de blocos. Os usuários operam seus próprios arquivos por meio de endereços lógicos, e o sistema operacional é responsável por realizar o mapeamento de endereços lógicos para endereços físicos.

2. Método de distribuição de arquivos

2.1 Alocação contínua

A alocação contígua exige que cada arquivo ocupe um conjunto de blocos contíguos no disco.

insira a descrição da imagem aqui

O usuário informa o número do bloco lógico a ser acessado e o sistema operacional encontra a entrada de diretório (FCB) correspondente ao arquivo e o número do bloco físico = número do bloco inicial + número do bloco lógico. O número e comprimento do bloco inicial (um total de vários blocos) são registrados no diretório do arquivo. O número do bloco físico correspondente ao número do bloco lógico pode ser calculado diretamente, portanto, a alocação sequencial suporta acesso sequencial e acesso direto (acesso aleatório).

insira a descrição da imagem aqui

Ao ler um bloco de disco, a cabeça precisa ser movida. Quanto mais distantes dois blocos de disco estiverem sendo acessados, mais tempo levará para mover o cabeçote. Arquivos alocados contiguamente são mais rápidos quando lidos/gravados sequencialmente. A desvantagem é que não é conveniente expandir os arquivos fisicamente alocados continuamente. A baixa taxa de utilização do espaço de armazenamento gerará fragmentos de disco difíceis de usar. A compactação pode ser usada para lidar com fragmentos, mas leva muito tempo.

2.2 Atribuição de links

A alocação de link adota um método de alocação discreta, que pode alocar blocos de disco discretos para arquivos. Dividido em links implícitos e links explícitos.

2.2.1 Ligação implícita

O diretório registra o número do bloco inicial e o número do bloco final do armazenamento de arquivo. Claro, um campo também pode ser adicionado para indicar o tamanho do arquivo. Exceto para o último bloco de disco do arquivo, os ponteiros para o próximo bloco de disco são armazenados em cada bloco de disco e esses ponteiros são transparentes para o usuário.

O usuário fornece o número do bloco lógico i a ser acessado e o sistema operacional encontra a entrada de diretório (FCB) correspondente ao arquivo... encontra o número do bloco inicial (ou seja, bloco 0) da entrada do diretório, lê o bloco lógico 0 na memória, a partir disso, conhecemos o número do bloco físico armazenado no bloco lógico nº 1, depois lemos o bloco lógico nº 1 e, em seguida, encontramos o local de armazenamento do bloco lógico nº 2... e assim sobre. Portanto, a leitura no bloco lógico i requer um total de I/Os de disco i+1.

insira a descrição da imagem aqui

Arquivos que adotam o método de alocação em cadeia (link implícito) suportam apenas acesso sequencial, não acesso aleatório, e a eficiência da pesquisa é baixa. Além disso, o ponteiro para o próximo bloco de disco também consome uma pequena quantidade de espaço de armazenamento. O método de alocação de link de link implícito é adotado, o que é muito conveniente para a expansão do arquivo. Além disso, todos os blocos de disco livres podem ser usados, não haverá problema de fragmentação e a taxa de utilização da memória externa é alta.

2.2.1 Vinculação explícita

Os ponteiros usados ​​para vincular os blocos físicos do arquivo são explicitamente armazenados em uma tabela. Ou seja, a tabela de alocação de arquivos (FAT, File Allocation Table).

Suponha que um arquivo recém-criado "aaa" seja armazenado no bloco de disco 2->5->0->1 em sequência:
Suponha que um arquivo recém-criado "aaa" seja armazenado no bloco de disco 4->23->3 em sequência:

insira a descrição da imagem aqui

Nota: Apenas um FAT é definido para um disco. Ao inicializar, leia o FAT na memória e mantenha-o na memória. Cada entrada do FAT é fisicamente armazenada continuamente e cada entrada tem o mesmo comprimento, portanto o campo "número do bloco físico" pode estar implícito.

O usuário fornece o número do bloco lógico i a ser acessado e o sistema operacional encontra a entrada de diretório (FCB) correspondente ao arquivo... Encontre o número do bloco inicial da entrada do diretório, se i>0, consulte a tabela de alocação de arquivos FAT na memória, em seguida, encontre o número do bloco físico correspondente ao bloco lógico i. O processo de conversão de números de blocos lógicos em números de blocos físicos não requer operações de leitura de disco. Arquivos que usam alocação em cadeia (link explícito) suportam acesso sequencial e acesso aleatório (quando você deseja acessar o bloco lógico i, não precisa acessar o bloco lógico anterior 0~i-1 sequencialmente), porque o número do bloco O processo de conversão não não precisa acessar o disco, portanto, em comparação com o link implícito, a velocidade de acesso é muito mais rápida. Obviamente, a vinculação explícita não gerará fragmentos externos e o arquivo também pode ser expandido de maneira muito conveniente.

2.3 Alocação do índice

A alocação de índice permite que os arquivos sejam alocados discretamente em cada bloco de disco. O sistema criará uma tabela de índice para cada arquivo, e a tabela de índice registra os blocos físicos correspondentes a cada bloco lógico do arquivo (a função da tabela de índice é semelhante à que no gerenciamento de memória Tabela de páginas - estabelece o relacionamento de mapeamento entre páginas lógicas e páginas físicas). Os blocos de disco armazenados na tabela de índice são chamados de blocos de índice. Os blocos de disco onde os dados do arquivo são armazenados são chamados de blocos de dados.

Suponha que os dados de um arquivo recém-criado "aaa" sejam armazenados sucessivamente no bloco de disco 2->5->13->9. O bloco de disco nº 7 é usado como o bloco de índice de "aaa" e o bloco de índice armazena o conteúdo da tabela de índice. Um comprimento fixo pode ser usado para representar o número do bloco físico (por exemplo, assumindo que a capacidade total do disco é 1TB=240B e o tamanho do bloco do disco é 1KB, existem 230 blocos de disco no total e 4B pode ser usado para representar o número do bloco do disco), portanto, na tabela de índice O "número do bloco lógico" pode ser implícito.

insira a descrição da imagem aqui

O usuário fornece o número do bloco lógico i a ser acessado e o sistema operacional encontra a entrada de diretório (FCB) correspondente ao arquivo... A partir da entrada do diretório, o local de armazenamento da tabela de índices é conhecido, a tabela de índices é lida do armazenamento externo para a memória interna, e a tabela de índice é pesquisada. Ela só pode especificar o local de armazenamento do bloco lógico i na memória externa.

Pode-se ver que o método de alocação de índice pode suportar acesso aleatório. A expansão do arquivo também é fácil de implementar (você só precisa alocar um bloco livre para o arquivo e adicionar uma entrada na tabela de índice), mas a tabela de índice precisa ocupar uma certa quantidade de espaço de armazenamento.

Se cada bloco de disco tiver 1KB e uma entrada de índice for 4B, um bloco de disco poderá armazenar apenas 256 entradas de índice. Se o tamanho de um arquivo exceder 256 blocos, um bloco de disco não pode conter toda a tabela de índice do arquivo. Como resolver este problema?

①Esquema de links

Se a tabela de índice for muito grande para caber em um bloco de índice, vários blocos de índice podem ser vinculados para armazenamento.

insira a descrição da imagem aqui

Supondo que o tamanho do bloco de disco seja 1KB e uma entrada de índice ocupe 4B, um bloco de disco pode armazenar apenas 256 entradas de índice. Se o tamanho de um arquivo for 256 256 KB = 65.536 KB = 64 MB, o arquivo terá um total de 256 256 blocos, correspondendo a 256*256 itens de índice, e 256 blocos de índice são necessários para armazenamento, e esses blocos de índice são conectados por um esquema de links. Se você deseja acessar o último bloco lógico do arquivo, deve encontrar o último bloco de índice (o 256º bloco de índice) e os blocos de índice são vinculados por ponteiros; portanto, você deve primeiro ler os primeiros 255 índices sequencialmente.

②Índice de várias camadas

Índice multinível: crie um índice multinível (o princípio é semelhante a uma tabela de página multinível). Faça os blocos de índice da primeira camada apontarem para os blocos de índice da segunda camada. Os blocos de índice de terceira e quarta camada também podem ser estabelecidos de acordo com os requisitos do tamanho do arquivo.

insira a descrição da imagem aqui

Supondo que o tamanho do bloco de disco seja 1KB e uma entrada de índice ocupe 4B, um bloco de disco pode armazenar apenas 256 entradas de índice. Se um arquivo adotar índice de duas camadas, o comprimento máximo do arquivo pode chegar a 256 256 1 KB = 65.536 KB = 64 MB. Qual entrada na tabela de índice deve ser pesquisada pode ser calculada de acordo com o número do bloco lógico. Tais como: para acessar o bloco lógico nº 1026, então 1026/256=4, 1026%256=2. Portanto, você pode primeiro carregar a tabela de índice primário na memória, consultar a entrada nº 4, carregar a tabela de índice secundário correspondente na memória e, em seguida, consultar a entrada nº 2 da tabela de índice secundário para saber o valor armazenado em o bloco lógico nº 1026. número do bloco de disco. Acessar o bloco de dados de destino requer 3 I/Os de disco.

Se for usado um índice de três níveis, o comprimento máximo do arquivo é 256 256 25*1 KB = 16 GB. Da mesma forma, acessar o bloco de dados de destino requer 4 E/S de disco.

③ Índice misto

Índice híbrido: Uma combinação de vários métodos de alocação de índice. Por exemplo, a tabela de índice de nível superior de um arquivo inclui não apenas um índice de endereço direto (apontando diretamente para um bloco de dados), mas também um índice indireto de primeiro nível (apontando para uma tabela de índice de nível único) e dois -level índice indireto (apontando para uma tabela de índice de dois níveis).

insira a descrição da imagem aqui

3. Resumo

insira a descrição da imagem aqui

5. Estrutura lógica e estrutura física

1. Divisão e inicialização do espaço de armazenamento

Divisão do espaço de armazenamento: Divida os discos físicos em volumes de arquivos (volumes lógicos, discos lógicos).

insira a descrição da imagem aqui

2. Método de lista livre

O método de lista livre é adequado para alocação contínua. Como alocar blocos de disco: Semelhante à alocação de partição dinâmica no gerenciamento de memória, um espaço de armazenamento contínuo é alocado para um arquivo. Algoritmos como primeiro ajuste, melhor ajuste e pior ajuste também podem ser usados ​​para determinar qual intervalo atribuir a um arquivo. Como recuperar blocos de disco: Semelhante à alocação de partição dinâmica no gerenciamento de memória, há quatro situações ao recuperar uma determinada área de armazenamento—①Não há área livre adjacente antes e depois da área recuperada; ②Ambas as áreas recuperadas estão livres antes e depois ③ O a área livre fica em frente à área de reciclagem; ④ A área livre fica atrás da área de reciclagem. Resumindo, é preciso ficar atento à mesclagem das entradas da tabela na hora da reciclagem.

insira a descrição da imagem aqui

3. Método de lista livre

insira a descrição da imagem aqui

3.1 Cadeia de blocos de disco ocioso

O sistema operacional mantém os ponteiros para o início e fim da corrente. Como alocar: Se um arquivo se aplica a blocos de disco K, os blocos de disco K serão alocados sequencialmente a partir do cabeçalho da cadeia e o ponteiro do cabeçalho da cadeia ociosa será modificado. Como reciclar: Os blocos de disco recuperados são pendurados no final da corrente por sua vez, e o ponteiro da cauda da corrente livre é modificado. Adaptando-se à estrutura física de alocação discreta, várias operações podem ser repetidas ao alocar vários blocos de disco para um arquivo.

3.2 Cadeia de extensão livre

O sistema operacional mantém os ponteiros para o início e fim da corrente. Como alocar: Se um arquivo se aplica a K blocos de disco, algoritmos como primeira adaptação e melhor adaptação podem ser usados ​​para pesquisar no início da cadeia, encontrar um disco livre com um tamanho que atenda aos requisitos de acordo com as regras do algoritmo, e alocá-lo para o arquivo. Se não houver um bloco livre contínuo adequado, você também pode alocar blocos de disco em diferentes extensões para um arquivo ao mesmo tempo. Observe que pode ser necessário modificar o ponteiro da cadeia correspondente, tamanho da extensão e outros dados após a alocação. Como reciclar: Se a área de reciclagem estiver adjacente a uma extensão livre, você precisará fundir a área de reciclagem na extensão livre. Se a área de recuperação não for adjacente a nenhuma área livre, pendure a área de recuperação como uma área livre separada no final da corrente. Tanto a alocação discreta quanto a alocação contínua são aplicáveis. É mais eficiente ao alocar vários blocos de disco para um arquivo.

4. Método de bitmap

Bitmap: Cada bit binário corresponde a um bloco de disco. 0 significa que o bloco de disco está livre e 1 significa que o bloco de disco foi alocado. O mapa de bits é geralmente representado por palavras contínuas.Neste exemplo, o comprimento de uma palavra é de 16 bits e cada bit em uma palavra corresponde a um bloco de disco. Portanto, (tamanho da fonte, número de bits) pode ser usado para corresponder a um número de bloco de disco. Como alocar: Se o arquivo precisar de K blocos, ①Verifique o mapa de bits sequencialmente para encontrar K adjacente ou não adjacente "0"; ②Calcule o número do bloco de disco correspondente de acordo com o tamanho da fonte e o número de bits e aloque o bloco de disco correspondente para arquivo; ③ defina o bit correspondente para "1". Como reciclar: ①Calcule o tamanho da fonte correspondente e o número de bits de acordo com o número do bloco de disco recuperado; ②Defina o bit binário correspondente como "0".

insira a descrição da imagem aqui

5. Método de Vinculação de Grupo

O método de lista livre e o método de lista encadeada livre não são adequados para sistemas de arquivos grandes, porque a lista livre ou a lista encadeada livre podem ser muito grandes. No sistema UNIX, o método de cadeia de grupo é usado para gerenciar os blocos livres do disco. Um bloco de disco é usado especialmente como um "super bloco" na área de diretório do volume do arquivo, e o super bloco precisa ser lido na memória quando o sistema é iniciado. E é necessário garantir que os dados do "super bloco" na memória e na memória externa sejam consistentes.

insira a descrição da imagem aqui

Como alocar 1 bloco livre: ① Verifique se o número de blocos no primeiro grupo é suficiente. 1 <100, então é suficiente. ② Alocar um bloco livre no primeiro grupo e modificar os dados correspondentes.

Como alocar 100 blocos livres: ① Verifique se o número de blocos do primeiro grupo é suficiente. 100=100 é o suficiente. ② Aloque 100 blocos livres no primeiro grupo. No entanto, como o próximo grupo de informações é armazenado no 300º bloco, os dados do 300º bloco precisam ser copiados para o superbloco.

Como reciclar: Suponha que cada grupo tenha no máximo 100 blocos livres. Neste momento, o primeiro grupo tem 99 blocos, e mais um bloco precisa ser recuperado, inserido diretamente no super rápido, e o número de blocos livres em o próximo grupo de super rápido será aumentado em um.

Como reciclar: Suponha que cada grupo tenha no máximo 100 blocos livres. Neste momento, o primeiro grupo tem 100 blocos e outro bloco precisa ser recuperado. É necessário copiar os dados do super bloco para o bloco recém-recuperado e modificar o conteúdo do super bloco para que o bloco recém-recuperado se torne o primeiro grupo.

6. Resumo

insira a descrição da imagem aqui

6. Operação básica de arquivos

1. Crie um arquivo

Para chamar a chamada do sistema create, você precisa fornecer o tamanho do espaço de armazenamento externo necessário, o caminho de armazenamento do arquivo e o nome do arquivo. Quando o sistema operacional processa a chamada do sistema Create, ele faz principalmente duas coisas: 1. Encontrar o espaço necessário para o arquivo na memória externa (combinando estratégias de gerenciamento como método de lista vinculada livre, mapa de bits e método de link de grupo para encontrar space); 2. Encontre o arquivo de diretório correspondente ao diretório de acordo com as informações do caminho de armazenamento do arquivo e crie o item de diretório correspondente ao arquivo no diretório. A entrada do diretório contém informações como o nome do arquivo e o local de armazenamento do arquivo na memória externa.

2. Excluir arquivos

Para chamar a chamada de sistema Delete, você precisa fornecer o caminho de armazenamento de arquivo e o nome do arquivo. Quando o sistema operacional processa a chamada do sistema Delete, ele faz principalmente duas coisas: 1. Localiza o arquivo do diretório correspondente de acordo com o caminho de armazenamento do arquivo e encontra o item do diretório correspondente ao nome do arquivo do diretório; 2. O arquivo registrado de acordo para o item do diretório é armazenado externamente, local de armazenamento, tamanho do arquivo e outras informações e recupera os blocos de disco ocupados pelo arquivo. (Ao recuperar blocos de disco, processamento diferente precisa ser feito de acordo com diferentes estratégias de gerenciamento, como método de lista livre, método de lista vinculada livre e método de bitmap)

3. Abra o arquivo

Para chamar a chamada do sistema Open, você precisa fornecer o caminho de armazenamento do arquivo, o nome do arquivo e o tipo de operação no arquivo (r somente leitura; rw leitura/gravação, etc.). Quando o sistema operacional lida com a chamada de sistema aberto, ele faz principalmente duas coisas: 1. Localizar o arquivo de diretório correspondente de acordo com o caminho de armazenamento do arquivo, localizar o item de diretório correspondente ao nome do arquivo no diretório e verificar se o usuário tem o autoridade de operação especificada 2. Copie a entrada do diretório para a "tabela de arquivos abertos" na memória. E retorne o número da entrada correspondente ao usuário. O usuário então usa o número na tabela de arquivos abertos para especificar o arquivo no qual operar.

insira a descrição da imagem aqui

4. Feche o arquivo

Chame a chamada de sistema Fechar. Quando o sistema operacional processa a chamada de sistema Close, ele faz principalmente várias coisas: 1. Excluir a entrada correspondente na tabela de arquivos abertos do processo; 2. Recuperar recursos, como espaço de memória alocado para o arquivo; 3. Abrir o sistema aberto tabela de arquivo A contagem do contador é diminuída em 1. Se contagem = 0, a entrada correspondente é excluída.

5. Leia os arquivos

Um processo conclui uma operação de gravação usando a chamada de sistema read. Precisa especificar qual arquivo é (em um sistema que suporta a operação "abrir arquivo", você só precisa fornecer o número do índice do arquivo na tabela de arquivos abertos) e também precisa especificar quantos dados ler (por exemplo: leia 1KB), especifique onde colocar os dados lidos na memória. Quando o sistema operacional processa a chamada de sistema read, ele lerá os dados do tamanho especificado pelo usuário da memória externa apontada pelo ponteiro de leitura para a área de memória especificada pelo usuário.

6. Escreva arquivos

O processo usa a chamada do sistema write para concluir a operação de gravação, qual arquivo precisa ser especificado (em um sistema que suporta a operação "arquivo aberto", apenas o número do índice do arquivo na tabela de arquivos abertos precisa ser fornecido e o número de dados a serem gravados precisa ser especificado (como gravar 1 KB), onde são os dados gravados de volta na memória externa na memória. Quando o sistema operacional processa a chamada de sistema de gravação, ele gravará os dados de o tamanho especificado da área de memória especificada pelo usuário até o ponto apontado pelo ponteiro de gravação Armazenamento externo.

7. Resumo

insira a descrição da imagem aqui

7. Compartilhamento de arquivos

1. Método de compartilhamento baseado no nó de índice (link físico)

Uma contagem variável de contagem de links é definida no nó de índice, que é usada para indicar o número de itens do diretório de usuários vinculados ao nó de índice. Se contagem = 2, significa que há duas entradas de diretório de usuários vinculadas ao nó de índice neste momento ou que há dois usuários compartilhando o arquivo; se contagem > 0, significa que existem outros usuários que desejam usar o Os dados do arquivo não podem ser excluídos temporariamente, caso contrário, o ponteiro será suspenso; quando contagem = 0, o sistema é responsável por excluir o arquivo.

insira a descrição da imagem aqui

2. Método de compartilhamento baseado em cadeia simbólica (link suave)

Quando o User3 acessa "ccc", o sistema operacional julga que o arquivo "ccc" pertence ao arquivo do tipo Link, então ele irá procurar o diretório camada por camada de acordo com o caminho registrado nele, e finalmente encontrará a entrada "aaa" em a tabela de diretórios do User1, então é encontrado o nó Index do arquivo 1.

insira a descrição da imagem aqui

3. Resumo

insira a descrição da imagem aqui

8. Proteção de arquivos

1. Proteção por senha

Define uma senha para o arquivo que os usuários devem fornecer ao solicitar acesso ao arquivo. A senha geralmente é armazenada no FCB ou nó de índice correspondente ao arquivo. Um usuário precisa inserir uma senha antes de acessar um arquivo. O sistema operacional irá comparar a senha fornecida pelo usuário com a senha armazenada no FCB. Se a senha estiver correta, o usuário poderá acessar o arquivo. A vantagem é que a sobrecarga de espaço para salvar a senha não é muito, e a sobrecarga de tempo para verificar a senha também é muito pequena. A desvantagem é que a senha correta é armazenada dentro do sistema, o que não é suficientemente seguro.

2. Proteção de criptografia

Use uma determinada senha para criptografar o arquivo e você precisa fornecer a senha correta para descriptografar o arquivo corretamente ao acessá-lo. A vantagem é que ele é altamente protetor e não exige o armazenamento de senhas no sistema. A desvantagem é que a codificação/decodificação leva um certo tempo.

3. Controle de acesso

Uma lista de controle de acesso (lista de controle de acesso, ACL) é adicionada ao FCB (ou nó de índice) de cada arquivo, que registra quais operações cada usuário pode executar no arquivo.

insira a descrição da imagem aqui
Alguns computadores podem ter muitos usuários, portanto, a lista de controle de acesso pode ser muito grande e uma lista de controle de acesso simplificada pode ser usada para resolver esse problema. Lista de acesso simplificada: Use "grupo" como uma unidade para marcar quais operações os usuários em cada "grupo" podem executar nos arquivos. Por exemplo, ele é dividido em vários grupos: administrador do sistema, proprietário do arquivo, parceiro do proprietário do arquivo e outros usuários. Quando um usuário deseja acessar um arquivo, o sistema verificará se o grupo ao qual o usuário pertence possui os direitos de acesso correspondentes.

4. Resumo

insira a descrição da imagem aqui

Nove, a estrutura hierárquica do sistema de arquivos

insira a descrição da imagem aqui
Interface do usuário: O sistema de arquivos precisa fornecer algumas interfaces funcionais simples e fáceis de usar para os usuários da camada superior. Essa camada é usada para processar as solicitações de chamada do sistema emitidas pelos usuários (chamadas do sistema como Read, Write, Open e Close).
Sistema de diretório de arquivos: os usuários acessam os arquivos por meio do caminho do arquivo, portanto, essa camada precisa encontrar o FCB ou nó de índice correspondente de acordo com o caminho do arquivo fornecido pelo usuário. Todo o trabalho de gerenciamento relacionado a diretórios e itens de diretório é concluído nesta camada, como gerenciamento de tabelas de diretórios de arquivos ativos, gerenciamento de tabelas de arquivos abertos e assim por diante.
Bloqueio de controle de arquivos de acesso: Para garantir a segurança dos dados do arquivo, também é necessário verificar se o usuário possui direitos de acesso. Esta camada completa principalmente as funções relacionadas à proteção de arquivos.
Sistema de arquivos lógicos e buffer de informações do arquivo: o usuário indica que deseja acessar o número do registro do arquivo, e esta camada precisa converter o número do registro no endereço lógico correspondente.

Sistema de arquivo físico: esta camada precisa converter o endereço lógico do arquivo fornecido pela camada anterior em um endereço físico real.
Módulo auxiliar de alocação: responsável pelo gerenciamento do espaço de armazenamento de arquivos, ou seja, responsável pela alocação e recuperação do espaço de armazenamento.
Módulo de gerenciamento de dispositivos: interage diretamente com o hardware, sendo responsável por alguns trabalhos de gerenciamento diretamente relacionados ao hardware. Como alocar dispositivos, alocar buffers de dispositivos, agendamento de disco, iniciar dispositivos, liberar dispositivos, etc.

10. Sistema de arquivos virtuais

1. Recursos do sistema de arquivos virtual:

①Forneça uma interface de chamada de sistema padrão unificada para o processo de usuário de nível superior e proteja as diferenças de implementação do sistema de arquivos específico subjacente.
②VFS exige que o sistema de arquivos subjacente implemente certas funções especificadas, como abrir/ler/gravar. Se um novo sistema de arquivos deseja ser usado em um determinado sistema operacional, ele deve atender aos requisitos VFS do sistema operacional.
③Toda vez que um arquivo é aberto, o VFS criará um novo vnode na memória principal e usará uma estrutura de dados unificada para representar o arquivo, independentemente do sistema de arquivos em que o arquivo está armazenado.

2. Montagem do sistema de arquivos

Montagem (montagem) do sistema de arquivos, ou seja, instalação/montagem do sistema de arquivos - como montar um sistema de arquivos no sistema operacional?

① Registre o sistema de arquivos recém-montado no VFS. A tabela de montagem na memória contém informações sobre cada sistema de arquivo, incluindo tipo de sistema de arquivo, capacidade, etc.
②O sistema de arquivos recém-montado deve fornecer uma lista de endereços de funções para o VFS.
③Adicione o novo sistema de arquivos ao ponto de montagem (mountpoint), ou seja, monte o novo sistema de arquivos em um determinado diretório pai.

escreva no final

Wangdao Computer yyds, pela primeira vez para o vestibular de pós-graduação, pela segunda vez para o reexame e agora pela terceira vez.

Acho que você gosta

Origin blog.csdn.net/weixin_43912621/article/details/131339384
Recomendado
Clasificación