SlideShare una empresa de Scribd logo
1 de 128
Descargar para leer sin conexión
Tema 4
Administración de la memoria
Pilar Gonz´alez F´erez
Tema 4 Administraci´on de la memoria – p.1/128
Índice
Introducción (Carretero [C4.1, C4.2], Stallings [C7.1])
Partición de memoria (Stallings [C7.2], Tanenbaum [C4.2.1 y C.4.2.2])
Memoria virtual con paginación (Tanenbaum [C4.3, C4.4, C4.6])
Memoria virtual con segmentación (Tanenbaum [C4.8])
Gestión de la memoria en Linux
Gestión de la memoria en Windows 2000
Tema 4 Administraci´on de la memoria – p.2/128
Índice
1. Introducción
1.1. Objetivos del sistema de gestión de memoria (Carretero
[C4.1], Stallings [C7.1])
1.2. Modelo de memoria de un proceso (Carretero [C4.2])
Tema 4 Administraci´on de la memoria – p.3/128
1. Introducción
Memoria principal: Recurso a repartir entre el S.O. y los procesos
Sistema con monoprogramación ⇒ memoria principal
divida entre el S.O. y el proceso en ejecución
Sistema con multiprogramación ⇒ memoria principal
dividida en dos partes:
Una parte para el sistema operativo
El resto repartida entre los procesos en ejecución
S.O. ⇒ reparto de memoria ⇒ eficiente, transparente y
seguro, proporcionando un espacio independiente a cada
proceso y evitando interferencias entre ellos
Sistema de gestión o administración de memoria ⇒
la parte del S.O. que lleva a cabo, dinámicamente, las
tareas de reparto y control de la memoria
Tema 4 Administraci´on de la memoria – p.4/128
1.1 Objetivos del sistema de gestión de memoria
Sistemas con multiprogramación
Requisitos deseables a cumplir por cualquier política de
administración de memoria:
Reubicación
Protección
Compartición
Organización lógica de los programas
Organización física
Maximizar el rendimiento
Mapas de memoria de los procesos
Tema 4 Administraci´on de la memoria – p.5/128
Reubicación
A priori no se puede conocer la posición de memoria en
la que se va a cargar un programa al ejecutarse
Además, al reanudar un proceso ⇒ nueva posición de
memoria (es muy poco probable que pudiese ocupar la misma posición que tenía
antes de ser suspendido)
El proceso se ha de reubicar en un área de memoria:
Traducir las direcciones de memoria a las que hace referencia,
direcciones lógicas, en las direcciones de la memoria principal
asignadas al mismo, direcciones físicas
La MMU (unidad de administración de memoria) ⇒ realizará la
traducción de las direcciones
Se crea un espacio lógico (o mapa) independiente para cada
proceso proyectándolo sobre la parte correspondiente de la
memoria principal de acuerdo con la función de traducción
Tema 4 Administraci´on de la memoria – p.6/128
Protección
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 lógicos disjuntos
La reubicación complica la protección
Todas las referencias a memoria de un proceso deben
comprobarse durante su ejecución ⇒ sólo accedan a
su espacio de memoria
La protección de memoria se tiene que satisfacer a
nivel hardware, y no software (El S.O. tendría que tomar el
control en cada referencia a memoria, para realizar la comprobación)
El mecanismo de protección suele estar integrado en
la función de traducción
Tema 4 Administraci´on de la memoria – p.7/128
Compartición
Debe haber flexibilidad para permitir que varios
procesos accedan a un misma zona de memoria:
Dos procesos ejecutando el mismo programa ⇒ mismo código
Varios procesos pueden utilizar una misma estructura de datos
Permitir que direcciones lógicas de dos o más
procesos, posiblemente distintas entre sí, se
correspondan con la misma dirección física ⇒
compartir memoria
La compartición de memoria no debe comprometer la
protección básica
El mecanismo empleado para la reubicación es la
base para las capacidades de compartición
Tema 4 Administraci´on de la memoria – p.8/128
Organización lógica de los programas
Programas ⇒ organizados en módulos, cada uno con
sus características (algunos son modificables y otros no)
Si el S.O. y el HW pueden tratar de forma efectiva los
programas de usuario y los datos en forma de módulos,
se tienen una serie de ventajas:
Se pueden escribir y compilar independientemente, y el sistema
resuelve en ejecución todas las referencias de un módulo a otro
Distintos grados de protección: sólo lectura, sólo ejecución
Posibilidad de compartir módulos (más fácil para el usuario)
Segmentación ⇒ herramienta que más fácilmente
satisface estas necesidades
Tema 4 Administraci´on de la memoria – p.9/128
Organización física
La memoria está organizada, al menos, en dos niveles:
Principal ⇒ acceso más rápido, coste más alto y volátil
Secundaria ⇒ más lenta y barata, y no volátil
Secundaria ⇒ almacenar, a largo plazo, programas y
datos
Principal ⇒ mantener los programas y datos de uso
actual
La organización del flujo de información entre la
memoria principal y la secundaria es responsabilidad
del S.O. ⇒ Esencia de la gestión de memoria
Tema 4 Administraci´on de la memoria – p.10/128
Maximizar el rendimiento
El gestor de memoria debe maximizar el número de
procesos en memoria, y minimizar el desperdicio
inherente al reparto
Política de asignación ⇒ decidir qué direcciones de
memoria se asignan para satisfacer una petición
La propia gestión de memoria supone un gasto de
memoria
Óptimo: cualquier dirección lógica ⇒ traducida por
cualquier dirección física (¡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 paginación
Para optimizar el rendimiento ⇒ memoria virtual
Tema 4 Administraci´on de la memoria – p.11/128
Mapas de memoria de los procesos
Problema: los mapas de memoria de los procesos son muy grandes
y no caben en memoria
Inicialmente la memoria era muy cara ⇒ los procesos se veían
limitados por su tamaño. Una solución fue:
Overlays ⇒ dividir el programa en una serie de fases que se
ejecutan sucesivamente, pero estando residente en memoria
sólo una fase. Cada fase, al terminar, carga la siguiente fase, y le
cede el control.
Memoria virtual ⇒ permite proporcionar a un proceso,
transparentemente, un mapa de memoria mayor que la memoria
principal
La disponibilidad de memorias mayores permite a los programadores
crear aplicaciones con mayores necesidades de memoria ⇒ sigue
siendo necesario el uso de la memoria virtual
Tema 4 Administraci´on de la memoria – p.12/128
1.2 Modelo de memoria de un proceso
Fases en la generación de un ejecutable
Aplicación ⇒ conjunto de módulos de código que han
de ser procesados para obtener el ejecutable:
Compilación ⇒ genera el código máquina de cada módulo
fuente, asignando direcciones a los símbolos definidos en el
módulo, y resolviendo las referencias a los mismos
Montaje o enlace ⇒ genera un ejecutable agrupando todos los
archivos objeto y resolviendo las referencias entre módulos y a
símbolos de bibliotecas
Bibliotecas de objetos
Colección de objetos relacionados, normalmente, entre sí
Hay un conjunto de bibliotecas predefinidas que proporcionan
servicios a las aplicaciones, como los correspondientes al S.O.
Tema 4 Administraci´on de la memoria – p.13/128
1.2.1 Fases de la generación de un ejecutable
Bibliotecas estáticas ⇒ las referencias a sus
símbolos se resuelven en la fase de montaje o enlace
Desventajas del enlace estático de las bibliotecas:
El archivo ejecutable puede tener un tamaño considerable (código
aplicación + código de las funciones externas)
Todos los programas que usen una determinada función de
biblioteca, tendrán una copia del código (p.e. la función printf)
Gran desperdicio de memoria ⇒ en ejecuciones simultáneas de
programas que usan las mismas funciones de biblioteca, habrá
múltiples 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)
Tema 4 Administraci´on de la memoria – p.14/128
1.2.1 Fases de la generación de un ejecutable
Bibliotecas dinámicas o enlazadas dinámicamente
El proceso de enlace se aplaza y se realiza en tiempo de
ejecución del programa ⇒ enlace dinámico implícito
Fase del montaje ⇒ se anota el nombre de la biblioteca para
cargarla y enlazarla al ejecutarse
Se incluye un módulo de montaje dinámico ⇒ realizará la
carga y montaje de la biblioteca en la primera referencia a ella en
tiempo de ejecución
En el ejecutable:
Las referencias a símbolos de la biblioteca se corresponden con símbolos en
el módulo de montaje dinámico
1a referencia a uno de esos símbolos ⇒ activación del módulo ⇒ carga y
montaje de la biblioteca
También se resuelve la referencia a ese símbolo, para posteriores usos
Podría suponer modificar durante la ejecución el código (en principio de sólo
lectura)
Tema 4 Administraci´on de la memoria – p.15/128
Bibliotecas dinámicas
Ventajas:
Tamaño de los ejecutables ⇒ disminuye considerablemente
Rutinas de biblioteca ⇒ únicamente en un archivo
Varios procesos en ejecución ⇒ compartir el código de la
biblioteca
Actualización inmediata
Si se producen cambios en la interfaz ⇒ no podrá usar
la biblioteca. Posible solución:
Mantener número de versión asociado a cada biblioteca
En el montaje guardar el número de versión en el fichero
ejecutable, para usarlo en el enlace durante la ejecución
Cambio de interfaz ⇒ nueva versión de la biblioteca
Tema 4 Administraci´on de la memoria – p.16/128
Bibliotecas dinámicas (ii)
¿Cómo compartir el código de una biblioteca dinámica
entre distintos procesos? Tres posibles alternativas:
Establecer un rango de direcciones predeterminado y específico
para cada biblioteca dinámica. Todos los procesos incluirán ese
rango en su mapa de memoria.
Poco flexible ⇒ limita el número de bibliotecas
Es posible encontrar procesos con mapas de memoria grandes, pero con
zonas sin utilizar
Reubicar las referencias presentes en el código de la biblioteca
durante la carga de la misma, ajustándose 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 código por estar adaptado a esa zona de memoria
Tema 4 Administraci´on de la memoria – p.17/128
Bibliotecas dinámicas (iii)
Compartiendo las bibliotecas . . .
Código de biblioteca independiente de la posición (PIC, Position
Independent Code), usando direccionamientos relativos a un
registro, de manera que no se ve afectada mientras se ejecuta:
La biblioteca puede residir en cualquier zona del mapa y además se comparte
El inconveniente es que es un poco menos eficiente
Al usar las bibliotecas dinámicas, el tiempo de
ejecución del programa puede aumentar ligeramente
El mecanismo es transparente al usuario
Suele haber versiones estáticas y dinámicas de las
bibliotecas:
El montador por defecto selecciona las dinámicas
Se pueden seleccionar las estáticas, pidiéndolo explícitamente
A veces es necesario generar ejecutables autocontenidos
Tema 4 Administraci´on de la memoria – p.18/128
1.2.1 Fases de la generación de un ejecutable
Montaje explícito de bibliotecas dinámicas
La aplicación no conoce durante el montaje qué bibliotecas
necesitará
P.e.: navegador de Internet que maneja ficheros de distintos
formatos, y usa funciones de varias bibliotecas para procesar cada
uno de los formatos. Un nuevo tipo de fichero ⇒ volver a montarlo
En tiempo de ejecución se decide qué biblioteca dinámica se
necesita y se solicita su montaje y carga ⇒ enlace dinámico
explícito
Debe hacer uso de los servicios que ofrece el sistema para realizar
esta solicitud explícita
El mecanismo de carga y montaje de la biblioteca dinámica deja de
ser transparente a la aplicación
Las bibliotecas tienen normalmente APIs comunes (p. ej. codecs,
plugins, etc.)
Tema 4 Administraci´on de la memoria – p.19/128
1.2.1 Fases de la generación de un ejecutable
Formato del ejecutable
Formato típico de un ejecutable:
Tema 4 Administraci´on de la memoria – p.20/128
Formato del ejecutable
Cabecera ⇒ información de control para interpretar el
contenido del ejecutable. Entre otras cosas contiene:
Número mágico ⇒ identifica al ejecutable
Dirección del punto de entrada del programa (primer valor del
contador del programa)
Tabla para describir las secciones en el ejecutable
Secciones ⇒ cada ejecutable tiene un conjunto de
distinto contenido. Las tres más importantes:
Código (texto) ⇒ el código 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 sección aparece descrita, pero en el ejecutable no se almacena, ya que su
contenido es irrelevante. Únicamente se indica su tamaño.)
Tema 4 Administraci´on de la memoria – p.21/128
1.2 Modelo de memoria de un proceso
Mapa de memoria de un proceso
Está formado por distintas regiones o segmentos
Objeto de memoria ⇒ sección del ejecutable
La asociación de una región de un proceso con un
objeto de memoria permite al proceso tener acceso a la
información contenida en el objeto
Al ejecutar: se crean varias regiones dentro del mapa
con la información del ejecutable:
Cada sección del ejecutable ⇒ un objeto de memoria
Regiones iniciales del proceso ⇒ secciones del ejecutable
Región ⇒ zona contigua caracterizada por la dirección
de inicio dentro del mapa de memoria y su tamaño
Tema 4 Administraci´on de la memoria – p.22/128
1.2.2 Mapa de memoria de un proceso
Propiedades y características de las regiones:
Soporte de una región ⇒ objeto de memoria asociado a la región
Soporte en archivo ⇒ almacenado en un archivo o en parte del mismo
Sin soporte ⇒ no tiene contenido inicial, (p.ej. regiones de datos sin
inicializar)
Tipo de uso compartido
Privada ⇒ sólo accesible por el proceso
Compartida ⇒ puede ser compartido por varios procesos
Protección ⇒ tipo de acceso permitido
Lectura
Ejecución
Escritura
Tamaño fijo o variable
Tamaño variable ⇒ se suele indicar si crece hacia direcciones mayores o
menores
Tema 4 Administraci´on de la memoria – p.23/128
1.2.2 Mapa de memoria de un proceso
Regiones de un mapa de memoria inicial:
Código (o texto): compartido,
lectura y ejecución, tamaño fijo
Datos con valor inicial:
privado, lectura y escritura,
tamaño fijo
Datos sin valor inicial: privado,
lectura y escritura, tamaño fijo
Pila: privado, lectura y escritura,
tamaño variable (crece cuando
se producen llamadas a fun-
ciones y decrece cuando final-
izan)
Tema 4 Administraci´on de la memoria – p.24/128
1.2.2 Mapa de memoria de un proceso
Modelo de memoria dinámico ⇒ no
variable de
regiones que pueden añadirse o eliminarse durante la
ejecución del proceso.
Se pueden crear nuevas regiones:
Heap ⇒ soporte para la memoria dinámica,
reservada en tiempo de ejecución
Archivos proyectados ⇒ se crea una región
asociada al fichero
Memoria compartida ⇒ se crea una región
asociada a la zona memoria compartida
Pilas para hilos ⇒ cada hilo necesita su pila,
con las mismas características que la pila del
proceso
Tema 4 Administraci´on de la memoria – p.25/128
1.2 Modelo de memoria de un proceso
Operaciones sobre regiones
Durante la vida de un proceso, su mapa de memoria va
evolucionando, y con él las regiones que incluye
Las operaciones que se pueden realizar sobre una
región dentro del mapa de un proceso:
Crear una región asociándola a un objeto de memoria
Eliminar una región, liberando todos los recursos vinculados a
ella
Cambiar de tamaño una región, por petición explícita del
proceso (Heap) o implícita (pila)
Duplicar una región, crea una nueva región, vinculada a un
objeto de memoria, que es copia del anterior (base del fork)
Tema 4 Administraci´on de la memoria – p.26/128
Índice
2. Partición de la memoria (Stallings [C7.2])
2.1. Particiones estáticas
2.2. Particiones dinámicas
2.3. Sistema de colegas
2.4. Relocalización y protección
2.5. Administración de memoria (Tanenbaum [C4.2.1 y C.4.2.2])
Tema 4 Administraci´on de la memoria – p.27/128
2. Partición de la memoria
Particiones estáticas
S.O. ocupa una posición fija de la memoria principal
Resto de la memoria ⇒ disponible para los procesos ⇒
dividida en particiones con límites fijos
Particiones de igual tamaño:
Cualquier proceso, con un tamaño menor o igual que el de la
partición, puede cargarse en cualquier partición libre
Los procesos bloqueados, pueden suspenderse, y traer nuevos
procesos a sus particiones
El tamaño de las particiones condiciona el tamaño máximo de los
programas. Programas más grandes ⇒ usando overlays
Fragmentación interna ⇒ parte de la memoria de la partición
será desperdiciada (no se puede asignar a otro proceso). El uso de la
memoria es extremadamente ineficiente
Tema 4 Administraci´on de la memoria – p.28/128
2.1 Particiones estáticas
Particiones de distinto tamaño⇒ reducen los
problemas
Algoritmo de ubicación para particiones de distinto
tamaño: (Particiones del mismo tamaño ⇒ trivial)
Una cola por partición, y cada proceso asignado a la partición
más pequeña en la que quepa:
Minimiza la fragmentación interna
No es óptimo desde el punto de vista global ⇒ particiones sin usar y otras con
grandes colas de espera
Una única cola para todos los procesos. Al cargar un proceso en
memoria se selecciona la partición más pequeña disponible
Desventajas de las particiones estáticas
Número de particiones ⇒ número de procesos activos
Trabajos pequeños ⇒ mucha fragmentación interna
Tema 4 Administraci´on de la memoria – p.29/128
2.1 Particiones estáticas
(a)
Varias colas
de entrada
Partición 4
Partición 3
Partición 2
Partición 1
operativo
Sistema
Partición 4
Partición 3
Partición 2
Partición 1
operativo
Sistema
700K
400K
100K
0
(b)
Una única
cola de entrada
Tema 4 Administraci´on de la memoria – p.30/128
2. Partición de la memoria
Particiones dinámicas
Particiones variables en número y longitud
Al cargar un proceso se le asigna exactamente tanta
memoria como necesita
Tema 4 Administraci´on de la memoria – p.31/128
2.2 Particiones dinámicas
Fragmentación externa:
Este método produce numerosos huecos (o fragmentos)
pequeños en memoria
Memoria ⇒ muy fragmentada y decae su rendimiento
Este fenómeno se conoce como fragmentación externa ⇒ la
memoria externa a todas las particiones se fragmenta cada vez
más, limitando el tamaño de los procesos que la pueden usar
Compactación ⇒ de vez en cuando el S.O. desplaza
los procesos para que estén contiguos ⇒ la memoria
queda libre en un único hueco.
Consume mucho tiempo ⇒ desperdicia tiempo del procesador
Necesita la capacidad de reubicación dinámica
Tema 4 Administraci´on de la memoria – p.32/128
2.2 Particiones dinámicas
Algoritmo de ubicación ⇒ intentar evitar la
fragmentación externa (evitando la necesidad de compactación)
Mejor ajuste (best-fit) ⇒ Tamaño más próximo al solicitado
Tiene los peores resultados y genera huecos demasiado pequeños
Primer ajuste (first-fit) ⇒ Primer bloque disponible suficientemente grande
(recorre desde el principio)
El más sencillo y rápido, y con buenos resultados. Genera pequeñas
particiones en las primeras posiciones de la memoria
Siguiente ajuste (next-fit) ⇒ Siguiente bloque disponible suficientemente grande
(busca desde la última posición)
Peores resultados que el algoritmo del primer ajuste, necesita compactación
más frecuentemente
Peor en ajustarse (worst-fit)
Curiosamente, ofrece buenos resultados
Cuando todos los procesos estén bloqueados ⇒
Algoritmos de reemplazo ⇒ decidir cuál se suspende
Tema 4 Administraci´on de la memoria – p.33/128
2. Particiones de memoria
Sistema de colegas
Presenta un equilibrio razonable para superar las
desventajas de los esquemas de partición fija y variable
Los bloques de memoria disponibles son de tamaño
2K, con L ≤ K ≤ U, donde:
2L
= tamaño de bloque más pequeño asignable
2U
= tamaño de bloque más grande asignable
Inicialmente, la memoria disponible se trata como un
bloque de tamaño máximo 2U
Mantiene en todo momento una lista de huecos
(bloques no asignados) para cada tamaño 2i
Tema 4 Administraci´on de la memoria – p.34/128
2.3 Sistema de colegas
Supongamos que se realiza una solicitud de tamaño S
Si 2U−1
< S ≤ 2U
⇒ se le asigna el bloque entero 2U
En caso contrario:
Se divide el bloque en dos colegas de igual tamaño 2U−1
Si 2U−2
< S ≤ 2U−1
⇒ se le asigna uno de los colegas 2U−1
En caso contrario, uno de los colegas se divide por la mitad
nuevamente, de tamaño 2U−2
El proceso continúa hasta que el bloque más pequeño sea
mayor o igual que S
Cuando una pareja de colegas de la lista i pasa a estar
libre, se les elimina de esa lista y se unen en un sólo
bloque de la lista (i + 1)
Tema 4 Administraci´on de la memoria – p.35/128
2.3 Sistema de colegas
Tema 4 Administraci´on de la memoria – p.36/128
2.3 Sistema de colegas
Tema 4 Administraci´on de la memoria – p.37/128
2.3 Sistema de colegas
Dada una solicitud de tamaño k, con 2i−1
< k ≤ 2i
, para encontrar
un hueco de tamaño 2i
:
void conseguir_hueco(int i)
{ if (i == (U+1)) return ERROR;
if (vacia(lista_i))
{ conseguir_hueco(i+1);
dividir_hueco_en_colegas;
poner_colegas_en_lista_i;
}
coger_primer_hueco_de_la_lista_i;
}
Se usa en sistemas paralelos para asignar y liberar programas en
paralelo
UNIX usa una forma modificada del sistema de colegas para la
asignación de memoria en el núcleo
Tema 4 Administraci´on de la memoria – p.38/128
2. Partición de memoria
Relocalización y protección
Un proceso puede ser colocado en distintas particiones
al ser reanudado o desplazado ⇒ se tiene que utilizar
código relocalizable y realizar el enlace en la ejecución
Para solventar este problema se distinguen varios tipos
de direcciones:
Dirección lógica ⇒ referencia a una posición de memoria
independiente de la asignación actual de datos a la memoria
Dirección relativa ⇒ se expresa como una posición relativa a
algún punto conocido, normalmente el principio del programa
Dirección física o absoluta ⇒ posición real en la memoria
principal
Tema 4 Administraci´on de la memoria – p.39/128
2.4 Relocalización y protección
Protección ⇒ proteger al S.O. de los procesos, y a los
procesos entre sí
Solución a ambos problemas: registro base y registro
límite
Tema 4 Administraci´on de la memoria – p.40/128
2. Partición de memoria
Administración de memoria
¿Cómo se controlan los huecos de memoria?
Mapas de bits
La memoria se divide en unidades de asignación y a cada
unidad de asignación le corresponde un bit del mapa de bits
El bit es
· 0 si la unidad está desocupada
· 1 si está ocupada
Problema: ¿Tamaño del bloque?
· Pequeño ⇒ mayor será el mapa de bits
· Grande ⇒ desperdicio de memoria
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
Tema 4 Administraci´on de la memoria – p.41/128
2.5 Administración de memoria
¿Cómo se controlan los huecos? Continuando. . .
Listas enlazadas. . .
Si la lista se ordena por dirección es más fácil su actualización
Si hay dos listas, una para memoria usada y otra para huecos,
la asignación es más rápida, pero la liberación es más lenta
(a)
(b) (c)
A B C D E
8 16 24
Hueco Comienza
en 18
Longitud 2
Proceso
P 0 5 H 5 3 P 8 6 P 14 4
H 18 2 P 20 6 P 26 3 H 29 3 X
1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1
1 1 0 0 1 1 1 1
1 1 1 1 1 0 0 0
Igual para asignar hueco de intercambio
Tema 4 Administraci´on de la memoria – p.42/128
Índice
3. Memoria virtual con paginación
3.1. Paginación (Tanenbaum [4.3])
3.2. Tablas de páginas (Tanenbaum [4.3])
3.3. Algoritmos de reemplazo de páginas (Tanenbaum [4.4])
3.4. Aspectos del diseño para los sistemas de
paginación (Tanenbaum [4.6])
Tema 4 Administraci´on de la memoria – p.43/128
3. Memoria virtual
Memoria virtual ⇒ el tamaño combinado del
programa, sus datos y su pila podría exceder la
cantidad de memoria física que se le puede asignar. El
sistema mantiene:
Las partes del proceso que se están usando en
memoria principal
El resto del proceso en disco
Paginación ⇒ Una de las técnicas de memoria virtual
más usadas que permite ejecutar programas más
grandes que la memoria física disponible de forma
transparente al programador
Direcciones virtuales ⇒ generadas por el programa
Tema 4 Administraci´on de la memoria – p.44/128
3.1 Paginación
Las direcciones virtuales constituyen el espacio de
direcciones virtual
Espacio de direcciones virtual mayor al de direcciones
físicas
La unidad de administración de memoria (MMU)
traduce las direcciones virtuales en direcciones físicas
de la CPU
Tarjeta
CPU
La CPU envía las direcciones
virtuales a la MMU
La MMU envía las
direcciones físicas a la memoria
de la memoria
administración
Unidad de
Memoria
(MMU)
de disco
Controlador
Bus
Tema 4 Administraci´on de la memoria – p.45/128
3.1 Paginación (ii)
El espacio de direcciones virtuales se divide en
páginas
El espacio de direcciones físicas en marcos de página
Tamaño(Marco de página) ≡ Tamaño(Página)
La página es la unidad de intercambio de memoria: las
transferencias entre la memoria principal y el disco
siempre se realizan en páginas
Tema 4 Administraci´on de la memoria – p.46/128
Ejemplo de paginación
Virtuales
direcciones
Espacio de
física
de memoria
Direcciones
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
28K-32K
24K-28K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
Página virtual
Marco de página
X
X
X
X
7
X
5
X
X
X
3
4
0
6
1
2
Direcciones virtuales de 16 bits
Espacio de direcciones virtual de
64KB
32KB de memoria física
Páginas de 4KB
16 páginas virtuales
8 marcos de página
Dirección virtual Dirección física
0 8192
8192 24576
20500=5*4096+20 12308=3*4096+20
24650=6*4096+74 ¿?
Tema 4 Administraci´on de la memoria – p.47/128
Fallo de página
Problema: espacio de direcciones virtual más grande
que la memoria física
Bit presente/ausente ⇒ controlar qué páginas están
presentes en memoria
¿Qué sucede si no hay asociación página/marco? ⇒
Fallo de página
1. La MMU detecta que la página no tiene correspondencia
2. La MMU provoca un fallo de página (interrupción)
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 página a ese marco
5. Modifica la tabla de páginas
6. Reinicia la instrucción
Tema 4 Administraci´on de la memoria – p.48/128
Fallo de página (ii)
Tema 4 Administraci´on de la memoria – p.49/128
3.2 Tabla de páginas
Establece la correspondencia entre direcciones
virtuales y físicas (entre las páginas virtuales y los marcos de
página):
Para un funcionamiento óptimo el tamaño de la página y el
marco debe ser potencia de 2
La dirección virtual se divide en número de página virtual y
desplazamiento
Nº página virtual Desplazamiento
El número de página virtual se usa como índice para consultar la
tabla de páginas
La entrada correspondiente de la tabla de páginas indica el
número de marco de página (si está en memoria)
El número de marco de página se anexa al desplazamiento para
formar una dirección física
Tema 4 Administraci´on de la memoria – p.50/128
3.2 Tabla de páginas (ii)
4 bits de página y 12 bits de ajuste
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
0
0
0
0
1
0
1
0
0
0
1
1
1
1
1
1
Bit presente/
ausente
Tabla de
páginas
El ajuste de 12
a la salida
bits se copia de
forma directa
de la entrada
Página virtual = 2
Se utiliza como índice
en la tabla de páginas Dirección
virtual
de entrada
(8196)
Dirección
física
de salida
(24580)
110
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0
00 1 0 0 0 0 0 0 0 0 0 0 1 0 0
Tema 4 Administraci´on de la memoria – p.51/128
3.1 Tabla de páginas (iii)
Estructura de una entrada de tabla de páginas (posibles
campos)
Número de marco
Bits presente/ausente ⇒ 1 entrada válida, 0 no está en memoria
Bits de protección ⇒ tipos de acceso permitido
Bit modificado
Bit referenciado o solicitado ⇒ se ha referenciado a la página
Caching desactivado para mapeo en memoria ⇒ evitar el uso de
la caché para los contenidos de esa página
Ocultación
desactivada Modificado Presente/Ausente
Número de marco de página
Referenciado Protección
Tema 4 Administraci´on de la memoria – p.52/128
3.2 Tabla de páginas (iv)
Implementación. Problemas:
La tabla es muy grande:
Direcciones 32 bits y 4KB/página ⇒ espacio de direcciones
virtual de 4GB y 1M de páginas (1048576 páginas)
Además, una por proceso (¿Por qué?)
Difícil implementación en registros hardware:
· Es costoso si la tabla de páginas es grande
· Cada cambio de contexto hay que inicializar los registros
Se puede utilizar memoria principal para almacenarla, más un
registro con la dirección de inicio
La asociación debe ser rápida
Cada acceso a memoria ⇒ asociación dirección virtual-física
Cada instrucción ⇒ 1, 2 ó más accesos a la tabla de páginas
Si se implementa en memoria es más lento ⇒ varios accesos
por cada acceso efectivo
Tema 4 Administraci´on de la memoria – p.53/128
Solución: Tablas de páginas de varios niveles
(a)
(b)
de nivel superior
Tabla de páginas
de segundo nivel
Tabla de páginas
Hacia las
páginas
Tabla de
páginas para
los 4MB
superiores
de memoria
6
5
4
3
2
1
0
1023
6
5
4
3
2
1
0
1023
Bits 10 10 12
PT1 PT2 Ajuste
El campo no
de página de la dirección virtual
dividida en varios campos (uno por cada nivel)
En memoria sólo las tablas necesarias
Proceso de 12MB: 4MB código, 4MB datos,
4MB pila
Total: 4 tablas * 1024 entradas
Antes: 1 tabla * 1048576 entradas
PT1 ⇒ entrada de la tabla de páginas de 1o nivel
Tabla de páginas de 1o nivel ⇒ marco donde está la
tabla de páginas de 2o nivel correspondiente
PT2 ⇒ entrada de la tabla de páginas de 2o nivel
Tabla de páginas de 2o nivel ⇒ marco de página donde
está la página
Tema 4 Administraci´on de la memoria – p.54/128
Solución: Memoria asociativa/TLB
Memoria asociativa/TLB (translation lookaside buffer)
Dispositivo hardware que traduce direcciones virtuales
a físicas sin acceder a la tabla de páginas
Está en el interior de la MMU
Consiste en un número pequeño de entradas (casi nunca más de 64)
Cada entrada contiene información sobre una página:
No de página
Bit de modificado
Bit de protección
No de marco de página
Bit de validez
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Valid Virtual page Modified Protection Page frame
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 140 1 RW 31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 20 0 R X 38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 130 1 RW 29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 129 1 RW 62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 19 0 R X 50 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 21 0 R X 45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 860 1 RW 14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 861 1 RW 75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡
Tema 4 Administraci´on de la memoria – p.55/128
Memoria asociativa/TLB (ii)
Funcionamiento:
Dirección virtual ⇒ se comprueba, en paralelo, si su
número de página está presente en el TLB
Si está:
Si no viola los bits de protección ⇒ el número de
marco se toma del TLB
Si viola los bits de protección ⇒ Fallo de
protección
Si no está ⇒ Fallo del TLB
La MMU consulta la tabla de páginas
Desaloja una entrada del TLB
La sustituye por la nueva entrada
¿Qué pasa con el TLB en los cambio de contexto?
Tema 4 Administraci´on de la memoria – p.56/128
Memoria asociativa + Memoria principal
Tema 4 Administraci´on de la memoria – p.57/128
Solución: Tablas de páginas invertidas
En una arquitectura de 64 bits, las tablas de páginas
pueden ser enormes:
Con páginas de 4 KB ⇒ ¡¡ tablas de 252 entradas !!
Si páginas muy grandes ⇒ demasiada
fragmentación interna
Si cada entrada 8 bytes (64 bits) ⇒ ¡¡ 32 Petabytes
para la tabla de páginas !!
Tablas de páginas multinivel demasiado complejas
por la gran cantidad de niveles necesarios
Solución: tabla de páginas invertida
Tema 4 Administraci´on de la memoria – p.58/128
Tablas de páginas invertidas (ii)
Características:
Una entrada por cada marco de página de la
memoria física
Con direcciones virtuales de 64 bits, 4KB/página y 512 MB de
RAM, sólo se necesitan 131.072 entradas
Cada entrada indica qué proceso y qué página
virtual de dicho proceso están en el marco
correspondiente
Problema: la traducción de direcciones virtuales a
físicas es mucho más difícil:
Cada vez que un proceso “n” referencia a su página “p”, hay
que buscar una entrada “(n, p)” en toda la tabla invertida para
averiguar el marco
Solución: TLB + tabla de dispersión
Tema 4 Administraci´on de la memoria – p.59/128
Tablas de páginas invertidas (iii)
Tema 4 Administraci´on de la memoria – p.60/128
3. Memoria virtual con paginación
Algoritmos de reemplazo de páginas
¿Qué marco seleccionar para una nueva página?
Algoritmo óptimo
Reemplaza la página que más tiempo va a tardar en necesitarse
Irreal: el orden de las referencias a memoria no se puede
saber de antemano
Tema 4 Administraci´on de la memoria – p.61/128
3.3 Algoritmos de reemplazo de páginas
Algoritmo NRU (No Usada Recientemente)
Se utilizan los bits de R (referencia) y M (modificado)
De forma periódica el bit R se establece a 0 ⇒ distinguir las
páginas que se han solicitado recientemente
Se establecen 4 categorías en base a los bits R y M:
CLASE 0: R = 0, M = 0
CLASE 1: R = 0, M = 1
CLASE 2: R = 1, M = 0
CLASE 3: R = 1, M = 1
Desaloja aleatoriamente una página de la clase de número más
bajo que no esté vacía
Este algoritmo funciona bien, es rápido y es sencillo de
implementar
Tema 4 Administraci´on de la memoria – p.62/128
3.3 Algoritmos de reemplazo de páginas (ii)
Algoritmo FIFO: Primero en entrar, primero en salir
Reemplaza la página que entró hace más tiempo en memoria (la
primera que entró)
Es muy malo, al no tener en cuenta el uso de las páginas
Tema 4 Administraci´on de la memoria – p.63/128
3.3 Algoritmos de reemplazo de páginas (iii)
Algoritmo de la segunda oportunidad
Modificación del FIFO, evitando los problemas de desalojar una
página que se use mucho, teniendo en cuenta su bit R
Funcionamiento:
Si el bit R de la página a quitar es 0 se elimina
Si su bit R es 1, se pasa al final y se anula el valor del bit R
(como si fuera nueva)
Si todos los bit R son 1, su comportamiento es el de un FIFO
Busca una página antigua a la que no se le haya hecho
referencia desde el último reemplazo
(a)
en primer lugar
Página cargada
Página de carga
más reciente0
A
3
B
7
C
8
D
12
E
14
F
15
G
18
H
(b)
A se considera como
una página recién cargada3
B
7
C
8
D
12
E
14
F
15
G
18
H
20
A
Tema 4 Administraci´on de la memoria – p.64/128
3.3 Algoritmos de reemplazo de páginas (iv)
Algoritmo del reloj
Difiere del anterior sólo en la implementación
Utiliza una lista circular y un puntero a la página a
considerar
Evita tener que mover las páginas en la lista
Cuando ocurre un fallo de página, se
inspecciona la página a la que apunta
la manecilla. La acción a realizar
depende del bit R:
R = 0: Retira la página de la memoria
R = 1: Limpia R y avanza la manecilla
A
B
C
D
E
F
G
H
I
J
K
L
Tema 4 Administraci´on de la memoria – p.65/128
3.3 Algoritmos de reemplazo de páginas (v)
Algoritmo LRU (Least Recently Used)
Buena aproximación al algoritmo óptimo
Selecciona la página que no ha sido utilizada hace más tiempo
Problema: Es ineficiente si se implementa con una lista enlazada
⇒ actualización de la lista en cada referencia a memoria
Tema 4 Administraci´on de la memoria – p.66/128
3.3 Algoritmos de reemplazo de páginas (vi)
LRU: Implementaciones hardware
Contador especial en hardware de 64 bits
Matriz de N × N bits, con N igual al número de marcos
Referencia a un marco ⇒ su fila a 1 y su columna a 0
Se reemplaza el marco con menor fila (como número binario)
Ejemplo con serie de referencias 0, 1, 2, 3, 2, 1, 0, 3, 2, 3
(a)
0
0
0
0
0
1
1
0
0
0
2
1
0
0
0
3
1
0
0
0
0
1
2
3
Página Página Página Página Página
(b)
0
0
1
0
0
1
0
0
0
0
2
1
1
0
0
3
1
1
0
0
(c)
0
0
1
1
0
1
0
0
1
0
2
0
0
0
0
3
1
1
1
0
(d)
0
0
1
1
1
1
0
0
1
1
2
0
0
0
1
3
0
0
0
0
(e)
0
0
1
1
1
1
0
0
1
1
2
0
0
0
0
3
0
0
1
0
(f)
0
1
1
1
0
0
0
0
0
1
0
0
0
1
1
0
(g)
0
0
0
0
1
0
0
0
1
1
0
0
1
1
1
0
(h)
0
0
0
1
1
0
0
1
1
1
0
1
0
0
0
0
(i)
0
0
1
1
1
0
1
1
0
0
0
0
0
0
1
0
(j)
0
0
1
1
1
0
1
1
0
0
0
1
0
0
0
0
Tema 4 Administraci´on de la memoria – p.67/128
3.3 Algoritmos de reemplazo de páginas (vii)
Algoritmo de maduración o envejecimiento
Simulación por software del LRU
Contadores software de N bits para cada página
Cada marca de reloj y para cada página:
El contador se desplaza un bit hacia la derecha
Se suma el valor del bit R al bit del extremo izquierdo
Se pone a 0
Fallo de página ⇒ desaloja la página con el
contador más bajo
No tan bueno como LRU:
Registra sólo un bit por intervalo de tiempo ⇒ no sabe en qué
instante de un intervalo de tiempo se acceder por última vez a
una página (¿al principio o al final?)
Contadores de tamaño finito
Tema 4 Administraci´on de la memoria – p.68/128
3.3 Algoritmos de reemplazo de páginas (viii)
Algoritmo de maduración
Ejemplo:
Página
0
1
2
3
4
5
Bits R para las Bits R para lasBits R para las Bits R para las Bits R para las
páginas 0-5, en la páginas 0-5, en lapáginas 0-5, en la páginas 0-5, en la páginas 0-5, en la
marca de reloj 0 marca de reloj 2marca de reloj 1 marca de reloj 3 marca de reloj 4
10000000
00000000
10000000
00000000
10000000
10000000
1 0 1 0 1 1
(a)
11000000
10000000
01000000
00000000
11000000
01000000
1 1 0 0 1 0
(b)
11100000
11000000
00100000
10000000
01100000
10100000
1 1 0 1 0 1
(c)
11110000
01100000
00100000
01000000
10110000
01010000
1 0 0 0 1 0
(d)
01111000
10110000
10001000
00100000
01011000
00101000
0 1 1 0 0 0
(e)
Tema 4 Administraci´on de la memoria – p.69/128
3. Memoria virtual con paginación
Aspectos de diseño para los sistemas de paginación
Gestión del conjunto de trabajo
Paginación por demanda ⇒ las páginas sólo se cargan cuando
se necesitan, y no por adelantado (paginación pura)
Localidad de referencia ⇒ en cualquier fase de su ejecución,
un proceso sólo referencia a una fracción relativamente pequeña
de sus páginas
Proceso hiperpaginado ⇒ proceso que pasa más tiempo
resolviendo fallos de página que ejecutando instrucciones
Conjunto de trabajo ⇒ conjunto de páginas que un proceso ha
usado en las últimas N instrucciones o unidades de tiempo
Prepaginación o paginación anticipada ⇒ la carga de páginas
antes de ser solicitadas
Tema 4 Administraci´on de la memoria – p.70/128
3.4 Aspectos de diseño para los sistemas de paginación (ii)
Gestión del conjunto de trabajo, continuación:
Modelo de conjunto de trabajo ⇒ establece que el conjunto de
trabajo de un proceso debe estar en memoria antes de ejecutarlo
⇒ prepaginación
Algoritmo de reemplazo de páginas del conjunto de trabajo:
Para cada página hay (al menos) dos elementos de
información: el tiempo aproximado del último acceso y el bit R
Cada tic de reloj se limpia el bit R
En un fallo de página, para cada página:
· Si R=1, se actualiza el tiempo del último acceso
· Si R=0 y edad > τ ⇒ reemplazar (pero continúa el recorrido)
· Si R=0 y edad < τ ⇒ recordar el tiempo más pequeño y seguir
· Si no éxito: la más antigua con R=0; sino cualguiera con R=1
Tema 4 Administraci´on de la memoria – p.71/128
3.4 Aspectos del diseño para los sistemas de paginación (iii)
Políticas de asignación local y global
¿Cómo repartir la memoria entre los procesos ejecutables ?
Local ⇒ se asigna un número de marcos fijo a cada proceso
Global ⇒ se asignan, dinámicamente, los marcos de página
entre los distintos procesos ejecutables
(a) (b) (c)
A0
A1
A2
A3
A4
A5
B0
B1
B2
B3
B4
B5
B6
C1
C2
C3
A0
A1
A2
A3
A4
A6
B0
B1
B2
B3
B4
B5
B6
C1
C2
C3
A0
A1
A2
A3
A4
A5
B0
B1
B2
A6
B4
B5
B6
C1
C2
C3
Edad
10
7
5
4
6
3
9
4
6
2
5
6
12
3
5
6
Tema 4 Administraci´on de la memoria – p.72/128
3.4 Aspectos del diseño para los sistemas de paginación (iv)
Políticas de asignación local y global
Los algoritmos locales son más propensos a la hiperpaginación
y pueden desperdiciar memoria
Los algoritmos globales funcionar mejor. Ahora bien ¿cómo se
decide cuántos marcos se asignan a cada proceso?
Algoritmo de frecuencia de fallos de página ⇒ cuándo hay
que reducir o aumentar el no
de marcos asignados a un proceso
Calcula la tasa de fallos de página de cada proceso
Trata de mantener la tasa de fallos de página dentro de unos
límites razonables
Observación: no dice nada sobre qué paginas sustituir
Otros aspectos:
Decidir el número mínimo de marcos a asignar a un proceso
Cómo realizar el reparto de marcos entre los procesos
Tema 4 Administraci´on de la memoria – p.73/128
3.4 Aspectos del diseño para los sistemas de paginación (v)
Tamaño de página
Páginas pequeñas
Menos fragmentación interna
Tablas de páginas más grandes
Páginas grandes
Más fragmentación interna
Tablas de páginas más pequeñas
Factor a tener en cuenta: velocidad de lectura/escritura de disco
Tamaños típicos: 4KB u 8KB
Tema 4 Administraci´on de la memoria – p.74/128
3.4 Aspectos de diseño para los sistemas de paginación (vi)
Compartición de páginas
Compartir código (ej.: varios usuarios ejecutan el mismo
programa):
Llevar control de páginas compartidas para saber qué hacer si
un proceso termina o una página se reemplaza
Compartir datos:
Como mecanismo de comunicación entre procesos
Cuando sólo se leen. Se pueden modificar también, pero
entonces ⇒ mecanismo de copia en escritura (ej.: creación de
procesos con fork en UNIX):
· Páginas de datos se comparten en modo ”sólo lectura”
· Si escritura ⇒ fallo de protección ⇒ S.O. hace copia de la
página de datos para el que escribe, activa permiso de
copia y reinicia la instrucción
Tema 4 Administraci´on de la memoria – p.75/128
3.4 Aspectos de diseño para los sistemas de paginación (vii)
Políticas de lectura y escritura de páginas
Lectura (ya visto)
Por demanda: cuando se produce un fallo de página
(paginación por demanda)
Por adelantado: en un fallo de página se leen varias páginas,
incluida la que produjo el fallo (prepaginación o paginación
anticipada)
Escritura
Por demanda: cuando se expulsa una página que está
modificada
Por anticipado: por ejemplo, cada X segudos (demonio de
paginación)
· Si, además, se liberan páginas ⇒ Caché de páginas
Tema 4 Administraci´on de la memoria – p.76/128
3.4 Aspectos de diseño para los sistemas de paginación (viii)
Control de carga
A veces no es posible evitar la hiperpaginación (todos los procesos
piden más memoria y no se puede asignar a uno sin perjudicar a otro)
Solución: intercambio ⇒ suspender procesos y liberar sus
páginas, pero sin dejar la CPU inactiva ⇒ Hay que controlar el
grado de multiprogramación
Anclaje de marcos de memoria
Cuando intervienen en una operación de E/S por DMA que no ha
finalizado
A tener en cuenta, sobre todo, en algoritmos globales
Administración del espacio de intercambio
Asignación estática por proceso, cuando éste se inicia
Asignación dinámica (los procesos pueden crecer)
Tema 4 Administraci´on de la memoria – p.77/128
Índice
4. Memoria virtual con segmentación (Tanenbaum [C4.8])
4.1. Segmentación
4.2. Segmentación paginada
4.3. Memoria virtual en el Intel Pentium
Tema 4 Administraci´on de la memoria – p.78/128
4. Memoria virtual con segmentación
Segmentación
Proporciona a un proceso varios espacios de
direcciones completamente independientes ⇒
Segmentos
Cada segmento:
Una sucesión lineal de direcciones, desde 0 hasta un máximo
Tiene una longitud distinta y variable
Puede crecer o disminuir independientemente
Puede tener una protección diferente (lectura, ejecución,. . . )
Direcciones de dos dimensiones ⇒ Tabla de segmentos
Número del segmento
Dirección del segmento
Tema 4 Administraci´on de la memoria – p.79/128
4.1 Segmentación (ii)
Facilita la protección y la compartición de objetos (procedimientos,
funciones, estructuras de datos, etc.) de forma individual
Problema: Fragmentación externa
Tema 4 Administraci´on de la memoria – p.80/128
4.1 Segmentación (iii)
Tema 4 Administraci´on de la memoria – p.81/128
4.1 Segmentación (iv)
Considerando Paginación Segmentación
¿Necesita saber el programador si está
usando esta técnica?
No Si
¿Cuántos espacios lineales de direc-
ciones exixten?
1 Muchos
¿Puede el espacio total de direcciones ex-
ceder el tamaño de la memoria física
Sí Sí
¿Pueden distinguirse los procedimientos
y los datos, además de protegerse en
forma independiente?
No Sí
¿Pueden adecuarse con facilidad las
tablas con tamaños fluctuantes?
No Sí
¿Se facilita el uso de procedimientos com-
partidos entre los usuarios?
No Sí
¿Para qué se inventó esta técnica? Para obtener un gran
espacio lineal de direc-
ciones sin tener que
adquirir más memoria
física
Para permitir que los
programas y datos
fueran separados en
espacios independi-
entes de direcciones
y poder proporcionar
la protección y uso de
objetos compartidos
Tema 4 Administraci´on de la memoria – p.82/128
4. Memoria virtual con segmentación
Segmentación paginada
Cada segmento se pagina internamente ⇒ ventajas de
la paginación y de la segmentación
Dirección formada por dos partes: segmento y
dirección dentro del segmento:
Segmento ⇒ entrada en la tabla de segmentos que nos da la
dirección de la tabla de páginas
Dirección dentro del segmento ⇒ dividida en 2 partes:
Número de página ⇒ entrada de la tabla de páginas que da el
marco de página correspondiente
Desplazamiento dentro de la página
Nº de páginaNº de segmento Desplazamiento
Tema 4 Administraci´on de la memoria – p.83/128
4.2 Segmentación paginada
Tema 4 Administraci´on de la memoria – p.84/128
4. Memoria virtual con segmentación
Memoria virtual en el Intel Pentium
Dos tablas:
LDT: Tabla de descriptores locales
Cada programa tiene una LDT
Describe los segmentos locales para el programa
GDT: Tabla de descriptores globales
Sólo hay una compartida por todos los programas
Describe los segmentos del sistema (incluyen al mismo S.O.)
Las direcciones están 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
Tema 4 Administraci´on de la memoria – p.85/128
4.3 Memoria virtual en el Intel Pentium (ii)
Selector ⇒ 16 bits divididos en 3 campos:
Bit que indica si el selector es local (LDT) o global (GDT)
13 bits que indican el número de la entrada en la LDT o GDT
2 bits de protección
Índice
0 = GDT/1 = LDT Nivel de privilegio (0-3)
Bits 13 1 2
El selector facilita la localización del descriptor:
Se selecciona la LDT o GDT en base al bit 2
Se anulan los tres bits de orden más bajo del selector
Se le añade la dirección de la LDT o la GDT
P.e.: el selector 72 se refiere a la entrada 9 de la GDT, que está
en la dirección GDT+72
Tema 4 Administraci´on de la memoria – p.86/128
4.3 Memoria virtual en el Intel Pentium (iii)
Descriptores de segmento ⇒ 8 bytes e incluye la
dirección base del segmento, su tamaño, etc.
Nivel de privilegio (0-3)
Dirección
relativa
0
4
Base 0-15 Límite 0-15
Base 24-31 Base 16-23
Límite
16-19G D 0 P DPL Tipo
0: Li en bytes
1: Li en páginas
0: Segmento de 16 bits
1: Segmento de 32 bits
0: Segmento ausente de memoria
1: Segmento presente en memoria
Tipo y protección del segmento
32 Bits
Bit de granularidad ⇒ en que unidad se expresa el
campo límite
0 ⇒ bytes, límite es el tamaño exacto del segmento, hasta 1MB
1 ⇒ páginas, con páginas de 4KB segmentos de hasta 232
bytes
Tema 4 Administraci´on de la memoria – p.87/128
4.3 Memoria virtual en el Intel Pentium (iv)
Conversión de una pareja (selector, ajuste) a una
dirección lineal:
Descriptor
Dirección base
Límite
Otros campos
Dirección lineal de 32 bits
+
Selector Ajuste
Paginación desactivada ⇒ segmentación pura:
Dirección lineal = dirección física
Si sólo hay 1 segmento con Base = 0 y Limite = 4G ⇒
paginación pura
Tema 4 Administraci´on de la memoria – p.88/128
4.3 Memoria virtual en el Intel Pentium (v)
Paginación activa: “segmentación paginada”
Dirección lineal ⇒ Dirección virtual de 32 bits
Tabla de dos niveles y páginas de 4KB
Cada proceso ⇒ un directorio de páginas ⇒ tabla de 1o
nivel
(compartido por todos sus segmentos)
(a)
(b)
Bits
Linear address
10 10 12
Dir Page Offset
Page directory
Directory entry
points to
page table
Page table
entry points
to word
Page frame
Word
selected
Dir
Page table
Page
1024
Entries
Offset
Tema 4 Administraci´on de la memoria – p.89/128
Índice
7. Gestión de la memoria en Linux (Tanenbaum [C10.4.3])
7.1. Conceptos fundamentales
7.2. Administración de memoria física
7.3. Algoritmo de reemplazo de páginas
Tema 4 Administraci´on de la memoria – p.90/128
Gestión de la memoria en Linux
Conceptos fundamentales
Utiliza un esquema de paginación a tres niveles
Paginación por demanda, aunque para ser más
eficiente prepagina algunas páginas cuando se
produce un fallo de página
No utiliza el concepto de conjunto de trabajo
Tamaño de página fijo. En el Pentium de 4KB
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, dividido en:
3GB para el espacio de direcciones virtual para el proceso
1GB para sus tablas de páginas y otros datos del kernel,
accesible sólo en modo núcleo usando llamadas al sistema
Tema 4 Administraci´on de la memoria – p.91/128
Conceptos fundamentales (ii)
El espacio de direcciones virtual se divide en áreas o
regiones homogéneas y contiguas:
Cada área consiste en una serie de páginas consecutivas con
las mismas propiedades en cuanto a protección y paginación
El segmento de texto podría ser un ejemplo de área
Puede haber huecos entre las distintas áreas
Cualquier referencia a la memoria que caiga dentro de un hueco
producirá un fallo de página
Para cada área el sistema operativo almacena, entre otros, los
siguientes datos: modo de protección, si es paginable o no,
dirección en la que crece (hacia arriba el segmento de datos, hacia abajo
la pila), si es privada o compartida, si tiene asignado hueco en la
zona de intercambio, y si lo tiene, dónde
Tema 4 Administraci´on de la memoria – p.92/128
Conceptos fundamentales (iii)
Ejemplo de división en áreas del espacio de direcciones
virtuales de dos procesos que comparten el código:
Text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
BSS
Data
Stack pointer Stack pointer
20K
8K
0
Unused
memory
24K
8K
0K
BSS
Text
Data
(a) (b) (c)
OS
Physical memoryProcess A Process B
Tema 4 Administraci´on de la memoria – p.93/128
Conceptos fundamentales (iv)
Esquema de paginación de tres niveles
Se tienen los siguientes tipos de tablas:
Directorio global, cada proceso tiene sólo uno que ha de estar
en memoria, y su tamaño es de una página. Cada entrada
apunta a un directorio intermedio de páginas (tabla intermedia de
páginas)
Directorio intermedio de páginas, que puede ocupar varias
páginas. Cada entrada señala a una página de la tabla de
páginas final
Tabla de páginas, que puede ocupar varias páginas. Cada una
de sus entradas hace referencia a la página virtual requerida
En el Pentium, que utiliza paginación a 2 niveles:
Cada directorio intermedio de páginas tiene una única entrada
Así que, la entrada del directorio global sirve para seleccionar la
tabla de páginas que se usará
Tema 4 Administraci´on de la memoria – p.94/128
Esquema de paginación de tres niveles
Cada dirección virtual se divide en 4 campos:
Directorio: 1er
campo, para consultar el directorio global
Intermedio: 2o
campo, para consultar el directorio intermedio de
páginas
Página: 3o
campo, para acceder a la tabla de páginas
Desplazamiento dentro de la página seleccionada, 4o
campo
Global
directory
Directory
Page
middle
directory
Page
table
Page
Word selected
Virtual addressOffsetPageMiddle
Tema 4 Administraci´on de la memoria – p.95/128
Gestión de la memoria en Linux
Administración de memoria física
Una parte de la memoria es utilizada para el kernel
El resto de la memoria está disponible para (entre otros usos):
Páginas de usuario
El caché de buffer empleado por el sistema de ficheros
Contiene bloques de disco que se han leído recientemente, o que se han leído
por adelantado
Su tamaño es dinámico y compite por la misma reserva de páginas que las
páginas de usuario.
El caché de paginación, formado por un conjunto de páginas de
usuario que ya no se necesitan y están esperando que se les
pagine a disco. Si una página se reutiliza antes de que se
desaloje de la memoria, podrá recuperarse con rapidez
Tema 4 Administraci´on de la memoria – p.96/128
Administración de memoria física (ii)
Gestión de memoria libre:
Linux utiliza el sistema de colegas para
asignar/liberar todos los marcos de página:
El sistema de colegas le permite asignar intervalos de marcos
contiguos de tamaño arbitrario, si se solicitan
Para registrar la memoria libre, mantiene listas de grupos de
marcos contiguos de tamaño fijo: 1, 2, 4, 8,. . . marcos libres
El tamaño más pequeño que se puede asignar es de un marco
La asignación contigua de marcos permite aumentar la
eficiencia de cargar y descargar páginas a y desde la memoria
principal
Tema 4 Administraci´on de la memoria – p.97/128
Administración de memoria física (iii)
Asignación de memoria para el núcleo:
La memoria del kernel es permanente, ninguna de
sus partes se pagina a disco
El kernel, como programa que es, necesita asignar y
liberar memoria de forma dinámica:
Por ejemplo, maneja módulos, que normalmente son controladores de
dispositivos, que se cargan dinámicamente, tienen un tamaño arbitrario y se
les debe asignar un área de memoria de kernel contigua
Usando el sistema de colegas se asigna memoria
contigua en el kernel
Problema: se puede producir mucha fragmentación interna ya que, por
ejemplo, hay que asignar 128 marcos a un módulo que necesita sólo 65
marcos contiguos
Tema 4 Administraci´on de la memoria – p.98/128
Administración de memoria física (iv)
Asignación de memoria para el núcleo, continúa. . .
Para pequeñas asignaciones de memoria, Linux usa
un segundo método de asignación para evitar la
fragmentación interna:
Empleando el sistema de colegas, se reserva memoria que se divide en
fragmentos más pequeños que una página, que son administrados aparte
Los fragmentos se mantiene en un conjunto de listas enlazadas, una por cada
tamaño de fragmento (32, 64, 128, 252, 508, 2040 y 4080 bytes)
Los fragmentos pueden dividirse y agregarse de forma similar al sistema de
colegas, moviéndose de una lista a otra en función de ello
La asignación de memoria implica determinar cuál es la lista apropiada y
luego tomar el primer fragmento libre de la lista (o bien asignar una nueva
página y dividirla en fragmentos si no queda un fragmento libre adecuado)
Un tercer método permite asignar memoria cuando
sólo tiene que estar contigua en el espacio virtual,
pero no en la memoria física
Tema 4 Administraci´on de la memoria – p.99/128
Administración de la memoria física (v)
Zona de intercambio
Gestiona particiones y ficheros de paginación
A las particiones de paginación se accede como un
dispositivo crudo
Permite hasta un máximo de 8 ficheros, que se crean
con un tamaño fijo que no cambia durante su uso
Es más eficiente usar una partición que un archivo:
No es necesario que haya correspondencia entre bloque de
archivo y bloques de disco (ahorra la E/S de disco por lectura de bloques
indirectos)
Las escrituras físicas pueden ser de cualquier tamaño, no tienen
que ser del bloque de archivo entero
Una página siempre se escribe contigua en el disco, en un
archivo de paginación podría o no quedar contigua
Tema 4 Administraci´on de la memoria – p.100/128
Zona de intercambio (ii)
La asignación del hueco de intercambio se hace
cuando se necesita
Los segmentos de texto se paginan desde su archivo
en disco, no se les asigna hueco en la zona de
intercambio
Para cada partición/archivo de paginación hay un mapa
de bits para controlar los huecos asignados/libres
A las particiones/ficheros se les puede asignar un valor
de prioridad
A las particiones se les asigna mayor prioridad (lo normal)
Cuando se necesita asignar un hueco a una página, se
escoge la partición/archivo de más alta prioridad y con
un hueco disponible
Tema 4 Administraci´on de la memoria – p.101/128
Gestión de la memoria en Linux
Algoritmo de reemplazo de páginas
Trata de mantener algunos marcos desocupados,
creando una reserva de marcos libres, para poderlos
usar cuando se solicite un nuevo marco
El verdadero algoritmo de paginación se encarga de
mantener esta reserva de marcos libres
Un demonio de paginación periódicamente
comprueba si hay suficientes marcos libres:
Si hay suficiente ⇒ se desactiva hasta la próxima vez
Si no hay suficientes ⇒ trata de recuperar marcos de diferentes
tipos
El demonio de paginación también se puede activar si
se necesitan marcos libres y no hay suficientes
Tema 4 Administraci´on de la memoria – p.102/128
Algoritmo de reemplazo de páginas (ii)
Demonio de paginación:
Su código 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 páginas
El valor de urgencia se pasa como parámetro, para
que el procedimiento sepa cuánto debe esforzarse
por recuperar páginas
El efecto de este algoritmo es que primero se toman
las páginas fáciles de cada categoría para después
ir tras las difíciles
Cuando se han recuperado suficientes páginas se
duerme otra vez
Tema 4 Administraci´on de la memoria – p.103/128
Algoritmo de reemplazo de páginas (iii)
Los procedimientos para recuperar marcos:
1er Procedimiento. Trata de recuperar páginas del caché
de paginación y del caché de buffer a los que no
se haya hecho referencia últimamente, empleando
un algoritmo tipo reloj
2o
Procedimiento. Busca páginas compartidas que al
parecer ninguno de los usuarios esté utilizando
mucho
3o
Procedimiento. Intenta recuperar páginas de usuarios
ordinarias
Tema 4 Administraci´on de la memoria – p.104/128
Algoritmo de reemplazo de páginas (iv)
3o
procedimiento para recuperar páginas de usuario:
Primero se ejecuta un ciclo que abarca todos los procesos y
determina cuál es el que más páginas tiene en memoria
Una vez localizado ese proceso se examinan todas sus páginas
en orden por dirección virtual, partiendo del punto donde se
quedó por última vez el procedimiento:
Si una página no es válida, está ausente de la memoria, se
comparte, está fija en la memoria, o se está usando para
DMA, se pasa por alto
Si la página tiene encendido el bit de referencia, éste se
apaga, y la página se pasa por alto
Si el bit de referencia está apagado, la página se desaloja
(esta parte es similar al algoritmo del reloj, excepto que las
páginas no se examinan en orden FIFO)
Tema 4 Administraci´on de la memoria – p.105/128
Algoritmo de reemplazo de páginas (v)
3o
procedimiento para recuperar páginas de usuario . . .
Respecto a la página seleccionada:
Si no está modificada, se abandona de inmediato
Si está modificada, y tiene asignado hueco en la zona de
intercambio, se planifica para su escritura en disco
Si está modificada y no tiene asignado un hueco en la zona de
intercambio, se coloca en la caché de paginación (de donde se
podría volver a utilizar)
Examinar las páginas en orden por dirección virtual se basa en la
esperanza de que páginas cercanas entre sí en el espacio de
direcciones virtual tiendan a usarse o no de manera colectiva
Otro demonio, de forma periódica, verifica si la fracción
de páginas modificadas en memoria es demasiado
grande. En ese caso, comenzará a escribirlas a disco
Tema 4 Administraci´on de la memoria – p.106/128
Índice
6. Gestión de la memoria en Windows 2000 (Tanembaum C11.5.1
y C11.5.3)
6.1. Conceptos fundamentales
6.2. Algoritmo de reemplazo de páginas
6.3. Administración de memoria física
Tema 4 Administraci´on de la memoria – p.107/128
Gestión de la memoria Windows 2000
Conceptos fundamentales
El administrador de memoria trabaja sólo con procesos
(y no con hilos como hace el planificador)
Cada proceso de usuario tiene su propio espacio de
direcciones virtual
Direcciones virtuales de 32bits ⇒ 4GB de espacio de
direcciones virtual
Utiliza paginación (no se usa ningún tipo de segmentación)
Básicamente usa paginación por demanda, aunque
para ser más eficiente prepagina algunas páginas
cuando se produce un fallo de página
Tamaño de página fijo (hasta un máximo de 64KB). En el
Pentium de 4KB
El S.O. puede usar páginas de 4MB para reducir el
tamaño de su tabla de páginas
Tema 4 Administraci´on de la memoria – p.108/128
Conceptos fundamentales (ii)
Organización del espacio de direcciones virtual de un
proceso
Los 2GB inferiores, menos aprox. 256MB, para el
proceso. Los 2GB superiores para la memoria del S.O.
Los 2GB inferiores ⇒ código y datos del proceso
Los 64KB más bajos y más altos no tiene correspondencia ⇒
ayuda a atrapar errores de programación
Los apuntadores no válidos suelen ser 0 ó -1 ⇒ un intento de
usarlos causa una interrupción del sistema inmediata
Empiezan en los 64KB y llegan casi hasta los 2GB
El último fragmento de los 2GB inferiores contiene algunos
contadores y temporizadores del sistema, que todos los usuarios
comparten en modo de sólo lectura (se pueden usar por todos sin el
gasto adicional de una llamada al sistema)
Tema 4 Administraci´on de la memoria – p.109/128
Espacio de direcciones virtual de un proceso
Los 2GB superiores
Contienen el sistema operativo, incluidos el código, los datos y
las reservas paginada y no paginada
Compartidos por todos los procesos de usuario, con excepción
de las tablas de páginas (exclusivas de cada proceso)
En modo usuario no se puede acceder a esta zona
Si un hilo efectúa una llamada al sistema, salta por una
interrupción de sistema al modo núcleo y sigue ejecutándose sin
perder su identidad. Lo único que hay que hacer es cambiar a la
pila de núcleo del hilo
Sacrifica espacio de direcciones privado del proceso, a cambio
de que las llamadas al sistema sean más rápidas
Las versiones Advanced Server y Datacenter Server ofrecen la
opción de establecer un espacio de usuario de 3GB (1GB el S.O.)
Tema 4 Administraci´on de la memoria – p.110/128
Espacio de direcciones virtual de un proceso
Process A
4 GB
2 GB
0
Nonpaged pool
Paged pool
A's page tables
Stacks, data, etc
HAL + OS
System data
Process A's
private code
and data
Process B
Nonpaged pool
Paged pool
B's page tables
Stacks, data, etc
HAL + OS
System data
Process B's
private code
and data
Process C
Nonpaged pool
Paged pool
C's page tables
Stacks, data, etc
HAL + OS
System data
Process C's
private code
and data
Bottom and top
64 KB are invalid
Tema 4 Administraci´on de la memoria – p.111/128
Conceptos fundamentales
Una página virtual puede estar en tres estados
posibles:
Libre ⇒ no se está usando
Una referencia a ella provoca un fallo de página
Comprometida ⇒ hay una correspondencia entre el código o los
datos y la página
Una referencia a una página comprometida: ¿está la página en memoria?
· SÍ ⇒ éxito
· NO ⇒ fallo de página, hay que traer la página del disco
Reservada ⇒ no está disponible para utilizar mientras no se
retire de forma explícita la reserva. P.e., este tipo de páginas se
usa para permitir el crecimiento de las pilas
Además las páginas tienen otros atributos como si se
puede leer, escribir o ejecutar
Tema 4 Administraci´on de la memoria – p.112/128
Conceptos fundamentales
Zona de intercambio
No se asigna hueco en la zona de intercambio a las
páginas comprometidas que no tienen un lugar natural
en el disco
Sólo asigna hueco de intercambio a una página
comprometida cuando es necesario llevarla a disco
Inconveniente: aumenta la complejidad, porque es posible que
los mapas de los ficheros de paginación tengan que traerse a
memoria durante un fallo de página, lo que podría causar varios
fallos de página adicionales
Ventaja: no es necesario asignar hueco a las páginas que nunca
se paginan
Las páginas libres o reservadas nunca tienen asignado
hueco de intercambio (las referencias a ellas siempre causan fallos de
página)
Tema 4 Administraci´on de la memoria – p.113/128
Zona de intercambio (ii)
La zona de intercambio se organiza en ficheros de
paginación
Puede haber hasta 16 ficheros de paginación
Cada fichero de paginación tiene un tamaño inicial y un
tamaño máximo, hasta el que puede crecer en caso
necesario
Pueden crearse con el tamaño máximo al instalar el
sistema, para evitar que estén muy fragmentados
Posteriormente, se pueden crear nuevos ficheros de
intercambio desde el panel de control
El S.O. lleva el control de qué página virtual
corresponde a qué parte de qué fichero de paginación
El código del ejecutable no se pagina, se recuperará
del fichero binario ejecutable
Tema 4 Administraci´on de la memoria – p.114/128
Conceptos fundamentales
Entradas de la tabla de páginas
Las entradas de la tabla de páginas son diferentes
dependiendo de la arquitectura
Las páginas sin correspondencia también tienen
entradas diferentes
Los bits más importantes son el A, la página ha sido
referenciada, y el D, la página ha sido modificada
Un ejemplo de una entrada de páginas de un Pentium:
20 3
G
1
L
1
D
1
A
1
C
W
t
1
U
11
W
1
V
1
Page frame
Bits
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
Not
used
Tema 4 Administraci´on de la memoria – p.115/128
Conceptos fundamentales
Fallos de página
5 categorías de fallos de página:
1. La página no está comprometida ⇒ irrecuperable
2. Hubo una violación de protección ⇒ irrecuperable
3. Se ha escrito una página compartida ⇒ copiar la página en un
nuevo marco y aplicarle correspondencia de lectura/escritura
4. La pila necesita crecer ⇒ asignarle un nuevo marco de página y
aplicarle correspondencia en memoria, pero se necesita que esté
lleno de 0
5. La página está comprometida pero no tiene correspondencia ⇒
se localiza la página y se le aplica correspondencia en memoria
Tema 4 Administraci´on de la memoria – p.116/128
Gestión de la memoria en Windows 2000
Algoritmo de reemplazo de páginas
El sistema se esfuerza por mantener un número
considerable de páginas libres en memoria ⇒ fallos de
páginas se solucionan, al menos, con una operación de disco (y no con dos)
El verdadero algoritmo de reemplazo de páginas es el
que decide qué páginas se quitan a los procesos, y se
colocan en la lista de libres
El mecanismo de paginación se apoya en el concepto
de conjunto de trabajo:
Consiste en las páginas con correspondencia que están en la
memoria y a las que, por tanto, se accede sin generar un fallo de
página
Se describe con dos parámetros, su tamaño máximo y mínimo,
que pueden variar durante la ejecución del proceso
Tema 4 Administraci´on de la memoria – p.117/128
Algoritmo de reemplazo de páginas (ii)
Fallo de página:
Si el conjunto de trabajo del proceso es menor que su límite
mínimo, se le añade una nueva página
Si el conjunto de trabajo es mayor que su límite máximo, se
expulsa una página de su conjunto de trabajo (pero no de la
memoria) para que quepa la nueva página
El algoritmo es un híbrido entre local y global:
Utiliza un algoritmo de paginación local ⇒ evitar que un proceso
perjudique a otros acaparando memoria
Si un proceso está paginando de forma frenética (y los demás
no) el sistema puede incrementar el tamaño máximo de su
conjunto de trabajo
Un conjunto de trabajo no puede usar los últimos 512
marcos libres, es un límite absoluto (aunque sólo esté ese
proceso)
Tema 4 Administraci´on de la memoria – p.118/128
Algoritmo de reemplazo de páginas (iii)
Administrador de conjuntos de equilibrio ⇒ hilo a
nivel del núcleo que cada segundo verifica si hay
suficientes páginas libres
Si no hay suficientes páginas libres, inicia el hilo
administrador de conjuntos de trabajo, que examina
los conjuntos de trabajo y recupera páginas
1. Determina en qué orden examinará los procesos (los grandes e
inactivos durante mucho tiempo, se examinan antes que los pequeños activos; el
proceso en primer plano es el último en ser examinado)
2. Examina los procesos en el orden escogido:
Si el conjunto de trabajo es menor que su mínimo, o si ha tenido más de un
cierto número de fallos de página desde la última inspección, no se hace nada
De lo contrario se le quitan una o más páginas
Todas las páginas se examinan por turnos
Tema 4 Administraci´on de la memoria – p.119/128
Algoritmo de reemplazo de páginas (iv)
Administrador de conjuntos de trabajo, continúa. . .
Sistema uniprocesador:
Si el bit de referencia está apagado, incrementa un contador asociado a la
página
Si el bit de referencia está activo, el contador se establece a 0
Una vez examinadas todas, se liberan las páginas con los contadores más
altos
Continúa examinando procesos hasta recuperar suficientes páginas y acaba
Si dio una pasada completa y no liberó suficientes, efectúa otra más agresiva,
“recortando”, incluso, conjuntos de trabajo por debajo de sus mínimos
Sistema multiprocesador ⇒ se liberan las páginas más antiguas
El S.O. posee páginas y un conjunto de trabajo que puede
recortarse. Sin embargo ciertas partes del código y la reserva no
paginada están fijas en la memoria (no pueden paginarse)
¿Cuántas páginas liberar? ⇒ función complicada (tamaño de la
RAM, escasez de memoria, relación del tamaño actual del conjunto de trabajo y
los tamaños máximo y mínimo, etc.)
Tema 4 Administraci´on de la memoria – p.120/128
Gestión de la memoria en Windows 2000
Administración de memoria física
El sistema gestiona cuatro listas de marcos libres
Cada marco en memoria está en uno o más conjuntos
de trabajo, o bien en una de estas 4 listas
Una quinta lista contiene los marcos de página
físicamente defectuosos que pudiese haber
El administrador de conjuntos de trabajo y otros hilos
(demonios) del kernel pasan páginas entre los
conjuntos de trabajo y las diversas listas
Tema 4 Administraci´on de la memoria – p.121/128
Administración de memoria física (ii)
Las cuatro listas son:
Listas de páginas modificadas contienen páginas que hace
poco se expulsaron de un conjunto de trabajo, todavía están en
la memoria y asociadas con el proceso que las estaba usando,
pero NO tienen copia válida en disco
Lista de páginas de reserva limpias contienen páginas que
hace poco se expulsaron de un conjunto de trabajo, todavía
están en la memoria y asociadas con el proceso que las estaba
usando, y además tienen una copia válida en disco (por tanto
pueden abandonarse cuando se desee)
Lista de páginas libres que contiene páginas limpias que ya no
están asociadas a ningún proceso
Lista de páginas en ceros, están libres, no están asociadas a
ningún proceso, y además ya se han llenado de ceros
Tema 4 Administraci´on de la memoria – p.122/128
Administración de memoria física (iii)
Working
sets
Zero page needed (8)
Page read in (6)
Soft page fault (2)
Mod-
ified
page
list
Standby
page
list
Free
page
list
Zeroed
page
list
Bad
RAM
page
list
Top
Bottom
Modified
page
writer(4)
Dealloc(5) Zero
page
thread (7)
Page evicted from a working set (1) Process exist (3)
Tema 4 Administraci´on de la memoria – p.123/128
Administración de memoria física (iv)
Las posibles transiciones son:
1. El administrador de conjuntos de trabajo le quita una página a un
conjunto de trabajo, y la coloca en el fondo de la lista de reserva
o de la modificada, dependiendo de su estado de limpieza
2. Las páginas de las listas de reserva y modificadas siguen siendo
válidas. Si se presenta un fallo de página y se necesita una de
estas páginas, se saca de la lista y se vuelve a colocar en su
conjunto de trabajo, sin necesidad de hacer E/S
3. Cuando finaliza un proceso, ya no genera fallos de página para
usar sus páginas no compartidas. Se colocan en la lista de libres
1. Cada cierto tiempo, un hilo del kernel busca procesos que no
hayan tenido ningún hilo activo durante cierto tiempo. Si los
encuentra, anula la fijación de sus pilas de kernel y sus páginas
pasan a las listas de reservadas o modificadas
Tema 4 Administraci´on de la memoria – p.124/128
Administración de memoria física (v)
Las posibles transiciones son, continúa. . .
4. De forma periódica, dos hilos del núcleo, comprueban si hay
suficientes páginas limpias. Si no hay suficientes, toman páginas
de la parte superior de la lista modificada, las escriben en disco y
luego las pasan a la lista de reserva
5. Si un proceso elimina la correspondencia de una página, ésta
deja de estar asociada con un proceso y puede colocarse en la
lista de libre (siempre que no se trate de una página compartida)
6. Si un fallo de página requiere un marco de página, se toma de la
lista libre, si es posible (salvo que sea para la pila)
7. En ocasiones se necesitan marcos de páginas llenas de 0 (p.e.
para las pilas). Un hilo del núcleo borra paginas que están en la
lista libres, y las pasa a la lista de páginas en 0
8. Se solicita una página de la lista de 0
Tema 4 Administraci´on de la memoria – p.125/128
Administración de memoria física (vi)
Surgen una serie de decisiones sutiles a tomar:
Si se necesita un marco, y no quedan en la lista de libres, ¿qué
es mejor, tomar uno de la lista de reserva (que se podría utilizar
posteriormente) o de la lista de 0 (que costó un trabajo ponerlo a 0)?
¿Cómo de agresivos deben ser los demonios que pasan páginas
de la lista de modificada a la lista de reserva?
Es mejor contar con páginas limpias que modificadas
Una política agresiva supone realizar mucha E/S de disco
Una página recién limpia puede ser solicitada de nuevo por el
proceso
En general, resuelve este tipo de conflictos aplicando heurísticas
complejas, haciendo conjeturas, considerando precedentes
históricos, usando métodos prácticos y basándose en
parámetros controlados por el administrador
Tema 4 Administraci´on de la memoria – p.126/128
Administración de memoria física (vii)
Mantiene una base de datos de marcos de páginas,
con tantas entradas como marcos hay:
Sirve para llevar el control de todas las páginas y todas las listas
Esta tabla está indizada por el número de marco de página
Las entradas tienen una longitud fija, aunque hay diferentes
formatos para diferentes entradas. (P.e.: entradas válidas o no
válidas)
Las entradas válidas mantienen:
El estado de la página
Un contador que indica cuántas tablas de páginas apuntan a esa entrada
Si pertenece a un conjunto de trabajo, se indica a cuál
Un apuntador a la tabla de páginas que apunta a ese marco, si existe (los
marcos compartidos se manejan de forma especial)
Un enlace a la siguiente página de la lista, (si la hay)
Varios campos e indicadores, como lectura en curso, escritura en curso, etc.
Tema 4 Administraci´on de la memoria – p.127/128
Base de datos de marcos de página
X
X
X
X
State Cnt WS PTOther Next
Clean
Dirty
Clean
Active
Clean
Dirty
Active
Dirty
Free
Free
Zeroed
Active
Active
Zeroed
13
12
11 20
10
8 4
7
6
5
4
3 6
2
1 14
0
14
Standby
Modified
Free
Zeroed
Page tables
Page frame database
Zeroed
List headers
9
Tema 4 Administraci´on de la memoria – p.128/128

