Anda di halaman 1dari 27

1

TEMA 7 ADMINISTRACIN DE LA MEMORIA


JERARQUA DE ALMACENAMIENTO
Cuando el diseador se plantea lo que es la gestin de memoria del sistema debe tener en
cuenta que la memoria es unos de los recursos crticos del sistema, es crtica porque un
programa al ejecutarse debe estar cargado en M. entonces cuanta ms memoria tengamos o
mejora la optimicemos ms programas podremos guardar en ella.
Qu quiere un diseador?Que sea barata, gran capacidad y muy rpida.
Pero no se pueden conseguir las tres cosas.
A mayor capacidad el tiempo de acceso es mucho mayor, es ms lenta.
Se observa que ha mayor capacidad menor coste por bit, comparamos Mdulo de memoria y
disco duro, no cuesta lo mismo un disco duro de 8 gigas que 8 gigas de memoria Ram.
A menor tiempo de acceso, si queremos memoria ms rpida, el coste se nos dispara.
Los diseadores del sistema no pueden tener un solo tipo de memoria donde alojar todoas las
memorias, existe una jerarqua de memoria.
Esa jerarqua intenta solucionar esos inconvenientes a la hora de disear el esquema de
memoria.

Registros
Jerarqua tradicional de memoria
Cach
Memoria principal
Disco Magntico
Cinta Magntica

Voltil
No volatil

Registros
Cach
Memoria principal
Cach de disco
Disco Magntico
Cinta Magntica
Cinta magntica Disco ptico

Interna
Externa
Jerarqua moderna de memoria

En esa jerarqua podemos ver que se cumplen una seria de condiciones:


Al bajar de nivel aumenta la capacidad de la memoria.
Al bajar de nivel disminuye el coste por bit.
El registro es el ms caro, luego la cache...
Al bajar de nivel se observa que el tiempo de acceso aumenta. Acceder a un disco
ptico es ms lento que a un disco magntico.
Si seguimos bajando de nivel, disminuye la frecuencia de acceso: no es lo mismo que
el tiempo que es el tiempo que trae el dato, es el n de veces que accede a esa
memoria.
Esta es la clave del funcionamiento de la jerarqua de memoria, esa disminucin de frecuencia
se debe sobre todo a lo que se llama como principio de localidad o cercana de referencia.
Sin embargo ese conjunto va cambiando a lo largo del tiempo.

Ese principio lo que establece es que un proceso durante su funcionamiento hacer referencia a
muchas funciones, pero durante un breve espacio de tiempo el proceso hace referencia a un
pequeo grupo de referencias.
La cach va a intentar que el tiempo de acceso sea mucho ms rpido para no tener que
acceder a disco o Mp, distinguimos entre M. interna y M. externa, normalmente lo que es el
disco magntico se le suele conocer como M. secundaria.
Vamos a ver los pasos que hay que realizar para la carga de un programa en M.p:

Programa
fuente

otros
mdulos
objeto

Compilador
o ensamblador

Mdulo
objeto

biblioteca
del
sistema

Enlazador

biblioteca
del sistema
cargada
dinmicamente

Mdulo
de carga

Cargador
Imagen del proceso
en memoria

Tenemos un programa fuente, cuando lo compilamos obtenemos un mdulo objeto que luego
necesita ser enlazado con el resto del los mdulos objetos que tenga el sistema, para formar
un mdulo de carga que es el que finalmente se introduce en memoria, una vez cargado de
memoria es cuando verdaderamente podemos decir que es un proceso, entonces tenemos toda
la imagen del proceso.
Una vez cargado en memoria se puede enlazar con bibliotecas del sistema de forma dinmica.
Esas son las fases por las que pasa el programa para convertirse en proceso.
El proceso est definido por la imagen que si recordamos tena:
El Bloque de control de procesos
Datos
relativas
Instrucciones Referencias a datos
fsicas
Referencias a instrucciones: lgicas o simblicas:
La Pilas

Si se observa, consta de datos e instrucciones que tienen referencias a memoria, referencias a


datos y referencias a sus propias instrucciones.
Esas referencias, o direcciones, en realidad pueden ser de tres tipos:
Lgicas, relativas o absolutas.

Direcciones
simblicas
PROGRAM

JUMP I
i

Direcciones
relativas
PROGRAM

1024

JUMp 400
400

Direcciones
absolutas
PROGRAM
JUMP 1424

1424

LOAD J

LOAD 1200

LOAD 2224

DATA

DATA

DATA

1200

2224

Dir simblicas: no tienen nada que ver con la posterior ubicacin fsica de ese dato, son
normalmente las direcciones que emplea el programador.
Dir relativa: vienen expresadas respecto a un conjunto determinado, normalmente al principio
del programa.
Estas direcciones normalmente son las que utiliza el cargador y el enlazador.
JUMP 400: desde el principio saltar 400.
Dir. Absolutas o fsicas: son las que realmente ocupan de memoria real, de memoria fsica.
Son las que realmente se usan en ejecucin, el programa solo entiende de direcciones
fsicas, para ellos necesitamos hacer una traduccin de las simblicas y relativas a las
fsicas.
Esa traduccin de direcciones, tambin conocida como ligadura de direcciones se puede hacer
en distintos instantes, en cualquiera de las fases que hemos vistos, por las que pasa el
programa a proceso.
Tiempo de compilacin
Tiempo de carga
Tiempo de ejecucin.
Traduccin en tiempo de compilacin
En tiempo de compilacin o enlazado, observar que lo que tenemos que hacer es generar ya
un mdulo de carga con direcciones fsicas, eso implica que el programador, el cargador o el
enlazador tenga que tener conocimiento de la gestin de memoria, qu partes estn libres y
qu partes estn ocupadas.
Por otro lado, el modo de carga que se genera, solamente se puede ejecutar en la zona que se
haya especificado, no puede cambiar de lugar, si vara de zona tiene que volver a compilarlo
de nuevo.
Si un proceso sale de memoria y luego entra de nuevo debe ser en la misma zona de memoria.
Para solventar esos problemas la otra manera es que se realice en tiempo de carga.

4
Traduccin en tiempo de carga
En tiempo de carga por un lado elimina que el programador conozca como se est
gestionando la memoria.
En este caso la gestin de memoria la va a realizar el cargador que decide donde va a ubicar el
proceso, pero estamos en lo mismo de antes. Puede que yo introduzca el programa en
memoria fsica, y ya tenga las direcciones fsicas, por lo que no puedo cambiarlo de sitio.
Si un proceso se suspende, cuando se vuelve a activar se situa en la misma zona de memoria.

Traduccin en tiempo de ejecucin


En el ltimo momento.
Cuando yo vaya a ejecutar la instruccin es cuando se va a traducir la direccin.
Este esquema es un mtodo muy flexible, porque el proceso puede estar ubicado en cualquier
parte, ya que es justo cuando voy a ejecutarlo es cuando lo traduzco.
Esa traduccin necesita la ayuda del hardware, y tampoco es un hardware muy complejo, el
criterio conceda el hardware necesario para realizar esa traduccin en tiempo de ejecucin.

Direccin base

Direccin
Relativa
CPU

lmite

direccin
absoluta
+

si
<=

Memoria
no

error de direccionamiento
El programa que est ubicado en memoria slo tiene direcciones relativas, entonces las CPU
va generando todas la direcciones relativas, y nosotros le sumamos el contenido de un registro
hardware que contiene el inicio donde est ubicado el proceso, entonces obtenemos la
direccin absoluta, posteriormente podemos comparar esa direccin absoluta con otro registro
hardware que lo que contiene es el lmite de la zona de memoria ocupada por el proceso, si
est dentro del lmite podremos acceder a memoria, si est fuera del lmite provocaremos un
error de direccionamiento.
Observar que con dos registros hardware y una suma y comparacin podemos realizar la
traduccin
Proporciona un mecanismo de proteccin de la memoria porque si se pasa del lmite que tiene
cada proceso daramos un error de direccionamiento.
Con este esquema el proceso lo puedo poner en cualquier parte de la memoria, porque la
traduccin la hago justo cuando lo voy a ejecutar.
Cada vez que cambiemos de proceso o de contesto, esos registros lmite y base deben
actualizarse, y deben almacenarse en el BCP para que cada vez que cambiemos de proceso
tengamos un valor vlido.

FUNCIONES DEL ADMINISTRADOR DE MEMORIA


Debe conocer:
Qu zonas de la memoria estn libres y qu zonas ocupadas.
Introducir los procesos en memoria.
Se encarga de asignar y desasignar memoria a los procesos conforme vayan necesitando y
liberando.
Debe controlar el intercambio entre Mp y Ms.
Adems de esas funciones, el administrador de memoria debe cumplir 3 requisitos:
Proteccin:
No solo debe proteger la zona de memoria del proceso, sino de la memoria del sistema
operativo u otro proceso.
Comparticin de memoria:
Cuando se ejecutan dos procesos iguales, debe permitir que dos procesos compartan
la memoria.
Reubicacin:
Un proceso puede cambiar de zona de memoria durante su ejecucin.
Este requisito tiene sentido evidentemente es sistema multi programado.
En un sistema mono programado no tiene sentido porque si solo hay un proceso, para
qu lo voy a cambiar de sitio.
Distintos esquemas de asignacin de memoria
Esquemas de gestin de memoria

Asignacin completa y contigua: el proceso se ejecuta en una zona continua


Mquina desnuda
Monoprogramacin
Particiones mltiples:
Particiones fijas
Sistema compaero
Particiones variables.

Asignacin completa y no contigua:


Paginacin
Segmentacin
Segmentacin-paginacin

Asignacin parcial y no contigua:


Memoria Virtual

Asignacin completa y contigua:


El proceso se ejecuta en una zona continua
Mquina desnuda: Es un sistema donde no hay S.O y no hay gestor de Memoria, quien lleva
la cuenta es el propio programador.
Suelen ser pequeos microprocesadores, seales de humo, dedicados a una sola cosa.
Mono programacin: La Memoria dividida en dos partes:
Una parte en el S.O. en un extremo de la memoria, zona alta o baja, y el resto se deja para
procesos de usuarios, ej MSDOS.
La eleccin de donde se debe encontrar el S.O. vendr dada por donde se encuentra el vector
de interrupciones, lo normal es situarlo junto al vector de interrupciones, parte alta o baja,
algunos sistemas prefieren separarlo.
Es un sistema simple que requiere de una proteccin del S.O, que el proceso de usuario no
pueda acceder al S.O. Para ello necesita un registro hardware, ya sea un nico registro o dos
registros.
Qu le pasa al MS-DOS? no hay registro lmite y cualquier proceso puede cargarse el S.O
fcilmente, observar que la proteccin tampoco es muy complicada, las direcciones que se
generan se recuperan con el registro lmite.
Ej. IBM1120 y Spectrum : zona baja y 2115B: zona alta
Particiones mltiples:
Particiones fijas
Sistema compaero
Particiones variables.

Registro
lmite

Sistema
Operativo
+
Vector de
interrupciones

Lmite
Superior

Sistema
Operativo

Usuario

Usuario

Usuario
Registro
Lmite

Libre

Zona baja

Libre
Sistema
Operativo
+
Vector de
interrupciones
Zona Alta

Lmite
inferior
Libre
Vector de
Interrupciones

Sin vector de
interrupciones

7
MULTIPROGRAMACIN CON PARTICIONES FIJAS
Es la estrategia ms simple, consiste en dividir la memoria en una serie de particiones, en
cada una de esas particiones se aloja un proceso.
El n y tamao de esas particiones se caracteriza porque es un nmero fijo que se establece en
la fase de generacin del sistema.
Seleccin del tamao de la particin
El diseador del sistema antes de implementar el sistema debe establecer los valores.
Hay que tener en cuenta:
el n de particiones va a determinar el grado de multiprogramacin del sistema, ya que
si en cada particin hay un proceso y hay 3 particiones solo podr tener 3 procesos
simultneamente, si quiero un grado de multiprogramacin elevado necesitar muchas
particiones.
el tamao determina dos aspectos:
el tamao mximo de un proceso, para que se pueda ejecutar un proceso
necesito asignarlo a una particin, por lo tanto el tamao mximo de un
proceso es el tamao mximo de la particin.
el tamao del proceso afecta la cantidad de memoria que asigne a un proceso,
es decir, una vez que establezca las particiones, cuando llega un proceso se
asigna a una particin, y ese proceso puede o no ocuparla entera, si no ocupa
toda la particin, hay desperdicio de memoria conocido como fragmentacin
interna.
Tenemos 2 alternativas:
Todas las particiones del mismo tamao: Es una estrategia ms simple, pero es poco
flexible,
Particiones de distinto tamao
ALGORITMOS DE COLOCACIN
Yo tengo una serie de procesos, dnde ubico cada proceso?
Estos algoritmos dependen de la particin que hayamos elegido.
Particiones iguales: es trivial el algoritmo, se mete en cualquier particin de forma
automtica.
Particiones distintas: hay varias alternativas.
Una cola de procesos por particin: llega el proceso y lo sito en la cola donde menor
fragmentacin interna genere. Cuando la particin queda libre selecciona el primero de la
cola.
Inconveniente: puede haber particiones libres con procesos esperando en otra cola porque su
particin est ocupada
Sistema Operativo
Procesos
Nuevos

