Administracion de La Memoria y Procesos
Administracion de La Memoria y Procesos
Administracion de La Memoria y Procesos
Memoria
SISTEMAS OPERATIVOS I
Lic. Tania Valladares
Objetivos de la Administración de Memoria
⚫ Proveer una abstracción simple de programación
⚫ Proveer aislamiento entre procesos
⚫ Asignar memoria (limitada) a procesos que la
requieren maximizando el rendimiento,
productividad y minimizando sobrecarga (overhead)
Mecanismos
⚫ Memoria física versus virtual
⚫ Administración de tablas de páginas y segmentación
⚫ Algoritmos de reemplazamiento de páginas
▪ Abstracción básica que proporciona SO para la
administración de memoria
▪ Memoria virtual habilita la ejecución de procesos sin
estar contenidos completamente en memoria física
▪ Consecuencia inmediata: un proceso puede requerir más memoria
de la disponible físicamente
▪ Posible porque muchos programas no necesitan todo el
código o datos al mismo tiempo
▪ Por ejemplo, datos en una rama condicional que nunca son
accesados
▪ SO puede asignar memoria física durante tiempo de ejecución
(cuando sea requerido)
▪ Memoria Virtual aisla procesos
▪ Cada proceso tiene su propio espacio de direccionamiento
▪ Sistemas Batch
▪ Programas usaban memoria física directamente
▪ OS cargaba trabajo, lo ejecutaba y lo descargaba
▪ Sistemas Multiprogramados
▪ Múltiples procesos coexistían en memoria al mismo tiempo
▪ Procesos usaban CPU y dispositivos I/O simultáneamente
▪ Requerimientos de administración de memoria
▪ Protección, restringiendo espacios de direccionamiento para evitar
daños entre ellos
▪ Traducción rápida, acceso a la memoria debe ser rápida
▪ Cambio de contexto, debe ser rápido, (protección y traducción)
▪ Swapping
▪ Salvar el estado de programa completo (incluyendo memoria) a
disco para permitir la ejecución de otros
▪ Swap in : de disco a memoria
▪ Swap out : de memoria a disco
▪ Para facilitar el manejo de memoria de múltiples
procesos, procesos manejan memoria virtual
▪ Direcciones virtuales son independientes de las
direcciones de memoria física (donde realmente
código y datos están)
▪ SO determina ubicación de memoria física
▪ Las instrucciones con las cuales trabaja la CPU usan
direcciones virtuales
▪ punteros, argumentos de load/store, PC, etc
▪ Traducción de direcciones virtuales a físicas se
realiza por hardware con ayuda del SO
▪ El conjunto de direcciones virtuales que
un proceso puede direccionar
corresponde a su espacio de
direccionamiento
▪ Existen muchos mecanismos para la
traducción de direcciones virtuales a físicas
▪ Particiones fijas
▪ Particiones variables
▪ Paginación (técnica moderna)
▪ Segmentación (técnica moderna)
▪ Paginación y segmentación
▪ Memoria física se divide en particiones fijas
▪ Todas las particiones son de tamaño fijo y nunca cambian
▪ Pero pueden haber particiones de diferentes tamaños
▪ Hardware requerido: registro base y registro límite
▪ dirección física = dirección virtual + registro base
▪ Registro base es cargado por el SO después de cambio de
contexto, y entonces un proceso se va a ejecutar
▪ Como se asegura la protección?
▪ Si (dirección física > base + limite) entonces error
▪ Ventajas
▪ Sencillo, cambio de contexto rápido
▪ Desventajas
▪ Fragmentación interna
▪ Partición mas grande de lo necesario (sobra memoria que no
puede utilizar otro proceso)
▪ Fragmentación externa
▪ Caso en que dos particiones disponibles pero ambas muy
pequeñas para contener un proceso mas grande
▪ Tamaño de la partición (cuál debería ser?)
0
Registro límite Registro base
Partición 0 2K
2K (tamaño P2) Base de P2: 6K
Partición 1
Si 6K
offset < +
Partición 2
dirección virtual 8K
No
viene de CPU
Partición 3
Error de
direccionamiento 12K
Memoria física
▪ Memoria física es dividida en particiones variables
▪ Tamaño de particiones varía dinámicamente no
preestablecidas como en caso de particiones fijas
▪ Requerimientos Hardware: registros base y límite
▪ Dirección física = dirección virtual + registro base
▪ Registro límite se usa para protección
▪ if (dirección física < registro limite) then
▪ dirección física = dirección virtual + registro base
▪ Else
▪ Error de direccionamiento
▪ Registro base : contiene valor de la dirección física menor posible
▪ Registro límite : contiene mayor rango de direcciones virtuales
Registro límite Registro base
Partición 0
Tamaño de P2
Partición 1
<
Si
offset +
Partición 2
dirección virtual No
viene de CPU
Partición 3
Error de
direccionamiento
Memoria física
▪Ventajas
▪ No hay fragmentación interna ( si sabemos cuanto
necesita proceso)
▪ Asignar partición solo lo suficiente para contener
proceso
▪Problemas
▪ Fragmentación externa
▪ a medida que procesos de distinto tamaño entran y
salen van quedando porciones de memoria sin
posibilidades de ser reutilizada
▪ Swap out : Sacar
programa de
partición 0 partición 0
memoria
partición 1 partición 1
▪ recargar programas partición 2
alrededor partición 2 partición 3
poniedolos cercanos partición 3 partición 4
y generando huecos
▪ No muy eficiente
partición 4
▪ Para solucionar el problema de fragmentación externa
dada con particiones variables. Usar particiones fijas en
memoria virtual y física
Memoria Virtual
Página 0 Memoria Física
Marco pág. 1
Marco pág. N
Página N
▪ Procesos ven memoria como un espacio contiguo
de 0 a M
▪ En realidad la memoria física esta desparramada
▪ Cada página virtual se mapea a una página real
(marco de página) que esta en cualquier parte en
memoria física
▪ Mapeo es invisible al programa
▪ Protección esta dada porque un programa no
puede referenciar memoria que esta fuera de su
espacio de direccionamiento virtual
▪ Si dos procesos tienen la misma dirección virtual
su mapeo a memoria física es distinta para cada
proceso.
▪ Traduciendo direcciones virtuales
▪ Una dirección virtual tiene dos partes:
▪ Número de página virtual y offset
Marco Pág 2
Marco Pag 3
nmp offset Marco Pag 4
.
nmp dirección física .
.
Marco Pag N
▪ Segmentación
▪ Dividir el espacio de direccionamiento en unidades
lógicas
▪ Stack, código, heap, datos, procedimientos
▪ Una dirección virtual es [número segmento, offset]
▪ Tabla de segmentos
▪ Múltiple pares de registros base/límite uno
por segmento
▪ Segmentos identificados por número de
segmento
▪ Identificador se usa como índice a tabla de
segmentos
▪ Dirección virtual [num. segmento, offset]
▪ Dirección física se obtiene sumando dirección
base de segmento + offset
Tabla de segmentos
Memoria física
limit base
segment 0
Num.segmento offset
segment 1
Dir virtual
segment 2
SI
<? + segment 3
Error de protección
segment 4
base offset
▪ Compartir: Más fácil y natural
▪ Problemas con fragmentación
▪ asignación de memoria contigua
▪ cuales deben ser los tamaños de los fragmentos
para los diversos tipos de requerimientos en el
sistema?
▪ Qué hacer?
▪ Quienes
▪ Arquitectura x86 soporta los dos mecanismos
▪ Usar segmentos para manejar unidades
lógicas
▪ Segmentos de diversos tamaños en base a
páginas
▪ Usar páginas para particionar segmentos
▪ Cada segmento tiene propia tabla de páginas ( en lugar
de una tabla de páginas por proceso de usuario)
▪ Luego asignación de memoria se simplifica a
paginación
▪ Dirección virtual [num segmento, num página, offset]