Está en la página 1de 50

Memoria - Gestin

Objetivo:
Veremos como varios procesos pueden compartir la
memoria en un sistema multi-programado, desde el
enfoque de "mquina desnuda" hasta los sistemas
paginados o segmentados.

Con base en Diapositivas de Harold Mora Aguilar

Mquina desnuda Para entender el


trmino
No tiene Sistema Operativo
Generalmente se puede igualar a mquina de
estado.
Trabajan por interrupciones.
Utilizadas mucho para tiempo real.
Solo son capaces de leer una instruccin,
incrementar el contador del programa y ejecutar la
instruccin (a altas velocidades)

Qu es la memoria - Definiciones
La

memoria es una tabla de palabras cada una de


ellas con su propia direccin. Es un conjunto de
celdas referenciables por medio de una direccin
lineal (p.ej. de la 0000h a la FFFFh)
Gestor

de memoria: Es la parte encargada de


asignar memoria a los procesos, debe proporcionar
proteccin y comparticin. Debe repartir el
almacenamiento existente entre los procesos, de
manera que cada uno, tenga un espacio
independiente, proveyendo adems mecanismos
para evitar la interferencia (voluntaria o no de otro
proceso)

Gestor de memoria
Tratar de repartir de forma eficiente la memoria
para introducir tantos procesos como sea posible.
Varios procesos podrn ejecutarse de forma
concurrente teniendo en cuenta que:
La memoria desaprovechada debe de ser la
menor posible.
Evitando fragmentacin.
Memoria ocupada por varias copias de un
mismo objeto.

Gestor de Memoria
Memoria ocupada por las estructuras de datos
necesarias para la operacin del gestor de
memoria.
No debe de perjudicar al rendimiento, debiendo
minimizar:
Complejidad de los procesos en el tiempo.
Procesos suplementarios (tiempos) de acceso
a memoria.

Fragmentacin
Memoria que queda desperdiciada al efectuar el
reemplazo de los procesos. Quedan huecos entre
dos o ms procesos de manera no contigua y cada
hueco no es capaz de soportar ningn proceso de
la lista de espera.

Fragmentacin
Dos tipos
Interna, se debe a la diferencia de tamao entre
la particin de memoria y el objeto residente
dentro de ella.
Fragmentacin
externa,
se
debe
al
desaprovechamiento
de
memoria
entre
particiones.

Reubicacin
Reubicacin:
El programador no conoce qu otros programas
residirn en la memoria en el momento de la
ejecucin.
Mientras se est ejecutando el programa,
puede que se descargue en el disco y que
vuelva a la memoria principal, pero en una
ubicacin distinta a la anterior (reubicacin).
Se deben traducir las referencias a la memoria
encontradas en el cdigo del programa a las
direcciones fsicas reales.

Reubicacin
Hay que distinguir entre:
Direcciones virtuales (programador), La traduccin de las
direcciones virtuales a reales es implementada por una
Unidad de Manejo de Memoria (MMU). El sistema
operativo es el responsable de decidir qu partes de la
memoria del programa es mantenida en memoria fsica.
Direcciones Fsicas
Reubicacin esttica

Se lleva a cabo antes o durante la carga del programa


Los programas no pueden ser movidos una vez iniciados.
Por ejemplo los programas .com del DOS.

Reubicacin
Reubicacin dinmica
El paso de direccin virtual a real, se realiza en
tiempo de ejecucin.
Se necesita HW adicional (MMU)
Todas las direcciones son relativas a una
posicin fija.
Los programas se pueden mover en tiempo de
ejecucin.

Direcciones

Proteccin y uso compartido


Qu debemos proteger:
El propio sistema operativo
El resto de procesos

Mtodos:
Registros base y lmite
Bits de proteccin en memoria (IBM 360)
Derechos de acceso en tablas de traduccin

Problema: Compartir memoria

El mtodo ms sencillo Mquina


desnuda
El usuario era el dueo de toda la memoria, por
tanto no existe gestor.
El mtodo ms sencillo
No hay servicios de parte del sistema.
Una instruccin como
MOV REGISTRO1, 1000 /* mova el contenido
de la direccin de memoria fsica 1000 a
REGISTRO1 */
Preguntmonos podamos tener dos programas a
la vez?

Mquina desnuda

Memoria
Usuario

Registro lmite Monitor residente


Es utilizado sobre todo en procesos batch.
Memoria
MONITOR
Direccin lmite