Otra alternativa es tener una nica cola de procesos:


Sistema Operativo

Procesos nuevos

Llega un proceso y lo situ en la cola, cuando una particin queda libre tendr que seleccionar
que proceso de la cola va en esa particin, es digamos la seleccin de un proceso.
Para seleccionar ese proceso hay diversos algoritmos, los que ms se suelen emplear son:
Mejor ajuste: Cuando una particin queda libre, elegimos el proceso que menor
fragmentacin interna produzca.
Primer ajuste: Vamos recorriendo la cola hasta encontrar el primer proceso que quepa en la
particin.
Si se observa, toda esta funcin de colocar procesos en memoria, en una particin determinar
es en hacer que un proceso sea aceptado en el sistema, que pase de ese estado de nuevo a un
estado de listo, esa transicin de nuevo a listo es del planificador a largo plazo.
Todos estos algoritmos es el planificador a largo plazo.

Proteccin entre particiones: debo evitar que un proceso acceda a zonas de memoria fuera de
su particin:
Hay dos alternativas:
dos registros lmites, zona superior y zona inferior de la particin: parto de una direccin
absoluta.
lmite inferior

lmite superior

dir. absoluta
CPU

>=

<

no

si

Memoria

no
error de direccionamiento

partimos de una direccin absoluta, y a hay que comprobar que la direccin se encuentre entre
los dos lmites

Dos registros, un registro base y otro longitud:


Longitud
dir. relativa
CPU

base
dir. absoluta

<=

+
Si

Memoria
S

no
Error de direccionamiento
Partimos de una direccin relativa, se compara con la longitud, si est dentro de la particin se
puede acceder a l.
Cul es mejor? El de base y longitud: Al ejecutarse direcciones relativas la traduccin de
direcciones se produce en el momento de ejecucin, por lo cual el proceso es reubicable y
puede cambiar de particin, mientras que con uno de registro lmite la traduccin debe ser
previa a la ejecucin del proceso.
Con el registro longitud y base, la ventaja que tiene es que al partir de una direccin relativa
mientras realiza la proteccin hace la traduccin direcciones en tiempo de ejecucin y con eso
se puede reubicar el proceso en otra particin.
El otro aspecto son los elementos de control que necesitamos para llevar a cabo el control de
la memoria, qu zona de la memoria estn libres y qu zonas estn ocupadas.
En este caso el nico elemento que necesitamos en usa tabla de particiones, que tiene una
entrada por particin, y contiene la direccin base de la particin el tamao y como se
encuentra.
Nmero de la
particin
0
1
2
3
4
5

Base de la particin
0K
100K
400K
500K
750K
900K

Tamao de la
particin
100K
300K
100K
250K
150K
100K

Estado de la particin
ASIGNADA
LIBRE
ASIGNADA
ASIGNADA
ASIGNADA
LIBRE

Esa tabla es la que se crea en el momento de la generacin del sistema.


Inconvenientes: Por un lado, presenta fragmentacin interna, si el proceso no ocupa toda la
particin se desperdicia espacio.
El tamao de la particin es fijo. Si quiero cambiar el tamao tengo que volver a
generar el sistema, esto implica que el grado de multiprogramacin del sistema sea
tambin fijo.
El tamao del proceso est limitado a la mxima particin.
Sistema que lo usan:
IBM
OS/MFT (Operative System Multiprograming with a Fixed Number o Task)

10
MULTIPROGRAMACIN CON PARTICIONES VARIABLES O DINMICAS
El sistema IBM o OS/MUT,
Intenta vencer los inconvenientes anteriores.
Usa la memoria que l necesite, se va creando lo que necesita.
Si un sistema se suspende o bloquea se va de memoria y deja ese espacio para otro proceso.
Con este esquema las particiones en n y tamao van cambiando a lo largo del tiempo.
Los procesos son reubicables.
Sistema
Operativo

Espacio
de
procesos

128k

Sistema
Operativo

128k

Sistema
Operativo

128k

Sistema
Operativo

128k

Proceso1

320k

Proceso1

320k

Proceso1

320k

Proceso 2

224k

896k
Proceso 2
224k

576k

320k

Proceso 3

288k
64k

Sistema
Operativo

128k

Sistema
Operativo

128k

Proceso 1

320k

Proceso 1

320k

224k

Proceso 4

128k
96k

288k

Proceso 3

288k

Proceso 3

64k

64k

Sistema
Operativo

128k

Sistema
Operativo

128k

320k

Proceso 2

Proceso 4

128k
96k

Proceso 4

224k
96k
128k
96k

Proceso 3

288k

Proceso 3

64k

288k
64k

Inconveniente: si observamos a cada proceso le damos la memoria que l necesita, por lo cual
el proceso no tiene fragmentacin interna.
Pero al final vamos creando huecos en memoria cada vez ms pequeos, esos huecos tan
pequeos son difciles de asignar a un proceso, por lo cual nos podemos encontrar con lo que
se conoce como fragmentacin externa: memoria libre en el sistema que no puede ser
asignada a ningn proceso.

11

Para solucionar la fragmentacin externa hay una tcnica que se conoce como compactacin:
o recoleccin de basura, incluso en algunos libres aparece como reducto de la basura.
La idea de la compactacin es agrupar todos los procesos que estn en memoria para formar
un gran huevo libre, esa es la idea.
El problema de la compactacin son dos.
Sistema Operativo

Sistema Operativo

Uso

Uso

Libre

Uso

Uso
Libre

Uso

Uso

Libre

Libre

Por un lado necesita que los problemas sean reubicables.