Más contenido relacionado

La actualidad más candente

Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosAbimael hernandez
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoriaALASBLANKS
 
Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.Freddy Patricio Ajila Zaquinaula
 
Concurrencia interbloqueo e inanición
Concurrencia interbloqueo e inaniciónConcurrencia interbloqueo e inanición
Concurrencia interbloqueo e inaniciónjhonfgarcia
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria VirtualAna Brooks
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srtCarlos Solano
 
Optimizacion de la busqueda de discos
Optimizacion de la busqueda de discosOptimizacion de la busqueda de discos
Optimizacion de la busqueda de discosJazmín Limón
 
2 manipulacion de datos..
2 manipulacion de datos..2 manipulacion de datos..
2 manipulacion de datos..alithu1
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareT.I.C
 

La actualidad más candente (20)

analisis de aplicaciones web
analisis de aplicaciones webanalisis de aplicaciones web
analisis de aplicaciones web
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmos
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoria
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.
 
Concurrencia interbloqueo e inanición
Concurrencia interbloqueo e inaniciónConcurrencia interbloqueo e inanición
Concurrencia interbloqueo e inanición
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria Virtual
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Optimizacion de la busqueda de discos
Optimizacion de la busqueda de discosOptimizacion de la busqueda de discos
Optimizacion de la busqueda de discos
 
