Estoy estudiando los sistemas operativos y la arquitectura x86, y mientras leía acerca de la segmentación y la paginación, naturalmente tenía curiosidad sobre 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 evitan la segmentación a favor de la paginación. Algunas de las razones de esto que encontré fueron la simplicidad y la portabilidad.
¿Qué usos prácticos existen para la segmentación (x86 o de otro tipo) y alguna vez veremos sistemas operativos robustos que lo usen o continuará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 recientemente desarrollados. ¿Tiene tanto sentido favorecer la paginación que nadie considerará un enfoque más "segmentado"? Si es así, ¿por qué?
Y cuando digo la segmentación de 'evitar', estoy implicando que Linux solo lo usa en la medida de lo necesario. Solo 4 segmentos para el usuario y el código del núcleo / segmentos de datos. Mientras leía la documentación de Intel tuve la sensación de que la segmentación se diseñó con soluciones más sólidas en mente. Por otra parte, me dijeron en muchas ocasiones lo complicado que puede ser el x86.
Encontré esta anécdota interesante después de estar vinculado al 'anuncio' original de Linux Torvald para Linux. Dijo esto algunas publicaciones más tarde:
Simplemente, diría que portar es imposible. Está principalmente en C, pero la mayoría de las personas no llamarían lo que yo escribo C. Utiliza todas las características imaginables del 386 que pude encontrar, ya que también fue un proyecto para enseñarme sobre el 386. Como ya se mencionó, usa un MMU , tanto para la paginación (todavía no en el disco) como para la segmentación. Es la segmentación lo que lo hace REALMENTE dependiente 386 (cada tarea tiene un segmento de 64Mb para código y datos - máximo 64 tareas en 4Gb. Cualquiera que necesite más de 64Mb / tarea - cookies difíciles).
Creo que mi propia experimentación con x86 me llevó a hacer esta pregunta. Linus no tenía StackOverflow, por lo que solo lo implementó para probarlo.