Es muy costoso en tiempo, mientras se produce la compactacin no se puede ejecutar ningn
proceso, el sistema se paraliza.
Resuelve la fragmentacin externa
Uno de los aspectos en el diseo de la compactacin es saber cundo se debe de realizar,
Hay 3 alternativas:
1. Cuando haya un porcentaje de la utilizacin de la memoria, 80%, 70%, el problema es
que se puede compactar cuando no haya procesos que quieran acceder al sistema.
2. Cuando hay procesos esperando para entrar en memoria, el problema es que el sistema
debe estar continuamente comprobando si algn proceso est esperando.
3. Cada un tiempo determinado, 10 min, 20 min... el problema es determinar el tiempo.

12
ALGORITMO DE COLOCACIN DE UN PROGRAMA EN MEMORIA
Se encarga de colocar un proceso en uno de los bloques libres que haya, a la hora de decidir
qu algoritmo de colocacin se va a usar, es necesario hacer un examen cuidadoso, no vaya a
ser que se produzca mucha fragmentacin externa.
Se emplean los siguientes algoritmos:
Primer ajuste: el proceso se coloca en el primer hueco donde quepa.
Mejor ajuste: donde mejor quepa, dejando menos sitio.
Siguiente ajuste: como el primero pero empezando desde el ltimo hueco que se
asign.
Peor ajuste: en el que ms sitio haya, en el hueco ms grande.
8k

8k

12k

12k
Primer Ajuste

22k
6k
Mejor Ajuste

18k
ultimo bloque
asignado 16k

2k

8k

8k

6k

6k

14k

14k

36k

Siguiente ajuste
Peor ajuste

20k

13
Se asigna un bloque de 16 k
En Primer ajuste: entra al principio en el hueco de 22.
En mejor ajuste: entra en el hueco de 18 k
En el peor ajuste: entra en el mayor, el de 36 k.
En el siguiente ajuste: entra en el siguiente despus del anterior, donde quepa, es decir el de
36, si llega al final y no hay se debe empezar de nuevo.
Cul de los 4 algoritmos es el mejor?
El peor ajuste: rompe los ajustes mayores, e impide que entren los procesos mayores.
El mejor ajuste: crea fragmentos muy pequeos, luego no se pueden utilizar. Es el peor
algoritmo de todos.
El siguiente ajuste: busca el primer hueco tras la anterior asignacin, los procesos los va
ubicando en donde hay un hueco grande. ej: empiezan a entrar procesos y se van poniendo
uno tras otro, pero luego dejan de usarse y sus huecos quedan libre, pero los siguientes se
siguen asignando abajo, rompiendo espacio grande.
El primer ajuste: es el mejor, el ms simple, el ms rpido y el que mejor resultados da.
Siempre intenta ocupar los procesos al principio y deja los huecos grandes abajo.

ELEMENTOS DE CONTROL DE LA MEMORIA


El sistema necesita saber qu lugar est libre y cual ocupado.
Se recurre a dos estrategias:
El mapa de bits:
Es una estrategia simple, lo que hace es tener un bit por unidad de asignacin.
Puede ser bit, byte, kbyte, tan grande o tan pequea como uno quiera.
Si el bit vale 1 es que esa unidad de asignacin est ocupada, si vale 0 significa que est libre.

P1
1 1

P2
1 1 1

P3
1 1

P4
1 1 1

P5
1 1

0 0

Cuanto ms grande sea la unidad de asignacin, el mapa de bits es ms pequeo, a mayor.


Cul es mejor?
Grande: su problema es que tiene mayor fragmentacin interna, porque lo mnimo que asigno
es una unidad de asignacin, y si es de 32k, eso ser lo mnimo que tenga asignado.
No debe ser uno muy grande ni muy pequeo.
Es complicado localizar un hueco de cierto tamao, es decir, uno de 30 unidades de
asignacin, es buscar 30 ceros consecutivos, y eso es muy costoso.

14

La lista Enlazada
Es una estructura que contiene informacin sobre todos los elementos que hay.
Cada elemento de esa lista tiene la siguiente informacin:

Tipo: Hueco o Proceso


P 0 4

H 4 3

P 7 7

Comienzo
P 14 6

Tamao que ocupa


H 20 2

P 25 4

H 29 3

y un puntero al siguiente elemento.


Est claro que el tamao es mayor que el mapa de bits, porque usa ms informacin.
La lista est ordenada por direcciones.
La ventaja que tiene la lista es que cuando acaba un proceso, el tipo casa de P a H, es muy
fcil liberar memoria.
Adems en el cambio de tipo deben de hacerse la fusin de los huecos si hay dos adyacentes.
En ambos casos siempre se finalizar el proceso, si hay dos huecos a los lados se deben
fusionar entre los dos, si hay un hueco pues con l, si est rodeada de procesos es ms fcil.
Para que la fusin sea ms simple debe de hacerse como una lista enlazada.

Hueco libre
Proceso
Una alternativa a esa lista enlazada es tener en realidad dos listas enlazadas:
una lista de procesos
una lista de huecos
Ahora cada lista la puedo ordenar como quiera, ej: la lista de procesos se ordena por
direcciones y la de huecos por tamao de mayora a menor. El ordenarla de menor a mayor
tamao va a facilitar la poltica de colocacin del proceso.
Liberar un proceso implicara pasar de una lista a otra el elemento.
Esta estrategia de tener dos listas enlazadas, permite incluso tener una optimizacin, que
consiste en implementar la lista de huecos directamente en los propios huecos de memoria, lo
qu significa, tener en el sistema un montn de procesos y huecos
El sistema tendr un montn de procesos y huecos, dentro de la memoria que yo destino a los
procesos del usuario, habr una parte que destine al sistema operativo, dentro de la parte del
sistema operativo tendr que tener almacenada la lista de procesos y la lista de huecos.
La utilizacin consiste, en lugar de tener la lista de huecos en memoria, formarla
directamente sobre los propios huecos libres, en la propia memoria almacena la informacin,
slo necesito un puntero al inicio de esa lista. Se consigue ahorrar memoria de huecos libres.

15

