O que significa que uma falha de página pode ou não envolver acesso de armazenamento auxiliar ao disponibilizar essa página?

0

A partir da página de manual de top

nMaj  --  Major Page Fault Count
           The number of major page faults that have occurred for a task.  A
           page fault occurs when a process attempts to read from or write
           to a virtual page that is not currently present in its address
           space.  **A major page fault is when auxiliary storage access is
           involved in making that page available.**

nMin  --  Minor Page Fault count
           The number of minor page faults that have occurred for a task.  A
           page fault occurs when a process attempts to read from or write
           to a virtual page that is not currently present in its address
           space.  **A minor page fault does not involve auxiliary storage
           access in making that page available.**

Se eu estiver correto, A manipulação da falha de página é para transferir dados necessários ausentes na memória física da troca para a memória física. O swap faz parte do armazenamento, e. disco rígido ou SSD. Então, o que significa que uma falha de página pode ou não envolver o acesso de armazenamento auxiliar ao tornar essa página disponível ?

Obrigado.

    
por Tim 13.06.2016 / 14:26

2 respostas

4

Apenas falhas de página principais envolvem armazenamento auxiliar ( i.e. leitura do disco, seja de swap ou de outro lugar, por exemplo. ao paginar em um binário).

Falhas de página menores são falhas que podem ser satisfeitas sem leitura do disco:

  • falhas de página envolvendo dados que já estão mapeados em outro lugar na memória ( por exemplo. memória que pode ser compartilhada entre processos)
  • falhas de página para a memória recém-alocada (usando em uma alocação de página e copy-on-write de zero)
  • em alguns casos, dados que foram marcados para paginação, mas ainda não foram paginados

(isso não é exaustivo).

    
por 13.06.2016 / 15:14
1

Ocorre uma falha de página secundária, por exemplo, quando os dados ou códigos estão na memória, mas não mapeados para o processo.

Pense em uma biblioteca de compartilhamento, utilizada por outro processo. Seu processo quer carregar o mesmo lib, então o problema do ld (eu acho que via libc / glibc?) Gera uma falha de página. O kernel sabe que os dados já estão no mem e os mapeia para o processo. Não há necessidade de carregá-lo do disco ...

    
por 13.06.2016 / 15:17