PDF de programación - Administración de memoria: Asignación de memoria

Imágen de pdf Administración de memoria: Asignación de memoria

Administración de memoria: Asignación de memoriagráfica de visualizaciones

Publicado el 4 de Septiembre del 2018
930 visualizaciones desde el 4 de Septiembre del 2018
835,7 KB
83 paginas
Creado hace 7a (17/02/2017)
Memoria contigua
Segmentación
Paginación

Administración de memoria: Asignación de

memoria

Gunnar Wolf

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Índice

1 Memoria contigua

2 Segmentación

3 Paginación

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Compartiendo la memoria desde. . .

Como en tantos otros temas, comencemos viendo cómo
compartían la memoria los primeros sistemas multiprocesados
Las primeras implementaciones siempre son las más sencillas

. . . y las más ingenuas

¿Cómo eran estos primeros sistemas?

Poca memoria
Sin MMU
No interactivos

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones fijas

Primer acercamiento: Partir la memoria en varios bloques

Originalmente del mismo tamaño (¡más sencillo!)
Por ejemplo: En 512KB de memoria física caben el sistema
operativo mas otros 7 programas de 64KB (16 bits) cada uno

El sistema operativo típicamente usa la región más baja, a
partir de 0x0000

La memoria mapeada a los diversos dispositivos queda dentro
del segmento del SO

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones fijas

Figura: Particiones fijas, con 3 particiones libres

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones fijas: Ventajas y desventajas

¿Ventajas? Principalmente, simplicidad

Resolución de direcciones en tiempo de carga
Registro base (no requiere siquiera de un registro límite)
Puede limitarse simplemente con un espacio de
direccionamiento acorde en el compilador

¿Desventajas? Rigidez

Grado de multiprocesamiento limitado

Si hay menos de 7 procesos, se desperdician recursos
Si hay más de 7, tienen que esperar a que se les abra espacio

Desperdicio de espacio (fragmentación interna)

Al asignarse la memoria en bloques fijos, un proceso pequeño
podría desperdiciar mucho espacio

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones flexibles

Cada proceso declara sus requisitos de memoria al iniciar su
ejecución

Debe indicar su uso máximo previsto de memoria
Hay mecanismos para ajustar el tamaño de un proceso
preexistente — ¡Pero pueden fallar! (p.ej. si falta memoria para
satisfacer una solicitud)

El OS tiene acceso directo a toda la memoria como un
contínuo
Cada región en memoria está limitada (ahora sí) por un
registro base y un registro límite

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones flexibles

Figura: Espacio de direcciones válidas para el proceso 3 definido por un
registro base y un registro límite

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Particiones flexibles: Ventajas y desventajas

¿Ventajas? Sigue siendo: Simplicidad

Cuando inicia la ejecución del sistema, este esquema parece
ideal
Sobrecarga mínima, con un MMU muy básico
Cada proceso puede direccionar el total de memoria disponible

¿Desventajas? Vienen con el tiempo. . .

Conforme van iniciando y terminando los procesos, se van
creando agujeros en la asignación de memoria
Según análisis estadístico (Silberschatz, p.289), por cada N
bloques asignados se pierden del órden de 0,5N por
fragmentación

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Fragmentación en la memoria

Figura: Termina el proceso 1 (de 128K); inician 4 (de 64K), 5 (de 156K)
y 6 (de 128K); termina 3 (64K). Se va fragmentando la memoria libre.

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Fragmentación interna y externa

Fragmentación interna Espacio desperdiciado dentro de la memoria

asignada a un proceso

