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
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
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.
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.
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
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
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
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
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.
P1
1 1
P2
1 1 1
P3
1 1
P4
1 1 1
P5
1 1
0 0
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:
H 4 3
P 7 7
Comienzo
P 14 6
P 25 4
H 29 3
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
256 k
512 k
P3 solicita 160 k
P3 160 k
512 k
P4 solicita 95 k
P3 160 k
P4 95k
128 k
256 k
Fin P3
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
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.
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.
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.
segmento
4
desplazamiento
12
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) .
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.