Como os sistemas de arquivos sabem em qual pasta um arquivo está?

2

Os nós de índice contêm metadados e apontam para onde os dados reais estão. Mas como o sistema sabe onde na árvore de diretórios está o arquivo ou a pasta e como ele traduz o nome do arquivo em um nó i?

Uma explicação do ponto de vista dos sistemas de arquivos sobre o processo que acontece quando eu solicito o arquivo / pasta / diretório / nome de arquivo seria muito apreciada.

    
por Eric 20.03.2011 / 11:25

1 resposta

2

Um diretório é tecnicamente apenas um arquivo contendo nomes de arquivos, seus números de inodes e atributos. No BSD e no Plan9, você pode até lê-lo como um arquivo. (Embora em sistemas de arquivos modernos, o formato em disco é uma espécie de árvore binária, não uma lista seqüencial.)

O processo básico (para caminhos semelhantes ao Unix) é:

  1. Divida o caminho fornecido em componentes separados por /
  2. A localização de / já é conhecida pelo kernel.
  3. Verifique o diretório / procurando um item chamado " folder ". Obtenha o número de inode associado.
    • Se /folder não for um diretório (ou um link simbólico apontando para um diretório), retorne ENOTDIR.
  4. Verifique o diretório /folder procurando um item chamado " directory ". Obtenha o número de inode, leia inode, encontre dados.
  5. Verifique o diretório /folder/directory procurando um item chamado " filename " e obtenha o número de inode associado.
  6. Leia o inode e obtenha os metadados do arquivo, os bits de permissão, a localização dos dados, etc.

Nota: / , /folder e /folder/directory podem ser pontos de montagem para sistemas de arquivos completamente separados. Uma configuração comum é ter uma partição para / e outra para /home . (Isso também se aplica a sistemas não-Unix, como o Windows NT.) O processo acima deve listar as pesquisas na tabela de montagem do kernel.

    
por 20.03.2011 / 11:35