É possível suportar múltiplos processos sem suporte para memória virtual?

8

É possível suportar vários processos sem suporte para memória virtual? Eu gostaria de saber mais sobre isso em caso afirmativo.

    
por Sen 02.01.2011 / 07:40

3 respostas

10

Você pode executar um sistema operacional de vários processos, mesmo sem suporte de hardware (sem MMU ), com todos os ponteiros representando um endereço físico. Você, no entanto, perde vários recursos-chave normalmente fornecidos pela MMU:

  • Como um ponteiro sempre aponta para um local específico na RAM, não é possível trocar (ou apenas de maneira muito limitada). Normalmente, a MMU gera uma exceção quando não consegue encontrar uma página física para um determinado endereço virtual, e o manipulador de exceções fornecido pelo SO busca a página da troca.
  • Como um ponteiro é desreferenciado sem verificação, cada processo pode acessar a memória de outros processos e a memória do kernel. Normalmente, a MMU gera uma exceção quando não consegue encontrar uma página física para um determinado endereço virtual, e o manipulador de exceções fornecido pelo SO encerra o processo para tentar um acesso inválido.
  • Como o mesmo ponteiro tem o mesmo significado em diferentes processos, não é possível implementar facilmente o garfo . Normalmente, o efeito de fork é fazer uma cópia¹ da memória física do processo e criar um novo mapa de memória virtual dos mesmos endereços virtuais para os novos endereços físicos.

Existem sistemas operacionais unix que funcionam em sistemas sem MMU.

¹ Em unices modernos, isso geralmente é feito preguiçosamente (copy-on-write), que novamente depende da MMU que gera uma exceção quando não consegue encontrar uma página física.

    
por 02.01.2011 / 14:29
2

É certamente possível com algumas restrições, como proteção de memória, que seria um problema, como já foi dito. Por exemplo, o link µClinux suporta múltiplos processos sem implementar a memória virtual. Observe que algumas CPUs, como pelo menos o Blackfin Analog Devices, fornecem um link . Isso permite que a memória virtual menos os sistemas operacionais ainda permitam que a memória seja particionada.

    
por 02.01.2011 / 10:20
0

Isso depende de como você define processo em relação a segmentos em termos de memória.

Uma das funções da memória virtual é o particionamento. Embora seja possível executar vários processos sem qualquer particionamento, isso seria mais como executar vários segmentos do que processos - compartilhando o mesmo espaço de endereço.

    
por 02.01.2011 / 09:33