Casos de estudio para diagramas de clases
Casos de estudio para diagramas de clasesCasos de estudio para diagramas de clases
Casos de estudio para diagramas de clases
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Segmentacion de memoria
Segmentacion de memoriaSegmentacion de memoria
Segmentacion de memoria
 
Linea de productos software
Linea de productos softwareLinea de productos software
Linea de productos software
 
2 manipulacion de datos..
2 manipulacion de datos..2 manipulacion de datos..
2 manipulacion de datos..
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
Reglas Negocio
Reglas NegocioReglas Negocio
Reglas Negocio
 
PROYECTO FINAL ANÀLISIS Y DISEÑO ll
PROYECTO FINAL ANÀLISIS Y DISEÑO llPROYECTO FINAL ANÀLISIS Y DISEÑO ll
PROYECTO FINAL ANÀLISIS Y DISEÑO ll
 

Destacado

Reemplazo de paginas wsclock
Reemplazo de paginas wsclockReemplazo de paginas wsclock
Reemplazo de paginas wsclockArthur Punk Rock
 
Paginacion
PaginacionPaginacion
PaginacionNTKMG
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónNatalia Ludeña
 
Estructura física de la computadora
Estructura física de la computadoraEstructura física de la computadora
Estructura física de la computadoraLeonardo Maciel
 
