A memória virtual é quase uma década mais antiga que o Unix: havia uma na Burroughs B5000 em 1961. Ele não tinha uma MMU no sentido moderno (isto é, baseado em páginas), mas fornecia as mesmas funções básicas. O IBM System / 360 Modelo 67 em 1965 (ainda mais antigo que o Unix) tinha um MMU. Os processadores Intel x86 não receberam uma MMU até o 80386 em 1986.
Implementar um sistema Unix na verdade não requer uma MMU. Isso requer alguma forma de memória virtual, caso contrário, implementar a fork
chamada do sistema é proibitivamente difícil. A chamada do sistema fork
, para criar processos copiando um processo existente, era uma parte fundamental do Unix desde a primeira versão, por isso exigia memória virtual. Veja D. M. Ritchie e K. Thompson, Sistema de Compartilhamento de Tempo do UNIX , CACM, 1974 , §V “Processos e imagens”.
Eu não sei os detalhes do hardware que as primeiras versões do Unix rodaram, mas eles tinham memória virtual na forma de um arquitetura segmentada . A CPU traduzida entre ponteiros desreferenciados por um programa (endereços virtuais) e locais reais na memória (endereços físicos). O mapeamento foi realizado adicionando um deslocamento ao endereço virtual. Em cada mudança de contexto entre processos, o registro contendo o offset foi ajustado.
Embora virtualmente todas as implementações Unix forneçam isolamento do processo, este não foi o caso de algumas implementações históricas em hardware que não tinham proteção de memória (tanto nos anos 70, como também nos anos 80 com MINIX em 8088 e 80286). A proteção da memória é um pouco ortogonal para abordar a virtualização; uma MMU fornece ambos, uma arquitetura segmentada simples não, uma MPU fornece proteção sem virtualização. Existe uma implementação Linux para sistemas sem uma MMU, uCLinux , mas devido à falta de fork
muitos programas não podem rodar ( o único suporte de fork
é vfork
que requer um execve
chame a criança imediatamente depois disso.
¹ Um MPU (unidade de proteção de memória) registra os direitos de acesso para cada página da memória.