SISTEMA COMPAERO
Hemos visto el sistema de particiones fijas, con el problema del grado de multiprogramacin
fijo, tantas particiones tantos procesos.
El sistema de particiones variables, el problema era la fragmentacin interna, y aparte el
control de la memoria, sea con mapa de bits o lista enlazada, no es tan fcil como en las
particiones fijas.
El Sistema Compaero intenta vencer las dificultades y un sistema con un grado de
multiprogramacin variable, que no tenga fragmentacin externa y adems con un control de
la memoria sencillo.
Idea Base: Asignar a los procesos, bloques de memoria, de longitud variable pero limitados.
en qu sentido?
Considera un tamao de bloque mnimo= 2i
Considera un tamao de bloque mximo=2 m, la memoria fsica que hay para los procesos.
Entonces cada bloque que asigna se caracteriza porque se encuentra entre esos dos tamaos
pero siempre en potencia de dos.
2i 2k 2m
Inicialmente tiene la listas i: es la lista de bloques libres de tamao 2 n, para cada uno de los
tamaos posibles tenemos una lista de bloques libres, inicialmente todas vacas menos la del
tamao mximo que tendr un elemento.
Cuando un proceso pide un bloque de tamao B, el sistema se busca un bloque 2 i libre tal que
2i-1 < B 2i, el bloque libre que ms se adapte a l.
Si no hay libre, divide 2i+1, en 2 bloques de tamao 2i, uno se queda libre y otro se asigna.
Si no hay 2i+1 se divide en uno ms superior.
Se llama sistema compaero porque los que se dividen en 2 son los bloques compaeros.
Si no hay libre:
divide 2i+1 en 2 bloques:
2i (libre) y 2i (asigna)
i+1
si no hay 2
divide 2i+2 en :
2i+1 (libre)
2i+1:
2i (libre)
2i (asigna)
Ej: Un proceso pide 45K y tengo un bloque de 1M, entonces voy dividiendo.
512
1M

256
512

128
256

64
128
64 (asigna)

16

Memoria fsica

1 MB

P1 solicita 45 k

45k 64k

P2 solicita 110 k

256 k

512 k

45k 64k P2 110k

256 k

512 k

P3 solicita 160 k

45k 64k P2 110k

P3 160 k

512 k

P4 solicita 95 k

45k 64k P2 110k

P3 160 k

P4 95k

128 k

256 k

Fin P3

45k 64k P2 110k

256 k

P4 95k

128 k

256 k

Fin P2

45k 64k

128 k

256 k

P4 95k

128 k

256 k

P5 Solicitud 80 k

45k 64k

80 k

256 k

P4 95k

128 k

256 k

128 k

P5 80 k

256 k

P4 95k

128 k

256 k

P4 95k

128 k

256 k

Fin P1
Fin P5
Fin P4

128 k

512 k

1 Mb

Explicacin:
Inicialmente se dispone de un bloque de 1 Mb.
Llega un P1 y pide 45 k, lo que hago es: cojo el bloque de 1 Mb y lo divido en dos de 512 k,
uno me queda libre y divido el otro en dos de 256, uno queda libre, el otro lo divido en dos de
128, uno queda libre y el otro lo divido en dos de 64 k, los divido y queda uno de 32 k pero no
satisface los de 45 k, entonces me quedo en 64 k y se lo asigno al proceso 1.
Ahora llega el Proceso 2 que pide 110 k, como cabe en el bloque de 128 k se lo asigna.
Luego llega P3 de 160 k, le tengo que asignar 256k y como hay uno libre se lo asigno.
Llega P4 de 95k, tengo que buscar un hueco de 128k, no hay, slo quedan de 64 k y de 512 k,
entonces divido el de 512 en dos de 256, uno lo dejo libre y el otro lo divido en dos de 128 y
se lo asigno a uno.
Termina P3 y libero memoria.
Termina P2 y libero memoria.
Llega el P5 y pide 80k le tengo que dar un bloque de 128, tengo uno libre y se lo asigno.
Termina P1 y como su hueco compaero est libre lo fusiono con el de al lado en uno de 128.
El resto de los procesos van acabando y se van fusionando con el resto de los compaeros,
hasta que al final se vuelve al 1Mb.
Este algoritmo presenta un grado de multiprogramacin variable, lo que pasa es que asigna en
bloques de ciertos tamaos.
Tiene fragmentacin interna y fragmentacin externa.

17

PAGINACIN
El problema que se plantea en los anteriores sistemas es que intenta mantener el proceso en
una zona continua de memoria, con la paginacin se rompe ese esquema de asignacin
continua y se empiezan a buscar asignaciones no continuas, es decir, el proceso no tiene
porque estar en una misma zona, sino se puede romper el proceso y se va alojando en los
distintos huecos de memoria, as se reduce la fragmentacin interna.
Los fundamentos bsicos de la paginacin.
La memoria se divide en una serie de unidades llamadas marcos.
El proceso lo divide en pginas.
El tamao del marco y de la pgina es el mismo.
La idea de la paginacin, es tomar un proceso, dividirlo en pginas y lo colocarlo en marcos.
La caracterstica de la paginacin es la separacin que hace entre la visin que tiene el usuario
del proceso y la visin que tiene del sistema operativo.
El usuario ve sus procesos como una zona contigua y el sistema lo ve como una divisin de
pginas, cada una en un marco.
Evidentemente para que la paginacin sea efectiva se necesita hardware que permite hacer la
traduccin de esa pgina al marco.
Otra caracterstica de la paginacin es que posee fragmentacin interna, eso se puede ver en
la figura.
marco 0
marco 1

pgina 0
pgina 1

pagina 3

Hardware de
paginacin

pgina 2

marco 2

pagina1

marco 3
pag marco

pagina 3

marco 4

pagina 0

marco 5

pgina 2

Proceso
Memoria
Un proceso se debe dividir en pginas, el nmero de pginas debe ser entero, si el proceso no
alcanza a ocupar la ltima pgina se produce la fragmentacin interna.

18

Como se carga un programa en la memoria de un Sistema Paginado


Para cargar un programa en Memoria. se realizan 3 fases:
1. Determinar el nmero de pginas que tendr el proceso, para ello se divide el tamao
del proceso por el tamao de la pgina, siempre debe ser un n entero. Se redondea por
exceso.
2. Se buscan los marcos libres en el sistema para alojar esas pginas, para realizar esa
bsqueda de marcos libres se necesita una estructura de control denominada la tabla
de marcos.
3. Una vez encontrados los marcos libres, se van cargando las pginas marco a marco.