Expo Sistemas Operativos
Expo Sistemas OperativosExpo Sistemas Operativos
Expo Sistemas Operativosguestaf356ab6
 
Tablas de proceso (1)
Tablas de proceso (1)Tablas de proceso (1)
Tablas de proceso (1)thyago1211
 
Memoria virtual...
Memoria virtual...Memoria virtual...
Memoria virtual...osjavier
 
Memoriavirtual
MemoriavirtualMemoriavirtual
Memoriavirtualosjavier
 
Paginacion sobre demanda y sobre paginacion
Paginacion sobre demanda y sobre paginacionPaginacion sobre demanda y sobre paginacion
Paginacion sobre demanda y sobre paginacionGuani Cesar
 
administración de memoria y archivos
administración de memoria y archivosadministración de memoria y archivos
administración de memoria y archivosSamir Barrios
 
Seg y pag en diapositivas
Seg y pag en diapositivasSeg y pag en diapositivas
Seg y pag en diapositivasmemp1234
 
Administracion de memoria virtual
Administracion de memoria virtualAdministracion de memoria virtual
Administracion de memoria virtualclaupam27
 

Destacado (20)

Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Reemplazo de paginas wsclock
Reemplazo de paginas wsclockReemplazo de paginas wsclock
Reemplazo de paginas wsclock
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Paginacion
PaginacionPaginacion
Paginacion
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y Fragmentación
 
