Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
Introduccin (Carretero [C4.1, C4.2], Stallings [C7.1]) Particin de memoria (Stallings [C7.2], Tanenbaum [C4.2.1 y C.4.2.2]) Memoria virtual con paginacin (Tanenbaum [C4.3, C4.4, C4.6]) Memoria virtual con segmentacin (Tanenbaum [C4.8]) Gestin de la memoria en Linux Gestin de la memoria en Windows 2000
ndice
1. Introduccin 1.1. Objetivos del sistema de gestin de memoria (Carretero
[C4.1], Stallings [C7.1])
1. Introduccin
Memoria principal: Recurso a repartir entre el S.O. y los procesos Sistema con monoprogramacin memoria principal divida entre el S.O. y el proceso en ejecucin Sistema con multiprogramacin memoria principal dividida en dos partes: Una parte para el sistema operativo El resto repartida entre los procesos en ejecucin
S.O. reparto de memoria eciente, transparente y seguro, proporcionando un espacio independiente a cada proceso y evitando interferencias entre ellos
Sistema de gestin o administracin de memoria la parte del S.O. que lleva a cabo, dinmicamente, las tareas de reparto y control de la memoria
Reubicacin
A priori no se puede conocer la posicin de memoria en la que se va a cargar un programa al ejecutarse Adems, al reanudar un proceso nueva posicin de memoria (es muy poco probable que pudiese ocupar la misma posicin que tena
antes de ser suspendido)
Proteccin
Un proceso no puede acceder a la zona de memoria asignada a otros procesos, ni a la del S.O. Es necesario un mecanismo para proteger al S.O. y a los procesos entre s espacios lgicos disjuntos La reubicacin complica la proteccin Todas las referencias a memoria de un proceso deben comprobarse durante su ejecucin slo accedan a su espacio de memoria La proteccin de memoria se tiene que satisfacer a nivel hardware, y no software (El S.O. tendra que tomar el
control en cada referencia a memoria, para realizar la comprobacin)
Comparticin
Debe haber exibilidad para permitir que varios procesos accedan a un misma zona de memoria:
Dos procesos ejecutando el mismo programa mismo cdigo Varios procesos pueden utilizar una misma estructura de datos
Permitir que direcciones lgicas de dos o ms procesos, posiblemente distintas entre s, se correspondan con la misma direccin fsica compartir memoria La comparticin de memoria no debe comprometer la proteccin bsica El mecanismo empleado para la reubicacin es la base para las capacidades de comparticin
Organizacin fsica
La memoria est organizada, al menos, en dos niveles:
Principal acceso ms rpido, coste ms alto y voltil Secundaria ms lenta y barata, y no voltil
Secundaria almacenar, a largo plazo, programas y datos Principal mantener los programas y datos de uso actual La organizacin del ujo de informacin entre la memoria principal y la secundaria es responsabilidad del S.O. Esencia de la gestin de memoria
Maximizar el rendimiento
El gestor de memoria debe maximizar el nmero de procesos en memoria, y minimizar el desperdicio inherente al reparto Poltica de asignacin decidir qu direcciones de memoria se asignan para satisfacer una peticin La propia gestin de memoria supone un gasto de memoria ptimo: cualquier direccin lgica traducida por cualquier direccin fsica (Irrealizable!) Hay zonas de memoria que no se pueden asignar a procesos (DMA, S.O., disp. mapeados a memoria) Para un mejor aprovechamiento de la memoria casi todos los S.O. usan paginacin Para optimizar el rendimiento memoria virtual
Bibliotecas de objetos
Coleccin de objetos relacionados, normalmente, entre s Hay un conjunto de bibliotecas predenidas que proporcionan servicios a las aplicaciones, como los correspondientes al S.O.
Todos los programas que usen una determinada funcin de biblioteca, tendrn una copia del cdigo (p.e. la funcin printf ) Gran desperdicio de memoria en ejecuciones simultneas de programas que usan las mismas funciones de biblioteca, habr mltiples copias de las mismas en memoria Actualizar una biblioteca supone tener que volver a enlazar todos los programas que usan esa biblioteca (si queremos que usen las nuevas funciones)
Bibliotecas dinmicas
Ventajas:
Tamao de los ejecutables disminuye considerablemente Rutinas de biblioteca nicamente en un archivo Varios procesos en ejecucin compartir el cdigo de la biblioteca Actualizacin inmediata
Reubicar las referencias presentes en el cdigo de la biblioteca durante la carga de la misma, ajustndose a las direcciones que les han correspondido dentro del mapa de memoria del proceso
La biblioteca se puede cargar en cualquier zona libre del mapa del proceso Impide poder compartir su cdigo por estar adaptado a esa zona de memoria
Al usar las bibliotecas dinmicas, el tiempo de ejecucin del programa puede aumentar ligeramente El mecanismo es transparente al usuario Suele haber versiones estticas y dinmicas de las bibliotecas:
El montador por defecto selecciona las dinmicas Se pueden seleccionar las estticas, pidindolo explcitamente A veces es necesario generar ejecutables autocontenidos
Secciones cada ejecutable tiene un conjunto de distinto contenido. Las tres ms importantes:
Cdigo (texto) el cdigo del programa Datos con valor inicial valor inicial de todas las variables globales inicializadas en el programa Datos sin valor inicial variables globales no inicializadas.
(Esta seccin aparece descrita, pero en el ejecutable no se almacena, ya que su contenido es irrelevante. nicamente se indica su tamao.)
Regin zona contigua caracterizada por la direccin de inicio dentro del mapa de memoria y su tamao
Tamao jo o variable
Tamao variable se suele indicar si crece hacia direcciones mayores o menores
ndice
2. Particin de la memoria (Stallings [C7.2]) 2.1. Particiones estticas 2.2. Particiones dinmicas 2.3. Sistema de colegas 2.4. Relocalizacin y proteccin 2.5. Administracin de memoria (Tanenbaum [C4.2.1 y C.4.2.2])
2. Particin de la memoria
Particiones estticas S.O. ocupa una posicin ja de la memoria principal Resto de la memoria disponible para los procesos dividida en particiones con lmites jos Particiones de igual tamao:
Cualquier proceso, con un tamao menor o igual que el de la particin, puede cargarse en cualquier particin libre Los procesos bloqueados, pueden suspenderse, y traer nuevos procesos a sus particiones El tamao de las particiones condiciona el tamao mximo de los programas. Programas ms grandes usando overlays Fragmentacin interna parte de la memoria de la particin ser desperdiciada (no se puede asignar a otro proceso). El uso de la memoria es extremadamente ineciente
Una nica cola para todos los procesos. Al cargar un proceso en memoria se selecciona la particin ms pequea disponible
2. Particin de la memoria
Particiones dinmicas Particiones variables en nmero y longitud Al cargar un proceso se le asigna exactamente tanta memoria como necesita
Compactacin de vez en cuando el S.O. desplaza los procesos para que estn contiguos la memoria queda libre en un nico hueco.
Consume mucho tiempo desperdicia tiempo del procesador Necesita la capacidad de reubicacin dinmica
Cuando todos los procesos estn bloqueados Algoritmos de reemplazo decidir cul se suspende
2. Particiones de memoria
Sistema de colegas Presenta un equilibrio razonable para superar las desventajas de los esquemas de particin ja y variable Los bloques de memoria disponibles son de tamao 2K , con L K U , donde:
2L = tamao de bloque ms pequeo asignable 2U = tamao de bloque ms grande asignable
Inicialmente, la memoria disponible se trata como un bloque de tamao mximo 2U Mantiene en todo momento una lista de huecos (bloques no asignados) para cada tamao 2i
Cuando una pareja de colegas de la lista i pasa a estar libre, se les elimina de esa lista y se unen en un slo bloque de la lista (i + 1)
Se usa en sistemas paralelos para asignar y liberar programas en paralelo UNIX usa una forma modicada del sistema de colegas para la asignacin de memoria en el ncleo
2. Particin de memoria
Relocalizacin y proteccin Un proceso puede ser colocado en distintas particiones al ser reanudado o desplazado se tiene que utilizar cdigo relocalizable y realizar el enlace en la ejecucin Para solventar este problema se distinguen varios tipos de direcciones:
Direccin lgica referencia a una posicin de memoria independiente de la asignacin actual de datos a la memoria Direccin relativa se expresa como una posicin relativa a algn punto conocido, normalmente el principio del programa Direccin fsica o absoluta posicin real en la memoria principal
2. Particin de memoria
Administracin de memoria Cmo se controlan los huecos de memoria? Mapas de bits
La memoria se divide en unidades de asignacin y a cada unidad de asignacin le corresponde un bit del mapa de bits El bit es
0 si la unidad est desocupada 1 si est ocupada
Listas enlazadas
Mantener una lista enlazada de segmentos de memoria asignados y libres, donde un segmento es un proceso o un hueco entre dos procesos
ndice
3. Memoria virtual con paginacin 3.1. Paginacin (Tanenbaum [4.3]) 3.2. Tablas de pginas (Tanenbaum [4.3]) 3.3. Algoritmos de reemplazo de pginas (Tanenbaum [4.4]) 3.4. Aspectos del diseo para los sistemas de paginacin (Tanenbaum [4.6])
3. Memoria virtual
Memoria virtual el tamao combinado del programa, sus datos y su pila podra exceder la cantidad de memoria fsica que se le puede asignar. El sistema mantiene: Las partes del proceso que se estn usando en memoria principal El resto del proceso en disco Paginacin Una de las tcnicas de memoria virtual ms usadas que permite ejecutar programas ms grandes que la memoria fsica disponible de forma transparente al programador Direcciones virtuales generadas por el programa
3.1 Paginacin
Las direcciones virtuales constituyen el espacio de direcciones virtual Espacio de direcciones virtual mayor al de direcciones fsicas La unidad de administracin de memoria (MMU) traduce las direcciones virtuales en direcciones fsicas
Tarjeta de la CPU CPU La CPU enva las direcciones virtuales a la MMU
Controlador de disco
Ejemplo de paginacin
Espacio de direcciones Virtuales 60K-64K 56K-60K 52K-56K 48K-52K 44K-48K 40K-44K 36K-40K 32K-36K 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K X X X X 7 X 5 X X X 3 4 0 6 1 2 Pgina virtual
Direcciones virtuales de 16 bits Espacio de direcciones virtual de 64KB 32KB de memoria fsica Pginas de 4KB
16 pginas virtuales 8 marcos de pgina Direccin virtual 0 8192 20500=5*4096+20 24650=6*4096+74 Direccin fsica 8192 24576 12308=3*4096+20 ?
Direcciones de memoria fsica 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Marco de pgina
Fallo de pgina
Problema: espacio de direcciones virtual ms grande que la memoria fsica Bit presente/ausente controlar qu pginas estn presentes en memoria Qu sucede si no hay asociacin pgina/marco? Fallo de pgina
1. La MMU detecta que la pgina no tiene correspondencia 2. La MMU provoca un fallo de pgina (interrupcin) 3. S.O. escoge un marco que no se est usando mucho (si es necesario vuelve a escribir su contenido en disco) 4. Trae la nueva pgina a ese marco 5. Modica la tabla de pginas 6. Reinicia la instruccin
El nmero de pgina virtual se usa como ndice para consultar la tabla de pginas La entrada correspondiente de la tabla de pginas indica el nmero de marco de pgina (si est en memoria) El nmero de marco de pgina se anexa al desplazamiento para formar una direccin fsica
Tabla de pginas
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010
Nmero de marco Bits presente/ausente 1 entrada vlida, 0 no est en memoria Bits de proteccin tipos de acceso permitido Bit modicado Bit referenciado o solicitado se ha referenciado a la pgina Caching desactivado para mapeo en memoria evitar el uso de la cach para los contenidos de esa pgina
Ocultacin desactivada Modificado Presente/Ausente
Referenciado
Proteccin
Se puede utilizar memoria principal para almacenarla, ms un registro con la direccin de inicio
PT1 entrada de la tabla de pginas de 1o nivel Tabla de pginas de 1o nivel marco donde est la tabla de pginas de 2o nivel correspondiente PT2 entrada de la tabla de pginas de 2o nivel Tabla de pginas de 2o nivel marco de pgina donde est la pgina
1023 6 5 4 3 2 1 0 (b)
Valid 1 1 1 1 1 1 1 1
Modied 1 0 1 1 0 0 1 1
Protection RW R X RW RW R X R X RW RW
Dispositivo hardware que traduce direcciones virtuales a fsicas sin acceder a la tabla de pginas
Est en el interior de la MMU Consiste en un nmero pequeo de entradas (casi nunca ms de 64) Cada entrada contiene informacin sobre una pgina:
Page frame 31 38 29 62 50 45 14 75
Cada entrada indica qu proceso y qu pgina virtual de dicho proceso estn en el marco correspondiente Problema: la traduccin de direcciones virtuales a fsicas es mucho ms difcil:
Cada vez que un proceso n referencia a su pgina p, hay que buscar una entrada (n, p) en toda la tabla invertida para averiguar el marco
Si todos los bit R son 1, su comportamiento es el de un FIFO Busca una pgina antigua a la que no se le haya hecho referencia desde el ltimo reemplazo
Pgina cargada en primer lugar 0 A 3 B 7 C 8 D (a) 3 B 7 C 8 D 12 E (b) 14 F 15 G 18 H 20 A A se considera como una pgina recin cargada 12 E 14 F 15 G 18 H Pgina de carga ms reciente
I H G F
Problema: Es ineciente si se implementa con una lista enlazada actualizacin de la lista en cada referencia a memoria
(a)
(b)
(d)
(e)
0 1 1 1
0 0 0 0 (f)
0 1 0 0
0 1 1 0
0 0 0 0
1 0 0 0
1 1 0 0
1 1 1 0
0 0 0 1
1 0 0 1
1 1 0 1
0 0 0 0
0 0 1 1
1 0 1 1 (i)
0 0 0 0
0 0 1 0
0 0 1 1
1 0 1 1 (j)
0 0 0 1
0 0 0 0
(g)
(h)
Fallo de pgina desaloja la pgina con el contador ms bajo No tan bueno como LRU:
Registra slo un bit por intervalo de tiempo no sabe en qu instante de un intervalo de tiempo se acceder por ltima vez a una pgina (al principio o al nal?) Contadores de tamao nito
1 1 0 0 1 0
1 1 0 1 0 1
1 0 0 0 1 0
0 1 1 0 0 0
Solucin: intercambio suspender procesos y liberar sus pginas, pero sin dejar la CPU inactiva Hay que controlar el grado de multiprogramacin
ndice
4. Memoria virtual con segmentacin (Tanenbaum [C4.8]) 4.1. Segmentacin 4.2. Segmentacin paginada 4.3. Memoria virtual en el Intel Pentium
No No Para obtener un gran espacio lineal de direcciones sin tener que adquirir ms memoria fsica
S S Para permitir que los programas y datos fueran separados en espacios independientes de direcciones y poder proporcionar la proteccin y uso de objetos compartidos
Las direcciones estn formadas por dos partes: selector y ajuste o desplazamiento El selector se carga en un registro de segmento y nos da el descriptor correspondiente de la LDT o GDT
0 = GDT/1 = LDT
Lmite 0-15
ndice
7. Gestin de la memoria en Linux (Tanenbaum [C10.4.3]) 7.1. Conceptos fundamentales 7.2. Administracin de memoria fsica 7.3. Algoritmo de reemplazo de pginas
Unused memory
20K 8K 0
24K 8K 0K
Directorio intermedio de pginas, que puede ocupar varias pginas. Cada entrada seala a una pgina de la tabla de pginas nal Tabla de pginas, que puede ocupar varias pginas. Cada una de sus entradas hace referencia a la pgina virtual requerida
Directory
Middle
Page
Offset
Virtual address
El cach de paginacin, formado por un conjunto de pginas de usuario que ya no se necesitan y estn esperando que se les pagine a disco. Si una pgina se reutiliza antes de que se desaloje de la memoria, podr recuperarse con rapidez
Un tercer mtodo permite asignar memoria cuando slo tiene que estar contigua en el espacio virtual, pero no en la memoria fsica
Las escrituras fsicas pueden ser de cualquier tamao, no tienen que ser del bloque de archivo entero Una pgina siempre se escribe contigua en el disco, en un archivo de paginacin podra o no quedar contigua
El demonio de paginacin tambin se puede activar si se necesitan marcos libres y no hay sucientes
Examinar las pginas en orden por direccin virtual se basa en la esperanza de que pginas cercanas entre s en el espacio de direcciones virtual tiendan a usarse o no de manera colectiva
Otro demonio, de forma peridica, verica si la fraccin de pginas modicadas en memoria es demasiado grande. En ese caso, comenzar a escribirlas a disco
ndice
6. Gestin de la memoria en Windows 2000 (Tanembaum C11.5.1
y C11.5.3)
6.1. Conceptos fundamentales 6.2. Algoritmo de reemplazo de pginas 6.3. Administracin de memoria fsica
Cada proceso de usuario tiene su propio espacio de direcciones virtual Direcciones virtuales de 32bits 4GB de espacio de direcciones virtual Utiliza paginacin (no se usa ningn tipo de segmentacin) Bsicamente usa paginacin por demanda, aunque para ser ms eciente prepagina algunas pginas cuando se produce un fallo de pgina Tamao de pgina jo (hasta un mximo de 64KB). En el Pentium de 4KB El S.O. puede usar pginas de 4MB para reducir el tamao de su tabla de pginas
Conceptos fundamentales
Una pgina virtual puede estar en tres estados posibles:
Libre no se est usando
Una referencia a ella provoca un fallo de pgina
Reservada no est disponible para utilizar mientras no se retire de forma explcita la reserva. P.e., este tipo de pginas se usa para permitir el crecimiento de las pilas
Adems las pginas tienen otros atributos como si se puede leer, escribir o ejecutar
Conceptos fundamentales
Zona de intercambio No se asigna hueco en la zona de intercambio a las pginas comprometidas que no tienen un lugar natural en el disco Slo asigna hueco de intercambio a una pgina comprometida cuando es necesario llevarla a disco
Inconveniente: aumenta la complejidad, porque es posible que los mapas de los cheros de paginacin tengan que traerse a memoria durante un fallo de pgina, lo que podra causar varios fallos de pgina adicionales Ventaja: no es necesario asignar hueco a las pginas que nunca se paginan
Las pginas libres o reservadas nunca tienen asignado hueco de intercambio (las referencias a ellas siempre causan fallos de
pgina)
Conceptos fundamentales
Entradas de la tabla de pginas Las entradas de la tabla de pginas son diferentes dependiendo de la arquitectura Las pginas sin correspondencia tambin tienen entradas diferentes Los bits ms importantes son el A, la pgina ha sido referenciada, y el D, la pgina ha sido modicada Un ejemplo de una entrada de pginas de un Pentium:
Bits 20 Page frame 3 1 1 1 1 1 1 1 1 1 W Not GL D A C UWV used t
G: Page is global to all processes L: Large (4-MB) page D: Page is dirty A: Page has been accessed C: Caching enabled/disabled
Wt: Write through (no caching) U: Page is accessible in user mode W: Writing to the page permitted V: Valid page table entry
Conceptos fundamentales
Fallos de pgina 5 categoras de fallos de pgina:
1. La pgina no est comprometida irrecuperable 2. Hubo una violacin de proteccin irrecuperable 3. Se ha escrito una pgina compartida copiar la pgina en un nuevo marco y aplicarle correspondencia de lectura/escritura 4. La pila necesita crecer asignarle un nuevo marco de pgina y aplicarle correspondencia en memoria, pero se necesita que est lleno de 0 5. La pgina est comprometida pero no tiene correspondencia se localiza la pgina y se le aplica correspondencia en memoria
El verdadero algoritmo de reemplazo de pginas es el que decide qu pginas se quitan a los procesos, y se colocan en la lista de libres El mecanismo de paginacin se apoya en el concepto de conjunto de trabajo:
Consiste en las pginas con correspondencia que estn en la memoria y a las que, por tanto, se accede sin generar un fallo de pgina Se describe con dos parmetros, su tamao mximo y mnimo, que pueden variar durante la ejecucin del proceso
Un conjunto de trabajo no puede usar los ltimos 512 marcos libres, es un lmite absoluto (aunque slo est ese
proceso)
Sistema multiprocesador se liberan las pginas ms antiguas El S.O. posee pginas y un conjunto de trabajo que puede recortarse. Sin embargo ciertas partes del cdigo y la reserva no paginada estn jas en la memoria (no pueden paginarse) Cuntas pginas liberar? funcin complicada (tamao de la
RAM, escasez de memoria, relacin del tamao actual del conjunto de trabajo y los tamaos mximo y mnimo, etc.)
Lista de pginas libres que contiene pginas limpias que ya no estn asociadas a ningn proceso Lista de pginas en ceros, estn libres, no estn asociadas a ningn proceso, y adems ya se han llenado de ceros
ModStandby Free Zeroed ified page page page page Modified list Dealloc(5) list list Zero list page page writer(4) thread (7) Bottom Page evicted from a working set (1) Process exist (3)
4 X X 6 14
Modified Free
Zeroed