CPU

Direccin>Lmite

No

Evolucin: Memoria particionada Continua


La memoria fsica se divide en particiones, para
satisfacer la demanda de la misma.
A un proceso x se le asigna una particin en la que
quepa, si existen particiones libres. Cada
particin aloja un proceso.

Cuando un proceso residente termina, libera la


particin para ser otorgada a otro proceso
solicitante.

Evolucin - Memoria particionada


continua
Existen dos variantes:
Multiprogramacin con nmero fijo de tareas.
MFT nmero fijo de particiones, con tamao
fijo.
Multiprogramacin con nmero variable de
tareas. MVT depende de la capacidad de
memoria y tamao de los procesos a ejecutar,
con particiones de tamao variable.

Evolucin - Memoria particionada


continua
MFT:
Tiene fragmentacin interna y externa
Desventaja en asignacin dinmica de memoria
Problema: Intercambio de trabajos con E/S
pendiente

Memoria particionada - Dinmica


MVT:
Tamao y nmero de particiones variables.
Fragmentacin externa.
Ventaja por asignacin dinmica de memoria.
Requiere algoritmos de gestin ms complejos.

Registro base y lmite

Con reubicacin esttica

Con reubicacin dinmica

Bits de proteccin de memoria


IBM opt por colocar una contrasea de 4 bits a
bloques de 2 Kb de memoria.
La IBM/360 detena cualquier acceso a una parte
de la memoria cuyo cdigo de proteccin fuera
distinto.
Si esos 4 bits eran 1, perteneca el bloque al
sistema operativo y no permita la operacin sobre
esa direccin.
Puesto que el Sistema Operativo era el nico
autorizado para modificar los cdigos y las claves
de proteccin, los procesos de los usuarios no
podan interferir entre s.

Tabla de descripcin de particiones


Mecanismos de gestin de la memoria contigua
Tabla de descripcin de particiones (TDP),
estructura de datos usada por el S.O. para
gestionar la memoria.
El S.O. gestionar una lista de huecos libres en
memoria y seleccionar qu procesos pueden
cargarse en memoria para ejecutarse
Primitivas internas de pedir y liberar memoria

Tabla de descripcin de particiones


Base

Tamao

Estado

0K

100K

Ocupado

100K

300K

Libre

Proceso i

400K

100K

Ocupado

Proceso j

500K

250K

Ocupado

Proceso k

750K

150K

Ocupado

900K

100K

Libre

Sistema Operativo
100K

400K
500K
750K

900K
1000K

Segmentacin de memoria
Segmentacin:
La segmentacin es una tcnica que asigna
segmentos contiguos de memoria para las reas
de memoria de un proceso.
De esta forma, logra acomodarse ms a la visin
de la memoria por parte del usuario.
Un proceso se compone de una seccin de cdigo,
una pila (stack), un espacio para la memoria
dinmica (heap), la tabla de smbolos, etc.
Cada componente se agrupa en un segmento del
tamao necesario.

Segmentacin
Cada uno de los segmentos tiene una longitud
variable que est definida por el tamao de ese
componente del programa.

Cmo se puede direccionar un elemento o dato


dentro de un segmento?
Se hace convirtiendo la direccin lgica en fsica
a partir del inicio del segmento.

Segmentacin

Segmentacin
Es un esquema de gestin de memoria con varias
ventajas:
Los bloques de un proceso pueden estar situados
en reas de memoria contiguas
Suministra reubicacin dinmica
Proteccin y uso compartido

Segmentacin
Ejemplo: computadores de la familia 80X86 de
INTEL
Pensando en la reubicacin, cada segmento empieza
en la direccin virtual cero
Las direcciones lgicas, en estos sistemas tienen dos
componentes:
Nmero del segmento
Desplazamiento dentro del segmento
Los segmentos pueden tener tamaos diferentes

Veamos con tabla de segmentos

Segmentacin
Se utiliza en modelos avanzados de S.O.
Ya existan muestras de uso de segmentacin
desde Unix y DOS.

Suponga que tiene un bus de direcciones con dos


palabras de 16 bits cada una y una direccin base
del segmento de E1FAh, usted est buscando la
direccin que corresponde a la ABCD dentro del
segmento, cul sera la direccin real o absoluta
que anda buscando? Suponiendo que cabe en el
segmento 00018DC7

Tabla de segmentos
Qu

ocurre si la TDS es muy grande?