Memoria Soporte Hw
Memoria Soporte HwMemoria Soporte Hw
Memoria Soporte Hw
 
Pag Demanda Reemplazamiento
Pag Demanda ReemplazamientoPag Demanda Reemplazamiento
Pag Demanda Reemplazamiento
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Presentación1
Presentación1Presentación1
Presentación1
 
Administracion de redes
Administracion de redesAdministracion de redes
Administracion de redes
 
Estructura física de la computadora
Estructura física de la computadoraEstructura física de la computadora
Estructura física de la computadora
 
Expo Sistemas Operativos
Expo Sistemas OperativosExpo Sistemas Operativos
Expo Sistemas Operativos
 
Tablas de proceso (1)
Tablas de proceso (1)Tablas de proceso (1)
Tablas de proceso (1)
 
Memoria virtual...
Memoria virtual...Memoria virtual...
Memoria virtual...
 
Memoriavirtual
MemoriavirtualMemoriavirtual
Memoriavirtual
 
Metodo de Paginaciòn
Metodo de PaginaciònMetodo de Paginaciòn
Metodo de Paginaciòn
 
Paginacion sobre demanda y sobre paginacion
Paginacion sobre demanda y sobre paginacionPaginacion sobre demanda y sobre paginacion
Paginacion sobre demanda y sobre paginacion
 
administración de memoria y archivos
administración de memoria y archivosadministración de memoria y archivos
administración de memoria y archivos
 
Seg y pag en diapositivas
Seg y pag en diapositivasSeg y pag en diapositivas
Seg y pag en diapositivas
 
Administracion de memoria virtual
Administracion de memoria virtualAdministracion de memoria virtual
Administracion de memoria virtual
 

Similar a Tema4

Capitulo 8 Memoria Principal
Capitulo 8 Memoria PrincipalCapitulo 8 Memoria Principal
Capitulo 8 Memoria Principallagm000
 
Gestion de particiones de memoria.ppt
Gestion de particiones de memoria.pptGestion de particiones de memoria.ppt
Gestion de particiones de memoria.pptLuis619096
 
Gestion De Memoria
Gestion De MemoriaGestion De Memoria
Gestion De Memoriaguestaff6d2
 
administracion de memoria y archivos
administracion de memoria y archivosadministracion de memoria y archivos
administracion de memoria y archivosSamir Barrios
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosJammil Ramos
 
Administración de la memoria
Administración de la memoriaAdministración de la memoria
Administración de la memoriaBeatriz Pérez
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtualakany
 
Tema_4__La_memoria_virtual.pdf
Tema_4__La_memoria_virtual.pdfTema_4__La_memoria_virtual.pdf
Tema_4__La_memoria_virtual.pdfYirmelSanchez
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoriagiovatovar
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtualjolhaln
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtualjolhaln
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2giovatovar
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2giovatovar
 

Similar a Tema4 (20)

Gestión de memoria
Gestión de memoriaGestión de memoria
Gestión de memoria
 
Memoria en los SO
Memoria en los SOMemoria en los SO
Memoria en los SO
 
Capitulo 8 Memoria Principal
Capitulo 8 Memoria PrincipalCapitulo 8 Memoria Principal
Capitulo 8 Memoria Principal
 
Gestion de particiones de memoria.ppt
Gestion de particiones de memoria.pptGestion de particiones de memoria.ppt
Gestion de particiones de memoria.ppt
 
4679923.ppt
4679923.ppt4679923.ppt
4679923.ppt
 
Gestion De Memoria
Gestion De MemoriaGestion De Memoria
Gestion De Memoria
 
Memoria
MemoriaMemoria
Memoria
 
Procesador sparc, memoria virtual
Procesador sparc, memoria virtualProcesador sparc, memoria virtual
Procesador sparc, memoria virtual
 
Administración de memoria
Administración de memoriaAdministración de memoria
Administración de memoria
 
administracion de memoria y archivos
administracion de memoria y archivosadministracion de memoria y archivos
administracion de memoria y archivos
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Capitulo3
Capitulo3Capitulo3
Capitulo3
 
Administración de la memoria
Administración de la memoriaAdministración de la memoria
Administración de la memoria
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Tema_4__La_memoria_virtual.pdf
Tema_4__La_memoria_virtual.pdfTema_4__La_memoria_virtual.pdf
Tema_4__La_memoria_virtual.pdf
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoria
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtual
 
Sistemas operativos memoria virtual
Sistemas operativos memoria virtualSistemas operativos memoria virtual
Sistemas operativos memoria virtual
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2
 

Más de Juan Timoteo Cori

Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Juan Timoteo Cori
 
Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaJuan Timoteo Cori
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialJuan Timoteo Cori
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarJuan Timoteo Cori
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Juan Timoteo Cori
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad Juan Timoteo Cori
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Juan Timoteo Cori
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesJuan Timoteo Cori
 
Tesis web transaccionales-rof
Tesis web transaccionales-rofTesis web transaccionales-rof
Tesis web transaccionales-rofJuan Timoteo Cori
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresJuan Timoteo Cori
 

Más de Juan Timoteo Cori (20)

Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01
 
multas operadores
multas operadoresmultas operadores
multas operadores
 
Tupa2009 anexo1
Tupa2009 anexo1Tupa2009 anexo1
Tupa2009 anexo1
 
Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieria
 
Estándares tipo-valorativo
Estándares tipo-valorativoEstándares tipo-valorativo
Estándares tipo-valorativo
 
Convalidacion acreditacion
Convalidacion acreditacionConvalidacion acreditacion
Convalidacion acreditacion
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrial
 
essalud
essaludessalud
essalud
 
Nivel cump metas
Nivel cump metasNivel cump metas
Nivel cump metas
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomar
 
requerimientos
requerimientos requerimientos
requerimientos
 
Conflicto social
Conflicto socialConflicto social
Conflicto social
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016
 
aplicaciones moviles
aplicaciones  movilesaplicaciones  moviles
aplicaciones moviles
 
Variables internas
Variables internasVariables internas
Variables internas
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
 
Tesis web transaccionales-rof
Tesis web transaccionales-rofTesis web transaccionales-rof
Tesis web transaccionales-rof
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyares
 

Último

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señorkkte210207
 

Último (6)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 

