Está en la página 1de 61

Sistemas Operativos

Unidad 3
Administrador de memoria
Administrador de Memoria
 Un Programador requiere memoria:
◦ Infinitamente grande
◦ Rápida
◦ No volátil
◦ Barata
Administrador de Memoria
 La parte del sistema operativo que administra la
jerarquía de memoria se llama administrador de
memoria
Administrador básica de memoria

 Los sistemas de administración de memoria


pueden dividirse en dos clases:
◦ Los que traen y llevan procesos entre la memoria
principal y el disco durante la ejecución
(intercambio y paginación)
◦ Los que no lo hacen
Monoprogramación sin intercambio
ni paginación
 El esquema más sencillo consiste en ejecutar
sólo un programa a la vez repartiendo la
memoria entre ese programa y el sistema
operativo
Monoprogramación sin intercambio
ni paginación
 El primer modelo se usaba antes en mainframes y
mini computadoras
 El segundo modelo se usa en algunas
computadoras de bolsillo y sistemas integrados
 El tercero se usó en las primeras computadoras
personales donde la porción del sistema que está
en ROM se llama BIOS
Multiprogramación con particiones
fijas
 La mayoría de los sistemas modernos
permite la ejecución de varios procesos al
mismo tiempo
 La multiprogramación eleva el

aprovechamiento de la CPU
 La forma más fácil de lograr la

multiprogramación es simplemente dividir la


memoria en particiones
Particiones fijas
Dos enfoques generales de
administración

 Intercambio (swapping) consiste en traer a la


memoria un proceso entero ejecutarlo
durante un rato y volver a guardarlo en disco
 Memoria virtual permite que los programas

se ejecuten aunque sólo una parte de ellos


esté en la memoria principal
Intercambio
Asignación dinámica de memoria

 Los procesos pueden tener segmentos capaces de


crecer
 El segmento de datos se usa como heap para
variables que se asignan y liberan en forma
dinámica
 Un segmento de pila para las variables locales
normales y las direcciones de retorno
Asignación dinámica de memoria
Administración de memoria

 La memoria se asigna en forma dinámica y


el sistema operativo debe administrarla
 Hay dos formas de llevar el control del uso

de la memoria:
◦ Mapas de bits
◦ Listas libres
Mapa de bits
 La memoria se divide en unidades de asignación que pueden
ser desde unas cuantas palabras hasta varios kilobytes
 Entre más pequeña sea la unidad mayor será el mapa de bits
◦ Una memoria de 32n bits necesitará sólo n bits de mapa
◦ El mapa de bits sólo ocupará 1/33 de la memoria
Listas enlazadas
Listas enlazadas
Algoritmos para asignación de
memoria

 Primer Ajuste
 Siguiente Ajuste
 Mejor Ajuste
 Peor Ajuste
Memoria virtual
 Programas demasiado grandes para caber
en la memoria disponible
◦ Dividir el programa en fragmentos o
superposiciones (overlays)
 Algunos sistemas permitían tener varias
superposiciones en memoria a la vez
Memoria virtual

 El sistema operativo orientado a el


intercambio entre el disco y la memoria
 El sistema realizaba el trabajo real de

intercambiar superposiciones
 El programador tenía que encargarse de

dividir en partes el programa


Memoria virtual
 Fotheringham 1961
 El tamaño del programa (datos y pila) podrían
exceder la cantidad de memoria física que se le
puede asignar
 El sistema mantiene en la memoria principal las
partes del programa que se están usando en ese
momento y el resto en el disco
Memoria virtual

 En cualquier computadora existe un


conjunto de direcciones de memoria que
los programas pueden producir:
direcciones virtuales
◦ Constituyen el espacio de direcciones virtual
Memoria virtual
 Dos esquemas:
◦ En computadoras sin memoria virtual la
dirección virtual se coloca en forma directa en
el bus de memoria
◦ Cuando se usa memoria virtual las direcciones
virtuales no se envían de manera directa al
bus de memoria sino a una unidad de
administración de memoria (MMU: memory
management unit)
Memoria virtual
Paginación
 El espacio de direcciones virtual se divide en
unidades llamadas páginas
 Las unidades correspondientes en la memoria
física se denominan marcos de página
 Las páginas y los marcos de página siempre
tienen el mismo tamaño
 Las transferencias entre RAM y disco siempre se
efectúan en unidades de página
Paginación
 En el hardware un bit de presente/ausente lleva
el control de las páginas que están presentes en
forma física en la memoria
 El número de página se utiliza como índice para
consultar la tabla de páginas y así obtener el
número del marco de página que corresponde a
esa página virtual
Memoria virtual
Paginación
Hay que resolver problemas
importantes
 La tabla de páginas puede ser extremadamente
grande
 La transformación (correspondencia) debe ser
rápida
 No es necesario tener todas las tablas de páginas
en la memoria todo el tiempo
Tablas de páginas multinivel
 Problema de tener
que almacenar
enormes tablas de
páginas en la
memoria todo el
tiempo
◦ Muchas
computadoras
utilizan una tabla
de páginas
multinivel
Búferes de consulta para traducción

 Por Software:
◦ Máquinas RISC
◦ El sistema operativo carga en forma
explícita las entradas del TLB
El algoritmo óptimo de reemplazo
de páginas

 Debe desalojarse la página con


el rótulo más grande
El algoritmo de reemplazo de páginas
no usadas recientemente
 El sistema operativo recaba estadísticas
útiles acerca de cuáles páginas se están
usando y cuáles no
 Computadoras con memoria virtual

