Linux comparte algunas caractersticas de UNIX, pero su esquema de gestin de memoria es bastante complejo (DUBE98). GESTION DE MEMORIA EN LINUX
Direccionamiento de memoria virtual
Linux hace uso de una estructura de tabla de pginas con tres niveles:
- Directorio de pginas - Directorio intermedio de pginas - Tabla de pginas
Directorio de pginas:
Un proceso activo tiene slo un directorio de pginas, donde cada entrada en el mismo, seala a una pgina del directorio intermedio de pginas. Para un proceso activo, el directorio debe estar en la memoria principal. Directorio intermedio de pginas:
Es el que puede ocupar varias pginas y donde cada entrada al directorio seala a una pgina de la tabla de pginas. Tabla de pginas:
Esta tambin puede ocupar varias pginas y en cada entrada se hace referencia a una pgina virtual del proceso. En el Pentium, que utiliza paginacin a 2 niveles: - Cada directorio intermedio de pginas tiene una nica entrada - As que, la entrada del directorio global sirve para seleccionar la tabla de paginas que se usara Cada direccin virtual se divide en 4 campos:
- Directorio: 1 campo, para consultar el directorio global
- Intermedio: 2 campo, para consultar el directorio intermedio de paginas
- Pagina: 3 campo, para acceder a la tabla de paginas
- Desplazamiento: 4 campo, dentro de la pagina seleccionada Linux utiliza el sistema de colegas para asignar/liberar todos los marcos de pagina:
- El sistema de colegas permite asignar intervalos de marcos contiguos de tamao arbitrario, si se solicitan
- El tamao mas pequeo que se puede asignar es de un marco Usando el sistema de colegas se asigna la memoria contigua en el kernel.
Problema: se puede producir mucha fragmentacin interna ya que, por ejemplo, hay que asignar 128 marcos a un modulo que necesita solo 65 marcos contiguos Algoritmo de reemplazo de paginas:
Trata de mantener algunos marcos desocupados, creando una reserva de marcos libres, para poderlos usar cuando se solicite un nuevo marco. Los procedimientos para recuperar marcos son:
1 Procedimiento: trata de recuperar paginas del cache de paginacin y del cache de buffer a los que no se haya hecho referencia ltimamente, empleando un algoritmo tipo reloj
2 Procedimiento: Busca paginas compartidas que al parecer ninguno de los usuarios este utilizando mucho
3 Procedimiento: Intenta recuperar paginas de usuarios ordinarias GESTION DE MEMORIA EN WINDOWS
Memoria en Win32:
Cuando un proceso se ejecuta, el sistema establece un espacio de direcciones virtuales propio de 32 bits, que permite habilitar un espacio de hasta 4 gigabytes de memoria. ste est formado por la suma de la memoria RAM instalada, ms la memoria virtual asignada.
Para aumentar la velocidad, el cambio no se realiza byte a byte, sino pgina a pgina, cuyo tamao en Windows es de 4 KB. De ah que toda la memoria virtual y fsica est paginada. La estructura de la memoria en Windows es en forma de rbol, en el cual se definen claramente 3 partes:
- Directorio de Pginas (Page Directory):
Cada proceso en ejecucin, dispone de un solo Directorio de Pginas. Se trata de una tabla con 1024 entradas que almacena los punteros a las Tablas de Pgina.
- Tabla de Pginas (Page Table):
Cada Tabla de Pgina es a su vez otra tabla que contiene otras 1024 entradas que ya apuntan alas propias pginas.
- Pgina (Page Frame):
Cada Pgina es un bloque de 4 KB donde se almacenan los datos de cada proceso. Un esquema quedara as: Las pginas pueden estar en uno de los siguientes estados:
Libre: Una pgina libre no puede ser accedida por ningn proceso, pero s puede ser reservada o encargada.
Reservada: Una pgina reservada es un bloque del espacio de direccin virtual que ha sido fijada para usos futuros. No se puede acceder a una pgina reservada, ni tiene datos almacenados. Simplemente bloquea el rango y no permite que sea asignado por otras funciones de asignacin.
Encargada: Aquella que ya ha sido asignada a un espacio fsico, ya sea en memoria fsica o en memoria virtual. No podemos saber donde est almacenada la pgina, pues de eso se encarga el sistema y puede que est constantemente cambindola de posicin, pero lo que s sabemos es que cuando la necesitemos, ah lo tendremos.
Existen algunas similitudes en cuanto a la gestin de memoria en Windows y Linux pero cuando es necesario liberar memoria Windows lo hace una vez por segundo a diferencia en Linux que lo hace solo cuando es necesario, esto hace de Linux mas eficiente.