Posteriormente para poder saber en qu marco est cada pgina se necesita una estructura que
se conoce como la tabla de marcos.
Tenemos un proceso que ocupa 4 pginas, ocupamos 4 marcos, asignados as,
pg 0 marco 13
pg1 marco 14
pg2 marco 18
pg3
No es necesario que estn continuos, sirve cualquier marco.
TABLA DE MARCOS
Es nica en el sistema, y lo que contiene o indica es qu marco est libre y que marco est
ocupado, lleva el control de la memoria libre y la memoria ocupada.
Esta tabla tiene una entrada por marco en el sistema.
1 entrada por marco Numero de entradas= Tamao M. fsica / Tamao Marco
La entrada del marco dice si est libre u ocupado.
Si est ocupado lo que contiene es: el proceso y la pgina del proceso que est ocupando ese
puesto. El numero de pgina y el nmero del proceso.
No marco
1
2
3
4

Tamao
8k
8k
8k
8k

Estado
Libre
Ocupado
Ocupado
libre

TABLA DE PGINAS
Hay una por proceso. Al contrario a la de marcos que hay una sola para el sistema.
Posee una entrada por pgina que pueda tener el proceso.
Cada entrada lo que contiene es el nmero de marco donde se encuentra ubicada.

19
La tabla de pginas es un elemento muy importante a la hora de traducir direcciones. Cuando
nuestro programa genera una direccin lgica.
No Pagina
1
2
3
4

No marco
3
3
7
2

Por un lado tenemos la visin del usuario y por otra la del sistema que est toda dispersa.
El usuario genera direcciones lgicas dentro de la zona contigua, esta zona necesita traducirse
a una direccin fsica, para esa traduccin se necesita de ciertas estructuras con el apoyo del
hardware para hacer traduccin del nmero de pginas a numero de marcos, para eso se
requiere de la tabla de pginas.
Si observa, cada vez que se requiera traducir una direccin de lgica a fsica se hacen 2
accesos a memoria: primero accedemos a la tabla de pginas y luego a la direccin fsica de
verdad.
Evidentemente es una traduccin bastante lenta.
Para reducir ese tiempo de acceso, ese doble acceso, en la traduccin se recurre a diversos
mtodos:
Implementar toda la tabla de pginas mediante el uso de registros. Si recordamos al inicio del
tema haba una jerarqua de memoria, entonces una opcin para reducir el tiempo de acceso lo
subimos al nivel ms alto y es ms rpido. El problema es que no hay muchos registros, por lo
que no es una opcin vlida.
Seguir bajando de nivel de la jerarqua, el siguiente nivel es la cach, una memoria especial
para la tabla de pginas, conocida como el buffer de traduccin adelantada (TLB). Este
buffer es una memoria cach slo para entradas de la tabla de pginas.
El hardware que se necesita para implementar toda la tabla de pginas se usa en esta
estructura.
La direccin lgica. Cada vez que se genere una direccin lgica se tiene que ir a la tabla de
pginas, para obtener el marco y con ello la direccin fsica, la TLB se evita ir a la tabla de
pginas, es una especie de Memoria cache. que contiene ciertas entradas de la Tabla de
Paginas, si se encuentra ah la entrada de la TP se puede generar la direccin fsica, se reduce
un acceso, si no hay acierto, habr que recurrir a la TP, es una forma de optimizar el acceso a
la TP.
Respecto a la figura se ve que aparte de la TLB se usa otro registro hardware RBTP (registro
base a la TP), ese registro contiene, un puntero a donde comienza la Tabla de Paginas del
proceso que est en ejecucin. Cada vez que hay un cambio de proceso hay que cambiar ese
registro.

20
En la figura se puede fijar que cuando se accede a la TP se dibuja una nica flecha mientras
que la TLB tiene una especie de tridente, esto es porque la TLB tiene slo un conjunto de
entradas, y no tengo un ndice sobre las entradas, por lo que tengo que buscar una a una hasta
que encuentre la que quiero.
Obtiene un rendimiento de 70 u 80 %, si falla hay 3 accesos.
Hay que llevar un buen control de la cach para evitar lo fallos.
Con la TLB, en el sistema cada vez que se genera una direccin lgica, hay que controlar si la
entrada est en la TLB, si se encuentra genera la direccin fsica, si no se encuentra hay que
acceder a la Tabla de Paginas y actualizar la TLB, esta debe tener siempre las ltimas entradas
a las que se ha hecho referencia.

TRADUCCIN DE DIRECCIONES DE UN SISTEMA PAGINADO.


La TLB no aparece.
Si se ve la figura con la otra se omite la TLB, pero se supone que est.
En la traduccin de direccin en un sistema paginado la direccin lgica est compuesta por
2 componentes, un nmero de pgina y un desplazamiento.
Ese nmero de pgina se usa como ndice en la tabla de pginas, se toma el nmero de
pginas, se asigna el puntero y se usa como ndice, a travs de la TP obtener el nmero de
marco donde se encuentra ubicada, una vez que tengo el marco, la direccin fsica es la
composicin del nmero de marco y el desplazamiento.
Lo ms importante de la traduccin de direcciones es el tamao de la pgina.
El tamao de la pgina viene dado por el hardware y viene dado en potencias de 2.
Los valores que suele traer es de 512 a 4096.
Es posible que el diseador pueda jugar con un rango de valores y pueda elegir uno u otro. El
tamao viene influenciado por el hardware.

La definicin del tamao de la pgina en potencias de dos simplifica mucho el esquema, si


tenemos un espacio de direcciones lgicas de 2n pginas
Se tiene un tamao de pgina de 2m pginas.
El proceso de traduccin es el siguiente, en primer lugar, se extrae el nmero de pginas, que
es en realidad lo primeros m-n bits de la direccin lgica.
El usuario tiene la direccin lgica, ese espacio es de 216 bits, mi pgina tiene un tamao de
210 bits.
Por lo tanto hay 6 bits para decidir el n de pgina.
m=16 y n=10
6

10

21
Con ese nmero de pgina se obtiene el nmero de marco, se busca en la tabla de pgina y se
obtiene el nmero del marco, finalmente la direccin fsica es la direccin del marco es
nmero del marco por su tamao ms su desplazamiento.

Obtengo el marco y lo nico que hago en realidad es concatenarle el desplazamiento.


A nivel de op. con el hardware son operaciones muy sencillas.
Direccin lgica 1502.
Proceso de traduccin, pasarlo a formato pgina desplazamiento:
Es decir extraer el n de la pgina.
Toma la dir lgica, se divida por el tamao de la pgina: 478
La pgina de desplazamiento: pg 1 y desplazamiento 478.
1502: 1024 = 1 y resto 478
Lo siguiente por hacer es pasarlo a marco desplazamiento, para eso se usa la tabla de pginas:
La entrada 1 dice que es el marco 2:
Marco 2 y desplazamiento 478, la dir fsica es:
Direccin lgica de 16 bits

CPU

pgina

desplazamiento

6 bits
000001

10 bits
0111011110

000010 0111011110
6bits
10 bits
marco desplaza.

Registro PTBR

Marco 2

Puntero a la tabla
de pginas

000110
000101
000010
101010

Tabla de pginas

En este esquema, cada vez que un proceso da una referencia, una direccin lgica, es en el
tiempo de ejecucin cuando se hace la traduccin de direccin lgica a fsica, esto permite
que los procesos sean reubicables. Era una de las caractersticas que deban tener los
administradores.
A los Administradores de memoria se le pedan tres requisitos:
Procesos reubicables, proteccin de M y comparticin de Memoria.
Vamos a ver cmo influyen esos dos aspectos en la paginacin:
La comparticin:
En un sistema con varios procesos en ejecucin, si todos los procesos ejecutan un mismo
cdigo puede suceder que los procesos compartan las mismas pginas, esa comparticin se
puede llevar a cabo en un sistema paginado siempre que sean pginas con cdigo no
reentrante, es decir, pginas que no se modifican. Esas pginas son las pginas que se pueden
compartir.

22
Para poder compartir pginas, la Tabla de Marcos prefiere tener cada entrada un campo que
sea un contador de procesos que comparten la particin.
As por ejemplo: Si se tiene la tabla de pginas del proceso actual.
Suponer que tenemos dos procesos de 4 pginas, y comparten las 3 primeras pginas de los
marcos 3, 4 y 7. En este caso la tabla de pginas tiene un contador ms, que indica el nmero
de procesos que est usando esa pgina, si hubiera otro proceso y quisiera compartir la pgina
el contador tendra que incrementarse. Si un proceso libera una pgina debe decrementar el
contador, cuando el contador llegue a cero significa que el marco est libre.
La proteccin de Memoria:
Hay dos aspectos importantes:
El modo de acceso a otra pgina: modo lectura o escritura.
Dada una referencia a una pgina saber si se puede realizar una operacin de lectura u
escritura.
La implementacin de esta proteccin es bastante simple, para ello en la T. de pginas en cada
entrada almacenamos su bit de proteccin correspondiente, cada vez que se haga una
operacin hay que comprobar esos bits.
La validez de una pgina: si la pgina es correcta o no es correcta.
Hemos visto que la direccin lgica tena dos componentes, pgina y desplazamiento, vamos
a suponer que la direccin lgica tiene 16 bits, el desplazamiento de 10 bits, y para
direccionar una pgina empieza 6 bits que indica que el nmero de pginas mximo que
puede tener un proceso es de 26= 64 pginas. El proceso no tiene porqu tener ocupada las 64
pginas. La proteccin de validez hace referencia a que cuando un proceso tiene 3 pginas, si
el proceso hace referencia a la pgina n 10 tendra que dar un error, porque est intentando
acceder a una pgina que no le pertenece. La forma de implementar este mecanismo de
proteccin es la siguiente: hay dos alternativas:
A travs de la T. de Pginas: en cada entrada se le aade el bit de validez, es 1 o 0,
para pgina vlida o invlida. Cada proceso tiene su propia tabla de pginas.
Con ayuda del hardware mediante otro registro: PTBR: registro de longitud de la tabla
de pgina, ese registro contiene el n de entradas vlidas de la tabla de pginas. Con
ese registro cada vez que le den una direccin lgica lo primero que se hace es
comparar el n de pginas con el registro de longitud.

LA FRAGMENTACIN
La fragmentacin externa era memoria libre pero que no se poda asignar a un proceso.
No tiene fragmentacin externa porque cualquier marco se puede asignar a cualquier proceso.

23
La fragmentacin interna era memoria asignada a un proceso que no se usa, luego s tiene
fragmentacin interna, en la ltima pgina.
En estos sistemas, lo primero que hay que hacer a la hora de ejecutar un proceso es dividirlo
en pginas, si el tamao del proceso no es mltiplo del tamao de la pgina, esta no se
ocupar entera.
Como media tiene de fragmentacin interna el tamao de la pgina entre dos.
TAMAO DE LA PGINA
Va a venir siempre influenciado por el hardware.
Adems siempre va a ser en tamao de dos para que la traduccin sea ms simple.
Sin embargo en determinas sistemas al diseador del sistema se le ofrece un rango de valores
para que escoja uno de esos valores.
Normalmente los rangos que se ofrecen van entre 512 bytes a pginas de 8K.
A la hora de determinar que valor debemos de coger para nuestro sistema hay dos aspectos
que influyen en la seleccin:
La fragmentacin interna qu es preferible? pginas pequeas para que sea lo
menor posible la fragmentacin interna.
El tamao de la T. de pginas conviene pginas grandes para tener menos pginas
en cada proceso y que no ocupe mucho la tabla de pginas.
Se puede establecer una frmula calcular el valor ptimo del tamao de la pgina.
E=N de bytes que ocupa una entrada en la T. de pginas
P=Tamao de la pgina.
Teniendo esos valores, nosotros sabemos que por la fragmentacin interna nuestro
desperdicio es la mitad del tamao de la pgina, aparte de la fragmentacin interna, nosotros
necesitamos tener una tabla de pginas, el tamao de ocupa una tabla de pginas es: E*S s=n
de entradas. Es el nmero de entradas por el nmero de bytes de cada entrada. Si la ecuacin
se iguala a 0 y se deriva para calcular el ptimo nos da que el valor ptimo de P=la raiz
cuadrada de 2 por el tamao medio de un proceso por el n de bytes de una entrada en la tabla
de pginas.