asocian a cada página dos bits de estado


◦ R se enciende cada vez que se hace referencia a la
página (para leer o escribir)
◦ M se enciende cada vez que se escribe en la
página (se modifica)
El algoritmo de reemplazo de páginas no
usadas recientemente.

 Clase 0: no solicitada - no modificada


 Clase 1: no solicitada - modificada
 Clase 2: solicitada - no modificada
 Clase 3: solicitada - modificada

 Desaloja al azar una página de la clase de


número más bajo que no esté vacía
Primera que entra, primera que sale

 Se crea una lista


 Se desaloja la que esté al final de

la lista
El algoritmo de reemplazo de página menos
recientemente usada
 (LRU: least recently used)
 Desalojar la que tiene más tiempo sin usarse
 Costo elevado
Simulación de LRU en software
 Pocas máquinas sino es que ninguna
tienen este hardware
 Algoritmo de página no usada
frecuentemente (NFU: not frequently used)
 NFU requiere un contador de software
asociado con cada página de valor inicial
cero
Algoritmo de maduración que simula
LRU en Software
Sistemas Operativos
3.5 Aspectos de diseño de los sistemas con
paginación
Paginación por demanda

 Las páginas se cargan sólo cuando se


necesitan no por adelantado
Modelo del conjunto de trabajo
 Conjunto de páginas que un proceso está
usando en un momento
 Si la memoria disponible es demasiado

reducida para contener todo el conjunto de


trabajo el proceso causará muchos fallos de
página
Modelo del conjunto de trabajo

 Se dice que un programa que causa fallos


de página cada pocas instrucciones está
hiperpaginando
 La carga de páginas antes de permitir que

los procesos se ejecuten también se llama


prepaginación
Modelo del conjunto de trabajo
 Cada entrada contiene dos elementos de
información:
◦ El tiempo aproximado en que ocurrió el último uso
de la página
◦ El bit R (Solicitada)
 El número de marco de página
 Bits de protección
 El bit M (Modificada)
El algoritmo de reemplazo de páginas
WSClock
Anomalía de Belady
 De manera intuitiva podríamos pensar que
entre más marcos de página tenga la
memoria menos fallos de página
experimentará un programa
 FIFO causaba más fallos de página con cuatro

marcos de página que con tres


Políticas de asignación local y
global
 ¿Cómo debe repartirse la memoria entre los
procesos ejecutables que compiten por ella?
Frecuencia de fallos de página
 Indica cuándo hay que aumentar o reducir
el número de páginas asignadas al proceso
 No dice nada acerca de cuál página

reemplazar si hay un fallo


 Sólo controla el tamaño del conjunto

asignado
Control de carga
 Una solución real es deshacerse de algunos
procesos de manera temporal
 El intercambio de procesos a disco para

aliviar la carga de la memoria se asemeja a la


planificación de dos niveles
 Debemos considerar el grado de

multiprogramación
Tamaño de página
 Ventaja
◦ Un segmento cualquiera no llenará un
número entero de páginas
◦ El desperdicio se denomina
fragmentación interna
 Desventaja
◦ Se necesitarán muchas páginas y por lo
tanto una tabla de páginas más grande
Espacios de instrucciones y de datos
separados
Páginas compartidas

 Dos o más procesos utilizan la misma


tabla de páginas para su espacio I pero
tablas de páginas distintas para sus
espacios D
 Lo más común es que las tablas de
páginas sean estructuras de datos
independientes de la tabla de procesos
Páginas compartidas
Política de aseo

 Demonio de paginación
◦ Si el número de marcos de página libres es
demasiado bajo
◦ Si esas páginas se han modificado
desde que se cargaron se escriben en
el disco
Interfaz de memoria virtual

 Asignar nombres a regiones de memoria


para comunicar a un proceso de una
región de memoria para compartir
 Sirve para implementar un sistema de
transferencia de mensajes de alto
desempeño
 Otra técnica avanzada de administración
de memoria es la memoria compartida
distribuida
Intervención del sistema operativo en la
paginación

 Hay cuatro ocasiones en las que el sistema


operativo tiene que realizar tareas
relacionadas con la paginación:
◦ Cuando se crea un proceso
◦ Cuando se ejecuta un proceso
◦ Cuando se presenta un fallo de página
◦ Cuando termina un proceso
Sistemas Operativos
3.6 Segmentación
Segmentación
 Mucho mejor tener dos o más espacios de
direcciones distintos que sólo uno
Segmentación
 Simplifica el manejo de estructuras de
datos que están creciendo o decreciendo
 Si cada procedimiento ocupa un segmento
distinto e inicia en la dirección 0 se
simplifica mucho el enlace de
procedimientos que se compilan por
separado
 El compartimiento de procedimientos y
datos entre varios procesos
 En una memoria segmentada el usuario
sabe qué hay en cada segmento
Comparación entre paginación y
segmentación
Implementación de la segmentación
pura

 La implementación de la segmentación
difiere de la paginación en un aspecto
fundamental: las páginas son de tamaño
fijo y los segmentos no
Implementación de la segmentación
pura
Segmentación con paginación
 Si los segmentos son grandes podría no ser
conveniente o ni siquiera posible mantenerlos
enteros en la memoria
 Esto conduce a la idea de paginarlos de modo
que sólo se tengan en la memoria las páginas
que en realidad se necesiten
 Varios sistemas importantes han manejado
segmentos paginados:
◦ MULTICS
◦ Pentium de Intel

También podría gustarte