Geralmente você deve ler um livro como este para obter respostas para a maioria dos detalhes dentro do kernel. Mas, em geral, sim, o processo é esse:
- O sistema de arquivos é atravessado usando o caminho especificado, desde a raiz do processo (pode diferir da raiz conhecida do FS do sistema devido a
chroot
,jail
,LXC
e análogos) no caso de um caminho absoluto ou diretório do processo atual ou do diretório especificado (em chamadas comoopenat
), ambos no caso de caminho relativo. O caminho especificado é dividido em seqüência de componentes do caminho, que são processados em seqüência. O conteúdo do diretório e os cruzamentos dos pontos de montagem são analisados durante esse processo (chamado "lookup path", "namei lookup") e cada componente do caminho resulta em uma referência temporária avnode
(sfile
em Unixes antigos,inode
no Linux) objeto. Como resultado, se isso for bem-sucedido, o vnode do arquivo final será localizado (criado, se necessário) e suspenso. - O objeto "Abrir arquivo" é criado, fazendo referência a esse vnode e anexado ao processo '
file descriptor
, alocado para essa solicitação.
Os detalhes da pesquisa de diretório para isso são muito específicos para o VFS específico. Pode ser de qualquer tipo, incluindo aqueles somente de memória ( tmpfs
), aqueles baseados em disco ( ext4
, etc.), mas o conceito comum de hierarquia de diretórios é mantido em vigor.