Professional Documents
Culture Documents
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.
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
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.
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.