Estoy estudiando los sistemas operativos y la arquitectura x86, y mientras leía sobre segmentación y paginación, naturalmente sentía curiosidad por saber cómo los sistemas operativos modernos manejan la administración de la memoria. Por lo que encontré, Linux y la mayoría de los otros sistemas operativos esencialmente rechazan la segmentación en favor de la paginación. Algunas de las razones de esto que encontré fueron la simplicidad y la portabilidad.
¿Qué usos prácticos hay para la segmentación (x86 o de otro tipo) y veremos cómo los sistemas operativos robustos lo utilizan o seguirán favoreciendo un sistema basado en paginación?
Ahora sé que esta es una pregunta cargada, pero tengo curiosidad por saber cómo se manejaría la segmentación con los sistemas operativos desarrollados recientemente. ¿Tiene tanto sentido favorecer la paginación que nadie considerará un enfoque más "segmentado"? Si es así, ¿por qué?
Y cuando digo segmentación 'shun' estoy dando a entender que Linux solo lo usa en la medida en que tiene que hacerlo. Solo 4 segmentos para usuario y código de kernel / segmentos de datos. Mientras leía la documentación de Intel, tuve la sensación de que la segmentación se había diseñado pensando en soluciones más sólidas. Una vez más, en muchas ocasiones me dijeron lo complicado que puede ser el x86.
Encontré esta anécdota interesante después de haber sido vinculado al "anuncio" original de Linux Torvald para Linux. Dijo esto unos pocos mensajes más tarde:
Simplemente, yo diría que portar es imposible. Es mayormente en C, pero la mayoría la gente no llamaría a lo que escribo C. Utiliza todas las características concebibles de los 386 que pude encontrar, ya que también era un proyecto para enseñarme sobre el 386. Como ya se mencionó, utiliza una MMU, tanto para la paginación (no para el disco todavía) y la segmentación. Es la segmentación que lo hace REALMENTE 386 dependiente (cada tarea tiene un segmento de 64 Mb para código y datos: máx. 64 tareas) en 4gb. Cualquiera que necesite más de 64Mb / tarea: cookies difíciles.
Supongo que mi propia experimentación con x86 me llevó a hacer esta pregunta. Linus no tenía StackOverflow, así que solo lo implementó para probarlo.