Como o kernel decide qual buffer usar?

1

When the kernel accesses a disk block, it searches for a buffer with the appropriate device-block number combination.

Esta linha é do livro "O design do sistema operacional unix". Então, minha pergunta é como o kernel decide qual buffer usar para a operação, e de onde ele obtém o número do bloco de dispositivos para aquele buffer?

    
por Naren 06.08.2018 / 20:31

1 resposta

1

A sua pergunta se refere ao caso quando os dados já estão presentes em um buffer, ou quando um novo buffer tem que ser alocado?

O número do bloco do dispositivo vem do arquivo do dispositivo que é usado para montar o sistema de arquivos (algo como / dev / sda1 no Linux ou / dev / hd0a no BSD). O número do dispositivo é necessário se os buffers são usados ou não. Os buffers são meramente um cache para economizar tempo lendo os mesmos dados novamente. O número do bloco dentro do dispositivo é determinado pelo layout do sistema de arquivos, leia essa parte do livro para obter mais informações sobre o formato do sistema de arquivos. Há uma explicação sobre diretórios, inodes, blocos diretos e indiretos e assim por diante.

Assim, uma vez que o kernel tenha determinado qual bloco é necessário, ele irá olhar os buffers na memória para encontrar o bloco necessário. Se estiver presente, uma operação de leitura não é necessária e os dados são retornados imediatamente.

Se o conteúdo do bloco não estiver na memória, o kernel selecionará um buffer na esperança de que o conteúdo deste bloco não seja usado em um futuro próximo. Este é geralmente o buffer usado menos recentemente.

    
por 06.08.2018 / 21:12

Tags