1) Introducción a la administración de la memoria.
2) Mono-programación sin intercambio o paginación.
3) Multi-programación y uso de la memoria.
4) Multi-programación con particiones fijas.
5) Swapping.
6) Multi-programación con particiones variables
7) Administración de la memoria con mapas bits
8) Administración de la memoria con listas ligadas
9) Administración de la memoria con el sistema de los asociados.
10) Memoria Virtual en el Sistema Operativo.
11) Paginación
11.1) Página
11.2) Marco de página
11.3) MMU
11.4) Tabla de páginas
11.5) Algoritmos de reemplazo de páginas
11.6) Páginas óptimas
11.7 ) Según el uso no tan reciente
11.8) Primero en entrar primero en salir
11.9) Segunda oportunidad
11.10) Páginas del reloj
11.11) La de menor uso reciente
11.12) Envejecimiento (Aging)
12) Segmentación
13) Casos de estudio de Sistemas Operativos para el componente de administración de la memoria.
2. 1) Introducción a la
administración de la memoria.
La administración de memoria se refiere a
los distintos métodos y operaciones que se
encargan de obtener la máxima utilidad de
la memoria, organizando los procesos y programas
que se ejecutan de manera tal que
se aproveche de la mejor manera posible
el espacio disponible.
3. 1) Introducción a la
administración de la memoria.
Jerarquía de memoria:
Al bajar en la jerarquía es más
capacidad, pero más lento es el dispositivo
y más barato.
Registros CPU
del procesador
Caché (memoria
rápida)
Memoria principal
RAM
Almacenamiento
secundario (memoria
virtual)
4. 1) Introducción a la
administración de la memoria.
Parte del S.O. que gestiona la memoria:
• Control de que partes de la memoria
están utilizadas o libres.
• Asignar memoria a procesos y liberarla cuando
terminan.
• Administrar intercambio entre memoria y disco (MemoriaVirtual).
5. 1) Introducción a la
administración de la memoria.
Proceso de Compilación y Carga de un Programa:
• Generando código
absoluto, en el
momento de
compilación se sabe
donde residirá el
programa en memoria.
Compilación
• El compilador genera
código relocalizable.
• Se crean direcciones de
memoria absolutas
cuando se carga el
programa en memoria.
Carga
• Durante la ejecución
puede moverse el
código de un proceso.
• Necesita apoyo del
hardware:
Ejecución
6. 2) Mono-programación sin intercambio
o paginación.
• En sistemas monoprogramados generalmente la memoria
principal está dividida en dos particiones:
– Una para el usuario:
• Un proceso con su código.
• Dirección a partir de la que se
cargan programas de usuario.
– Otra para el sistema operativo residente (memoria baja).
7. 2) Mono-programación sin intercambio
o paginación.
• Es necesario proteger las particiones entre sí.
• El tamaño del S.O puede variarse:
Ej.: Manejadores de dispositivos que no se usan.
oPuede realizar una reubicación dinámica del espacio.
oTambién, cargar los procesos de usuario en
memoria alta
8. 3) Multi-programación y uso de la
memoria.
• Es deseable que haya varios procesos en
memoria para su ejecución concurrente.
• Se debe compartir la memoria entre varios
procesos que esperan asignación de la misma.
• Esquemas de asignación de memoria:
• Contigua: particiones fijas y variables • Paginación
• Intercambio (swapping) • Segmentación
• Segmentación paginada
9. 3) Multi-programación y uso de la
memoria.
Particiones
• La memoria está dividida de antemano en
espacios (Particiones).
• Cuando un proceso necesita ejecutarse se le
asigna uno de dichos espacios (Partición).
• Cada partición puede contener un único proceso.
• Pueden ser:
o Particiones Fijas y ParticionesVariables.
10. 4) Multi-programación con particiones
fijas.
Particiones de igual tamaño:
• Nivel de multiprogramación limitado por número de
particiones.
• Hay una cola con procesos que quieren
utilizar memoria y ejecutarse.
• Hay una tabla para indicar particiones ocupadas
y libres.
11. 4) Multi-programación con particiones
fijas.
Particiones con diferentes tamaños:
Para procesos que quieren utilizar memoria para ejecutarse:
• Podemos tener varias colas:
o Cada proceso se asigna a una cola
en función de su tamaño.
• Podemos tener una única cola:
o Cuando se libera una partición se asigna
al primer proceso que cabe en ella.
12. 4) Multi-programación con particiones
fijas.
Problemas que presenta este tipo de asignación de memoria:
• Debe proporcionarse reubicación:
o ¿En que partición entrará el proceso?.
• Existe Fragmentación Interna y Externa:
o Interna: Una partición asignada y no ocupada
totalmente por el proceso.
o Externa: Un proceso quiere ejecutarse, hay una partición
libre, pero de menor tamaño que el proceso.
13. 4) Multi-programación con particiones
fijas.
• Necesidad de protección: (en sistemas multiprogramados)
o Un proceso no acceda al área de memoria del otro.
o Si la reubicación es dinámica puede usarse registros base-límite.
14. 4) Multi-programación con particiones
fijas.
• Se divide la memoria en n particiones
• El espacio que no se usa se
desperdicia
15. 5) Swapping.
Es mover un proceso o parte de
él temporalmente desde la memoria principal a
un dispositivo secundario de almacenamiento (memoria de
apoyo) para luego devolverlo a la memoria
principal. El propósito de esta técnica es que
el sistema operativo sea capaz de asignar
más memoria de la que tiene físicamente.
16. 5) Swapping.
La memoria de apoyo debiera ser rápida
y de tamaño suficiente para almacenar las
copias de imágenes de memoria de los
procesos, también debe proporcionar acceso directo a
estas imágenes. El disco duro es usualmente
quien funciona como memoria de apoyo.
17. 5) Swapping.
• Todos los sistemas operativos actuales cuentan con
alguna versión de swapping (Windows, Linux y
UNIX). El sistema mantiene una cola de
procesos en estado ready que están listos
para ser ejecutados y cuyas imágenes de
memoria se encuentran en el disco.
18. 6) Multi-programación con particiones
variables
• Cada proceso ocupa tanto espacio como necesite,
pero no puede superar el espacio disponible
de memoria.
• La partición de un trabajo es su
propio tamaño ya que no hay límites
fijos de memoria.
19. 6) Multi-programación con particiones
variables
• Se dan esquemas de asignación contigua dado
que un programa debe ocupar posiciones adyacentes
de almacenamiento.
• Los procesos que terminan dejan espacios disponibles
de memoria principal llamados agujeros.
• Los trabajos pueden ser colocados dentro de
cualquier participación disponible en la que quieran.
20. 7) Administración de la memoria con
mapas bits
• Cuando la memoria se asigna dinámicamente, el
sistema operativo debe administrarla.
• Con un mapa de bits, la memoria
se divide en unidades de asignación, ya
sea sólo de unas cuantas palabras o
quizá de varios kilobytes.
21. 7) Administración de la memoria con
mapas bits
• Se divide la memoria en unidades de asignación
• 1 bit representa el estado de cada unidad
» 1: está asignada
» 0: está libre
• Tamaño de la unidad
o Cuanto menor, mayor el mapa
o Cuanto mayor, más desperdicio de la memoria
22. 8) Administración de la memoria con listas
ligadas
• Una forma de llevar el control de
la memoria es mantener una lista ligada
de segmentos de memoria asignados y libres,
donde un segmento es un proceso, o
bien, un hueco entre dos procesos.
23. 8) Administración de la memoria con listas
ligadas
• Características
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 liberaciones más lenta.
Mantiene una lista enlazada de segmentos de
memoria asignados y libres.
24. 8) Administración de la memoria con listas
ligadas
• Lista ordenada por direcciones
Si la lista se mantiene ordenada por
dirección, podemos usar uno de los siguientes
algoritmos para escoger un hoyo donde poner
un nuevo proceso.
Primer ajuste
• Primer ajuste:
Asigna el primer
hoyo que sea
suficientemente
grande como
para contener al
proceso.
• Mejor ajuste:
Asignar el menor
hoyo en el que el
proceso quepa
• Peor ajuste:
Asignar el
mayor hoyo
25. 8) Administración de la memoria con listas
ligadas
• Cada vez que se asigna un hoyo
a un proceso, se convierte en un
segmento asignado y un hoyo más pequeño.
Mejor ajuste deja
hoyos pequeños
Peor ajuste deja hoyos
grandes.
Primer ajuste es más
rápido.
Primer ajuste y Mejor
ajuste son mejores en
términos de utilización
de la memoria.
26. 8) Administración de la memoria con listas
ligadas
• La memoria de la siguiente figura está
mostrada como una lista ligada de segmentos
donde cada entrada de la lista especifica
un hueco(H) o un proceso(P), la dirección
donde comienza, su longitud y un apuntador
a la siguiente entrada.
27. 9) Administración de la memoria con
el sistema de los asociados.
• Permite acelerar la traducción
• Se basa en la observación de que
la mayoría de los programas hacen un
gran número de referencias a un pequeño
número de páginas.
28. 9) Administración de la memoria con
el sistema de los asociados.
• Se equipa a la máquina con un
dispositivo hardware que permite asociar direcciones virtuales
con físicas: la memoria asociativa
o Parte de la MMU
o Número pequeño de entradas
o Búsqueda en todas las entradas en paralelo
29. 9) Administración de la memoria con
el sistema de los asociados.
• Para la traducción:
o Se comprueba si está la información
en la memoria asociativa
o Si está: ya se puede hacer la
traducción
o En c.c.: búsqueda normal
30. 9) Administración de la memoria con
el sistema de los asociados.
• Proporción de encuentros: proporción de referencias a
memoria que pueden ser satisfechas a partir
de la memoria asociativa.
o Cuanto mayor, mayor el rendimiento
31. 10) Memoria Virtual en el Sistema
Operativo.
• Los programas pueden ser más grandes que
la memoria
• Solución adoptada:
• Dividir el programa en partes llamadas overlays
• La ejecución empieza en el primer overlay
• Cuando termina se llama al siguiente y así
• Se pueden tener en memoria varios overlays
32. 10) Memoria Virtual en el Sistema
Operativo.
• El SO se encarga del intercambio
• De la partición del programa el programador
• Permite que un proceso sea mayor que
la cantidad de memoria disponible.
• En memoria están las partes del programa
que se están utilizando, el resto en
disco.
33. 10) Memoria Virtual en el Sistema
Operativo.
• En multiprogramación:
- En memoria sólo una parte del programa
• Se pueden tener más programa
• Memoria de 2M:
- 2 programas de 1M completamente en memoria.
- 8 programas con 1/4 de M cada uno en memoria.
34. 10) Memoria Virtual en el Sistema
Operativo.
• Cuando un programa está a la espera
de que se cargue en memoria una
porción del mismo, está esperando una E/S
y se puede seguir con otro programa.
• Es usual utilizar paginación.
35. 11) Paginación
• Definición
Es una estrategia de organización de la
memoria física que consiste en dividir la
memoria en porciones de igual tamaño. A
dichas porciones se las conoce como páginas
físicas o marcos. La división de la
memoria en páginas facilita la gestión de
la memoria física.
36. 11.1) Pagina
• Dirección virtual: dirección generada por un programa.
• Espacio de direcciones virtuales: direcciones que puede
generar un programa.
• Se divide en unidades llamadas páginas
• Las páginas y los marcos tienen idéntico tamaño.
• La transferencia entre memoria y disco se
realizan siempre en unidades de páginas.
37. 11.1) Pagina
• Si no hay memoria virtual, las direcciones
generadas por un programa son direcciones físicas.
• Con memoria virtual, las direcciones se mandan
a la unidad de gestión de memoria (MMU)
• Dispositivo que se encarga de traducir dinámicamente las
direcciones virtuales en físicas.
38. 11.2) Marco de página
• ¿Cuántos marcos se asignan a cada proceso
en un sistema multiprogramado?
• Estrategias de asignación
– Asignación fija
Los marcos de memoria existentes se dividen:
o Equitativamente: nº marcos/nº procesos
o Proporcionalmente: se asignan más marcos a procesos
más grandes.
39. 11.2) Marco de página
• Asignación dinámica:
oLa cantidad de marcos de cada proceso
varía dinámicamente según la necesidades del mismo
oPuede aplicarse a:
- reemplazo local, cada proceso varia la cantidad
de marcos que utiliza.
- reemplazo global, los procesos compiten por el
uso de memoria.
40. 11.3) MMU
• Funcionamiento de MMU
o 16 procesos
o Páginas de 4K
o 1024 páginas por proceso
o espacio de direcciones
virtuales del proceso de 4M
41. 11.3) MMU
o Espacio de direcciones
virtuales total de 64 M.
o 64 segmentos por proceso.
o 16 páginas por segment.
o 64 K por segmento.
42. 11.4) Tabla de páginas
• Son una parte integral del Sistema de
MemoriaVirtual en sistemas operativos, cuando se
utiliza paginación. Son usadas para realizar las
traducciones de direcciones de memoria virtual (o lógica)
a memoria real (o física) y en general
el sistema operativo mantiene una por cada
proceso corriendo en el sistema.
43. 11.4) Tabla de páginas
• En hardware sólo se necesita un registro
que apunte al inicio de la tabla de páginas.
• El cambio de contexto: modifica un registro
• Desventaja:
o Hay que hacer una o más referencias
a memoria por cada instrucción para acceder
a la tabla de páginas.
44. 11.5) Algoritmos de reemplazo de
páginas
Introducción:
• Son usados para decidir qué páginas pueden
ser sacadas de memoria cuando se necesita
cargar una nueva y ya no hay
marcos de páginas libres.
• Se puede elegir aleatoriamente la página, pero
es más eficiente sacar una que no
se vaya a utilizar pronto.
45. 11.6) Páginas Óptimas
11.6) Óptimo
• Este algoritmo tiene como finalidad retirar la
página que vaya a ser referenciada más
tarde, por ejemplo si hay una página
A que será usada dentro de 10000 instrucciones,
y una página B que será usada
dentro de 2800 instrucciones, se debería eliminar
de la memoria la página A.
46. 11.7) La menor usada
recientemente
• 11.7) Menos usada recientemente (Least Recently Used, LRU)
Este algoritmo de 'Menos usada recientemente' intenta
proveer un comportamiento casi óptimo mediante la
observación de las páginas que menos fueron
usadas recientemente. Este tipo de páginas, estadísticamente
son las que tienen menor probabilidad de
ser usadas nuevamente.
47. 11.8) Primero en entrar, primero en
salir
• 11.8) FIFO (First In, First Out):
En este método, el sistema operativo sólo
tiene que guardar en orden las páginas
que fueron cargadas, de modo que al
necesitar hacer espacio pueda fácilmente elegir la
primera página cargada. Se usa una cola,
al cargar una página nueva se ingresa
en el último lugar.
48. 11.9) Segunda Oportunidad
• 11.9) Segunda oportunidad (Reloj):
Es una pequeña modificación al algoritmo FIFO,
que funciona bastante mejor que el FIFO.
En este caso cuando una página debe
ser sacada se toma la primera en
la cola, y en vez de sacarla, consulta
el valor de un bit de referencia.
49. 11.10) Páginas de reloj
• 11.10) De paginas de reloj (CLOCK) (Reloj mejorado)
Existe una mejora en el algoritmo de
segunda oportunidad que presenta una mejora en
la implementación. Es el algoritmo del CLOCK,
que lo que hace es tener una
lista circular, de forma que al llegar
al último elemento de la lista,
pasa automáticamente al primero.
50. 11.11) No usada recientemente
• 11.11) No usada recientemente (Not Recently Used, NRU)
Este algoritmo favorece a las páginas que
fueron usadas recientemente. Funciona de la siguiente
manera: cuando una página es referenciada, fija
el bit de referencia para esa página.
Similarmente, cuando una página es modificada, fija
su bit de modificación.
Categoría 0: no
referenciada,
no modificada
Categoría 1: no
referenciada,
modificada
Categoría 2:
referenciada,
no modificada
Categoría 3:
referenciada,
modificada
51. 11.12) Envejecimiento
• 11.12) Envejecimiento (Aging)
Desciende del algoritmo "No usada frecuentemente", con
algunas modificaciones necesarias para tener en cuenta
en qué momento fue usada frecuentemente una
página, y no solamente cuántas veces fue.
En vez de sólo incrementar el contador de
la página cuando es referenciada, primero se
desplaza a la derecha (se divide entre 2) y después sí se suma 1.
52. 12) Segmentación
• – El espacio de direcciones lógicas se compone
de un conjunto de segmentos: Cada uno
tiene un nombre y una longitud.
• – Para el usuario las direcciones especifican el
nombre del segmento y el desplazamiento dentro
de él.
53. 12) Segmentación
• El nombre del segmento se numera
o <número segmento, desplazamiento>
• El procesador Intel 8086 usa segmentación, los
programas se separan en:
• Hay una división lógica del proceso en
diferentes segmentos.
Segmento
de Código.
Segmento
de Datos.
Segmento
de Pila.
54. 12) Segmentación
• Hardware de segmentación medianteTabla de segmentos:
• Establece la correspondencia entre direcciones físicas y lógicas.
• Se busca en la tabla de acuerdo
con el número de segmento.
• Cada entrada 2 registros:
– base (dir. Física inicial del segmento en memoria)
– límite de segmento (longitud del segmento)
55. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
• 13.1)VAX/VMS
El sistema operativoVMS, desarrollado para la
familiaVAX-11 de Digital introducida a finales
de los 70, proporciona un entorno unificado
para hardware con diferentes niveles de rendimiento.
La gestión de memoria se encontraba muchas
veces con un soporte hardware muy limitado.
56. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
Características VAX/VMS
• Asignación de páginas local: Existe un límite
máximo en el número de páginas residentes por proceso
(su working-set, en terminologíaVAX/VMS).
• Paginación con reemplazo FIFO y buffer de
marcos global: El paginador mantiene un número
adicional de marcos de página que no
están asignados a los conjuntos residentes de cada proceso.
57. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
• Agrupamiento de páginas: El pequeño tamaño de
la página delVAX causaría un rendimiento
muy pobre si éstas se transfirieran individualmente
entre memoria y disco.
• Swapping: En determinadas circunstancias, la única forma
de recuperar marcos libres es sacando de
memoria el working-set completo de uno o más procesos.
58. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
• 12.1) UNIX: es un sistema operativo diseñado para
ser instalado sobre una gran variedad de
máquinas.Ya que la gestión de la
memoria es muy dependiente del soporte hardware
disponible, nos encontraremos con que existen diferentes
formas de gestión de memoria en UNIX.
59. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
Características de Unix:
• Asignación global y working-set: UNIX define el
working-set de un proceso como el
conjunto de páginas asignadas a un proceso.
• Swapping: En situaciones de mucha demanda de
memoria por parte de los procesos, el
paginador puede no ser capaz de conseguir
marcos libres a la velocidad necesaria.
60. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
• Escritura de páginas en disco por grupos:
Si el paginador decide liberar una página
y la página se ha modificado o
no existe una copia en disco (por
ejemplo, página iniciada a ceros), el paginador
pone la página en una lista de
páginas a escribir.
61. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
13.2) Windows: como sistema operativo moderno, presupone un
potente soporte hardware para la gestión de
memoria, como es el caso de los
procesadores actuales. Los procesos manejan espacios
de direcciones de 32 bits. El tamaño
de página es de 4 Kbytes, aunque
en algunas máquinas se puede configurar.
62. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
Características Windows:
• Paginación por demanda con clustering: A partir
de un fallo de página no sólo
se carga la página que ha producido
el fallo sino también un conjunto de
páginas adyacentes.
• Asignación de páginas local: Aplica una política
FIFO entre las páginas cargadas del proceso.
63. 13) Casos de estudio de Sistemas
Operativos para el componente de
administración de la memoria.
• Tamaño de working-set ajustable dinámicamente: El
VM manager ajusta el tamaño de los
working-sets de los procesos en función
de sus comportamientos, sus cuotas de memoria
y de las necesidades globales de memoria.