Para responder a essa pergunta, visitarei alguns pré-requisitos. A paginação por demanda pura não pode ser realizada sem o suporte de hardware. Todas as arquiteturas modernas de computadores oferecem suporte à paginação, no entanto, muitas possuem detalhes diferentes de implementação.
Os processadores x86 usam o que é chamado de tabela de páginas para rastrear os espaços de endereços virtuais e os mapeamentos de páginas, além de bits sobre privilégios de acesso e, mais relevante, se essa página está ou não presente na memória física. As violações acionam falhas de página que são capturadas pelo sistema operacional.
Para mais informações, consulte este artigo .
Para responder à questão da troca de páginas, devemos primeiro visitar a questão de como o sistema operacional controla quais páginas são usadas por qual processo e como elas são alocadas. Existem muitas estruturas de dados diferentes que podem ser usadas para isso. Uma matriz de bits simples que marca se um quadro está alocado ou não é uma maneira. Listas ou pilhas vinculadas é outra. Com paginação por demanda pura, as páginas alocadas não são realmente marcadas como presentes quando são alocadas. Isso tem o efeito de que nenhuma ram física é reservada para um processo até que ele realmente grave nele. Quando isso ocorre, o hardware lança uma falha que o sistema operacional intercepta e, em seguida, o sistema operacional usa um algoritmo de troca se não houver páginas físicas disponíveis para atribuir à página virtual já alocada.
Para mais informações sobre alocação de quadros de página, clique aqui . Lá você verá uma visão geral de algumas estruturas de dados adequadas.
Depois que um algoritmo adequado para alocação de página é implementado, outro para alocar espaço em disco para troca deve ser escolhido. O Windows, por exemplo, historicamente usou um arquivo simples no sistema de arquivos para troca de página. Eu imaginaria que, para cada nó na estrutura de dados, acompanhando as páginas alocadas, há um ponteiro associado a um deslocamento no arquivo, indicando a posição da página no disco. Os sistemas operacionais do tipo Unix tradicionalmente usam partições separadas para troca de páginas, o que é sem dúvida mais rápido, pois não existe uma camada do sistema de arquivos.
Também é possível separar as estruturas de dados do algoritmo de troca daquelas do algoritmo de alocação, no entanto, as duas estão relacionadas, portanto isso provavelmente não é feito com frequência.
Espero que isso responda à sua pergunta, apesar da relativa brevidade com que a tratei. Descobri que a melhor maneira de aprender sobre sistemas operacionais é mergulhar nos detalhes específicos da arquitetura, às vezes desagradáveis, que podem ser encontrados em sites como wiki.osdev.org e www.osdever.net, que lidam especificamente com a criação de sistemas operacionais e fornecem excelentes tutoriais em tais detalhes.