Estou estudando sistemas operacionais e a arquitetura x86 e, enquanto lia sobre segmentação e paginação, naturalmente fiquei curioso para saber como os sistemas operacionais modernos lidam com o gerenciamento de memória. Pelo que encontrei, o Linux e a maioria dos outros sistemas operacionais basicamente evitam a segmentação em favor da paginação. Algumas das razões para isso que encontrei foram simplicidade e portabilidade.
Quais usos práticos existem para a segmentação (x86 ou não) e sempre veremos sistemas operacionais robustos usando-o ou eles continuarão a favorecer um sistema baseado em paginação.
Agora eu sei que essa é uma pergunta carregada, mas estou curioso para saber como a segmentação seria tratada com os sistemas operacionais desenvolvidos recentemente. Faz tanto sentido favorecer a paginação que ninguém considerará uma abordagem mais "segmentada"? Se sim, por quê?
E quando digo segmentação 'shun', estou sugerindo que o Linux a usa apenas na medida do necessário. Apenas 4 segmentos para código de usuário e núcleo / segmentos de dados. Ao ler a documentação da Intel, tive a sensação de que a segmentação foi projetada com soluções mais robustas em mente. Por outro lado, foi-me dito em muitas ocasiões o quão complicado o x86 pode ser.
Achei essa anedota interessante depois de ter sido vinculada ao 'anúncio' original do Linux Torvald para Linux. Ele disse isso alguns posts depois:
Simplesmente, eu diria que é impossível portar. É principalmente em C, mas a maioria das pessoas não chamaria o que eu escrevo C. Ele usa todos os recursos imagináveis do 386 que eu pude encontrar, pois também foi um projeto para me ensinar sobre o 386. Como já mencionado, ele usa um MMU , para paginação (ainda não em disco) e segmentação. É a segmentação que o torna REALMENTE dependente de 386 (cada tarefa possui um segmento de 64Mb para código e dados - máx. 64 tarefas em 4Gb. Qualquer pessoa que precise de mais de 64Mb / cookies resistentes a tarefas).
Acho que minha própria experiência com o x86 me levou a fazer essa pergunta. Linus não tinha o StackOverflow, então ele apenas o implementou para experimentá-lo.