c) Alocação indexada
A alocação indexada é uma maneira de resolver o problema do tempo de leitura da alocação por lista encadeada, o que pode ser feito por meio de uma tabela de endereços dos blocos ocupados pelo arquivo. Para cada novo bloco alocado, inclui-se mais um novo item na tabela.
| Vantagens | Desvantagens | |
|---|---|---|
| Uma grande vantagem da alocação indexada é que o acesso aleatório fica mais fácil, pois não é necessário percorrer todos os blocos de forma sequencial, o endereço de cada bloco fica armazenado na tabela de alocação. | A desvantagem desse método é que a tabela alocação deverá ser mantida na memória principal e dependendo do tamanho dos blocos do disco ocupará muito espaço de memória o tempo todo. |
d) Alocação combinada
A alocação combinada abrange o uso de blocos de índices e de encadeamento dos mesmos. Essa técnica combina a baixa ocupação de espaço em memória da técnica de lista encadeada e o bom desempenho da técnica de tabela de índices.
Na alocação combinada é usada uma técnica chamada de níveis de interação na indexação. Nesta técnica, parte de um bloco é utilizado para apontar diretamente blocos de dados, e a outra parte é utilizada para apontadores de blocos. Se usarmos outros níveis de apontadores, podemos estender essa mesma técnica para apontadores duplamente indiretos e apontadores triplamente indiretos.
Saiba o que é um apontador direto e um apontador indireto.
Esta técnica é comumente utilizada na implementação do sistema de arquivos Unix, chamada de I-nodes. Um I-node (index-node) constitui os metadados, armazenados em estrutura de dados própria, que relaciona atributos e os endereços dos blocos de um arquivo.
É aquele que aponta para o local no disco onde cada bloco do arquivo está armazenado. É o método mais simples de índice, também é o que suporta arquivos de menor tamanho. Como são 13 entradas de índice (0 a 12), cada um apontando para blocos de dados de 4K, o tamanho máximo de um arquivo mantido por esta estrutura é de 40KBytes.
XComo a tabela de índices tem um tamanho finito (13 posições), muitas vezes o tamanho desta tabela não é suficiente para criar índices para todos os blocos de um arquivo maior do que 40Kbytes, dessa forma, um apontador indireto, ao invés de apontar para um pedaço do arquivo, aponta para um local que na verdade é um índice para outros pedaços do arquivo. O que você faz é transformar um pedaço do disco em uma extensão do índice. Um apontador indireto suporta 1024 apontadores, o que permite indexar um arquivo de até 4MBytes.
X
Possui um apontador que aponta para outro arquivo apontador, ou seja, dois níveis hierárquicos, com isso é possível ter 1024 índices em primeiro nível que cada um aponta para outros 1024 endereços. Dessa forma é possível referenciar arquivos de até 4Gbytes de tamanho.
Apontadores triplamente indiretos: neste tipo de apontador, aparece um terceiro nível de hierarquia, ou seja os 1024 índices de segundo nível tem cada um mais 1024 apontadores. Com isso, podemos mapear arquivos de até 4 Tera bytes de tamanho. Hoje em dia, esse é o tamanho máximo previsto para um arquivo.
A figura abaixo apresenta uma tabela de índices de 13 posições (0 a 12), note que os apontadores 0 a 9 são apontadores diretos. O apontador 10 é um apontador indireto. O apontador 11 é um apontador duplamente indireto. O apontador 12 é um apontador triplamente indireto.