Sua descrição do processo não está correta.
O kernel controla quais caminhos são pontos de montagem. Exatamente como isso varia entre o kernel, mas normalmente as informações são armazenadas em termos de caminhos. Por exemplo, o kernel lembra “ /
é este sistema de arquivos, /media/cdrom
é este sistema de arquivos, /proc
é este sistema de arquivos”, etc. Normalmente, em vez de uma cadeia de mapeamento de tabelas para estruturas de dados representando sistemas de arquivos montados, o kernel armazena tabelas por diretório. Os dados associados a uma entrada de diretório são classicamente chamados de dentry . Há um dentry para a raiz, e em cada diretório há um dentry para cada arquivo naquele diretório que o kernel lembra. O dentry contém um ponteiro para uma estrutura de inode, e o inode contém um ponteiro para a estrutura de dados do sistema de arquivos para o sistema de arquivos no qual o arquivo está. Em um ponto de montagem, o sistema de arquivos associado é diferente do sistema de arquivos associado do dentry pai, e há metadados adicionais para acompanhar o ponto de montagem. Portanto, em uma arquitetura de kernel unix típica, o dentry para /
contém um ponteiro para informações sobre o sistema de arquivos raiz, além de um ponteiro para o inode que contém o diretório raiz; o dentry para /proc
(assumindo que é um ponto de montagem) contém um ponteiro para informações sobre o sistema de arquivos proc, etc. Se /media/cdrom
é um ponto de montagem mas não /media
, o kernel se lembra do /media
que não é permitido esquecê-lo: lembrar sobre /media
não é apenas uma questão de cache para desempenho, é necessário lembrar a existência do ponto de montagem /media/cdrom
.
Para Linux, você pode encontrar documentação na documentação do kernel , no site e em outros lugares da web. Bruce Fields tem uma boa apresentação do tópico.
Quando o kernel é instruído a acessar um arquivo, ele processa o nome do arquivo um componente separado por barra de cada vez e procura o componente a cada vez. Se encontrar um link simbólico, segue-o. Se encontrar um ponto de montagem, nenhum processamento especial é realmente necessário: é apenas que os inodes estejam anexados a um diretório diferente.
O processo não usa números de inodes, segue ponteiros . Os números de inodes são uma maneira de fornecer uma identidade única para cada arquivo em um determinado sistema de arquivos fora do kernel: no disco e para aplicativos. Existem sistemas de arquivos que não possuem números de inodes exclusivos; Normalmente, os drivers do sistema de arquivos tentam criar um, mas isso nem sempre funciona, especialmente com sistemas de arquivos de rede (por exemplo, se o servidor exportar uma árvore de diretórios que contenha um ponto de montagem, pode haver sobreposição entre o conjunto de inodes acima e abaixo da montagem) ponto). Linhas que mapeiam o nome para o número de inode são o modo como um sistema de arquivos típico em disco funciona se ele suportar links físicos; sistemas de arquivos que não suportam hard links realmente não precisam do conceito de inode number.
Observe que as informações sobre pontos de montagem são armazenadas somente na memória. Quando você monta um sistema de arquivos, isso não modifica o diretório em cima do qual o sistema de arquivos é montado. Esse diretório é simplesmente oculto pela raiz do sistema de arquivos montado.