
Em sua autobiografia,Apenas por diversão, Linus menciona o recurso "página para disco" que foi fundamental para tornar o Linux um concorrente digno do Minix e de outros clones do UNIX da época:
Lembro que, em dezembro, havia um cara na Alemanha que tinha apenas 2 megabytes de RAM, e ele estava tentando compilar o kernel e não conseguia rodar o GCC porque o GCC na época precisava de mais de um megabyte. Ele me perguntou se o Linux poderia ser compilado com um compilador menor que não precisasse de tanta memória. Então decidi que, embora não precisasse desse recurso específico, faria isso acontecer para ele. É chamado de page-to-disk e significa que mesmo que alguém tenha apenas 2 mg de RAM, ele pode fazer parecer que está usando mais o disco como memória. Isso foi por volta do Natal de 1991.
Page-to-disk era algo bastante importante porque era algo que o Minix nunca havia feito. Ele foi incluído na versão 0.12, lançada na primeira semana de janeiro de 1992. Imediatamente, as pessoas começaram a comparar o Linux não apenas com o Minix, mas também com o Coherent, que era um pequeno clone do Unix desenvolvido pela Mark Williams Company. Desde o início, o ato de adicionar page-to-disk fez com que o Linux se destacasse da concorrência.
Foi quando o Linux decolou. De repente, havia pessoas mudando do Minix para o Linux.
Ele está essencialmente falando swapping
aqui? Pessoas com alguma perspectiva histórica sobre o Linux provavelmente saberiam.
Responder1
Sim, isso é efetivamente uma troca. Citando onotas de lançamento para 0.12:
Memória virtual.
Além do programa "mkfs", agora existe um programa "mkswap" no disco raiz. A sintaxe é idêntica: "mkswap -c /dev/hdX nnn", e novamente: isso escreve sobre a partição, então tome cuidado. A troca pode então ser habilitada alterando a palavra no deslocamento 506 na imagem de inicialização para o dispositivo desejado. Use o mesmo programa usado para configurar o sistema de arquivos raiz (mas altere o deslocamento 508 para 506, é claro).
OBSERVAÇÃO! Isso foi testado por Robert Blum, que possui uma máquina 2M, e permite executar o gcc sem muita memória. NO ENTANTO, tive que parar de usá-lo, pois meu espaço em disco foi consumido pelo beta-gcc-2.0, então gostaria de saber se ele ainda funciona: fui totalmente incapaz de criar uma partição swap, mesmo para versões rudimentares. testando desde a época do Natal. Portanto, as novas mudanças poderiam ter saído pela culatra na VM, mas duvido.
Na versão 0.12, a paginação é usada para vários recursos, não apenas para troca para um dispositivo: carregamento sob demanda (carregando apenas páginas de binários à medida que são usados), compartilhamento (compartilhando páginas comuns entre processos).
Responder2
Sim, esse é exatamente o conceito conhecido comopaginação ou troca. (Há muito tempo, esses termos tinham significados ligeiramente diferentes, mas no século 21 são sinônimos, exceto talvez no contexto de alguns sistemas operacionais não-Unix.)
Para ser claro, a troca não era um recurso inovador: a maioria dos sistemas Unix “sérios” o possuíam, e o recurso é mais antigo que o Unix. O que a troca fez pelo Linux foi transformá-lo em um Unix “sério”, enquanto o MINIX foi feito para fins educacionais.
Trocar hoje ainda é o mesmo conceito. A heurística para decidir quais páginas salvar e quando salvá-las tornou-se muito mais complexa, mas o princípio básico permanece.
Responder3
A troca é um conceito anterior à memória virtual e até mesmo à proteção de memória: significa apenas colocar um processo no disco para abrir espaço para outro. O Unix original tinha duas peculiaridades nesse sentido: programas de “texto compartilhado” que mantinham o código do programa apenas uma vez na memória e trocavam apenas a seção de dados. E tinha a chamada de sistema "fork" que trocava um processo para o disco sem substituir a imagem da memória e, em vez disso, mantinha uma cópia (o filho) em execução.
A página para disco, ao contrário da troca, permite a execução de processos que não cabem na memória física. Requer toda a memória protegível, mapeamento de memória de endereços virtuais para endereços físicos e um mecanismo de falha de página reinicializável que permitirá alterar o mapeamento de um endereço virtual não mapeado para um endereço físico razoavelmente selecionável e retomar o comando que teve que ser abortado porque do mapeamento ausente.
O UNIX foi capaz de rodar em 68.000 processadores (incluindo troca) sem MMU, e fez bom uso de um MMU, se disponível, para proteção de memória, mas foi necessário que o 68010 realmente tivesse os mecanismos que permitissem a retomada de um programa após uma falha de página.
O 80386 era, em muitos aspectos, um design ruim e desatualizado. Mas seu MMU integrado e a capacidade de falha de página adequada tornaram-no imediatamente mais viável para sistemas do tipo UNIX que não eram apenas capazes de trocar, mas de paginar para disco.
É uma espécie de ironia histórica que esse grande sacrifício de silício (uma MMU completa e um design de CPU com capacidade virtual ocupassem bastante espaço) aos deuses dos sistemas modernos tenha sido assumido principalmente por um hobby, e o " peixes grandes" como Xenix e OS/2 eventualmente caíram no esquecimento.
Embora você possa chamar "nada paginado e não programado para execução" da mesma forma que "trocado", não é realmente uma proposição de tudo ou nada como era o significado original de "trocado".
A diferença se perdeu nas décadas desde então, desde que a paginação por demanda era muito mais útil e melhor dimensionada do que a troca comum, que a substituiu assim que os recursos necessários de CPU e MMU se tornaram comuns, mas a lentidão e o desgaste associados a qualquer um deles criaram um efeito semelhante olhar e sentir.