Existem duas tabelas de inode usadas para localizar o inode de um arquivo no ext2?

1

De Modern Operating Systems da Tanenbaum, ao tentar acessar um arquivo em um sistema de arquivos ext2 no Linux e, em seguida, chegar ao diretório pai do arquivo,

If the file is present, the system extracts the i-node number and uses it as an index into the i-node table (on disk) to locate the corresponding i-node and bring it into memory. The i-node is put in the i-node table, a kernel data structure that holds all the i-nodes for currently open files and directories.

Existem duas tabelas de inodes diferentes mencionadas?

  1. A primeira tabela de inode é armazenada em algum lugar no disco? Cadê armazenado? Veja o layout de um disco, uma partição e um sistema de arquivos abaixo do mesmo livro.

    É um mapeamento dos números de inode para os endereços de inode?

  2. A segunda tabela de inode é armazenada na memória principal?

    É um mapeamento do que para os inodes?

    
por Tim 07.12.2015 / 01:54

1 resposta

1

O texto que você citou é, indiscutivelmente, redigido de forma desleixada. O mestre, inodes autoritativos para um sistema de arquivos são armazenados no sistema de arquivos. Então, para um sistema de arquivos que está em um disco (em uma partição de disco), os inodes estão no disco. Mas, para eficiência, o kernel armazena (armazena em cache) cópias locais de inodes ativos na memória.

  1. Para repetir, sim, "a primeira tabela de inode" é armazenada no disco (assumindo que o sistema de arquivos é residente no disco). Então, o que você está perguntando? As duas figuras que você copiou na sua pergunta ambas mostram áreas rotuladas “I-nodes”. Esses são os lugares onde os inodes estão. Os detalhes são diferentes em diferentes tipos de sistema de arquivos.

    • É um mapeamento dos números de inode para os endereços de inode?
      Não; os inodes são armazenados em uma matriz (ou, em alguns sistemas de arquivos, em vários arrays), então o endereço do inode pode ser calculado por uma fórmula que se parece com algo como

      inode address = (base address of inode array) + (inode number) × (sizeof inode)

    Como espero que você já saiba, um inode contém os metadados de um arquivo, e aponta para os blocos de dados para o arquivo.

  2. Sim, “a segunda tabela de inode” é armazenada na memória. Não é um mapeamento para os inodes; é uma cópia de inodes selecionados (com, talvez, alguns metadados adicionais sobre o estado do inode no sistema).

por 07.12.2015 / 07:54