Principio de gestión de memoria utilizado por Linux

9

¿La administración de memoria en el kernel de Linux se realiza mediante paginación o segmentación o ambos?

Gilles 'SO- deja de ser malvado'
fuente

Respuestas:

7

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)

Frederik Deweerdt
fuente
6

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.

Damon
fuente
La segmentación X86 era obsoleta cuando salió el i386. Linux nunca ha usado la segmentación para la gestión de la memoria. Algunos derivados como ELKS y (posiblemente) uClinux podrían.
LawrenceC