Porque tuvo que solicitar toda la memoria que
emplearía desde un principio (y la desperdicia la
mayor parte del tiempo
Por tener que alinearse a cierta frontera de
memoria (p.ej. con particiones pre-establecidas)
Fragmentación externa Espacio de memoria desperdiciado entre los

distintos fragmentos

En el esquema anterior, hay 320K libres, pero no
puede lanzarse ningún proceso > 192K, porque
no es un bloque contiguo

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

¿Cómo ubicar un nuevo proceso?

Hay tres estrategias principales para dar espacio en la memoria a un

nuevo proceso:

Primer ajuste Asigna al nuevo proceso al primer bloque de tamaño

suficiente

Mejor ajuste Asigna al nuevo proceso al bloque más chico en que

quepa

Peor ajuste Asigna al nuevo proceso al bloque más grande que

haya disponible

¿Qué ventajas / desventajas? puede tener cada uno?

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Primer ajuste

El mecanismo más fácil de implementar
Ejecución más rápida
Pero no considera facilitar las cosas para el futuro. . .

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Mejor ajuste

Requiere revisión completa de los bloques disponibles

. . . O mantenerlos en una lista ordenada
Empleando un ordenamiento en montículo (heap), puede ser
tan ágil/simple como el primer ajuste

Busca que el desperdicio sea el menor posible

Pero va generando muchos bloques muy pequeños

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Peor ajuste

Requiere revisión completa de los bloques disponibles

. . . O mantenerlos en una lista ordenada
Empleando un ordenamiento en montículo (heap), puede ser
tan ágil/simple como el primer ajuste

Busca que los bloques que van quedando tras la creación de
nuevos procesos tiendan a ser del mismo tamaño

Balanceando el tamaño de los bloques remanentes

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Compactación

Independientemente del esquema que elijamos, bajo particiones
flexibles se irá fragmentando cada vez más la memoria

Si no se hace nada al respecto, no podrán lanzarse procesos
nuevos

La compactación consiste en:

Suspender temporalmente a un proceso
Moverlo a otra dirección de memoria
Ajustar su registro base
Continuar con el siguiente, hasta crear un sólo bloque
disponible (de los muchos existentes)

Tiene un costo alto, porque requiere:
Muchas transferencias de memoria
Suspensión sensible de los procesos implicados

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Compactación

Figura: Compactación de la memoria de procesos en ejecución

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

¿Cuándo compactar?

No hay una sóla respuesta

Basado en umbrales, verificando periódicamente el estado del
sistema
Basado en eventos, cada vez que no pueda satisfacerse una
solicitud por haber demasiada fragmentación

Señales que indican necesidad de compactar

Relación entre el número de bloques libres y ocupados
Relación entre la memoria total disponible y el tamaño del
bloque más grande
. . .

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Intercambio (swap)

El SO puede comprometer más memoria de la que tiene
disponible
Cuando inicia un sistema que no cabe en memoria, puede
elegir suspender a un proceso y grabarlo a almacenamiento
secundario

Por ejemplo, un proceso que esté bloqueado esperando un
bloqueo externo

¿Qué pasa con las operaciones E/S que tiene pendientes el
proceso?

Puede exigirse que sólo se pueda hacer E/S empleando buffers
en el espacio del SO

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Costos del intercambio

Esta modalidad de swap fue popular en equipos de escritorio
de fines de los 1980 y principios de 1990

Entre 1 y 8MB RAM

Hoy en día resultarían inaceptablemente lentos

Si un proceso ocupa 100MB
Y la tasa de transferencia sostenida al disco duro es de
50MB/s

SATA ofrece máximos entre 150 y 600 MB/s (dependiendo de
la generación)
Pero típicamente hay varios procesos compitiendo por el
acceso

Suspender el proceso a disco toma un mínimo de 2s de acceso
exclusivo
Traerlo de vuelta a memoria, otros 2s

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Índice

1 Memoria contigua

2 Segmentación

3 Paginación

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

¿Cómo es la visión del programador?

El trabajo del compilador es traducir lo que ve/entiende el
programador a algo que pueda entender la computadora
Para el programador, la memoria no es un espacio contiguo,
sino que hay separaciones muy claras

El programador no tiene por qué ver relación entre las
secciones de texto y datos
No tiene por qué preocuparse de la cercanía entre el espacio de
libres y la pila
No tiene por qué importarle la estructura representada en la
pila
Las bibliotecas externas enlazadas son meras cajas negras

Gunnar Wolf

Administración de memoria: Asignación de memoria

Memoria contigua
Segmentación
Paginación

Traduciendo la visión del programador

. . . ¿No podría traducirse esta separación a algo generado por
el compilador?

Y que, de paso, pueda aprovechar el sistema. . .

El espacio de un proceso se traduce en varios segmentos en
memoria

En vez de sólo un registro base y un registro desplazamiento,
requerimos de uno por segmento

Una tabla de segmentos por proceso.
Típicamente, un juego de registros especiales en el CPU

La resolución de direcciones es análoga a la descrita
anteriormente, con apoyo del MMU
El direccionamiento se hace explícitamente indicando
s
  • Links de descarga
http://lwp-l.com/pdf13345

Comentarios de: Administración de memoria: Asignación de memoria (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad