La paginación se da cuando se ejecuta un programa que tanto puede caber
como no en la memoria física, si el proceso en el programa es mayor que la
memoria, el sistema operativo se encargaría de mantener en memorias las
partes del programa que se esta usando y el resto en el disco duro.
¿qué es el kernel?
El núcleo o kernel es la parte central de un sistema operativo y es el que se
encarga de realizar toda la comunicación segura entre el software y el hardware
del ordenador. El núcleo kernel es la parte más importante del sistema operativo
Unix y sus derivados, como Linux y todas las distribuciones que dependen de él.
Los procesos de Linux usan bibliotecas de código común, como por ejemplo rutinas de manejo de
ficheros. No tendría sentido que cada proceso tenga su propia copia de la biblioteca, así pues Linux usa
bibliotecas compartidas que varios procesos pueden usar al mismo tiempo. El código y los datos de
estas bibliotecas compartidas tienen que estar unidos al espacio virtual de direccionamiento de un
proceso y también al espacio virtual de direccionamiento de los otros procesos que comparten la
biblioteca.
La memoria virtual del proceso puede que tenga código que sólo se usa en ciertas ocasiones, como en la
inicialización o para procesar un evento particular. Puede que sólo haya usado unas pocas rutinas de
sus bibliotecas compartidas. Sería superfluo cargar todo su código y datos en la memoria física donde
podría terminar sin usarse. El sistema no funcionaría eficientemente si multiplicamos ese gasto de
memoria por el número de procesos en el sistema. Para solventar el problema, Linux usa una técnica
llamada Páginación por Demanda (demand paging) que sólo copia una página de memoria virtual de un
proceso en la memoria física del sistema cuando el proceso trata de usarla.
Linux utiliza en un sistema Intel x86 utiliza páginas de 4 Kbytes. Cada una de
estas páginas tiene asociado un único número; el número de marco de
página (PFN). En este modelo de paginación, una dirección virtual está
compuesta de dos partes: un desplazamiento y un número de página virtual.
Si el tamaño de página es de 4Kbytes, los bits 11:0 de la dirección de
memoria virtual contienen el desplazamiento y los restantes bits
desde el bit 12 son el número de marco de página virtual.