24
LA TCNICA DE SEGMENTACIN DE MEMORIA.
Con la paginacin conseguamos que la visin del sistema y del usuario fuese distinta.
El usuario vea al proceso como un espacio contiguo.
El sistema vea al proceso disperso.
Se intenta asemejar a la visin del usuario.
Se intenta dividir en segmentos los distintos componentes del sistema, agrupar las dos
visiones.
Con los segmentos tendremos una direccin lgica y tendremos que hacer una traduccin a
direccin fsica, igual que en el sistema paginado.
Para realizar esa traduccin, al igual que en el sistema paginado usaremos la tabla de
segmentos.
Traduccin de direcciones en segmentacin
El esquema es muy similar, pero ahora las pginas son segmentos pero de un tamao distinto.
En la tabla de segmentos hay una entrada por cada segmento que posea el proceso, esa entrada
contiene la direccin de inicio donde est ubicado ese segmento, se llama base.
La amplitud o el tamao del segmento, cada segmento puede tener un tamao distinto.
Los bits de proteccin, igual que en el sistema paginado.
La tabla de segmentos: es un elemento importante en la traduccin de direcciones.
Con esta estructura se sabe si la memoria est ocupada con un proceso, aparte de esta
estructura se requiere de otra para llevar el control de que memoria est libre.
En este caso se pueden emplear la lista enlazada o los mapas de bits, que son estructuras
vistas en el sistema de particiones variables.

M. Fsica
CPU

4
12
0001 001011110000

direcc.
<

Segmento 1
Fsica

Registro
STLR

<

Error de
Direccionamiento

Longitud de la
Tabla de Segmentos

001011101110 0000010000000000
+

011110011110 0010000000100000

Puntero
a la tabla de
Segmentos

000000001000 1000000000000000

STBR

12 bits
16 bits
Tabla de Segmentos

25

Para determinar el tamao de cada segmento existe algo de libertad, pero el hardware indica
cual es el tamao mximo del segmento, que determinara los bits que requeridos para el
desplazamiento. Ese nmero de segmento se usa como ndice en la tabla de segmento, esta
indica donde comienza el segmento y cuanto ocupa.
Otros componentes son:
STLR (registro de longitud de la tabla de segmento) es un registro que contiene la
longitud de la tabla de segmentos, es decir, el nmero de segmentos que posee el proceso.
Ese registro se encarga de la validez de acceso a un segmento, igual que en el sistema
paginado. Cada vez que hay un cambio de proceso hay que cambiar su valor.
STBR (Registro que apunta a la tabla de segmento) es un registro hardware que cada
vez que se cambe de proceso se tiene que cambiar el valor del registro. Apunta a la direccin
de comienzo de la tabla de segmento del proceso que est en ejecucin.
En un sistema Segmentado, hay 3 aspectos de proteccin:
Si se puede acceder en modo lectura o en modo escritura.
La validez de acceso a un segmento, viene controlada por el registro de la longitud de
la tabla de segmento.
La validez de acceso dentro de un segmento, se tiene la direccin lgica con un
nmero de segmento y un desplazamiento, se supone que el desplazamiento est
dentro del segmento, eso se tiene que comprobar. Se comprueba a travs de la tabla de
segmentos, que aparte de tener la direccin de inicio de un segmento tiene la longitud
del mismo.

Ejemplo de cmo se analiza la traduccin.


Direccin lgica de 16 bits.
Segmentacin mximo= 4Kbytes
Referencia: 4848
Determinar el formato de la direccin lgica.
Hay que determinar cuantos bits corresponden al segmento y cuantos al desplazamiento.

segmento
4

desplazamiento
12

Desplazamiento= 12 bits 4k = 22 210


Entradas en una tabla de segmentos, cuntos segmentos cmo mximo podr haber? 16 = 2 4
Vamos a realizar la traduccin de la direccin 4848.
1 Extraer el nmero del segmento = m-n (bits + significativos) (16 12 = 4)
M = nmero de bits de la direccin lgica.
N = bits requeridos para el desplazamiento.

26
Se divide la direccin por el tamao del segmento mximo:
4848 div 4096 =
1
4848 mod 4096 = 753

(1,753)

El nmero es fijo, no tiene porqu ocuparlo todo, por eso se ve el tamao mximo.
2 Se comprueba si el nmero de segmento es vlido (STLR).
Para ello se hace uso del registro que contiene la longitud de la tabla de segmentos.
3 Usar el nmero de segmento cmo ndice de la tabla de segmentos (STBR)
4 Comprobar si el desplazamiento es vlido (753 1950) (un valor supuesto).
Se compara la longitud del segmento con el desplazamiento.
5 Obtener la direccin fsica.
Sumar al desplazamiento la direccin base del segmento.
Si el segmento 1 comienza en la direccin 8224: 8224 + 752 = 8976 (direccin fsica) .

Caractersticas del Sistema Segmentado


Cada vez que se accede a memoria, en realidad hay 2 accesos a ella, en cada referencia
se debe ir primero a la tabla de segmentos (STLR) y luego al dato, igual que en el
sistema paginado.
Para reducir ese defecto del doble acceso se puede emplear una TLB para evitar tener
que acceder a la tabla de segmentos.
Los procesos son reubicables: cada vez que se genera una direccin en el momento de
ejecucin es cuando se traduce de direccin lgica a direccin fsica.
Comparticin: La tabla de segmentos debe tener un contador que indica cuantos
procesos estn usando ese segmento.
Fragmentacin: externa. puede haber huecos que vayan sobrando muy pequeos, no se
da la segmentacin interna, porque se crean segmentos de longitud variable.
Poltica de ubicacin de segmentos: donde ubicar cada uno de los segmentos, es
similar a las particiones variables. En los paginados daba igual porque todos eran
iguales.
Compilacin por separado de los segmentos.

27

SEGMENTACIN PAGINADA

Memoria Principal
Direccin lgica
Segmento

pgina

desplazamiento

Tabla de
Segmentos

Tabla de
pginas

desplazamiento
dir. Fsica

Base

marco

Puntero a
la tabla de
Segmentos
Registro (STBR)

Hasta ahora se ha visto o solo segmentado o slo paginado, sin embargo hubo dos
arquitecturas, sacaron una arquitectura combinada que era la segmentada paginada
Se Tiene un proceso, o programa este se dividimos en segmentos, igual que si fuera un
sistema segmentado, posteriormente paginamos cada uno de esos segmentos, esas pginas son
las que realmente estn ubicadas en Memoria Principal.
En este caso, el proceso de traduccin es algo distinto, la direccin lgica tiene ahora 3
componentes..
Cmo funciona este sistema? Se toma el nmero de segmento y a travs de l se obtiene la
entrada a la tabla de segmento que apunta a una tabla de pgina, se toma el nmero de
pgina y se usa como ndice en la tabla de pgina, este retorna nmero de marco donde esta
almacenada, en ese marco se tiene la direccin fsica.

Anda mungkin juga menyukai