Tema4

  • 1. Tema 4 Administración de la memoria Pilar Gonz´alez F´erez Tema 4 Administraci´on de la memoria – p.1/128
  • 2. Índice Introducción (Carretero [C4.1, C4.2], Stallings [C7.1]) Partición de memoria (Stallings [C7.2], Tanenbaum [C4.2.1 y C.4.2.2]) Memoria virtual con paginación (Tanenbaum [C4.3, C4.4, C4.6]) Memoria virtual con segmentación (Tanenbaum [C4.8]) Gestión de la memoria en Linux Gestión de la memoria en Windows 2000 Tema 4 Administraci´on de la memoria – p.2/128
  • 3. Índice 1. Introducción 1.1. Objetivos del sistema de gestión de memoria (Carretero [C4.1], Stallings [C7.1]) 1.2. Modelo de memoria de un proceso (Carretero [C4.2]) Tema 4 Administraci´on de la memoria – p.3/128
  • 4. 1. Introducción Memoria principal: Recurso a repartir entre el S.O. y los procesos Sistema con monoprogramación ⇒ memoria principal divida entre el S.O. y el proceso en ejecución Sistema con multiprogramación ⇒ memoria principal dividida en dos partes: Una parte para el sistema operativo El resto repartida entre los procesos en ejecución S.O. ⇒ reparto de memoria ⇒ eficiente, transparente y seguro, proporcionando un espacio independiente a cada proceso y evitando interferencias entre ellos Sistema de gestión o administración de memoria ⇒ la parte del S.O. que lleva a cabo, dinámicamente, las tareas de reparto y control de la memoria Tema 4 Administraci´on de la memoria – p.4/128
  • 5. 1.1 Objetivos del sistema de gestión de memoria Sistemas con multiprogramación Requisitos deseables a cumplir por cualquier política de administración de memoria: Reubicación Protección Compartición Organización lógica de los programas Organización física Maximizar el rendimiento Mapas de memoria de los procesos Tema 4 Administraci´on de la memoria – p.5/128
  • 6. Reubicación A priori no se puede conocer la posición de memoria en la que se va a cargar un programa al ejecutarse Además, al reanudar un proceso ⇒ nueva posición de memoria (es muy poco probable que pudiese ocupar la misma posición que tenía antes de ser suspendido) El proceso se ha de reubicar en un área de memoria: Traducir las direcciones de memoria a las que hace referencia, direcciones lógicas, en las direcciones de la memoria principal asignadas al mismo, direcciones físicas La MMU (unidad de administración de memoria) ⇒ realizará la traducción de las direcciones Se crea un espacio lógico (o mapa) independiente para cada proceso proyectándolo sobre la parte correspondiente de la memoria principal de acuerdo con la función de traducción Tema 4 Administraci´on de la memoria – p.6/128
  • 7. Protección 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 lógicos disjuntos La reubicación complica la protección Todas las referencias a memoria de un proceso deben comprobarse durante su ejecución ⇒ sólo accedan a su espacio de memoria La protección de memoria se tiene que satisfacer a nivel hardware, y no software (El S.O. tendría que tomar el control en cada referencia a memoria, para realizar la comprobación) El mecanismo de protección suele estar integrado en la función de traducción Tema 4 Administraci´on de la memoria – p.7/128
  • 8. Compartición Debe haber flexibilidad para permitir que varios procesos accedan a un misma zona de memoria: Dos procesos ejecutando el mismo programa ⇒ mismo código Varios procesos pueden utilizar una misma estructura de datos Permitir que direcciones lógicas de dos o más procesos, posiblemente distintas entre sí, se correspondan con la misma dirección física ⇒ compartir memoria La compartición de memoria no debe comprometer la protección básica El mecanismo empleado para la reubicación es la base para las capacidades de compartición Tema 4 Administraci´on de la memoria – p.8/128
  • 9. Organización lógica de los programas Programas ⇒ organizados en módulos, cada uno con sus características (algunos son modificables y otros no) Si el S.O. y el HW pueden tratar de forma efectiva los programas de usuario y los datos en forma de módulos, se tienen una serie de ventajas: Se pueden escribir y compilar independientemente, y el sistema resuelve en ejecución todas las referencias de un módulo a otro Distintos grados de protección: sólo lectura, sólo ejecución Posibilidad de compartir módulos (más fácil para el usuario) Segmentación ⇒ herramienta que más fácilmente satisface estas necesidades Tema 4 Administraci´on de la memoria – p.9/128
  • 10. Organización física La memoria está organizada, al menos, en dos niveles: Principal ⇒ acceso más rápido, coste más alto y volátil Secundaria ⇒ más lenta y barata, y no volátil Secundaria ⇒ almacenar, a largo plazo, programas y datos Principal ⇒ mantener los programas y datos de uso actual La organización del flujo de información entre la memoria principal y la secundaria es responsabilidad del S.O. ⇒ Esencia de la gestión de memoria Tema 4 Administraci´on de la memoria – p.10/128
  • 11. Maximizar el rendimiento El gestor de memoria debe maximizar el número de procesos en memoria, y minimizar el desperdicio inherente al reparto Política de asignación ⇒ decidir qué direcciones de memoria se asignan para satisfacer una petición La propia gestión de memoria supone un gasto de memoria Óptimo: cualquier dirección lógica ⇒ traducida por cualquier dirección física (¡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 paginación Para optimizar el rendimiento ⇒ memoria virtual Tema 4 Administraci´on de la memoria – p.11/128
  • 12. Mapas de memoria de los procesos Problema: los mapas de memoria de los procesos son muy grandes y no caben en memoria Inicialmente la memoria era muy cara ⇒ los procesos se veían limitados por su tamaño. Una solución fue: Overlays ⇒ dividir el programa en una serie de fases que se ejecutan sucesivamente, pero estando residente en memoria sólo una fase. Cada fase, al terminar, carga la siguiente fase, y le cede el control. Memoria virtual ⇒ permite proporcionar a un proceso, transparentemente, un mapa de memoria mayor que la memoria principal La disponibilidad de memorias mayores permite a los programadores crear aplicaciones con mayores necesidades de memoria ⇒ sigue siendo necesario el uso de la memoria virtual Tema 4 Administraci´on de la memoria – p.12/128
  • 13. 1.2 Modelo de memoria de un proceso Fases en la generación de un ejecutable Aplicación ⇒ conjunto de módulos de código que han de ser procesados para obtener el ejecutable: Compilación ⇒ genera el código máquina de cada módulo fuente, asignando direcciones a los símbolos definidos en el módulo, y resolviendo las referencias a los mismos Montaje o enlace ⇒ genera un ejecutable agrupando todos los archivos objeto y resolviendo las referencias entre módulos y a símbolos de bibliotecas Bibliotecas de objetos Colección de objetos relacionados, normalmente, entre sí Hay un conjunto de bibliotecas predefinidas que proporcionan servicios a las aplicaciones, como los correspondientes al S.O. Tema 4 Administraci´on de la memoria – p.13/128
  • 14. 1.2.1 Fases de la generación de un ejecutable Bibliotecas estáticas ⇒ las referencias a sus símbolos se resuelven en la fase de montaje o enlace Desventajas del enlace estático de las bibliotecas: El archivo ejecutable puede tener un tamaño considerable (código aplicación + código de las funciones externas) Todos los programas que usen una determinada función de biblioteca, tendrán una copia del código (p.e. la función printf) Gran desperdicio de memoria ⇒ en ejecuciones simultáneas de programas que usan las mismas funciones de biblioteca, habrá múltiples 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) Tema 4 Administraci´on de la memoria – p.14/128
  • 15. 1.2.1 Fases de la generación de un ejecutable Bibliotecas dinámicas o enlazadas dinámicamente El proceso de enlace se aplaza y se realiza en tiempo de ejecución del programa ⇒ enlace dinámico implícito Fase del montaje ⇒ se anota el nombre de la biblioteca para cargarla y enlazarla al ejecutarse Se incluye un módulo de montaje dinámico ⇒ realizará la carga y montaje de la biblioteca en la primera referencia a ella en tiempo de ejecución En el ejecutable: Las referencias a símbolos de la biblioteca se corresponden con símbolos en el módulo de montaje dinámico 1a referencia a uno de esos símbolos ⇒ activación del módulo ⇒ carga y montaje de la biblioteca También se resuelve la referencia a ese símbolo, para posteriores usos Podría suponer modificar durante la ejecución el código (en principio de sólo lectura) Tema 4 Administraci´on de la memoria – p.15/128
  • 16. Bibliotecas dinámicas Ventajas: Tamaño de los ejecutables ⇒ disminuye considerablemente Rutinas de biblioteca ⇒ únicamente en un archivo Varios procesos en ejecución ⇒ compartir el código de la biblioteca Actualización inmediata Si se producen cambios en la interfaz ⇒ no podrá usar la biblioteca. Posible solución: Mantener número de versión asociado a cada biblioteca En el montaje guardar el número de versión en el fichero ejecutable, para usarlo en el enlace durante la ejecución Cambio de interfaz ⇒ nueva versión de la biblioteca Tema 4 Administraci´on de la memoria – p.16/128
  • 17. Bibliotecas dinámicas (ii) ¿Cómo compartir el código de una biblioteca dinámica entre distintos procesos? Tres posibles alternativas: Establecer un rango de direcciones predeterminado y específico para cada biblioteca dinámica. Todos los procesos incluirán ese rango en su mapa de memoria. Poco flexible ⇒ limita el número de bibliotecas Es posible encontrar procesos con mapas de memoria grandes, pero con zonas sin utilizar Reubicar las referencias presentes en el código de la biblioteca durante la carga de la misma, ajustándose 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 código por estar adaptado a esa zona de memoria Tema 4 Administraci´on de la memoria – p.17/128
  • 18. Bibliotecas dinámicas (iii) Compartiendo las bibliotecas . . . Código de biblioteca independiente de la posición (PIC, Position Independent Code), usando direccionamientos relativos a un registro, de manera que no se ve afectada mientras se ejecuta: La biblioteca puede residir en cualquier zona del mapa y además se comparte El inconveniente es que es un poco menos eficiente Al usar las bibliotecas dinámicas, el tiempo de ejecución del programa puede aumentar ligeramente El mecanismo es transparente al usuario Suele haber versiones estáticas y dinámicas de las bibliotecas: El montador por defecto selecciona las dinámicas Se pueden seleccionar las estáticas, pidiéndolo explícitamente A veces es necesario generar ejecutables autocontenidos Tema 4 Administraci´on de la memoria – p.18/128
  • 19. 1.2.1 Fases de la generación de un ejecutable Montaje explícito de bibliotecas dinámicas La aplicación no conoce durante el montaje qué bibliotecas necesitará P.e.: navegador de Internet que maneja ficheros de distintos formatos, y usa funciones de varias bibliotecas para procesar cada uno de los formatos. Un nuevo tipo de fichero ⇒ volver a montarlo En tiempo de ejecución se decide qué biblioteca dinámica se necesita y se solicita su montaje y carga ⇒ enlace dinámico explícito Debe hacer uso de los servicios que ofrece el sistema para realizar esta solicitud explícita El mecanismo de carga y montaje de la biblioteca dinámica deja de ser transparente a la aplicación Las bibliotecas tienen normalmente APIs comunes (p. ej. codecs, plugins, etc.) Tema 4 Administraci´on de la memoria – p.19/128
  • 20. 1.2.1 Fases de la generación de un ejecutable Formato del ejecutable Formato típico de un ejecutable: Tema 4 Administraci´on de la memoria – p.20/128
  • 21. Formato del ejecutable Cabecera ⇒ información de control para interpretar el contenido del ejecutable. Entre otras cosas contiene: Número mágico ⇒ identifica al ejecutable Dirección del punto de entrada del programa (primer valor del contador del programa) Tabla para describir las secciones en el ejecutable Secciones ⇒ cada ejecutable tiene un conjunto de distinto contenido. Las tres más importantes: Código (texto) ⇒ el código 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 sección aparece descrita, pero en el ejecutable no se almacena, ya que su contenido es irrelevante. Únicamente se indica su tamaño.) Tema 4 Administraci´on de la memoria – p.21/128
  • 22. 1.2 Modelo de memoria de un proceso Mapa de memoria de un proceso Está formado por distintas regiones o segmentos Objeto de memoria ⇒ sección del ejecutable La asociación de una región de un proceso con un objeto de memoria permite al proceso tener acceso a la información contenida en el objeto Al ejecutar: se crean varias regiones dentro del mapa con la información del ejecutable: Cada sección del ejecutable ⇒ un objeto de memoria Regiones iniciales del proceso ⇒ secciones del ejecutable Región ⇒ zona contigua caracterizada por la dirección de inicio dentro del mapa de memoria y su tamaño Tema 4 Administraci´on de la memoria – p.22/128
  • 23. 1.2.2 Mapa de memoria de un proceso Propiedades y características de las regiones: Soporte de una región ⇒ objeto de memoria asociado a la región Soporte en archivo ⇒ almacenado en un archivo o en parte del mismo Sin soporte ⇒ no tiene contenido inicial, (p.ej. regiones de datos sin inicializar) Tipo de uso compartido Privada ⇒ sólo accesible por el proceso Compartida ⇒ puede ser compartido por varios procesos Protección ⇒ tipo de acceso permitido Lectura Ejecución Escritura Tamaño fijo o variable Tamaño variable ⇒ se suele indicar si crece hacia direcciones mayores o menores Tema 4 Administraci´on de la memoria – p.23/128
  • 24. 1.2.2 Mapa de memoria de un proceso Regiones de un mapa de memoria inicial: Código (o texto): compartido, lectura y ejecución, tamaño fijo Datos con valor inicial: privado, lectura y escritura, tamaño fijo Datos sin valor inicial: privado, lectura y escritura, tamaño fijo Pila: privado, lectura y escritura, tamaño variable (crece cuando se producen llamadas a fun- ciones y decrece cuando final- izan) Tema 4 Administraci´on de la memoria – p.24/128
  • 25. 1.2.2 Mapa de memoria de un proceso Modelo de memoria dinámico ⇒ no variable de regiones que pueden añadirse o eliminarse durante la ejecución del proceso. Se pueden crear nuevas regiones: Heap ⇒ soporte para la memoria dinámica, reservada en tiempo de ejecución Archivos proyectados ⇒ se crea una región asociada al fichero Memoria compartida ⇒ se crea una región asociada a la zona memoria compartida Pilas para hilos ⇒ cada hilo necesita su pila, con las mismas características que la pila del proceso Tema 4 Administraci´on de la memoria – p.25/128
  • 26. 1.2 Modelo de memoria de un proceso Operaciones sobre regiones Durante la vida de un proceso, su mapa de memoria va evolucionando, y con él las regiones que incluye Las operaciones que se pueden realizar sobre una región dentro del mapa de un proceso: Crear una región asociándola a un objeto de memoria Eliminar una región, liberando todos los recursos vinculados a ella Cambiar de tamaño una región, por petición explícita del proceso (Heap) o implícita (pila) Duplicar una región, crea una nueva región, vinculada a un objeto de memoria, que es copia del anterior (base del fork) Tema 4 Administraci´on de la memoria – p.26/128
  • 27. Índice 2. Partición de la memoria (Stallings [C7.2]) 2.1. Particiones estáticas 2.2. Particiones dinámicas 2.3. Sistema de colegas 2.4. Relocalización y protección 2.5. Administración de memoria (Tanenbaum [C4.2.1 y C.4.2.2]) Tema 4 Administraci´on de la memoria – p.27/128
  • 28. 2. Partición de la memoria Particiones estáticas S.O. ocupa una posición fija de la memoria principal Resto de la memoria ⇒ disponible para los procesos ⇒ dividida en particiones con límites fijos Particiones de igual tamaño: Cualquier proceso, con un tamaño menor o igual que el de la partición, puede cargarse en cualquier partición libre Los procesos bloqueados, pueden suspenderse, y traer nuevos procesos a sus particiones El tamaño de las particiones condiciona el tamaño máximo de los programas. Programas más grandes ⇒ usando overlays Fragmentación interna ⇒ parte de la memoria de la partición será desperdiciada (no se puede asignar a otro proceso). El uso de la memoria es extremadamente ineficiente Tema 4 Administraci´on de la memoria – p.28/128
  • 29. 2.1 Particiones estáticas Particiones de distinto tamaño⇒ reducen los problemas Algoritmo de ubicación para particiones de distinto tamaño: (Particiones del mismo tamaño ⇒ trivial) Una cola por partición, y cada proceso asignado a la partición más pequeña en la que quepa: Minimiza la fragmentación interna No es óptimo desde el punto de vista global ⇒ particiones sin usar y otras con grandes colas de espera Una única cola para todos los procesos. Al cargar un proceso en memoria se selecciona la partición más pequeña disponible Desventajas de las particiones estáticas Número de particiones ⇒ número de procesos activos Trabajos pequeños ⇒ mucha fragmentación interna Tema 4 Administraci´on de la memoria – p.29/128
  • 30. 2.1 Particiones estáticas (a) Varias colas de entrada Partición 4 Partición 3 Partición 2 Partición 1 operativo Sistema Partición 4 Partición 3 Partición 2 Partición 1 operativo Sistema 700K 400K 100K 0 (b) Una única cola de entrada Tema 4 Administraci´on de la memoria – p.30/128
  • 31. 2. Partición de la memoria Particiones dinámicas Particiones variables en número y longitud Al cargar un proceso se le asigna exactamente tanta memoria como necesita Tema 4 Administraci´on de la memoria – p.31/128
  • 32. 2.2 Particiones dinámicas Fragmentación externa: Este método produce numerosos huecos (o fragmentos) pequeños en memoria Memoria ⇒ muy fragmentada y decae su rendimiento Este fenómeno se conoce como fragmentación externa ⇒ la memoria externa a todas las particiones se fragmenta cada vez más, limitando el tamaño de los procesos que la pueden usar Compactación ⇒ de vez en cuando el S.O. desplaza los procesos para que estén contiguos ⇒ la memoria queda libre en un único hueco. Consume mucho tiempo ⇒ desperdicia tiempo del procesador Necesita la capacidad de reubicación dinámica Tema 4 Administraci´on de la memoria – p.32/128
  • 33. 2.2 Particiones dinámicas Algoritmo de ubicación ⇒ intentar evitar la fragmentación externa (evitando la necesidad de compactación) Mejor ajuste (best-fit) ⇒ Tamaño más próximo al solicitado Tiene los peores resultados y genera huecos demasiado pequeños Primer ajuste (first-fit) ⇒ Primer bloque disponible suficientemente grande (recorre desde el principio) El más sencillo y rápido, y con buenos resultados. Genera pequeñas particiones en las primeras posiciones de la memoria Siguiente ajuste (next-fit) ⇒ Siguiente bloque disponible suficientemente grande (busca desde la última posición) Peores resultados que el algoritmo del primer ajuste, necesita compactación más frecuentemente Peor en ajustarse (worst-fit) Curiosamente, ofrece buenos resultados Cuando todos los procesos estén bloqueados ⇒ Algoritmos de reemplazo ⇒ decidir cuál se suspende Tema 4 Administraci´on de la memoria – p.33/128
  • 34. 2. Particiones de memoria Sistema de colegas Presenta un equilibrio razonable para superar las desventajas de los esquemas de partición fija y variable Los bloques de memoria disponibles son de tamaño 2K, con L ≤ K ≤ U, donde: 2L = tamaño de bloque más pequeño asignable 2U = tamaño de bloque más grande asignable Inicialmente, la memoria disponible se trata como un bloque de tamaño máximo 2U Mantiene en todo momento una lista de huecos (bloques no asignados) para cada tamaño 2i Tema 4 Administraci´on de la memoria – p.34/128
  • 35. 2.3 Sistema de colegas Supongamos que se realiza una solicitud de tamaño S Si 2U−1 < S ≤ 2U ⇒ se le asigna el bloque entero 2U En caso contrario: Se divide el bloque en dos colegas de igual tamaño 2U−1 Si 2U−2 < S ≤ 2U−1 ⇒ se le asigna uno de los colegas 2U−1 En caso contrario, uno de los colegas se divide por la mitad nuevamente, de tamaño 2U−2 El proceso continúa hasta que el bloque más pequeño sea mayor o igual que S Cuando una pareja de colegas de la lista i pasa a estar libre, se les elimina de esa lista y se unen en un sólo bloque de la lista (i + 1) Tema 4 Administraci´on de la memoria – p.35/128
  • 36. 2.3 Sistema de colegas Tema 4 Administraci´on de la memoria – p.36/128
  • 37. 2.3 Sistema de colegas Tema 4 Administraci´on de la memoria – p.37/128
  • 38. 2.3 Sistema de colegas Dada una solicitud de tamaño k, con 2i−1 < k ≤ 2i , para encontrar un hueco de tamaño 2i : void conseguir_hueco(int i) { if (i == (U+1)) return ERROR; if (vacia(lista_i)) { conseguir_hueco(i+1); dividir_hueco_en_colegas; poner_colegas_en_lista_i; } coger_primer_hueco_de_la_lista_i; } Se usa en sistemas paralelos para asignar y liberar programas en paralelo UNIX usa una forma modificada del sistema de colegas para la asignación de memoria en el núcleo Tema 4 Administraci´on de la memoria – p.38/128
  • 39. 2. Partición de memoria Relocalización y protección Un proceso puede ser colocado en distintas particiones al ser reanudado o desplazado ⇒ se tiene que utilizar código relocalizable y realizar el enlace en la ejecución Para solventar este problema se distinguen varios tipos de direcciones: Dirección lógica ⇒ referencia a una posición de memoria independiente de la asignación actual de datos a la memoria Dirección relativa ⇒ se expresa como una posición relativa a algún punto conocido, normalmente el principio del programa Dirección física o absoluta ⇒ posición real en la memoria principal Tema 4 Administraci´on de la memoria – p.39/128
  • 40. 2.4 Relocalización y protección Protección ⇒ proteger al S.O. de los procesos, y a los procesos entre sí Solución a ambos problemas: registro base y registro límite Tema 4 Administraci´on de la memoria – p.40/128
  • 41. 2. Partición de memoria Administración de memoria ¿Cómo se controlan los huecos de memoria? Mapas de bits La memoria se divide en unidades de asignación y a cada unidad de asignación le corresponde un bit del mapa de bits El bit es · 0 si la unidad está desocupada · 1 si está ocupada Problema: ¿Tamaño del bloque? · Pequeño ⇒ mayor será el mapa de bits · Grande ⇒ desperdicio de memoria 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 Tema 4 Administraci´on de la memoria – p.41/128
  • 42. 2.5 Administración de memoria ¿Cómo se controlan los huecos? Continuando. . . Listas enlazadas. . . Si la lista se ordena por dirección es más fácil su actualización Si hay dos listas, una para memoria usada y otra para huecos, la asignación es más rápida, pero la liberación es más lenta (a) (b) (c) A B C D E 8 16 24 Hueco Comienza en 18 Longitud 2 Proceso P 0 5 H 5 3 P 8 6 P 14 4 H 18 2 P 20 6 P 26 3 H 29 3 X 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 Igual para asignar hueco de intercambio Tema 4 Administraci´on de la memoria – p.42/128
  • 43. Índice 3. Memoria virtual con paginación 3.1. Paginación (Tanenbaum [4.3]) 3.2. Tablas de páginas (Tanenbaum [4.3]) 3.3. Algoritmos de reemplazo de páginas (Tanenbaum [4.4]) 3.4. Aspectos del diseño para los sistemas de paginación (Tanenbaum [4.6]) Tema 4 Administraci´on de la memoria – p.43/128
  • 44. 3. Memoria virtual Memoria virtual ⇒ el tamaño combinado del programa, sus datos y su pila podría exceder la cantidad de memoria física que se le puede asignar. El sistema mantiene: Las partes del proceso que se están usando en memoria principal El resto del proceso en disco Paginación ⇒ Una de las técnicas de memoria virtual más usadas que permite ejecutar programas más grandes que la memoria física disponible de forma transparente al programador Direcciones virtuales ⇒ generadas por el programa Tema 4 Administraci´on de la memoria – p.44/128
  • 45. 3.1 Paginación Las direcciones virtuales constituyen el espacio de direcciones virtual Espacio de direcciones virtual mayor al de direcciones físicas La unidad de administración de memoria (MMU) traduce las direcciones virtuales en direcciones físicas de la CPU Tarjeta CPU La CPU envía las direcciones virtuales a la MMU La MMU envía las direcciones físicas a la memoria de la memoria administración Unidad de Memoria (MMU) de disco Controlador Bus Tema 4 Administraci´on de la memoria – p.45/128
  • 46. 3.1 Paginación (ii) El espacio de direcciones virtuales se divide en páginas El espacio de direcciones físicas en marcos de página Tamaño(Marco de página) ≡ Tamaño(Página) La página es la unidad de intercambio de memoria: las transferencias entre la memoria principal y el disco siempre se realizan en páginas Tema 4 Administraci´on de la memoria – p.46/128
  • 47. Ejemplo de paginación Virtuales direcciones Espacio de física de memoria Direcciones 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 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Página virtual Marco de página X X X X 7 X 5 X X X 3 4 0 6 1 2 Direcciones virtuales de 16 bits Espacio de direcciones virtual de 64KB 32KB de memoria física Páginas de 4KB 16 páginas virtuales 8 marcos de página Dirección virtual Dirección física 0 8192 8192 24576 20500=5*4096+20 12308=3*4096+20 24650=6*4096+74 ¿? Tema 4 Administraci´on de la memoria – p.47/128
  • 48. Fallo de página Problema: espacio de direcciones virtual más grande que la memoria física Bit presente/ausente ⇒ controlar qué páginas están presentes en memoria ¿Qué sucede si no hay asociación página/marco? ⇒ Fallo de página 1. La MMU detecta que la página no tiene correspondencia 2. La MMU provoca un fallo de página (interrupción) 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 página a ese marco 5. Modifica la tabla de páginas 6. Reinicia la instrucción Tema 4 Administraci´on de la memoria – p.48/128
  • 49. Fallo de página (ii) Tema 4 Administraci´on de la memoria – p.49/128
  • 50. 3.2 Tabla de páginas Establece la correspondencia entre direcciones virtuales y físicas (entre las páginas virtuales y los marcos de página): Para un funcionamiento óptimo el tamaño de la página y el marco debe ser potencia de 2 La dirección virtual se divide en número de página virtual y desplazamiento Nº página virtual Desplazamiento El número de página virtual se usa como índice para consultar la tabla de páginas La entrada correspondiente de la tabla de páginas indica el número de marco de página (si está en memoria) El número de marco de página se anexa al desplazamiento para formar una dirección física Tema 4 Administraci´on de la memoria – p.50/128
  • 51. 3.2 Tabla de páginas (ii) 4 bits de página y 12 bits de ajuste 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 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 Bit presente/ ausente Tabla de páginas El ajuste de 12 a la salida bits se copia de forma directa de la entrada Página virtual = 2 Se utiliza como índice en la tabla de páginas Dirección virtual de entrada (8196) Dirección física de salida (24580) 110 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 00 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Tema 4 Administraci´on de la memoria – p.51/128
  • 52. 3.1 Tabla de páginas (iii) Estructura de una entrada de tabla de páginas (posibles campos) Número de marco Bits presente/ausente ⇒ 1 entrada válida, 0 no está en memoria Bits de protección ⇒ tipos de acceso permitido Bit modificado Bit referenciado o solicitado ⇒ se ha referenciado a la página Caching desactivado para mapeo en memoria ⇒ evitar el uso de la caché para los contenidos de esa página Ocultación desactivada Modificado Presente/Ausente Número de marco de página Referenciado Protección Tema 4 Administraci´on de la memoria – p.52/128
  • 53. 3.2 Tabla de páginas (iv) Implementación. Problemas: La tabla es muy grande: Direcciones 32 bits y 4KB/página ⇒ espacio de direcciones virtual de 4GB y 1M de páginas (1048576 páginas) Además, una por proceso (¿Por qué?) Difícil implementación en registros hardware: · Es costoso si la tabla de páginas es grande · Cada cambio de contexto hay que inicializar los registros Se puede utilizar memoria principal para almacenarla, más un registro con la dirección de inicio La asociación debe ser rápida Cada acceso a memoria ⇒ asociación dirección virtual-física Cada instrucción ⇒ 1, 2 ó más accesos a la tabla de páginas Si se implementa en memoria es más lento ⇒ varios accesos por cada acceso efectivo Tema 4 Administraci´on de la memoria – p.53/128
  • 54. Solución: Tablas de páginas de varios niveles (a) (b) de nivel superior Tabla de páginas de segundo nivel Tabla de páginas Hacia las páginas Tabla de páginas para los 4MB superiores de memoria 6 5 4 3 2 1 0 1023 6 5 4 3 2 1 0 1023 Bits 10 10 12 PT1 PT2 Ajuste El campo no de página de la dirección virtual dividida en varios campos (uno por cada nivel) En memoria sólo las tablas necesarias Proceso de 12MB: 4MB código, 4MB datos, 4MB pila Total: 4 tablas * 1024 entradas Antes: 1 tabla * 1048576 entradas PT1 ⇒ entrada de la tabla de páginas de 1o nivel Tabla de páginas de 1o nivel ⇒ marco donde está la tabla de páginas de 2o nivel correspondiente PT2 ⇒ entrada de la tabla de páginas de 2o nivel Tabla de páginas de 2o nivel ⇒ marco de página donde está la página Tema 4 Administraci´on de la memoria – p.54/128
  • 55. Solución: Memoria asociativa/TLB Memoria asociativa/TLB (translation lookaside buffer) Dispositivo hardware que traduce direcciones virtuales a físicas sin acceder a la tabla de páginas Está en el interior de la MMU Consiste en un número pequeño de entradas (casi nunca más de 64) Cada entrada contiene información sobre una página: No de página Bit de modificado Bit de protección No de marco de página Bit de validez                                                                                                                   Valid Virtual page Modified Protection Page frame                                                                                                                   1 140 1 RW 31                                                                                                                   1 20 0 R X 38                                                                                                                   1 130 1 RW 29                                                                                                                   1 129 1 RW 62                                                                                                                   1 19 0 R X 50                                                                                                                  1 21 0 R X 45                                                                                                                   1 860 1 RW 14                                                                                                                   1 861 1 RW 75                                                                                                                   ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡ Tema 4 Administraci´on de la memoria – p.55/128
  • 56. Memoria asociativa/TLB (ii) Funcionamiento: Dirección virtual ⇒ se comprueba, en paralelo, si su número de página está presente en el TLB Si está: Si no viola los bits de protección ⇒ el número de marco se toma del TLB Si viola los bits de protección ⇒ Fallo de protección Si no está ⇒ Fallo del TLB La MMU consulta la tabla de páginas Desaloja una entrada del TLB La sustituye por la nueva entrada ¿Qué pasa con el TLB en los cambio de contexto? Tema 4 Administraci´on de la memoria – p.56/128
  • 57. Memoria asociativa + Memoria principal Tema 4 Administraci´on de la memoria – p.57/128
  • 58. Solución: Tablas de páginas invertidas En una arquitectura de 64 bits, las tablas de páginas pueden ser enormes: Con páginas de 4 KB ⇒ ¡¡ tablas de 252 entradas !! Si páginas muy grandes ⇒ demasiada fragmentación interna Si cada entrada 8 bytes (64 bits) ⇒ ¡¡ 32 Petabytes para la tabla de páginas !! Tablas de páginas multinivel demasiado complejas por la gran cantidad de niveles necesarios Solución: tabla de páginas invertida Tema 4 Administraci´on de la memoria – p.58/128
  • 59. Tablas de páginas invertidas (ii) Características: Una entrada por cada marco de página de la memoria física Con direcciones virtuales de 64 bits, 4KB/página y 512 MB de RAM, sólo se necesitan 131.072 entradas Cada entrada indica qué proceso y qué página virtual de dicho proceso están en el marco correspondiente Problema: la traducción de direcciones virtuales a físicas es mucho más difícil: Cada vez que un proceso “n” referencia a su página “p”, hay que buscar una entrada “(n, p)” en toda la tabla invertida para averiguar el marco Solución: TLB + tabla de dispersión Tema 4 Administraci´on de la memoria – p.59/128
  • 60. Tablas de páginas invertidas (iii) Tema 4 Administraci´on de la memoria – p.60/128
  • 61. 3. Memoria virtual con paginación Algoritmos de reemplazo de páginas ¿Qué marco seleccionar para una nueva página? Algoritmo óptimo Reemplaza la página que más tiempo va a tardar en necesitarse Irreal: el orden de las referencias a memoria no se puede saber de antemano Tema 4 Administraci´on de la memoria – p.61/128
  • 62. 3.3 Algoritmos de reemplazo de páginas Algoritmo NRU (No Usada Recientemente) Se utilizan los bits de R (referencia) y M (modificado) De forma periódica el bit R se establece a 0 ⇒ distinguir las páginas que se han solicitado recientemente Se establecen 4 categorías en base a los bits R y M: CLASE 0: R = 0, M = 0 CLASE 1: R = 0, M = 1 CLASE 2: R = 1, M = 0 CLASE 3: R = 1, M = 1 Desaloja aleatoriamente una página de la clase de número más bajo que no esté vacía Este algoritmo funciona bien, es rápido y es sencillo de implementar Tema 4 Administraci´on de la memoria – p.62/128
  • 63. 3.3 Algoritmos de reemplazo de páginas (ii) Algoritmo FIFO: Primero en entrar, primero en salir Reemplaza la página que entró hace más tiempo en memoria (la primera que entró) Es muy malo, al no tener en cuenta el uso de las páginas Tema 4 Administraci´on de la memoria – p.63/128
  • 64. 3.3 Algoritmos de reemplazo de páginas (iii) Algoritmo de la segunda oportunidad Modificación del FIFO, evitando los problemas de desalojar una página que se use mucho, teniendo en cuenta su bit R Funcionamiento: Si el bit R de la página a quitar es 0 se elimina Si su bit R es 1, se pasa al final y se anula el valor del bit R (como si fuera nueva) Si todos los bit R son 1, su comportamiento es el de un FIFO Busca una página antigua a la que no se le haya hecho referencia desde el último reemplazo (a) en primer lugar Página cargada Página de carga más reciente0 A 3 B 7 C 8 D 12 E 14 F 15 G 18 H (b) A se considera como una página recién cargada3 B 7 C 8 D 12 E 14 F 15 G 18 H 20 A Tema 4 Administraci´on de la memoria – p.64/128
  • 65. 3.3 Algoritmos de reemplazo de páginas (iv) Algoritmo del reloj Difiere del anterior sólo en la implementación Utiliza una lista circular y un puntero a la página a considerar Evita tener que mover las páginas en la lista Cuando ocurre un fallo de página, se inspecciona la página a la que apunta la manecilla. La acción a realizar depende del bit R: R = 0: Retira la página de la memoria R = 1: Limpia R y avanza la manecilla A B C D E F G H I J K L Tema 4 Administraci´on de la memoria – p.65/128
  • 66. 3.3 Algoritmos de reemplazo de páginas (v) Algoritmo LRU (Least Recently Used) Buena aproximación al algoritmo óptimo Selecciona la página que no ha sido utilizada hace más tiempo Problema: Es ineficiente si se implementa con una lista enlazada ⇒ actualización de la lista en cada referencia a memoria Tema 4 Administraci´on de la memoria – p.66/128
  • 67. 3.3 Algoritmos de reemplazo de páginas (vi) LRU: Implementaciones hardware Contador especial en hardware de 64 bits Matriz de N × N bits, con N igual al número de marcos Referencia a un marco ⇒ su fila a 1 y su columna a 0 Se reemplaza el marco con menor fila (como número binario) Ejemplo con serie de referencias 0, 1, 2, 3, 2, 1, 0, 3, 2, 3 (a) 0 0 0 0 0 1 1 0 0 0 2 1 0 0 0 3 1 0 0 0 0 1 2 3 Página Página Página Página Página (b) 0 0 1 0 0 1 0 0 0 0 2 1 1 0 0 3 1 1 0 0 (c) 0 0 1 1 0 1 0 0 1 0 2 0 0 0 0 3 1 1 1 0 (d) 0 0 1 1 1 1 0 0 1 1 2 0 0 0 1 3 0 0 0 0 (e) 0 0 1 1 1 1 0 0 1 1 2 0 0 0 0 3 0 0 1 0 (f) 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 (g) 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 (h) 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 (i) 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 (j) 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 Tema 4 Administraci´on de la memoria – p.67/128
  • 68. 3.3 Algoritmos de reemplazo de páginas (vii) Algoritmo de maduración o envejecimiento Simulación por software del LRU Contadores software de N bits para cada página Cada marca de reloj y para cada página: El contador se desplaza un bit hacia la derecha Se suma el valor del bit R al bit del extremo izquierdo Se pone a 0 Fallo de página ⇒ desaloja la página con el contador más bajo No tan bueno como LRU: Registra sólo un bit por intervalo de tiempo ⇒ no sabe en qué instante de un intervalo de tiempo se acceder por última vez a una página (¿al principio o al final?) Contadores de tamaño finito Tema 4 Administraci´on de la memoria – p.68/128
  • 69. 3.3 Algoritmos de reemplazo de páginas (viii) Algoritmo de maduración Ejemplo: Página 0 1 2 3 4 5 Bits R para las Bits R para lasBits R para las Bits R para las Bits R para las páginas 0-5, en la páginas 0-5, en lapáginas 0-5, en la páginas 0-5, en la páginas 0-5, en la marca de reloj 0 marca de reloj 2marca de reloj 1 marca de reloj 3 marca de reloj 4 10000000 00000000 10000000 00000000 10000000 10000000 1 0 1 0 1 1 (a) 11000000 10000000 01000000 00000000 11000000 01000000 1 1 0 0 1 0 (b) 11100000 11000000 00100000 10000000 01100000 10100000 1 1 0 1 0 1 (c) 11110000 01100000 00100000 01000000 10110000 01010000 1 0 0 0 1 0 (d) 01111000 10110000 10001000 00100000 01011000 00101000 0 1 1 0 0 0 (e) Tema 4 Administraci´on de la memoria – p.69/128
  • 70. 3. Memoria virtual con paginación Aspectos de diseño para los sistemas de paginación Gestión del conjunto de trabajo Paginación por demanda ⇒ las páginas sólo se cargan cuando se necesitan, y no por adelantado (paginación pura) Localidad de referencia ⇒ en cualquier fase de su ejecución, un proceso sólo referencia a una fracción relativamente pequeña de sus páginas Proceso hiperpaginado ⇒ proceso que pasa más tiempo resolviendo fallos de página que ejecutando instrucciones Conjunto de trabajo ⇒ conjunto de páginas que un proceso ha usado en las últimas N instrucciones o unidades de tiempo Prepaginación o paginación anticipada ⇒ la carga de páginas antes de ser solicitadas Tema 4 Administraci´on de la memoria – p.70/128
  • 71. 3.4 Aspectos de diseño para los sistemas de paginación (ii) Gestión del conjunto de trabajo, continuación: Modelo de conjunto de trabajo ⇒ establece que el conjunto de trabajo de un proceso debe estar en memoria antes de ejecutarlo ⇒ prepaginación Algoritmo de reemplazo de páginas del conjunto de trabajo: Para cada página hay (al menos) dos elementos de información: el tiempo aproximado del último acceso y el bit R Cada tic de reloj se limpia el bit R En un fallo de página, para cada página: · Si R=1, se actualiza el tiempo del último acceso · Si R=0 y edad > τ ⇒ reemplazar (pero continúa el recorrido) · Si R=0 y edad < τ ⇒ recordar el tiempo más pequeño y seguir · Si no éxito: la más antigua con R=0; sino cualguiera con R=1 Tema 4 Administraci´on de la memoria – p.71/128
  • 72. 3.4 Aspectos del diseño para los sistemas de paginación (iii) Políticas de asignación local y global ¿Cómo repartir la memoria entre los procesos ejecutables ? Local ⇒ se asigna un número de marcos fijo a cada proceso Global ⇒ se asignan, dinámicamente, los marcos de página entre los distintos procesos ejecutables (a) (b) (c) A0 A1 A2 A3 A4 A5 B0 B1 B2 B3 B4 B5 B6 C1 C2 C3 A0 A1 A2 A3 A4 A6 B0 B1 B2 B3 B4 B5 B6 C1 C2 C3 A0 A1 A2 A3 A4 A5 B0 B1 B2 A6 B4 B5 B6 C1 C2 C3 Edad 10 7 5 4 6 3 9 4 6 2 5 6 12 3 5 6 Tema 4 Administraci´on de la memoria – p.72/128
  • 73. 3.4 Aspectos del diseño para los sistemas de paginación (iv) Políticas de asignación local y global Los algoritmos locales son más propensos a la hiperpaginación y pueden desperdiciar memoria Los algoritmos globales funcionar mejor. Ahora bien ¿cómo se decide cuántos marcos se asignan a cada proceso? Algoritmo de frecuencia de fallos de página ⇒ cuándo hay que reducir o aumentar el no de marcos asignados a un proceso Calcula la tasa de fallos de página de cada proceso Trata de mantener la tasa de fallos de página dentro de unos límites razonables Observación: no dice nada sobre qué paginas sustituir Otros aspectos: Decidir el número mínimo de marcos a asignar a un proceso Cómo realizar el reparto de marcos entre los procesos Tema 4 Administraci´on de la memoria – p.73/128
  • 74. 3.4 Aspectos del diseño para los sistemas de paginación (v) Tamaño de página Páginas pequeñas Menos fragmentación interna Tablas de páginas más grandes Páginas grandes Más fragmentación interna Tablas de páginas más pequeñas Factor a tener en cuenta: velocidad de lectura/escritura de disco Tamaños típicos: 4KB u 8KB Tema 4 Administraci´on de la memoria – p.74/128
  • 75. 3.4 Aspectos de diseño para los sistemas de paginación (vi) Compartición de páginas Compartir código (ej.: varios usuarios ejecutan el mismo programa): Llevar control de páginas compartidas para saber qué hacer si un proceso termina o una página se reemplaza Compartir datos: Como mecanismo de comunicación entre procesos Cuando sólo se leen. Se pueden modificar también, pero entonces ⇒ mecanismo de copia en escritura (ej.: creación de procesos con fork en UNIX): · Páginas de datos se comparten en modo ”sólo lectura” · Si escritura ⇒ fallo de protección ⇒ S.O. hace copia de la página de datos para el que escribe, activa permiso de copia y reinicia la instrucción Tema 4 Administraci´on de la memoria – p.75/128
  • 76. 3.4 Aspectos de diseño para los sistemas de paginación (vii) Políticas de lectura y escritura de páginas Lectura (ya visto) Por demanda: cuando se produce un fallo de página (paginación por demanda) Por adelantado: en un fallo de página se leen varias páginas, incluida la que produjo el fallo (prepaginación o paginación anticipada) Escritura Por demanda: cuando se expulsa una página que está modificada Por anticipado: por ejemplo, cada X segudos (demonio de paginación) · Si, además, se liberan páginas ⇒ Caché de páginas Tema 4 Administraci´on de la memoria – p.76/128
  • 77. 3.4 Aspectos de diseño para los sistemas de paginación (viii) Control de carga A veces no es posible evitar la hiperpaginación (todos los procesos piden más memoria y no se puede asignar a uno sin perjudicar a otro) Solución: intercambio ⇒ suspender procesos y liberar sus páginas, pero sin dejar la CPU inactiva ⇒ Hay que controlar el grado de multiprogramación Anclaje de marcos de memoria Cuando intervienen en una operación de E/S por DMA que no ha finalizado A tener en cuenta, sobre todo, en algoritmos globales Administración del espacio de intercambio Asignación estática por proceso, cuando éste se inicia Asignación dinámica (los procesos pueden crecer) Tema 4 Administraci´on de la memoria – p.77/128
  • 78. Índice 4. Memoria virtual con segmentación (Tanenbaum [C4.8]) 4.1. Segmentación 4.2. Segmentación paginada 4.3. Memoria virtual en el Intel Pentium Tema 4 Administraci´on de la memoria – p.78/128
  • 79. 4. Memoria virtual con segmentación Segmentación Proporciona a un proceso varios espacios de direcciones completamente independientes ⇒ Segmentos Cada segmento: Una sucesión lineal de direcciones, desde 0 hasta un máximo Tiene una longitud distinta y variable Puede crecer o disminuir independientemente Puede tener una protección diferente (lectura, ejecución,. . . ) Direcciones de dos dimensiones ⇒ Tabla de segmentos Número del segmento Dirección del segmento Tema 4 Administraci´on de la memoria – p.79/128
  • 80. 4.1 Segmentación (ii) Facilita la protección y la compartición de objetos (procedimientos, funciones, estructuras de datos, etc.) de forma individual Problema: Fragmentación externa Tema 4 Administraci´on de la memoria – p.80/128
  • 81. 4.1 Segmentación (iii) Tema 4 Administraci´on de la memoria – p.81/128
  • 82. 4.1 Segmentación (iv) Considerando Paginación Segmentación ¿Necesita saber el programador si está usando esta técnica? No Si ¿Cuántos espacios lineales de direc- ciones exixten? 1 Muchos ¿Puede el espacio total de direcciones ex- ceder el tamaño de la memoria física Sí Sí ¿Pueden distinguirse los procedimientos y los datos, además de protegerse en forma independiente? No Sí ¿Pueden adecuarse con facilidad las tablas con tamaños fluctuantes? No Sí ¿Se facilita el uso de procedimientos com- partidos entre los usuarios? No Sí ¿Para qué se inventó esta técnica? Para obtener un gran espacio lineal de direc- ciones sin tener que adquirir más memoria física Para permitir que los programas y datos fueran separados en espacios independi- entes de direcciones y poder proporcionar la protección y uso de objetos compartidos Tema 4 Administraci´on de la memoria – p.82/128
  • 83. 4. Memoria virtual con segmentación Segmentación paginada Cada segmento se pagina internamente ⇒ ventajas de la paginación y de la segmentación Dirección formada por dos partes: segmento y dirección dentro del segmento: Segmento ⇒ entrada en la tabla de segmentos que nos da la dirección de la tabla de páginas Dirección dentro del segmento ⇒ dividida en 2 partes: Número de página ⇒ entrada de la tabla de páginas que da el marco de página correspondiente Desplazamiento dentro de la página Nº de páginaNº de segmento Desplazamiento Tema 4 Administraci´on de la memoria – p.83/128
  • 84. 4.2 Segmentación paginada Tema 4 Administraci´on de la memoria – p.84/128
  • 85. 4. Memoria virtual con segmentación Memoria virtual en el Intel Pentium Dos tablas: LDT: Tabla de descriptores locales Cada programa tiene una LDT Describe los segmentos locales para el programa GDT: Tabla de descriptores globales Sólo hay una compartida por todos los programas Describe los segmentos del sistema (incluyen al mismo S.O.) Las direcciones están 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 Tema 4 Administraci´on de la memoria – p.85/128
  • 86. 4.3 Memoria virtual en el Intel Pentium (ii) Selector ⇒ 16 bits divididos en 3 campos: Bit que indica si el selector es local (LDT) o global (GDT) 13 bits que indican el número de la entrada en la LDT o GDT 2 bits de protección Índice 0 = GDT/1 = LDT Nivel de privilegio (0-3) Bits 13 1 2 El selector facilita la localización del descriptor: Se selecciona la LDT o GDT en base al bit 2 Se anulan los tres bits de orden más bajo del selector Se le añade la dirección de la LDT o la GDT P.e.: el selector 72 se refiere a la entrada 9 de la GDT, que está en la dirección GDT+72 Tema 4 Administraci´on de la memoria – p.86/128
  • 87. 4.3 Memoria virtual en el Intel Pentium (iii) Descriptores de segmento ⇒ 8 bytes e incluye la dirección base del segmento, su tamaño, etc. Nivel de privilegio (0-3) Dirección relativa 0 4 Base 0-15 Límite 0-15 Base 24-31 Base 16-23 Límite 16-19G D 0 P DPL Tipo 0: Li en bytes 1: Li en páginas 0: Segmento de 16 bits 1: Segmento de 32 bits 0: Segmento ausente de memoria 1: Segmento presente en memoria Tipo y protección del segmento 32 Bits Bit de granularidad ⇒ en que unidad se expresa el campo límite 0 ⇒ bytes, límite es el tamaño exacto del segmento, hasta 1MB 1 ⇒ páginas, con páginas de 4KB segmentos de hasta 232 bytes Tema 4 Administraci´on de la memoria – p.87/128
  • 88. 4.3 Memoria virtual en el Intel Pentium (iv) Conversión de una pareja (selector, ajuste) a una dirección lineal: Descriptor Dirección base Límite Otros campos Dirección lineal de 32 bits + Selector Ajuste Paginación desactivada ⇒ segmentación pura: Dirección lineal = dirección física Si sólo hay 1 segmento con Base = 0 y Limite = 4G ⇒ paginación pura Tema 4 Administraci´on de la memoria – p.88/128
  • 89. 4.3 Memoria virtual en el Intel Pentium (v) Paginación activa: “segmentación paginada” Dirección lineal ⇒ Dirección virtual de 32 bits Tabla de dos niveles y páginas de 4KB Cada proceso ⇒ un directorio de páginas ⇒ tabla de 1o nivel (compartido por todos sus segmentos) (a) (b) Bits Linear address 10 10 12 Dir Page Offset Page directory Directory entry points to page table Page table entry points to word Page frame Word selected Dir Page table Page 1024 Entries Offset Tema 4 Administraci´on de la memoria – p.89/128
  • 90. Índice 7. Gestión de la memoria en Linux (Tanenbaum [C10.4.3]) 7.1. Conceptos fundamentales 7.2. Administración de memoria física 7.3. Algoritmo de reemplazo de páginas Tema 4 Administraci´on de la memoria – p.90/128
  • 91. Gestión de la memoria en Linux Conceptos fundamentales Utiliza un esquema de paginación a tres niveles Paginación por demanda, aunque para ser más eficiente prepagina algunas páginas cuando se produce un fallo de página No utiliza el concepto de conjunto de trabajo Tamaño de página fijo. En el Pentium de 4KB 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, dividido en: 3GB para el espacio de direcciones virtual para el proceso 1GB para sus tablas de páginas y otros datos del kernel, accesible sólo en modo núcleo usando llamadas al sistema Tema 4 Administraci´on de la memoria – p.91/128
  • 92. Conceptos fundamentales (ii) El espacio de direcciones virtual se divide en áreas o regiones homogéneas y contiguas: Cada área consiste en una serie de páginas consecutivas con las mismas propiedades en cuanto a protección y paginación El segmento de texto podría ser un ejemplo de área Puede haber huecos entre las distintas áreas Cualquier referencia a la memoria que caiga dentro de un hueco producirá un fallo de página Para cada área el sistema operativo almacena, entre otros, los siguientes datos: modo de protección, si es paginable o no, dirección en la que crece (hacia arriba el segmento de datos, hacia abajo la pila), si es privada o compartida, si tiene asignado hueco en la zona de intercambio, y si lo tiene, dónde Tema 4 Administraci´on de la memoria – p.92/128
  • 93. Conceptos fundamentales (iii) Ejemplo de división en áreas del espacio de direcciones virtuales de dos procesos que comparten el código: Text                                         BSS Data Stack pointer Stack pointer 20K 8K 0 Unused memory 24K 8K 0K BSS Text Data (a) (b) (c) OS Physical memoryProcess A Process B Tema 4 Administraci´on de la memoria – p.93/128
  • 94. Conceptos fundamentales (iv) Esquema de paginación de tres niveles Se tienen los siguientes tipos de tablas: Directorio global, cada proceso tiene sólo uno que ha de estar en memoria, y su tamaño es de una página. Cada entrada apunta a un directorio intermedio de páginas (tabla intermedia de páginas) Directorio intermedio de páginas, que puede ocupar varias páginas. Cada entrada señala a una página de la tabla de páginas final Tabla de páginas, que puede ocupar varias páginas. Cada una de sus entradas hace referencia a la página virtual requerida En el Pentium, que utiliza paginación a 2 niveles: Cada directorio intermedio de páginas tiene una única entrada Así que, la entrada del directorio global sirve para seleccionar la tabla de páginas que se usará Tema 4 Administraci´on de la memoria – p.94/128
  • 95. Esquema de paginación de tres niveles Cada dirección virtual se divide en 4 campos: Directorio: 1er campo, para consultar el directorio global Intermedio: 2o campo, para consultar el directorio intermedio de páginas Página: 3o campo, para acceder a la tabla de páginas Desplazamiento dentro de la página seleccionada, 4o campo Global directory Directory Page middle directory Page table Page Word selected Virtual addressOffsetPageMiddle Tema 4 Administraci´on de la memoria – p.95/128
  • 96. Gestión de la memoria en Linux Administración de memoria física Una parte de la memoria es utilizada para el kernel El resto de la memoria está disponible para (entre otros usos): Páginas de usuario El caché de buffer empleado por el sistema de ficheros Contiene bloques de disco que se han leído recientemente, o que se han leído por adelantado Su tamaño es dinámico y compite por la misma reserva de páginas que las páginas de usuario. El caché de paginación, formado por un conjunto de páginas de usuario que ya no se necesitan y están esperando que se les pagine a disco. Si una página se reutiliza antes de que se desaloje de la memoria, podrá recuperarse con rapidez Tema 4 Administraci´on de la memoria – p.96/128
  • 97. Administración de memoria física (ii) Gestión de memoria libre: Linux utiliza el sistema de colegas para asignar/liberar todos los marcos de página: El sistema de colegas le permite asignar intervalos de marcos contiguos de tamaño arbitrario, si se solicitan Para registrar la memoria libre, mantiene listas de grupos de marcos contiguos de tamaño fijo: 1, 2, 4, 8,. . . marcos libres El tamaño más pequeño que se puede asignar es de un marco La asignación contigua de marcos permite aumentar la eficiencia de cargar y descargar páginas a y desde la memoria principal Tema 4 Administraci´on de la memoria – p.97/128
  • 98. Administración de memoria física (iii) Asignación de memoria para el núcleo: La memoria del kernel es permanente, ninguna de sus partes se pagina a disco El kernel, como programa que es, necesita asignar y liberar memoria de forma dinámica: Por ejemplo, maneja módulos, que normalmente son controladores de dispositivos, que se cargan dinámicamente, tienen un tamaño arbitrario y se les debe asignar un área de memoria de kernel contigua Usando el sistema de colegas se asigna memoria contigua en el kernel Problema: se puede producir mucha fragmentación interna ya que, por ejemplo, hay que asignar 128 marcos a un módulo que necesita sólo 65 marcos contiguos Tema 4 Administraci´on de la memoria – p.98/128
  • 99. Administración de memoria física (iv) Asignación de memoria para el núcleo, continúa. . . Para pequeñas asignaciones de memoria, Linux usa un segundo método de asignación para evitar la fragmentación interna: Empleando el sistema de colegas, se reserva memoria que se divide en fragmentos más pequeños que una página, que son administrados aparte Los fragmentos se mantiene en un conjunto de listas enlazadas, una por cada tamaño de fragmento (32, 64, 128, 252, 508, 2040 y 4080 bytes) Los fragmentos pueden dividirse y agregarse de forma similar al sistema de colegas, moviéndose de una lista a otra en función de ello La asignación de memoria implica determinar cuál es la lista apropiada y luego tomar el primer fragmento libre de la lista (o bien asignar una nueva página y dividirla en fragmentos si no queda un fragmento libre adecuado) Un tercer método permite asignar memoria cuando sólo tiene que estar contigua en el espacio virtual, pero no en la memoria física Tema 4 Administraci´on de la memoria – p.99/128
  • 100. Administración de la memoria física (v) Zona de intercambio Gestiona particiones y ficheros de paginación A las particiones de paginación se accede como un dispositivo crudo Permite hasta un máximo de 8 ficheros, que se crean con un tamaño fijo que no cambia durante su uso Es más eficiente usar una partición que un archivo: No es necesario que haya correspondencia entre bloque de archivo y bloques de disco (ahorra la E/S de disco por lectura de bloques indirectos) Las escrituras físicas pueden ser de cualquier tamaño, no tienen que ser del bloque de archivo entero Una página siempre se escribe contigua en el disco, en un archivo de paginación podría o no quedar contigua Tema 4 Administraci´on de la memoria – p.100/128
  • 101. Zona de intercambio (ii) La asignación del hueco de intercambio se hace cuando se necesita Los segmentos de texto se paginan desde su archivo en disco, no se les asigna hueco en la zona de intercambio Para cada partición/archivo de paginación hay un mapa de bits para controlar los huecos asignados/libres A las particiones/ficheros se les puede asignar un valor de prioridad A las particiones se les asigna mayor prioridad (lo normal) Cuando se necesita asignar un hueco a una página, se escoge la partición/archivo de más alta prioridad y con un hueco disponible Tema 4 Administraci´on de la memoria – p.101/128
  • 102. Gestión de la memoria en Linux Algoritmo de reemplazo de páginas Trata de mantener algunos marcos desocupados, creando una reserva de marcos libres, para poderlos usar cuando se solicite un nuevo marco El verdadero algoritmo de paginación se encarga de mantener esta reserva de marcos libres Un demonio de paginación periódicamente comprueba si hay suficientes marcos libres: Si hay suficiente ⇒ se desactiva hasta la próxima vez Si no hay suficientes ⇒ trata de recuperar marcos de diferentes tipos El demonio de paginación también se puede activar si se necesitan marcos libres y no hay suficientes Tema 4 Administraci´on de la memoria – p.102/128
  • 103. Algoritmo de reemplazo de páginas (ii) Demonio de paginación: Su código 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 páginas El valor de urgencia se pasa como parámetro, para que el procedimiento sepa cuánto debe esforzarse por recuperar páginas El efecto de este algoritmo es que primero se toman las páginas fáciles de cada categoría para después ir tras las difíciles Cuando se han recuperado suficientes páginas se duerme otra vez Tema 4 Administraci´on de la memoria – p.103/128
  • 104. Algoritmo de reemplazo de páginas (iii) Los procedimientos para recuperar marcos: 1er Procedimiento. Trata de recuperar páginas del caché de paginación y del caché de buffer a los que no se haya hecho referencia últimamente, empleando un algoritmo tipo reloj 2o Procedimiento. Busca páginas compartidas que al parecer ninguno de los usuarios esté utilizando mucho 3o Procedimiento. Intenta recuperar páginas de usuarios ordinarias Tema 4 Administraci´on de la memoria – p.104/128
  • 105. Algoritmo de reemplazo de páginas (iv) 3o procedimiento para recuperar páginas de usuario: Primero se ejecuta un ciclo que abarca todos los procesos y determina cuál es el que más páginas tiene en memoria Una vez localizado ese proceso se examinan todas sus páginas en orden por dirección virtual, partiendo del punto donde se quedó por última vez el procedimiento: Si una página no es válida, está ausente de la memoria, se comparte, está fija en la memoria, o se está usando para DMA, se pasa por alto Si la página tiene encendido el bit de referencia, éste se apaga, y la página se pasa por alto Si el bit de referencia está apagado, la página se desaloja (esta parte es similar al algoritmo del reloj, excepto que las páginas no se examinan en orden FIFO) Tema 4 Administraci´on de la memoria – p.105/128
  • 106. Algoritmo de reemplazo de páginas (v) 3o procedimiento para recuperar páginas de usuario . . . Respecto a la página seleccionada: Si no está modificada, se abandona de inmediato Si está modificada, y tiene asignado hueco en la zona de intercambio, se planifica para su escritura en disco Si está modificada y no tiene asignado un hueco en la zona de intercambio, se coloca en la caché de paginación (de donde se podría volver a utilizar) Examinar las páginas en orden por dirección virtual se basa en la esperanza de que páginas cercanas entre sí en el espacio de direcciones virtual tiendan a usarse o no de manera colectiva Otro demonio, de forma periódica, verifica si la fracción de páginas modificadas en memoria es demasiado grande. En ese caso, comenzará a escribirlas a disco Tema 4 Administraci´on de la memoria – p.106/128
  • 107. Índice 6. Gestión de la memoria en Windows 2000 (Tanembaum C11.5.1 y C11.5.3) 6.1. Conceptos fundamentales 6.2. Algoritmo de reemplazo de páginas 6.3. Administración de memoria física Tema 4 Administraci´on de la memoria – p.107/128
  • 108. Gestión de la memoria Windows 2000 Conceptos fundamentales El administrador de memoria trabaja sólo con procesos (y no con hilos como hace el planificador) Cada proceso de usuario tiene su propio espacio de direcciones virtual Direcciones virtuales de 32bits ⇒ 4GB de espacio de direcciones virtual Utiliza paginación (no se usa ningún tipo de segmentación) Básicamente usa paginación por demanda, aunque para ser más eficiente prepagina algunas páginas cuando se produce un fallo de página Tamaño de página fijo (hasta un máximo de 64KB). En el Pentium de 4KB El S.O. puede usar páginas de 4MB para reducir el tamaño de su tabla de páginas Tema 4 Administraci´on de la memoria – p.108/128
  • 109. Conceptos fundamentales (ii) Organización del espacio de direcciones virtual de un proceso Los 2GB inferiores, menos aprox. 256MB, para el proceso. Los 2GB superiores para la memoria del S.O. Los 2GB inferiores ⇒ código y datos del proceso Los 64KB más bajos y más altos no tiene correspondencia ⇒ ayuda a atrapar errores de programación Los apuntadores no válidos suelen ser 0 ó -1 ⇒ un intento de usarlos causa una interrupción del sistema inmediata Empiezan en los 64KB y llegan casi hasta los 2GB El último fragmento de los 2GB inferiores contiene algunos contadores y temporizadores del sistema, que todos los usuarios comparten en modo de sólo lectura (se pueden usar por todos sin el gasto adicional de una llamada al sistema) Tema 4 Administraci´on de la memoria – p.109/128
  • 110. Espacio de direcciones virtual de un proceso Los 2GB superiores Contienen el sistema operativo, incluidos el código, los datos y las reservas paginada y no paginada Compartidos por todos los procesos de usuario, con excepción de las tablas de páginas (exclusivas de cada proceso) En modo usuario no se puede acceder a esta zona Si un hilo efectúa una llamada al sistema, salta por una interrupción de sistema al modo núcleo y sigue ejecutándose sin perder su identidad. Lo único que hay que hacer es cambiar a la pila de núcleo del hilo Sacrifica espacio de direcciones privado del proceso, a cambio de que las llamadas al sistema sean más rápidas Las versiones Advanced Server y Datacenter Server ofrecen la opción de establecer un espacio de usuario de 3GB (1GB el S.O.) Tema 4 Administraci´on de la memoria – p.110/128
  • 111. Espacio de direcciones virtual de un proceso Process A 4 GB 2 GB 0 Nonpaged pool Paged pool A's page tables Stacks, data, etc HAL + OS System data Process A's private code and data Process B Nonpaged pool Paged pool B's page tables Stacks, data, etc HAL + OS System data Process B's private code and data Process C Nonpaged pool Paged pool C's page tables Stacks, data, etc HAL + OS System data Process C's private code and data Bottom and top 64 KB are invalid Tema 4 Administraci´on de la memoria – p.111/128
  • 112. Conceptos fundamentales Una página virtual puede estar en tres estados posibles: Libre ⇒ no se está usando Una referencia a ella provoca un fallo de página Comprometida ⇒ hay una correspondencia entre el código o los datos y la página Una referencia a una página comprometida: ¿está la página en memoria? · SÍ ⇒ éxito · NO ⇒ fallo de página, hay que traer la página del disco Reservada ⇒ no está disponible para utilizar mientras no se retire de forma explícita la reserva. P.e., este tipo de páginas se usa para permitir el crecimiento de las pilas Además las páginas tienen otros atributos como si se puede leer, escribir o ejecutar Tema 4 Administraci´on de la memoria – p.112/128
  • 113. Conceptos fundamentales Zona de intercambio No se asigna hueco en la zona de intercambio a las páginas comprometidas que no tienen un lugar natural en el disco Sólo asigna hueco de intercambio a una página comprometida cuando es necesario llevarla a disco Inconveniente: aumenta la complejidad, porque es posible que los mapas de los ficheros de paginación tengan que traerse a memoria durante un fallo de página, lo que podría causar varios fallos de página adicionales Ventaja: no es necesario asignar hueco a las páginas que nunca se paginan Las páginas libres o reservadas nunca tienen asignado hueco de intercambio (las referencias a ellas siempre causan fallos de página) Tema 4 Administraci´on de la memoria – p.113/128
  • 114. Zona de intercambio (ii) La zona de intercambio se organiza en ficheros de paginación Puede haber hasta 16 ficheros de paginación Cada fichero de paginación tiene un tamaño inicial y un tamaño máximo, hasta el que puede crecer en caso necesario Pueden crearse con el tamaño máximo al instalar el sistema, para evitar que estén muy fragmentados Posteriormente, se pueden crear nuevos ficheros de intercambio desde el panel de control El S.O. lleva el control de qué página virtual corresponde a qué parte de qué fichero de paginación El código del ejecutable no se pagina, se recuperará del fichero binario ejecutable Tema 4 Administraci´on de la memoria – p.114/128
  • 115. Conceptos fundamentales Entradas de la tabla de páginas Las entradas de la tabla de páginas son diferentes dependiendo de la arquitectura Las páginas sin correspondencia también tienen entradas diferentes Los bits más importantes son el A, la página ha sido referenciada, y el D, la página ha sido modificada Un ejemplo de una entrada de páginas de un Pentium: 20 3 G 1 L 1 D 1 A 1 C W t 1 U 11 W 1 V 1 Page frame Bits 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 Not used Tema 4 Administraci´on de la memoria – p.115/128
  • 116. Conceptos fundamentales Fallos de página 5 categorías de fallos de página: 1. La página no está comprometida ⇒ irrecuperable 2. Hubo una violación de protección ⇒ irrecuperable 3. Se ha escrito una página compartida ⇒ copiar la página en un nuevo marco y aplicarle correspondencia de lectura/escritura 4. La pila necesita crecer ⇒ asignarle un nuevo marco de página y aplicarle correspondencia en memoria, pero se necesita que esté lleno de 0 5. La página está comprometida pero no tiene correspondencia ⇒ se localiza la página y se le aplica correspondencia en memoria Tema 4 Administraci´on de la memoria – p.116/128
  • 117. Gestión de la memoria en Windows 2000 Algoritmo de reemplazo de páginas El sistema se esfuerza por mantener un número considerable de páginas libres en memoria ⇒ fallos de páginas se solucionan, al menos, con una operación de disco (y no con dos) El verdadero algoritmo de reemplazo de páginas es el que decide qué páginas se quitan a los procesos, y se colocan en la lista de libres El mecanismo de paginación se apoya en el concepto de conjunto de trabajo: Consiste en las páginas con correspondencia que están en la memoria y a las que, por tanto, se accede sin generar un fallo de página Se describe con dos parámetros, su tamaño máximo y mínimo, que pueden variar durante la ejecución del proceso Tema 4 Administraci´on de la memoria – p.117/128
  • 118. Algoritmo de reemplazo de páginas (ii) Fallo de página: Si el conjunto de trabajo del proceso es menor que su límite mínimo, se le añade una nueva página Si el conjunto de trabajo es mayor que su límite máximo, se expulsa una página de su conjunto de trabajo (pero no de la memoria) para que quepa la nueva página El algoritmo es un híbrido entre local y global: Utiliza un algoritmo de paginación local ⇒ evitar que un proceso perjudique a otros acaparando memoria Si un proceso está paginando de forma frenética (y los demás no) el sistema puede incrementar el tamaño máximo de su conjunto de trabajo Un conjunto de trabajo no puede usar los últimos 512 marcos libres, es un límite absoluto (aunque sólo esté ese proceso) Tema 4 Administraci´on de la memoria – p.118/128
  • 119. Algoritmo de reemplazo de páginas (iii) Administrador de conjuntos de equilibrio ⇒ hilo a nivel del núcleo que cada segundo verifica si hay suficientes páginas libres Si no hay suficientes páginas libres, inicia el hilo administrador de conjuntos de trabajo, que examina los conjuntos de trabajo y recupera páginas 1. Determina en qué orden examinará los procesos (los grandes e inactivos durante mucho tiempo, se examinan antes que los pequeños activos; el proceso en primer plano es el último en ser examinado) 2. Examina los procesos en el orden escogido: Si el conjunto de trabajo es menor que su mínimo, o si ha tenido más de un cierto número de fallos de página desde la última inspección, no se hace nada De lo contrario se le quitan una o más páginas Todas las páginas se examinan por turnos Tema 4 Administraci´on de la memoria – p.119/128
  • 120. Algoritmo de reemplazo de páginas (iv) Administrador de conjuntos de trabajo, continúa. . . Sistema uniprocesador: Si el bit de referencia está apagado, incrementa un contador asociado a la página Si el bit de referencia está activo, el contador se establece a 0 Una vez examinadas todas, se liberan las páginas con los contadores más altos Continúa examinando procesos hasta recuperar suficientes páginas y acaba Si dio una pasada completa y no liberó suficientes, efectúa otra más agresiva, “recortando”, incluso, conjuntos de trabajo por debajo de sus mínimos Sistema multiprocesador ⇒ se liberan las páginas más antiguas El S.O. posee páginas y un conjunto de trabajo que puede recortarse. Sin embargo ciertas partes del código y la reserva no paginada están fijas en la memoria (no pueden paginarse) ¿Cuántas páginas liberar? ⇒ función complicada (tamaño de la RAM, escasez de memoria, relación del tamaño actual del conjunto de trabajo y los tamaños máximo y mínimo, etc.) Tema 4 Administraci´on de la memoria – p.120/128
  • 121. Gestión de la memoria en Windows 2000 Administración de memoria física El sistema gestiona cuatro listas de marcos libres Cada marco en memoria está en uno o más conjuntos de trabajo, o bien en una de estas 4 listas Una quinta lista contiene los marcos de página físicamente defectuosos que pudiese haber El administrador de conjuntos de trabajo y otros hilos (demonios) del kernel pasan páginas entre los conjuntos de trabajo y las diversas listas Tema 4 Administraci´on de la memoria – p.121/128
  • 122. Administración de memoria física (ii) Las cuatro listas son: Listas de páginas modificadas contienen páginas que hace poco se expulsaron de un conjunto de trabajo, todavía están en la memoria y asociadas con el proceso que las estaba usando, pero NO tienen copia válida en disco Lista de páginas de reserva limpias contienen páginas que hace poco se expulsaron de un conjunto de trabajo, todavía están en la memoria y asociadas con el proceso que las estaba usando, y además tienen una copia válida en disco (por tanto pueden abandonarse cuando se desee) Lista de páginas libres que contiene páginas limpias que ya no están asociadas a ningún proceso Lista de páginas en ceros, están libres, no están asociadas a ningún proceso, y además ya se han llenado de ceros Tema 4 Administraci´on de la memoria – p.122/128
  • 123. Administración de memoria física (iii) Working sets Zero page needed (8) Page read in (6) Soft page fault (2) Mod- ified page list Standby page list Free page list Zeroed page list Bad RAM page list Top Bottom Modified page writer(4) Dealloc(5) Zero page thread (7) Page evicted from a working set (1) Process exist (3) Tema 4 Administraci´on de la memoria – p.123/128
  • 124. Administración de memoria física (iv) Las posibles transiciones son: 1. El administrador de conjuntos de trabajo le quita una página a un conjunto de trabajo, y la coloca en el fondo de la lista de reserva o de la modificada, dependiendo de su estado de limpieza 2. Las páginas de las listas de reserva y modificadas siguen siendo válidas. Si se presenta un fallo de página y se necesita una de estas páginas, se saca de la lista y se vuelve a colocar en su conjunto de trabajo, sin necesidad de hacer E/S 3. Cuando finaliza un proceso, ya no genera fallos de página para usar sus páginas no compartidas. Se colocan en la lista de libres 1. Cada cierto tiempo, un hilo del kernel busca procesos que no hayan tenido ningún hilo activo durante cierto tiempo. Si los encuentra, anula la fijación de sus pilas de kernel y sus páginas pasan a las listas de reservadas o modificadas Tema 4 Administraci´on de la memoria – p.124/128
  • 125. Administración de memoria física (v) Las posibles transiciones son, continúa. . . 4. De forma periódica, dos hilos del núcleo, comprueban si hay suficientes páginas limpias. Si no hay suficientes, toman páginas de la parte superior de la lista modificada, las escriben en disco y luego las pasan a la lista de reserva 5. Si un proceso elimina la correspondencia de una página, ésta deja de estar asociada con un proceso y puede colocarse en la lista de libre (siempre que no se trate de una página compartida) 6. Si un fallo de página requiere un marco de página, se toma de la lista libre, si es posible (salvo que sea para la pila) 7. En ocasiones se necesitan marcos de páginas llenas de 0 (p.e. para las pilas). Un hilo del núcleo borra paginas que están en la lista libres, y las pasa a la lista de páginas en 0 8. Se solicita una página de la lista de 0 Tema 4 Administraci´on de la memoria – p.125/128
  • 126. Administración de memoria física (vi) Surgen una serie de decisiones sutiles a tomar: Si se necesita un marco, y no quedan en la lista de libres, ¿qué es mejor, tomar uno de la lista de reserva (que se podría utilizar posteriormente) o de la lista de 0 (que costó un trabajo ponerlo a 0)? ¿Cómo de agresivos deben ser los demonios que pasan páginas de la lista de modificada a la lista de reserva? Es mejor contar con páginas limpias que modificadas Una política agresiva supone realizar mucha E/S de disco Una página recién limpia puede ser solicitada de nuevo por el proceso En general, resuelve este tipo de conflictos aplicando heurísticas complejas, haciendo conjeturas, considerando precedentes históricos, usando métodos prácticos y basándose en parámetros controlados por el administrador Tema 4 Administraci´on de la memoria – p.126/128
  • 127. Administración de memoria física (vii) Mantiene una base de datos de marcos de páginas, con tantas entradas como marcos hay: Sirve para llevar el control de todas las páginas y todas las listas Esta tabla está indizada por el número de marco de página Las entradas tienen una longitud fija, aunque hay diferentes formatos para diferentes entradas. (P.e.: entradas válidas o no válidas) Las entradas válidas mantienen: El estado de la página Un contador que indica cuántas tablas de páginas apuntan a esa entrada Si pertenece a un conjunto de trabajo, se indica a cuál Un apuntador a la tabla de páginas que apunta a ese marco, si existe (los marcos compartidos se manejan de forma especial) Un enlace a la siguiente página de la lista, (si la hay) Varios campos e indicadores, como lectura en curso, escritura en curso, etc. Tema 4 Administraci´on de la memoria – p.127/128
  • 128. Base de datos de marcos de página X X X X State Cnt WS PTOther Next Clean Dirty Clean Active Clean Dirty Active Dirty Free Free Zeroed Active Active Zeroed 13 12 11 20 10 8 4 7 6 5 4 3 6 2 1 14 0 14 Standby Modified Free Zeroed Page tables Page frame database Zeroed List headers 9 Tema 4 Administraci´on de la memoria – p.128/128