Acessando um cache do sistema de arquivos que não está em memória ram, mas que i / o to disk já foi emitido

1

O Linux tem um cache do sistema de arquivos, onde mantém tantos dados quanto possível na RAM como um buffer.

Um encadeamento tenta ler um bloco de páginas no sistema de arquivos. Se a página estiver em cache, ele buscará os dados do cache (hit do cache). caso contrário, ele emitirá uma solicitação de disco e / ou para a página e aguardará (falta de cache).

Mas quando múltiplos threads (ou processadores) lêem o mesmo bloco de páginas, eu acho que pode haver mais um caso; a página não está no cache, mas a solicitação de E / S para a página já foi emitida. Nesse caso, nenhum disco I / O é emitido novamente, mas os encadeamentos devem aguardar a página ser leia do disco de qualquer maneira.

O cache de arquivos do Linux tem essa propriedade? Como você chama isso?

    
por syko 29.07.2016 / 19:49

1 resposta

0

A forma como é feito no Linux, e eu acho que em qualquer sistema operacional em que o carregamento do cache é assíncrono, é: quando uma página é solicitada, mas ainda não carregada, há uma entrada de cache marcada como não-ainda- carregado. Quando a segunda solicitação é recebida, ela entra na entrada de cache existente e aguarda a conclusão da carga. No kernel do Linux, o mecanismo a aguardar é chamado de fila de espera. Há muita documentação por aí sobre as filas de espera: Drivers de dispositivos do Linux , Completions (uma estrutura de dados de nível ligeiramente superior às filas de espera), documentação da API do kernel ,…

Não sei se esse mecanismo tem um nome formal.

    
por 30.07.2016 / 01:58