You are on page 1of 28

Administrador de memoria de Linux

El administrador de memoria de linux utiliza un esquema de paginacin de 3 niveles. Cada proceso de usuario tiene su propio espacio de direcciones virtual. Si las direcciones son de 32 bits, el espacio de direcciones virtual de 4GB queda dividido: 3GB para el espacio de direcciones virtual para los procesos. 1GB para sus tablas de paginas y otros datos del kernel.

Direccionamiento de memoria
El sistema operativo tiene asistencia para realizar la administracin de memoria: Memory management unit (MMU) que se encarga de la segmentacin y la paginacin. Bits reservados en los sectores de segmento. Bits reservados en los descriptores de pagina. Bits de proteccin. Todo esto desde el punto de vista de la arquitectura

Direccionamiento de memoria(II)
Por otra parte, desde la vista de los procesos se emplean tcnicas como: La proteccin: cada proceso debe tener asignado memoria por separado. Memoria virtual: se le debe hacer creer que el proceso esta solo en el sistema.

Espacio de direcciones
En linux se utiliza tres tipos de direcciones: Direcciones lgicas: son generadas por los procesos, cada direccin lgica consiste en un selector de segmento y un desplazamiento. Direcciones lineales: se obtienen mediante la transformacin de la direccin lgica por parte de la MMU, se representan en valores hexadecimales que van desde 0x00000000 hasta 0xffffffff. Direcciones fsicas: hacen referencia a la memoria fsica.

Espacio de direcciones(II)
El paso de una direccin lgica a una direccin lineal, se le llama segmentacin. El paso de una direccin lineal a una direccin fsica, se le llama paginacin.

Segmentacin
Traduccin de una direccin virtual a una lineal. Un segmento es un espacio de direcciones contiguo. Se caracterizan por: Direccin base. Limite. Atributos. Linux no aprovecha la segmentacin, pero no puede desactivarla y la utiliza de forma muy limitada.

Segmentacin(II)
En cambio linux le saca provecho a la paginacin Por qu?: Por que la gestin de memoria es mas simple cuando todos los procesos usan los mismos valores de segmento. Linux esta basado en ser portable, y muchos de los procesadores utilizan la segmentacin de forma muy limitada.

Paginacin
Traduce una direccion lineal a una direccion fisica. Una pagina es una espacio contiguo de direcciones lineales de tamao fijo 4Kb La memoria fisica se divide en marcos de pagina, para traducir una direccion lineal a una fisica, se emplean tablas de paginas y esta tabla ocupa 4Mb contiguos.

Paginacion(II)
El tamao de las paginas es de 4Kb(32 bits) por lo tanto: Los 10 bits mas significativos indexan en el directorio de tabla de paginas, de donde se obtiene la tabla de paginas. Los siguientes 10 bits se utilizan para indexar la tabla de paginas. Los ultimos 12 bits indican el desplazamiento dentro de la pagina.

Politicas de asignacion de memoria


Se puede observar la asignacion de memoria desde dos puntos de vista : peticiones por parte del kernel y por parte de procesos del usuario. El kernel es un componente de alta prioridad por lo tanto, si solicita memoria no se le debe hacer esperar. Puede solicitar memoria de tres formas: Con buddy system. Con slab allocator. Con vmalloc

Espacio de direcciones virtual


Esta dividido en reas o regiones contiguas. Las reas o regiones son una seria de paginas consecutivas. Para cada rea, el sistema operativo almacena los siguientes datos: Modo de proteccin Direccin en la que crece Si es privada o compartida Si tiene asignados huecos.

Esquema de paginacin de 3 niveles


Tipos de tablas: Direccin global: cada proceso tiene uno solo y esta en memoria, su tamao es de una pagina y cada entrada apunta a un directorio intermedio de paginas. Directorio intermedio de paginas: puede ocupar varias paginas y cada entrada apunta a una pagina de la tabla de paginas final. Tabla de paginas: puede ocupar varias paginas y cada una de sus entradas hace referencia a la pagina virtual requerida.

