Como a paginação é gerenciada na ausência de troca?

3

Como a paginação é gerenciada na ausência de troca. Se for esse o caso, como uma falha de página será gerenciada?

O que eu quis dizer é que, se não houver disponibilidade para troca, como o Paging é gerenciado? Eu sei que haverá duas listas de páginas - free_pages list e allocated_pages list. Quando as páginas da lista free_pages ficarem baixas, moverá as páginas LRU da lista allocated_pages para a partição swap. Eu só quero saber o que acontecerá se não houver uma partição swap.

    
por Sen 02.01.2011 / 16:24

3 respostas

6

Tanto quanto eu entendo sua pergunta, geralmente acontece de tal forma:

Se você alocar memória:

  • Marcar memória como alocada, mas não alocar memória física (portanto, no acesso, haverá falha de página). No Linux, ele pára nesse estágio, mas é possível que o sistema possa alocar espaço físico imediatamente - então, ele executa algoritmo semelhante no final, como na falha de página, exceto que o OOM não acontecerá.

Se houver falha de página (acessar a página não mapeada)

  1. Verifique se a memória está alocada, se não retornar erro.
  2. Verifique se há uma página física gratuita. Se houver goto 5
  3. Verifique se existe alguma parte que possa ser gravada no disco (como o arquivo do cache) ou se há espaço livre na troca (se não houver troca, considere-a como troca de tamanho 0). Se houver um arquivo / bloco de gravação de volta ao disco ou escrever a página no disco, desmapea-o e goto 5. Se ambos forem possíveis, escolha qualquer um.
  4. Retornar condição da OOM. Depende do kernel o que acontece - pode exibir erro ao usuário, kernel panic / blue screen, encontrar algum processo para matar etc.
  5. Mapeie a página que causou o problema para liberar a página. Se a página foi trocada, leia a página da troca e coloque-a na página. Se a página é apoiada por arquivo de leitura de arquivo e colocar conteúdo lá.

Em geral, você pode dizer que nenhuma troca é equivalente a troca total.

    
por 03.01.2011 / 15:00
0

Trocar, permite mover páginas não usadas da memória para um disco. No entanto, isso não é essencial para a operação paginação , o que acontecerá mesmo se não houver troca.

    
por 02.01.2011 / 17:56
0

Se eu entendi corretamente a sua pergunta, você está perguntando como ocorre a paginação se nenhum espaço de troca estiver definido.

Com sistemas operacionais que usam a abordagem tradicional Unix, a memória virtual é sempre suportada pela RAM física, portanto nenhuma falha de página pode ocorrer devido a essa área de swap ausente, obviamente, casos não relacionados, como arquivos mapeados na memória ou ponteiros falsos.

Com sistemas operacionais supercomprometidos como o Linux, não há nenhuma reserva estrita acontecendo, então o primeiro acesso a uma página não mapeada, enquanto não houver mais RAM disponível, acionaria o killer da OOM ou algum outro evento destrutivo / de erro.

    
por 03.01.2011 / 11:38