Solucin:
Se guarda en memoria apuntada por un registro
base STBR (segment table base register) indica
inicio de la tabla de segmentos en memoria.
Un registro lmite indica longitud de la tabla de
segmentos.

Tabla de segmentos
Problema: se necesitan dos referencias por cada
acceso
Solucin:
Memoria cache
Utilizar registros internos dentro de la CPU
(Intel)

Segmentacin
Proteccin basada en los registros base y lmite
Se pueden establecer distintos derechos de acceso
(rwx) a cada mdulo del proceso
Estos derechos suelen guardarse en la TDS

El uso compartido es uno de los argumentos ms


importantes en favor de la segmentacin

Segmentacin
Comparticin de cdigo:
Puede realizarse a nivel de segmento (cdigo o
datos).

Cada proceso tendr una tabla de segmentos.


Compartir un segmento significa que una entrada
de la tabla de segmentos coincide en varios
procesos (igual posicin fsica).

Segmentacin - Comparticin

Segmentacin
Ventajas
Elimina de fragmentacin interna
Crecimiento dinmico de los segmentos
Proteccin y uso compartido
Enlace y carga dinmicos
Inconvenientes
Necesita compactacin de memoria
Tamao mximo fijo para un segmento (tpico 64
K)
Necesita HW adicional

Compactacin y condensacin de
memoria
Compactacin:
Intenta solucionar la fragmentacin externa
Consiste en desplazar posiciones ocupadas
para que estn juntas en memoria
Solo es posible si hay reubicacin dinmica

Compactacin

Cul es el problema que se genera?

Condensacin de memoria
Se une dos segmentos de memoria para generar
un segmento de mayor tamao.
Minimiza la fragmentacin interna al unirla a un
segmento externo.
Costo menor que compactacin.

Condensacin de memoria
Sistema
Operativo

Sistema
Operativo

Otros Procesos

Sistema
Operativo

Otros Procesos

Hueco 2K

Hueco 2K

Otros Procesos

Sale Proceso A

Proceso A 5K
Otros Procesos

Hueco 7K
Proceso A 5K
Otros Procesos

Otros Procesos

Paginacin de memoria
La unidad bsica de transferencia es la pgina.
Corresponde a una zona de memoria contigua de
un determinado tamao fijo.
Es siempre una potencia de 2 (4KB es un
estndar)
La memoria de cada proceso es considerada en
pginas.
La memoria del sistema se divide de la misma
forma y se denomina marcos de pgina

Paginacin
La asignacin de memoria no es contigua
La direccin virtual consta de un nmero de pgina
virtual y un desplazamiento
La traduccin de direcciones se lleva a cabo con la
ayuda de la tabla del mapa de pginas (TMP). La
TMP se construye en tiempo de carga del proceso en
memoria

Paginacin
Una direccin virtual en un sistema paginado es un
par ordenado (p,d)
En el que p: Es el nmero de pgina de
almacenamiento en la que reside el elemento al
que se hace referencia y
d: Es el desplazamiento dentro de la pgina P
donde se localiza ese elemento.
Un proceso solo puede ejecutarse si su pgina
activa est en memoria o almacenamiento primario

Paginacin

Paginacin - Consideraciones
Si se solicitan s posiciones de memoria el n de
pginas=[s/p] donde p es el tamao de la pgina en
posiciones de memoria

Si el cociente anterior no es entero se produce la


llamada fragmentacin de pgina
Los marcos libres se suelen mantener en una lista
enlazada
Si la TMP es muy grande, esta se debe mantener en
memoria principal.
Solucin: la misma que en segmentacin (cach)

Paginacin Proteccin y uso


compartido
Proteccin basada en bits de acceso de las entradas
de la TMP
Compartir pginas es bastante sencillo

La paginacin es gestionada por completo por el


sistema operativo
La paginacin elimina la fragmentacin externa,
pero no la interna
Con pgina grande aumentamos la fragmentacin
interna

Consideremos un sistema con segmentacion con


las siguientes caractersticas
I las direcciones son de 16 bits (4 bits para el
numero de segmento y 12
bits para el desplazamiento)
I cada entrada en la tabla de segmentos tine 28
bits, los 12 mas
signicativos para el lmite y los 16 menos
signicativos para la base
I Un proceso tiene dos segmentos y las dos
primeras entradas de su tabla
de segmentos en memoria valen 0x2EE0400 y

También podría gustarte