Las direcciones virtuales se dividen en 4 campos: Directorio : el 1er campo consulta el directorio global. Intermedio: el 2do campo consulta el directorio intermedio de paginas. Pagina: 3er campo para acceder a la tabla de paginas. Desplazamiento: 4to campo la palabra seleccionada dentro de la pagina

Administracin de la memoria fsica


Una parte de la memoria es utilizada por el kernel. El resto queda disponible para: Paginas de usuario. Cache del buffer. Cache de paginacin.

Administracin de la memoria libre


Linux utiliza el sistema de colegas para asignar/liberar todos los marcos de la pagina. El sistema de colegas permite asignar intervalos de marcos continuos.

Administracin de la memoria libre(Continuacin)


Para registrar la memoria libre, mantiene listas de grupos contiguos de tamao fijo 1, 2, 4 , 8 La asignacin contigua de marcos permite aumentar la eficiencia de cargar y descargar paginas a y desde la memoria principal.

Asignacin de memoria para el ncleo


La memoria del kernel es permanente y ninguna de sus partes se pagina en disco. El kernel necesita asignar y liberar memoria de forma dinmica. Usando el sistemas de colegas se asigna memoria contigua en el kernel.

Asignacin de memoria para el ncleo (continuacin)


Para asignaciones pequeas, linux usa un segundo mtodo para evitar la fragmentacin interna. Empleando el sistema de colegas se reserva memoria que se divide en fragmentos mas pequeos que una pagina. Los fragmentos se mantienen en un conjunto de listas enlazadas uno por cada tamao de fragmento (32, 64, 128, 252, 508, 2040 y 4080 bytes)

Asignacin de memoria para el ncleo (continuacin)


Los fragmentos pueden dividirse y agregarse de forma similar al sistema de colegas, movindose de una lista a otra. Un tercer mtodo permite asignar memoria cuando solo tiene que estar contigua en memoria virtual, pero no en memoria fsica.

Regiones de memoria
Linux organiza los intervalos de memoria utilizados por un proceso en lo que se denomina regiones de memoria. Esta regiones se caracterizan por una direccin lgica inicial, una longitud y los permisos sobre ellas. Las regiones nunca se solapan, el kernel intenta fusionarlas siempre que los derechos de acceso coincidan.

Zona de intercambio
Gestiona particiones y archivos de paginacin. Permite hasta un mximo de 8 archivos, que se crean con un tamao fijo.

Zona de intercambio(ii)
Los segmentos de texto se paginan desde un archivo en disco, no se les asigna hueco en la zona de intercambio. Para cada particin/archivo de paginacin hay un mapa de bits para controlar los huecos asignados/libres. A las particiones/ficheros se les puede asignar un valor de prioridad.

Gestin de la memoria de Linux


Algoritmo de reemplazo de paginas Trata de mantener algunos marcos desocupados, creando una reserva de marcos libres, para poderlos usar cuando se solicite nuevo marco. El verdadero algoritmo de paginacin se encarga de mantener esta reserva de marcos libres. Un demonio de paginacin peridicamente comprueba si hay suficientes marcos libres. [1]

Algoritmo de reemplazo de pginas


Demonio de paginacin:

Su cdigo consiste en un ciclo que se ejecuta hasta 6 veces, con urgencia creciente. Invoca a tres procedimientos que se encargan de recuperar diferentes tipos de pginas. El valor de urgencia se pasa como parmetro, para que el procedimiento sepa cuanto debe esforzarse por recuperar pginas. El efecto de este algoritmo es que primero se toman las paginas fciles de cada categora para despus ir tras las difciles. Cuando se han recuperado suficientes paginas se duerme otra vez.

Otro demonio, de forma peridica, verifica si la fraccin de paginas modificadas en memoria es demasiado grande. En este caso, comenzar a escribirlas en disco.

You might also like