¿La administración de memoria en el kernel de Linux se realiza mediante paginación o segmentación o ambos?
¿La administración de memoria en el kernel de Linux se realiza mediante paginación o segmentación o ambos?
Respuestas:
Linux usa ambos. Utiliza la segmentación para mapear todo el espacio de direcciones disponible al tiempo que otorga diferentes derechos de acceso: básicamente un núcleo y una vista de espacio de usuario. Puede seleccionar el código fuente de Linux para KERNEL_DS (segmento de datos del kernel) para algunos ejemplos.
La paginación se usa para implementar memoria virtual (Grep para "struct gdt_page" en el kernel, como punto de partida)
La gestión de memoria en Linux funciona exclusivamente por paginación.
Linux admite páginas "pequeñas" (generalmente 4kB) y "grandes" (2M). El primero "simplemente funciona" sin que usted sepa o no haga nada especial, y el segundo necesita un tratamiento especial (debe reservarse en el momento del arranque y mapearse a través de un dispositivo especial).
El único contexto en el que aparece "segmento" en Linux es la llamada al sistema brk (), que se utiliza para aumentar el segmento de datos de un proceso (normalmente no necesitará esto, malloc lo hace sin que tenga que preocuparse). Pero de cualquier manera, la memoria viene en páginas y se administra en páginas, y no tiene nada que ver con la segmentación x86.