como o linux atualiza a tabela de páginas após o comutador de contexto

0

Como o sistema de memória virtual do Linux lida com o seguinte caso:

  1. O processo 1 mapeia uma de suas páginas virtuais para o quadro físico 1.
  2. O contexto muda para o processo 2.
  3. O processo 2 troca o quadro 1 e substitui por seu próprio conteúdo.
  4. O contexto muda de volta para o processo 1.

Como o processo 1 sabe que não possui o conteúdo do frame 1 e precisa fazer uma troca?

    
por cody 14.04.2013 / 20:06

2 respostas

3

Tecnicamente, "process1" não sabe disso. Há um conjunto de tabelas de páginas para cada processo. O kernel sabe para qual processo ele irá mudar e muda as tabelas de páginas. Uma parte dessas tabelas de páginas é o kernel, que é compartilhado entre TODOS os processos (portanto, uma determinada parte do intervalo de endereços, normalmente no intervalo de 0xc0000000 a 0xffffffff - embora nem TODAS essas páginas estejam presentes). Normalmente, essa seção compartilhada é obtida simplesmente fazendo com que todos os conjuntos de tabelas de páginas apontem para a mesma seção compartilhada de "bits da tabela de páginas de kernel".

Ter esta seção compartilhada permite que as chamadas, traps e interrupções do kernel entrem no kernel, não importa qual processo esteja sendo executado atualmente ou o que o processo está fazendo.

Exatamente como isso funciona depende da arquitetura para a qual o kernel é construído, mas, por exemplo, em x86 (32 e 64 bits), CR3 é o registrador que aponta para a tabela de páginas atual. Portanto, para cada processo, há um ponteiro para a tabela de páginas, e é carregado no CR3, como parte da mudança para o novo processo, assim como os valores de registro (pelo menos o ponteiro da pilha) são restaurados para o processo. 1 quando está sendo ligado.

    
por 14.04.2013 / 21:29
1

A questão é sobre o conflito de quadros de página enquanto troca de contexto de dois processos, não sobre espaço de endereço de memória virtual (espaço de endereço de memória virtual é único para cada processo, isso não é novidade.). Este link de estouro de pilha tem exatamente a mesma pergunta e resposta precisa. link

    
por 25.10.2014 / 16:05

Tags