Administracion de La Memoria y Procesos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 26

Administración de la

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

Página 1 Marco pág. 0

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

▪ Número de página virtual es un índice en tabla


de páginas
▪ Entrada en tabla de página contiene número de
marco de página
▪ Dirección física se traduce a:
▪ Número Marco de página:offset
▪ Manejadas por el SO
▪ Mapea Número de Pagina Virtual a Número de Marco de
Página
▪ Número de Página Virtual es índice en la tabla
▪ Existe una Entrada en la Tabla de Páginas por página
en el espacio de direccionamiento virtual
▪ Normalmente denominada como PTE (Page Table
Entry)
dirección virtual
npv offset
Marco Pag 0
Marco Pag 1

Marco Pág 2
Marco Pag 3
nmp offset Marco Pag 4
.
nmp dirección física .
.
Marco Pag N

npv: Num. página virtual


nmp: Num. marco página
▪ Fácil para asignar memoria física
▪ Memoria física se administra usando una lista de marcos
de páginas libres
▪ Para asignar un marco de página, se saca de la lista
▪ Fragmentación externa no es un problema
▪ Cómo ?

▪ Fácil quitarle páginas a programas


▪ Páginas son del mismo tamaño
▪ Uso de bit válido para saber que páginas ha perdido el
proceso
▪ Tamaño de páginas definido como múltiplos de tamaños
de bloques de disco
▪ Expone Fragmentación interna
▪ Proceso no puede usar memoria de marco de página que
le sobra a otro proceso
▪ Referencia a memoria en 2 pasos
▪ Tabla de página y luego Memoria
▪ Solución, usar hardware como cache para acelerar
referencias : Translation Lookaside buffer (TLBs)
▪ Memoria requerida para mantener tablas de páginas
puede ser grande.
▪ Necesita una entrada en tabla de página por número
de página virtual.
▪ Direccionamiento virtual de 32 bits, tamaño página de
4KB, entonces
▪ Se necesitan 220 entradas = 1.048.576 Entradas
▪ Si se tiene 4 bytes/Entrada, entonces se necesitan 4MB
por tabla de páginas
▪ En general SO tiene tablas de páginas separadas por
proceso
▪ Con 25 procesos en el sistema, entonces 100MB en
tablas de páginas
▪ Solución a este gran uso de memoria solo para tablas
de páginas
▪ Paginar las tablas de páginas
▪ Paginación
▪ Vista de espacio de direccionamiento como arreglo de
bytes (lineal)
▪ Divide espacio en páginas de igual tamaño (ejemplo
4KB)
▪ Usa tabla de página para mapear páginas virtuales a
páginas físicas
▪ Terminología
▪ Página : página virtual
▪ Marco : página física

▪ 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]

También podría gustarte