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) é:
- Divida o caminho fornecido em componentes separados por
/
- A localização de
/
já é conhecida pelo kernel. - 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.
- Se
- Verifique o diretório
/folder
procurando um item chamado "directory
". Obtenha o número de inode, leia inode, encontre dados. - Verifique o diretório
/folder/directory
procurando um item chamado "filename
" e obtenha o número de inode associado. - 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.