Está en la página 1de 52

TEORIA DE LOS SISTEMAS OPERATIVOS 1

ORGANIZACIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL


INTRODUCCIÓN.

La evolución de la organización del almacenamiento, se puede representar de la manera que se


expresa en el cuadro que figura a continuación:

Sistemas Sistemas Multiprogramados (varios usuarios)


Monoprogramados
Almacenamiento Real Almacenamiento Virtual

Un solo Usuario Memoria Contigua Memoria no Contigua


Particiones Combinación
Segmentación Paginación Segmentación
Fijas Variables y Paginación

El término memoria virtual suele asociarse, con la capacidad que tienen algunos sistemas, para
acceder a direcciones, situadas en un espacio de almacenamiento virtual, mucho mayor, que el
disponible en el almacenamiento real de un sistema informático determinado.
El concepto de memoria virtual no es un concepto nuevo, ya que aparece en 1.960 en un sistema
informático denominado ATLAS, diseñado y construido en la Universidad de Manchester; pero las
tecnologías existentes en aquel tiempo, no proporcionaban la ayuda necesaria para su implantación, sin
embargo, actualmente con la ayuda de esas tecnologías, se ha generalizado el empleo de la memoria
virtual y la mayor parte de los ordenadores actuales, ya pueden gestionar el almacenamiento virtual.
Los métodos más comunes para gestionar la memoria de los sistemas, que permiten la
existencia de un almacenamiento virtual, son la paginación y la segmentación y en algunos sistemas, se
puede utilizar una combinación de los dos métodos.
En los sistemas de almacenamiento real, para que un proceso se pudiera ejecutar, era necesario
que el proceso completo, estuviese cargado en el almacenamiento real, sin embargo, los sistemas de
memoria virtual, se caracterizan muy especialmente, porque las direcciones utilizadas por los
programas en ejecución, no necesitan estar todas ellas en el almacenamiento real.
La clave del concepto de memoria virtual, consiste en la diferenciación que es preciso realizar,
entre las direcciones a las que hace referencia un programa en ejecución y las direcciones disponibles
en el almacenamiento real.
Las direcciones a las que hace referencia un programa en ejecución, se denominan direcciones
lógicas o virtuales y las direcciones disponibles en el almacenamiento real, se denominan se
denominan direcciones físicas o reales.
El intervalo de direcciones lógicas o virtuales, a las que hace referencia un programa en
ejecución, constituyen espacio de direcciones virtuales (V) y el intervalo de direcciones físicas o reales,
disponibles en el almacenamiento real, constituyen el espacio de direcciones reales (R).
En los sistemas de almacenamiento virtual ya implantados, lo normal es que (V) > (R), aunque
se han construido algunos sistemas en los que (V) < (R).
Lógicamente, aunque los procesos solamente hacen referencia a direcciones virtuales, estas
deben ejecutarse en el almacenamiento real, por lo tanto, es preciso establecer la correspondencia entre
las direcciones virtuales y las direcciones reales durante la ejecución del proceso.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL ALBA


! 2 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 3
!

Además, esto debe hacerse con rapidez, pues de lo contrario, el rendimiento del sistema se
degradaría a niveles inaceptables, eliminando así, las ganancias logradas, por el empleo del concepto
de almacenamiento virtual.
Los mecanismos de traducción dinámica de direcciones, DAT (Dynamic Address Translation),
convierten las direcciones virtuales en direcciones reales, mientras se ejecuta un proceso.
Todos estos sistemas tienen la propiedad, de que las direcciones contiguas en el espacio de
direcciones virtuales de un proceso, no son necesariamente contiguas en el almacenamiento real, por lo
tanto, el usuario queda liberado de la preocupación por la posición de los procedimientos y los datos en
el almacenamiento real.
ORGANIZACIÓN DEL ALMACENAMIENTO DE VARIOS NIVELES.

Si se va a permitir, que el espacio de direcciones virtuales del usuario, sea más grande que el
espacio de direcciones reales y además se va a multiprogramar el sistema, permitiendo que varios
usuarios compartan el recurso de almacenamiento real, será preciso proporcionar un almacenamiento
auxiliar, que toma el nombre de memoria virtual, para mantener los programas y los datos, que no
caben en el almacenamiento real y esto se consigue con un esquema de almacenamiento a dos niveles:
• El primer nivel es el almacenamiento real, en el que se ejecutan los procesos y en el que
deben encontrarse, las instrucciones y los datos del proceso, que esta ejecutando en cada
momento.
• El segundo nivel, se encuentra en la memoria virtual, de un tamaño mucho mayor, capaz de
almacenar los datos y los programas, que no se pueden mantener en el almacenamiento real.
Como el almacenamiento real es compartido por muchos procesos y cada proceso puede tener
un espacio de direcciones virtuales, mucho más grande que el almacenamiento real, en un momento
dado, solo será posible mantener una pequeña parte de los programas y los datos de un proceso, en el
almacenamiento real

MEMORIA VIRTUAL MEMORIA


PROCESADOR
DAT SECUNDARIA

MEMORIA REAL

CORRESPONDENCIA DE BLOQUES.

Los mecanismos de traducción dinámica de direcciones, deben mantener las estructuras de


datos necesarias, para efectuar la traducción de direcciones virtuales en direcciones reales, de manera
que se muestren las localidades de la memoria virtual, que están en el almacenamiento real en un
momento determinado y el lugar donde se encuentran.
Si la correspondencia entre ambos espacios de direcciones, se estableciera por palabras o bytes,
la información de correspondencias, requeriría tanto espacio de almacenamiento real, como el que
necesitarían los propios procesos o quizás más, por lo tanto es necesario, agrupar la información en

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 4 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL

bloques, para reducir la cantidad de información de correspondencias y además se pueda obtener el


beneficio deseado, con la implantación del concepto de memoria virtual.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 5
!

El método a seguir consiste, en que el sistema tiene que agrupar en bloques de información
y registrar en una estructura de datos determinada, el lugar en donde se han situado los diversos
bloques de memoria virtual, por lo tanto, cuanto mayor sea el tamaño del bloque, menor será la
fracción del almacenamiento real dedicada a guardar la información de correspondencias.
La decisión de hacer bloques más grandes reduce el espacio necesario, para guardar las
estructuras de datos, que utiliza el mecanismo de correspondencias, sin embargo, los bloques grandes
tardan más en ser transferidos, de la memoria virtual a la memoria real y además consumen más
espacio en la memoria real, limitando el número de procesos que pueden compartir la memoria real.
También será preciso decidir si los bloques deben ser del mismo o de distinto tamaño. Sí los
bloques son del mismo tamaño, se llaman páginas y la organización de la memoria virtual utiliza el
esquema de paginación. Sí los bloques pueden ser de tamaños diferentes, se llaman segmentos y la
organización de la memoria virtual utiliza el esquema de segmentación.
Tal y como se ha expresado anteriormente, algunos sistemas, establecen una combinación de
ambas técnicas, utilizando segmentos, que son entidades de tamaño variable, divididos en páginas de
tamaño fijo.
Las direcciones de un sistema de correspondencia de bloques de información, son
bidimensionales y para referirse a un elemento de información cualquiera, el programa especifica el
bloque de información, en el que se encuentra el elemento y su desplazamiento a partir del inicio del
bloque, por lo tanto, una dirección virtual (V), se denota con un par ordenado (b,d), donde b es el
número del bloque y d es el desplazamiento dentro del bloque.
La traducción de una dirección virtual V = (b,d) a una dirección de almacenamiento real R, se
efectúa de la forma que expresa la siguiente figura:

REGISTRO ORIGEN
DE LA TABLA
DE BLOQUES

DIRECCIÓN VIRTUAL
a BLOQUE DESPLAZAMIENTO
b
b d

a+b TABLA BLOQUES


d
b
DIRECCIÓN REAL
LONG. BASE Base
BASE + DESP.

Cada proceso tiene su propia tabla de correspondencias de bloques y la tabla contiene una
entrada por cada bloque del proceso. Las entradas siguen un orden secuencial desde 0 a n y en cada
entrada figuran fundamentalmente, dos informaciones: la dirección base donde comienza el bloque y
su longitud.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 6 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL

Realmente, todo lo que se ha expresado anteriormente, es valido tanto para bloques de tamaño
fijo o variable, por lo tanto, a continuación se tratará de especificar las diferencias existentes entre un
sistema u otro.
Si los bloques son de tamaño fijo e iguales unos a otros, estos toman el nombre de páginas y se
estará estableciendo un sistema de paginación por el contrario, si los bloques son de tamaño variable,
estos toman el nombre de segmentos y se estará estableciendo un sistema de segmentación.
Como se ha dicho anteriormente, en algunos sistemas se realiza una combinación de los dos
métodos, definiendo los bloques de tamaño variable, es decir segmentos, que posteriormente se dividen
en partes fijas e iguales, es decir páginas. En estos sistemas se deberá establecer la condición, de que el
tamaño de los segmentos debe ser múltiplo del tamaño de la página.
PAGINACIÓN.

Tal y como se ha expresado anteriormente, una dirección virtual en un sistema de paginación es


un par ordenado (p,d), en el cual p es el numero de página del almacenamiento virtual, en el que reside
el elemento al que se hace referencia y d es el desplazamiento dentro de la página.
Un proceso puede ejecutarse, si su página activa se encuentra en el almacenamiento real, por lo
tanto, las páginas situadas en la memoria virtual correspondientes al proceso, tienen que transferirse a
la memoria real, colocándose en bloques que se denominan marcos de página, que tienen el mismo
tamaño que las páginas entrantes.
Los marcos comienzan en direcciones del almacenamiento real, que son múltiplos enteros del
tamaño fijo de la página y una página entrante puede colocarse en cualquier marco de página
disponible.
Un proceso en ejecución hace referencia a una dirección del almacenamiento virtual V = (p,d)
y la traducción dinámica de direcciones en la paginación se realiza de la siguiente forma:

REGISTRO ORIGEN
DE LA TABLA
DE PÁGINAS
DIRECCIÓN VIRTUAL (V)

a N. PÁGINA DESPLAZAMIENTO

p d
TABLA PÁGINAS
a+p a d
p DIRECCIÓN REAL (R)
p p’ p’* Tp R = p’* Tp + d

El mecanismo de traducción de direcciones, busca la página p en la tabla de correspondencia


de páginas y en cada entrada de la tabla de páginas debe existir un bit de residencia, que indique si la
página está en el almacenamiento real (r = 1), en cuyo caso p' indicará el número de marco de página
en que se encuentra la página buscada o bien indicará que la página no está en el almacenamiento real
(r = 0), en cuyo caso s indica la dirección de la memoria virtual en que se encuentra la página
buscada.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 7
!

BIT DE DIR DE MEM. VIRTUAL BITS DE N. DEL MARCO DE PÁGINA


RESIDENCIA SI LA PÁGINA NO ESTA PROTECCIÓN SI LA PÁGINA ESTÁ EN E L
EN EL ALM. REAL ALM. REAL

r v R W E A B p’

r = 0 La página no está en el almacenamiento real.


r = 1 La página si está en el almacenamiento real.
Si la página no se encuentra en el almacenamiento principal, se produce una interrupción, por
fallo de página, lo cual hace que el sistema operativo asuma el control y cargue la página desde la
dirección v de la memoria virtual al almacenamiento principal.
Hay que destacar, que p' no es una dirección real en el almacenamiento principal, p' es el
número del marco correspondiente a la página p en el almacenamiento principal, por lo tanto, la
dirección real debe ser el producto de p' por el tamaño fijo de la página más el desplazamiento,
suponiendo que los marcos de página, estén numerados consecutivamente, a partir de cero.
Es preciso recordar, que el tamaño de la página al igual que el tamaño del marco, esta definido
por el hardware y generalmente es una potencia de 2, que varia según la arquitectura de la maquina. La
selección de una potencia de 2 como tamaño de la página, facilita la traducción de una dirección virtual
a un numero de página y un desplazamiento en la página.
Si el tamaño de página es 2 unidades de direccionamiento, entonces, los n bits de orden inferior
de la dirección virtual, representan el desplazamiento en la página y los bits restantes de orden superior,
indican el numero de página.
Como se ha indicado anteriormente, no todas las páginas se encuentran en la memoria real en
un instante determinado, por lo tanto, la tabla de páginas debe indicar si la página a la que se hace
referencia, se encuentra el almacenamiento principal, o por el contrario si no es así, donde se encuentra
en la memoria virtual.
Cada sistema operativo, tiene sus propios métodos para almacenar las tablas de páginas, la
mayoría de ellos asigna una tabla de páginas para cada proceso y en el bloque de control de proceso, se
almacena la dirección de la tabla de páginas.
Para conseguir que la traducción de direcciones se efectué de la forma más rápida posible,
existen varias técnicas para establecer la correspondencia entre una dirección virtual y una dirección
real. A continuación analizaremos estas posibles técnicas:
• Correspondencia directa.
• Correspondencia asociativa.
• Correspondencia combinada Asociativa/Directa.
TRADUCCIÓN DE DIRECCIONES POR CORRESPONDENCIA DIRECTA.

Un proceso en ejecución hace referencia a una dirección virtual V = (p,d). Antes de que el
proceso comience su ejecución, el sistema carga en el almacenamiento principal la tabla de
correspondencia de páginas, según el esquema que figura a continuación:

REGISTRO ORIGEN
DE LA TABLA
DE PÁGINAS
DIRECCIÓN VIRTUAL (V)

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 8 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL

a N. PÁGINA DESPLAZAMIENTO
p d

TABLA PÁGINAS
a
DIRECCIÓN REAL (R)
p
p p’ R = p’* Tp + d

En la dirección de la tabla de correspondencia de páginas, se tomará como índice el número de


página p, para determinar el elemento de la tabla de páginas, es decir, la entrada de la página p, que
indica el marco de página p' correspondiente a la página virtual p, por lo tanto, p' multiplicado por el
tamaño de la página, se concatenará con el desplazamiento d, para formar la dirección real R = p’*Tp + d
.
Este es un ejemplo de correspondencia directa, ya que la tabla de correspondencia de páginas
contiene una entrada para cada página del almacenamiento virtual del proceso. Si el proceso tiene
n páginas en su memoria virtual, entonces, la tabla de páginas con correspondencia directa del proceso
contiene entradas sucesivas para las páginas 0,1,2,3,....,n-1.
La correspondencia directa es muy similar al acceso a un elemento de un vector mediante
índices, es decir, cualquier entrada de la tabla puede localizarse directamente con un solo acceso.
Tanto la dirección virtual que se traduce, como la dirección base de la tabla de correspondencia
de páginas, se conservan en los registros de alta velocidad de la unidad de control del procesador, de
manera que, las operaciones en las que participan, puedan realizarse con rapidez dentro de un solo
ciclo de ejecución de instrucciones.
No obstante, la tabla de páginas, con correspondencia directa, que puede ser muy grande, se
conserva normalmente en el almacenamiento primario. En consecuencia, la referencia a la tabla
requiere un ciclo completo de almacenamiento primario.
Como el tiempo de un ciclo de almacenamiento primario, representa la mayor parte de un ciclo
de ejecución de instrucciones y se necesita un ciclo de almacenamiento primario adicional, para la
correspondencia de páginas, el empleo de traducción de direcciones de páginas mediante
correspondencia directa, puede hacer que el sistema ejecute los programas en el doble del tiempo, que
se necesitaría si no se utilizase el concepto de memoria virtual, es decir, se ejecutarían los procesos a la
mitad de la velocidad, lo cual es completamente inadmisible.
Por tanto, para lograr una traducción más rápida, las tecnologías de los sistemas actuales,
pueden colaborar en ello y colocar la tabla completa de correspondencia directa de páginas, en una
memoria asociativa de muy alta velocidad. Esto se ha podido conseguir, gracias a que los costos de
estas memorias, han disminuido notablemente, debido a los avances en la tecnología de memorias.
TRADUCCIÓN DE DIRECCIONES POR CORRESPONDENCIA ASOCIATIVA.

Una forma de acelerar la traducción dinámica de direcciones, es colocar toda la tabla de


páginas, dentro de un almacenamiento asociativo, accesible por contenido y no por dirección, el cual
tiene ciclos, de un orden de magnitud mucho más rápidos, que los del almacenamiento primario.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 9
!

La figura que se muestra a continuación, muestra como se realiza la traducción dinámica de


direcciones con una correspondencia asociativa pura.
N. PÁGINA DESPLAZAMIENTO DIR VIRTUAL (V)

p d V = (p,d)
TABLA DE PÁGINAS

N. MARCO DESPLAZAMIENTO DIR REAL (R)

p p’ p’ d DIR REAL
R = p’* Tp + d

Un programa en ejecución hace referencia a una dirección virtual V = (p,d). Cada entrada en la
memoria asociativa se revisa en forma simultánea, para encontrar la página p, que una vez localizada,
devuelve p' como el marco de página que corresponde a p. El número del marco p' se multiplica por el
tamaño de la página y se concatena con d, para formar la dirección real R= p’*Tp + d.
En la figura se puede observar que las flechas dirigidas a la tabla de páginas situada en la
memoria asociativa, entran directamente en cada entrada. Esto indica que se revisa al mismo tiempo
cada entrada de la tabla de páginas, para buscar el valor de p.
Para realizar la búsqueda así, es preciso incorporar al sistema un hardware específico y esta
es la razón de que la memoria asociativa, tenga un costo mucho mayor, similar al que se necesita,
para la utilización de las memorias caché, por lo tanto, normalmente no se utiliza la
correspondencia asociativa pura.
TRADUCCIÓN DE DIRECCIONES CON CORRESPONDENCIA COMBINADA.

Actualmente la memoria la asociativa es mucho más cara, que el almacenamiento real de


acceso directo, por lo tanto, los diseñadores de los sistemas operativos, se han visto obligados a recurrir
a un mecanismo conciliador de correspondencia de páginas.
Este mecanismo consiste en utilizar una memoria asociativa, capaz de contener solo un
pequeño porcentaje de la tabla de correspondencia de páginas de un proceso.
Este reducido buffer de almacenamiento de búsqueda rápida, toma el nombre de TLB, Buffer
traducción búsqueda anticipada (Translation Look-aside Buffer), este buffer mantiene solamente, las
correspondencias a las que se ha hecho referencia más recientemente, pensando que estas serán las que
más probabilidades tienen de ser solicitadas en un futuro próximo.
La traducción dinámica de direcciones se realiza partiendo de una dirección virtual V = (p,d).

DIR. ORIGEN DE
TABLA PÁGINAS
Nº PÁGINA DESPLAZAMIENTO DIR VIRTUAL
a
p d V = (p,d)

p
MAPA DE CORRESP.
ASOCIATIVA PARCIAL

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 10 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

p p’

p’
TABLA PÁGINAS

a
N MARCO DESPLAZAMIENTO DIR. REAL

p p’ p’ d R = p’*Tp + d

El mecanismo de traducción intenta localizar la correspondencia a la página p en la memoria


asociativa, si lo encuentra, le devuelve p' como marco correspondiente a la página virtual p, que
posteriormente multiplicado por el tamaño de la página, se concatena con el desplazamiento d, para
formar la dirección real R. Si no lo encuentra en la memoria asociativa, se buscará en el
almacenamiento principal de forma directa, tal y como se ha explicado anteriormente,
Una vez localizado el marco p' correspondiente a la página virtual p, además de ser utilizado,
para formar la dirección real R, se actualizará el almacenamiento asociativo, para incluir esta
información, reemplazando a la entrada que más tiempo lleva sin utilizarse.
El tamaño del almacenamiento asociativo, no necesita ser muy grande, ya que se ha verificado
mediante la simulación, que sistemas que utilizan esta técnica, pueden resultar muy efectivos,
conteniendo solamente 8 o 16 registros de almacenamiento asociativo, alcanzando de esta manera, un
rendimiento próximo al 80%.
Como ya se expuso anteriormente, el porcentaje de ocasiones en que se encuentra un número
de página en los registros asociativos, se denomina tasa de aciertos.
Una tasa de aciertos del 80% significa, que en los registros asociativos, hemos encontrado el
número de página deseado el 80% de las ocasiones.
Si se supone que para buscar una página determinada en los registros asociativos, se emplea un
tiempo de 20 nanosegundos y se emplea un tiempo de 100 nanosegundos, para el acceso a memoria, el
tiempo de acceso total será de 120 nanosegundos, cuando el número de página se encuentre en los
registros asociativos.
Si no se encuentra el número de página en los registros asociativos, se consumirá un tiempo de
20 nanosegundos, para determinar que el número de página solicitado, no se encuentra en los registros
asociativos, a continuación se deberá acudir a la memoria principal, para obtener la tabla de páginas y
el número de marco, por el procedimiento directo que consumiría un tiempo de 100 nanosegundos para
obtener la dirección de la tabla y posteriormente otros 100 nanosegundos, para obtener la página
deseada de la memoria, por lo tanto el tiempo de acceso total sumaria 230 nanosegundos.
Para determinar el tiempo de acceso efectivo a memoria, se debe ponderar cada caso por su
probabilidad:
Tiempo de acceso efectivo = 0,80 * 120 + 0,20 * 220 = 96 + 44 = 140 nanosegundos.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 11
!

La utilización o no este mecanismo combinado, es una decisión de diseño basada en factores


económicos y en las tecnologías de hardware existentes.
COMPARTICIÓN EN UN SISTEMA DE PAGINACIÓN.

En los sistemas multiprogramados, en especial los de tiempo compartido, es normal que


muchos usuarios ejecuten los mismos programas, si se asignaran copias individuales de estos
programas para cada usuario, se desperdiciaría mucho almacenamiento primario, la solución es
compartir las páginas que puedan compartirse.
La compartición debe controlarse, para evitar que un proceso modifique los datos que esta
utilizando otro proceso, por lo tanto, en la mayor parte de los sistemas actuales, que realizan
compartimiento, los programas se dividen en áreas separadas de procedimientos y datos.
Para que estos procedimientos sean compartidos tienen que ser reentrantes, que significa que
no pueden modificarse a sí mismos. Los datos no modificables, como pueden ser las estructuras de
datos fijas, también pueden compartirse.
Todos estos conceptos hacen evidente, la necesidad de identificar si cada página se puede
compartir o no, clasificadas de esta forma las páginas de los procesos, se realiza el compartimiento.
SEGMENTACIÓN.

En los sistemas de almacenamiento virtual con segmentación, una dirección virtual es un par
ordenado V = (s,d), donde s es el numero de segmento en el almacenamiento virtual, en donde se
encuentra el elemento al que se hace referencia y d es el desplazamiento dentro del segmento s en
donde se encuentra dicho elemento.
Un proceso solo se puede ejecutar, si su segmento activo se encuentra en la memoria principal
y los segmentos se transfieren desde la memoria virtual a la memoria real como unidades completas.
Un segmento entrante puede colocarse, en cualquier área disponible de la memoria principal,
cuyo tamaño sea suficiente para contenerlo y las estrategias de colocación para la segmentación, son
idénticas a las empleadas en la multiprogramación con particiones variables, es decir, empleando las
técnicas de primer ajuste, mejor ajuste y peor ajuste.
La traducción dinámica de direcciones en la segmentación de la siguiente forma:
REGISTRO ORIGEN
DE LA TABLA
DE SEGMENTOS
N. SEGMENTO DESPLAZAMIENTO
a s
s d DIR. VIRTUAL (V)

TABLA SEGMENTOS
a d < LONG
s d DIRECCIÓN REAL (R)

LONG BASE b b+d R = b + d

Si un proceso en ejecución hace referencia a una dirección de almacenamiento virtual V =


(s,d), el mecanismo de correspondencia de segmentos utilizado por el sistema operativo, busca el
segmento s en la tabla de correspondencia de segmentos y determina que el segmento s se encuentra en

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 12 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

el almacenamiento real a partir de la dirección base b, por lo tanto, la dirección de almacenamiento


real, correspondiente a la dirección de almacenamiento virtual V = (s,d), será la suma de b y d,
previamente será preciso comprobar que el desplazamiento d es menor que la longitud.
CONTROL DE ACCESO EN LOS SISTEMAS CON SEGMENTACIÓN.

Una de las cualidades de los sistemas con segmentación es el control del acceso que puede
realizarse, que se consigue asignando a cada proceso ciertos derechos de acceso a cada segmento,
denegando por completo el acceso a algunos segmentos, es decir, normalmente no es conveniente
otorgar a cada proceso un acceso ilimitado a todos los segmentos del sistema.
La protección del almacenamiento con claves, en una asignación de almacenamiento no
contigua, en un sistema multiprogramado, se realiza mediante las claves de usuario, es decir, mientras
la clave de protección del procesador sea 2, correspondiente al usuario B, el programa del usuario B,
solo podrá hacer referencia a los bloques del almacenamiento que tengan la protección 2.
Estas claves están bajo el estricto control del sistema operativo y solo pueden manipularse
mediante instrucciones privilegiadas. Los tipos de control de acceso más utilizados por los sistemas
actuales son los siguientes:
• Si un proceso tiene acceso para lectura a un segmento, podrá obtener cualquier información
contenida en el segmento y en algunos casos, podrá realizar una copia completa del segmento.
• Si el proceso tiene acceso para actualizar un segmento, puede modificar cualquier parte del
contenido del segmento y colocar información adicional. Si lo desea el proceso puede destruir
la información del segmento, aunque en algunos sistemas este derecho puede estar separado.
• Un proceso con acceso para ejecución a un segmento, puede ejecutar ese segmento como
programa. El acceso de ejecución se suele denegar para segmentos de datos.
• Un proceso con acceso para adición a un segmento, puede agregar información
adicional solamente al final del segmento, pero no puede modificar la información
existente.

TIPO ACCESO ABREV. EXPLICACIÓN

LECTURA R EL SEGMENTO SE PUEDE LEER

ACTUALIZACIÓN W EL SEGMENTO SE PUEDE ACTUALIZAR

EJECUCIÓN E EL SEGMENTO SE PUEDE EJECUTAR

ADICIÓN A EN EL SEGMENTO SE PUEDE AGREGAR


INFORMACIÓN AL FINAL.

Un sistema con estos cuatro tipos de control de acceso, se pueden crear 16 modos de control de
acceso diferentes, es decir, 2. Con tres tipos de control se podrían realizar los siguientes:

MODO LECTURA ESCRITURA EJECUCIÓN OBSERVACIONES

MODO 0 0 0 0 NO SE PERMITE EL ACCESO

MODO 1 0 0 1 SOLO EJECUCIÓN

MODO 2 0 1 0 NO TIENE SENTIDO

MODO 3 0 1 1 NO TIENE SENTIDO

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 13
!

MODO 4 1 0 0 SOLO LECTURA

MODO 5 1 0 1 LECTURA / EJECUCIÓN

MODO 6 1 1 0 LECTURA / ESCRITURA

MODO 7 1 1 1 ACCESO ILIMITADO

Este sencillo mecanismo de control de acceso descrito, constituye la base de la protección de


segmentos en muchos sistemas reales.
Del mismo modo que en los sistemas de paginación, existen distintas estrategias, para realizar
la traducción de direcciones con segmentación, por lo tanto, pueden utilizarse los mismos métodos
expuestos anteriormente:
• Correspondencia directa.
• Correspondencia asociativa.
• Correspondencia combinada.
Estos métodos pueden realizarse con memorias asociativas de tamaño suficiente, para contener
toda la tabla de correspondencia de segmentos o con almacenamientos asociativos parciales de tamaño
suficiente, para contener entradas para los segmentos a los que se hace referencia mas recientemente.
Por el momento, se va a tratar la traducción de direcciones con segmentación, empleando la
correspondencia directa, con toda la tabla de correspondencias de segmentos dentro de una memoria
caché de alta velocidad.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 14 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Vamos a tratar de detallar más, una entrada representativa de la tabla de segmentos.


BIT DE DIR LA MEM. VIRTUAL LONGITUD BITS DE DIR BASE DEL ALM. REAL
RESIDENCIA SI EL SEGMENTO NO SEGMENTO PROTECCIÓN SI EL SEGMENTO ESTÁ EN
EN EL ALM. PRINCIPAL EL ALM. PRINCIPAL

r v LONG R W E A B b
r = 0 Si el segmento no está en el almacenamiento primario.
r = 1 Si el segmento está en el almacenamiento primario.
Un proceso en ejecución, hace referencia a una dirección virtual V = (s,d). El número de
segmento s, debe utilizarse como índice en la tabla de correspondencia, que comienza en la dirección
a, situada en el registro origen de la tabla de segmentos, para formar la dirección de memoria real se
utiliza el valor s como índice en la tabla de correspondencia para determinar la entrada del segmento s
de la tabla de correspondencias. Si esta tabla contiene la dirección de memoria real b, en la cual,
comienza el segmento. El desplazamiento d, se suma a b, para formar la dirección real, R = b + d,
correspondiente a la dirección virtual V = (s,d).
En la figura se muestra con detalle, una entrada representativa de una tabla de correspondencias
de segmentos. Un bit de residencia r, indica si el segmento se encuentra o no en la memoria principal.
Si el segmento se encuentra en el almacenamiento principal, b es la dirección en la que
comienza el segmento. Si este no se encuentra en el almacenamiento principal, entonces, v es la
dirección de la memoria virtual, en donde debe leerse el segmento, antes de que el proceso pueda
continuar su ejecución.
Será preciso, verificar en todas las referencias al segmento, que el desplazamiento d es menor
que la longitud del segmento, para asegurar que se encuentra dentro de él.
Si el segmento no se encuentra en el almacenamiento principal, se produce una interrupción,
por fallo de segmento, lo cual hace que el sistema operativo asuma el control y cargue el segmento
desde la dirección a de la memoria virtual a la memoria real.
COMPARTIMIENTO EN UN SISTEMA CON SEGMENTACIÓN.

Una de las ventajas que tiene la segmentación sobre la paginación es que la segmentación es un
concepto lógico, no físico.
En su forma general, los segmentos no están restringidos de una manera arbitraria a un cierto
tamaño, ya que estos pueden ser, dentro de unos limites razonables, tan grandes o tan pequeños como
sea necesario.
Un segmento correspondiente a una tabla tiene el tamaño de la tabla y un segmento
correspondiente a una estructura de datos dinámica, puede crecer o decrecer según lo haga la propia
estructura de datos.
Un segmento correspondiente a un código de procedimientos generado por un compilador, será
tan grande como sea necesario para contener el código.
La compartición de segmentos es bastante sencilla, en comparación con la compartición de una
página, en un sistema de paginación.
Si un proceso en un sistema de paginación ocupa tres páginas y media de longitud, entonces, en
lugar de tener entradas simples, para indicar el vector compartido, habrá que tener entradas

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 15
!

individuales, para cada una de las páginas donde reside el proceso, por lo tanto, la gestión de una
página parcial, puede ser difícil.
La situación empeora con una estructura de datos dinámica, cuando una estructura así, crece y
ocupa una nueva página, las indicaciones de la compartición en la tabla de correspondencia, deberán
ajustarse en el momento de la ejecución.
En un sistema con segmentación, cuando el segmento se declara como compartido, las
estructuras de datos pueden crecer o decrecer, sin afectar a la información de la tabla de segmentos,
que indica el espacio donde residen los segmentos compartidos.
Para que dos procesos puedan compartir un segmento, basta que tengan entradas en sus tablas
de segmentos, que apunten al mismo segmento del almacenamiento principal.
SISTEMAS CON SEGMENTACIÓN / PAGINACIÓN COMBINADAS.

Los sistemas de paginación y segmentación, ofrecen ventajas significativas, como


organizaciones del almacenamiento virtual y se han construido sistemas que combinan la paginación
con la segmentación, ofreciendo las ventajas de ambas técnicas de organización del
almacenamiento virtual.
Las características que se combinan en estos sistemas son:
• Los segmentos tendrán un tamaño que debe ser múltiplo del tamaño de las páginas.
• No es necesario que todas las páginas de un segmento estén en el almacenamiento primario
simultáneamente.
• Las páginas que son contiguas en el almacenamiento virtual, no tienen necesariamente que
ser contiguas en el almacenamiento real.
• Las direcciones son tridimensionales por lo tanto una dirección de almacenamiento virtual
estará formada por los segmentos componentes v = (s, p, d) donde:
▪ s Número del segmento.
▪ p Número de página dentro del segmento.
▪ d Desplazamiento donde se encuentra el elemento de información deseado.
TRADUCCIÓN DINÁMICA DE DIRECCIONES EN SISTEMAS CON SEGMENTACIÓN/PAGINACIÓN.

Para la traducción dinámica de direcciones virtuales a direcciones reales, en un sistema con


segmentación paginada, se utiliza normalmente, la correspondencia combinada asociativa/directa tal y
como se muestra en la figura, que se expresa a continuación:
Las páginas a las que se ha hecho referencia más recientemente, tienen entradas en un
almacenamiento asociativo de tamaño reducido.
Se realiza una búsqueda asociativa para tratar de localizar (s,p) en el almacenamiento
asociativo, si se encuentra (s,p), entonces el marco de página del almacenamiento primario p' en el
cual reside la página p del segmento s, se concatena con el desplazamiento d, para formar la dirección
real R, correspondiente a la dirección virtual: V = (s,p,d) con lo cual finaliza la traducción de la
dirección.
Normalmente, la mayor parte de las solicitudes de traducción de direcciones, se satisfacen,
mediante la búsqueda en el almacenamiento asociativo, sin embargo, cuando esto no es posible se
establece una correspondencia directa de la siguiente forma.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 16 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

En la dirección de comienzo a de la tabla de correspondencia directa de segmentos, en el


almacenamiento principal, se utiliza como índice el número del segmento s, para determinar la
entrada del segmento s en la tabla de correspondencia, que indica la dirección base b de la tabla de
páginas, para el segmento s, en el almacenamiento principal
En la dirección b se toma como índice el número de página p, que proporciona la entrada en la
tabla de páginas, para la página p del segmento s.
Esta tabla indica que p´ es el número de marco de página que corresponde a la página virtual p,
que se concatena con el desplazamiento d, para formar la dirección real R, correspondiente a la
dirección virtual V = (s,p,d).
Un programa en ejecución hace referencia a una dirección virtual V = (s,p,d).

DIR. ORIGEN DE
TAB. SEGMENTOS
DIRECCIÓN VIRTUAL

a N. SEGMENTO N. PAGINA DESPLAZAMIENTO

s p d

TLB

s p p’

p
T. DE SEGMENTOS T. DE PAGINAS PARA
DE UN PROCESO EL SEGMENTO S

p
b DIRECCIÖN REAL
LPT BPT p p’ R = p’ * Tp + d

En este proceso de traducción se da por hecho, que cada elemento de información se encuentra
donde se supone que debe estar, pero hay muchos pasos en donde puede fallar el proceso.
La búsqueda en la tabla de correspondencia de segmentos puede indicar que el segmento s no
se encuentra en el almacenamiento principal, ocasionando una interrupción por fallo de segmento y
que el sistema operativo tiene que resolver esa interrupción, localizando el segmento en el
almacenamiento virtual, creando una tabla de páginas para el segmento y cargando la tabla de páginas
apropiada en el almacenamiento principal, reemplazando posiblemente a una tabla de páginas de este u
otro proceso.
Si el segmento se encuentra en el almacenamiento primario, la referencia a la tabla de
correspondencia de páginas puede indicar que la página deseada no se encuentra en el almacenamiento
principal, lo cual generaría una interrupción por fallo de página y el sistema operativo tiene que

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 17
!

resolver esa interrupción localizando la página en el almacenamiento virtual y cargándola en el


almacenamiento real, reemplazando posiblemente a otra página.
Al igual que en la segmentación pura, una dirección de almacenamiento virtual puede rebasar
el final del segmento generando así una excepción por desbordamiento de segmento. Por otra parte los
bits de protección también pueden marcar, que no está permitida la operación que se pretende realizar,
generándose así una interrupción por protección del segmento. Todos estos problemas que se
pueden producir nos indican que el almacenamiento asociativo es crítico para la operación eficiente de
este mecanismo de traducción dinámica.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 18 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Si se utilizara un mecanismo de correspondencia directa pura, manteniendo la tabla de


correspondencia completa dentro del almacenamiento primario, el promedio de referencias al
almacenamiento virtual, requeriría un ciclo de almacenamiento, para obtener acceso a la tabla de
correspondencia de segmentos, un segundo ciclo para hacer referencia a la tabla de correspondencia de
páginas y un tercer ciclo para hacer referencia al elemento deseado en el almacenamiento real.
De esta manera cada referencia a un elemento implicaría tres ciclos de almacenamiento y el
sistema funcionaría a un tercio de su velocidad normal, con lo que consumiría dos tercios de su tiempo
en la traducción de direcciones.
Resulta interesante que muchos sistemas logren operar al 90% o más de velocidad máxima de
sus procesadores de control, con solo 8 o 16 registros asociativos.
En la figura que se expresa a continuación, se presenta una estructura detallada de las tablas
requeridas por un sistema con paginación/segmentación.
TABLAS DE PÁGINAS
UNA POR SEGMENTO M. PRINCIPAL
TABLAS DE SEGMENTOS
UNA POR CADA PROCESO

. .
.

TABLAS DE PROCESOS
DEL SISTEMA OPERATIVO .

a
.
b
. .
. .
. . .
n

. .

. .

. .
.

En el nivel más alto, esta una tabla de procesos que contiene una entrada por cada proceso
conocido por el sistema. La entrada en dicha tabla para un proceso dado, apunta a la tabla de
correspondencia de segmentos del proceso.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 19
!

Cada entrada en la tabla de correspondencia de segmentos de un proceso, apunta a la tabla de


correspondencia de páginas del segmento asociado y cada entrada de esa tabla, apunta al marco de
página donde reside esa página o bien la dirección en el almacenamiento secundario donde puede
encontrarse la página.
En un sistema con un número muy grande de procesos, segmentos y páginas, esta estructura
de tablas puede consumir una parte importante del almacenamiento primario. La cuestión aquí es
que la traducción de direcciones, se realiza con más rapidez en el momento de la ejecución, si todas
las tablas están en el almacenamiento principal. Ahora bien, si existen más tablas en el
almacenamiento principal, el sistema tiene capacidad para menos procesos y de esta manera baja la
productividad.
Los diseñadores de sistemas operativos, deben evaluar dicha cuestión, para lograr el delicado
equilibrio necesario, para que el sistema funcione eficientemente y proporcione un servicio seguro a
cada uno de sus usuarios.
SISTEMAS DE PAGINACIÓN SEGMENTADA.

Cuando el tamaño de palabra de una maquina aumenta y el número de bits utilizados para
definir el número de página es alto, la cantidad de páginas que podemos tener crece de forma
alarmante y con ello el tamaño de la tabla de páginas, haciendo que las búsquedas se hagan muy lentas
y el método de la paginación pierda toda su eficacia.
Una posible solución consiste en segmentar la tabla de páginas, que debe ser muy grande, con
lo que ahorramos tener que recorrer toda la tabla. Dicha solución es utilizada por los grandes sistemas
operativos de la familia IBM.
El diagrama que se expresa a continuación, indica como se realiza la conversión de una
dirección lógica a una dirección física, en este sistema.

DIRECCIÓN
ORIGEN DE
T. SEGEMENTOS
STBR DIRECCIÓN VIRTUAL
p d
ERROR

s p’ p’< LTP
SEGM. DE LA T. PAG
T. PÁGINAS

LTP BTP p’ m m * TP + d
DIRECCIÓN REAL

En la dirección origen de la tabla de segmentos STBR, se toma como índice el número de


segmento s, y se accede a la entrada correspondiente de la tabla de segmentos, donde se encuentra la
longitud de la tabla de páginas y la base de dicha tabla.
La primera LTP, la utiliza para compararla con la dirección binaria p’ y comprobar si se comete
algún error, por ser la dirección p’ demasiado grande. La segunda se añade a la dirección p’, para

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 20 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

acceder al elemento correspondiente de la tabla de páginas, obteniendo así, el valor del marco de
página necesario, para obtener la dirección real de la memoria.
Este método consiste, en segmentar la tabla de páginas, cuando el número de páginas es muy
grande y los segmentos en que se divide la tabla de páginas pueden ser de tamaño variable.
COMPARTIMIENTO EN UN SISTEMA CON PAGINACIÓN/SEGMENTACIÓN.

En los sistemas con paginación/segmentación, son muy importantes las ventajas de compartir
segmentos. El compartimiento se logra, mediante entradas en las tablas de correspondencia de
segmentos de diferentes procesos, que apuntan a la misma tabla de correspondencia de páginas.
El compartimiento tanto en sistemas de paginación, como en aquellos con segmentación o
paginación/segmentación, requiere un cuidadoso manejo por parte del sistema operativo.
Es preciso considerar lo que sucedería, si una página entrante reemplazara, una página
compartida por varios procesos.
T. DE SEGMENTOS T. DE PÁGINAS
PROCESO A SEGMENTOS
PROCESO A

T. DE PROCESOS *

COMPARTIDOS *

PROCESO B *

PROCESO B

ADMINISTRACIÓN DE LA MEMORIA VIRTUAL.

Anteriormente hemos analizado los distintos esquemas que se pueden utilizar para la gestión de
memoria en los sistemas operativos.
De todos estos esquemas algunos son los más apropiados para la gestión de memoria en los
sistemas de almacenamiento real, otros se consideran más apropiados para la gestión de memoria en
los sistemas de almacenamiento virtual y alguno se puede utilizar en ambos sistemas.
Todos estos esquemas tienen un objetivo común, que consiste en mantener simultáneamente
varios procesos en memoria, para permitir la multiprogramación; no obstante, no todos ellos requieren
que el proceso completo se encuentre en la memoria, antes de poder ejecutarlo.
Las técnicas que se pueden utilizar, para la administración de la memoria virtual, permiten la
ejecución de procesos, que no están totalmente cargados en la memoria real, siendo esta la principal
ventaja de la utilización de la memoria virtual, que consiste en que los programas pueden ser mayores

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 21
!

que el espacio de memoria real asignado para ellos, liberando a los programadores de la preocupación
por las limitaciones de la memoria real.
No obstante, por todas las consideraciones expuestas con anterioridad, se puede llegar a la
conclusión, de que el concepto de memoria virtual no es fácil de implantar y si no se diseña de una
manera eficiente, puede reducir considerablemente el rendimiento del sistema.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 22 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Una vez analizados los distintos problemas que se pueden presentar con la utilización de una
estrategia u otra, para la gestión de la memoria virtual:
• Paginación.
• Segmentación.
• Segmentación paginada.
Se trata ahora, de analizar aquellos aspectos, que son específicos de la administración de la
memoria virtual, que pueden exigir la incorporación de técnicas actuales, para conseguir el rendimiento
más adecuado en el sistema.
PAGINACIÓN POR DEMANDA.

La paginación por demanda tiene por objeto, introducir en la memoria real las páginas que son
necesarias, para la ejecución de los procesos.
Si se examina un programa cualquiera, se puede llegar a la conclusión de que en la mayoría de
los casos, no es preciso mantener el programa completo en la memoria, para que este pueda ser
ejecutado.
Las conclusiones que se obtienen del examen anteriormente citado son las siguientes:
• Los programas en general, contienen un conjunto de instrucciones para la gestión de errores
poco frecuentes, que se ejecutarán en muy contadas ocasiones.
• Existirán diferentes estructuras de datos, a las que normalmente se le asigna más memoria
de la que realmente necesitan.
• Ciertas opciones y características de un programa, se han incluido para el tratamiento de
situaciones que no se presentan normalmente.
Incluso en aquellos casos en que se necesitara todo el programa, es probable, que no se requiera
todo al mismo tiempo.
La capacidad de ejecutar un programa que se encuentra parcialmente en memoria puede tener
las siguientes ventajas:
• Un programa ya no estará restringido por la cantidad de memoria física disponible, por lo
tanto, los usuarios podrán escribir los programas, para un espacio virtual muy grande,
simplificando la programación.
• Como cada programa de usuario ocupará menos memoria física, podrán ejecutarse más
programas simultáneamente, aumentando la utilización del procesador y la productividad
del sistema, sin incrementar el tiempo de respuesta o el tiempo de retorno.
• Se requerirá menos tiempo para las operaciones de E/S, ya que para cargar o intercambiar
cada uno de los procesos del usuario, no se necesita hacerlo del proceso completo, por lo
que se aumentará la velocidad de ejecución.
Por todas estas consideraciones, un programa en ejecución, que no se encuentre totalmente en
la memoria, beneficia tanto al usuario como al sistema.
Generalmente la técnica, que se utiliza para la administración de la memoria virtual, es la
paginación por demanda, pero también puede implantarse en un sistema de segmentación, ya que
algunos sistemas ofrecen un esquema de segmentación paginada, donde los segmentos se dividen en
páginas.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 23
!

De esta manera, la perspectiva del usuario es la segmentación, pero el sistema operativo puede
implantar esta perspectiva con la paginación por demanda.
La segmentación por demanda también puede utilizarse, para la administración de la memoria
virtual, pero los algoritmos de sustitución de segmentos, son mucho más complejos, que los de
sustitución de páginas, dado que los segmentos tienen tamaños variables.
Un sistema de paginación por demanda, es muy similar a un sistema de paginación, en el que
ha sido preciso incluir los intercambios de páginas, es decir, los procesos residen normalmente en la
memoria virtual y cuando se quiere ejecutar un proceso, se van introduciendo en la memoria principal
las páginas que son necesarias, por lo tanto, el intercambio no se produce por procesos completos, sino
por páginas y no se incorporará a la memoria una página, a menos que se necesite.
Según este concepto, el proceso se considera como una secuencia de páginas, en vez de un gran
espacio contiguo de direcciones. En este caso, el término intercambio no es totalmente correcto, ya que
un intercambio, manipula procesos completos, mientras que ahora, lo que se necesita es un paginador,
que intercambie las páginas individuales de un proceso, por ello se debe utilizar, el término paginar en
lugar de intercambiar, en la paginación por demanda.
La paginación por demanda incorpora a la memoria solamente las páginas necesarias, evitando
así, colocar en memoria páginas que nunca se utilizarán, reduciendo así el tiempo de intercambio y la
cantidad de memoria física necesaria.
Este esquema de administración de memoria requiere apoyo del hardware, que se ha definido
para la paginación y en cada entrada de la tabla de páginas, existirá un bit de residencia, que indicará si
la página esta en la memoria real (1) o por el contrario la página está en la memoria virtual (0).
Si introducimos solamente las páginas que realmente se necesitan, el proceso se ejecutará de la
misma forma, que si hubiéramos incorporado todas las páginas, ya que mientras el proceso se ejecuta y
accede a páginas residentes en memoria, la ejecución prosigue normalmente.
A continuación se expresa el modelo de comportamiento utilizado en la paginación por
demanda, muy similar al modelo que se ha descrito anteriormente para la paginación.
PAG 0

TABLA DE
PAG 1 CORRESPONDENCIA

PAG 2

PAG n MEMORIA SECUNDARIA

MEMORIA VIRTUAL MEMORIA REAL

Si se trata de utilizar una página que no este incorporada a la memoria, se producirá una
interrupción por falta de página, es decir, el hardware de paginación, al traducir la dirección mediante

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 24 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

la tabla de páginas, observará que el bit de residencia es 0, generando la interrupción para que el
sistema operativo, haga la transferencia de esa página a la memoria real desde el almacenamiento
secundario.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 25
!

S:O: 3 SELECCIONAR MARCO LIBRE EN LA LISTA DE


DISPONIBLES

BUSCAR EN LA MEMORIA SECUNDARIA

MOVER M 1 REFERENCIA 2 INTERRUPCIÓN

0
6 REINICIAR
INSTRUCCIÓN
M LIBRE

5 RESTABLECER 4 CARGAR LA
TABLA PÁGINAS PÁGINA QUE FALTA

El proceso que se realiza es el siguiente:


1. Consultar la tabla de páginas, para determinar si la página está en memoria real.
2. Si la página no está en la memoria real, se produce una interrupción por fallo de página.
3. Localizar un marco que esté libre en la lista de marcos libres, para la carga de la página.
4. Planificar la operación para leer la página deseada, en el marco recién asignado.
5. Realizada la carga de la página en el marco elegido, modificar el contenido de la tabla de
páginas.
6. Reiniciar a continuación, la instrucción interrumpida.
Es importante observar, que como en el momento de la interrupción, se guarda el estado del
proceso interrumpido, por lo tanto, se puede reanudar el proceso en el mismo punto y estado, excepto
que ahora la página deseada ya se encuentra en memoria.
En un caso extremo, podemos comenzar la ejecución de un proceso sin páginas en memoria, de
esta forma, con la primera instrucción, el proceso presentaría un fallo de página, después de traer a
memoria esta página, el proceso continuaría su ejecución, provocando fallos de página, cuando sea
necesario, hasta que todas las páginas que necesita se encuentren en memoria, al llegar a este punto, se
podría ejecutar sin más fallos de página y a este proceso, se le denomina Paginación por demanda pura
y consiste en no traer una página a memoria hasta que se requiera.
En teoría, algunos programas pueden acceder a una nueva página de memoria con cada
instrucción que ejecutan, esta situación provocaría un rendimiento inaceptable, sin embargo, los
análisis de procesos en ejecución han mostrado que esta situación es muy poco probable, debido
fundamentalmente al principio de cercanía ya que los programas suelen poseer una localidad de
referencias, que están relativamente próximas, brindando un rendimiento aceptable en la paginación
por demanda.
El hardware para apoyar la paginación por demanda, es el mismo que se utiliza para la
paginación y los intercambios y está compuesto por:
• Una memoria virtual, donde están situadas las páginas para llevar a cabo el proceso de
traducción de direcciones virtuales a direcciones reales.
• Una tabla de páginas, con capacidad para determinar sí la página esta en la memoria real o
no y un valor especial para los bits de protección.
• Una memoria principal, que contiene las páginas del proceso que se necesitan para la
ejecución, es decir, las páginas activas.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 26 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

• Una memoria secundaria, que contiene las páginas, que no están en la memoria principal y
normalmente, es un disco de alta velocidad que se denomina dispositivo de intercambios.

Además de esta ayuda del hardware, se requiere un considerable apoyo del software, como se
verá más adelante.
Un aspecto critico de esta técnica, es la capacidad para reiniciar cualquier instrucción, después
de un fallo de página. En la mayoría de los casos, es fácil cumplir con este requisito, ya que un fallo de
página, puede ocurrir en cualquier referencia a memoria.
Si el fallo de página ocurre al buscar la instrucción, se puede reiniciar efectuando de nuevo la
búsqueda, pero si el fallo de página ocurre al buscar un operando, será necesario buscar de nuevo la
instrucción, decodificarla y luego buscar el operando.
En el peor de los casos, si consideramos una instrucción de tres direcciones, como por ejemplo,
ADD A y B, colocando el resultado en C. Los pasos para ejecutar esta instrucción serán:

1. Buscar y decodificar la instrucción ADD.


2. Buscar A.
3. Buscar B.
4. Sumar A y B.
5. Guardar el resultado en C
Si se presenta el fallo de página al tratar de almacenar C, porque C está en una página, que no se
encuentra actualmente en memoria, tendremos que obtener la página deseada, traerla a memoria,
modificar la tabla de páginas y reiniciar la instrucción, que implicaría buscar de nuevo la instrucción,
decodificarla, buscar una vez más los dos operandos y volver a sumar. El trabajo que se repite es
inferior a una instrucción completa y solo seria necesario si ocurre un fallo de página en ese momento.
La principal dificultad surge cuando la instrucción puede modificar varias localidades distintas.
Por ejemplo, la instrucción MVC (Mover Carácter), que puede mover hasta 256 bytes de una
localidad a otra, que pueden coincidir parcialmente, si alguno de los bloques fuente o destino sobrepasa
un limite de página, puede ocurrir un fallo de página, después de haber efectuado parte de la
transferencia y además si los bloques fuente y destino se superponen, es probable que se modifique el
bloque fuente y por lo tanto impedir que se pueda reiniciar la instrucción.
A

Este problema se puede resolver de dos maneras, dependiendo del modelo:


• Una solución sería disponer de un microcódigo adecuado, para calcular y tratar de acceder
a ambos extremos de los dos bloques, con objeto de comprobar, que si va a ocurrir un fallo
de página suceda en esta etapa antes de modificar algo, de esta manera se podrá realizar la
transferencia, sabiendo que no va a ocurrir ningún fallo de página.
• La otra solución podría ser utilizar registros temporales, para contener los valores de las
localidades sobrescritas, si se presenta un fallo de página, todos los valores que había antes

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 27
!

de que ocurriese la interrupción regresan a la memoria. Esta acción restablece la memoria a


su estado anterior a la ejecución de la instrucción, por lo que podemos repetir la instrucción.
Estos no son los únicos problemas que surgen al añadir la paginación a una arquitectura
existente, para permitir la paginación por demanda, pero si ilustran algunas de las dificultades.
En un sistema informático, la paginación se inserta entre la UCP y la memoria y debe ser
completamente transparente para el proceso del usuario, por ello, con frecuencia el usuario supone que
la paginación se puede añadir a cualquier sistema.
RENDIMIENTO DE LA PAGINACIÓN POR DEMANDA.

La paginación por demanda puede tener un efecto considerable, en el rendimiento de un


sistema informático. Para ver la razón, se puede calcular el tiempo de acceso efectivo para la memoria
paginada por demanda.
El tiempo de acceso a memoria (am), para la mayoría de los sistemas informáticos actuales,
esta entre 10 y 200 nanosegundos, mientras no tengamos fallos de página, el tiempo de acceso efectivo
es igual al tiempo de acceso a memoria.
Sin embargo, si ocurre un fallo de página, primero debemos leer del disco la página indicada y
luego acceder a la palabra deseada.
Sea p la probabilidad de que ocurra un fallo de página, siendo 0 < p < 1, podemos esperar que p
este muy cercano a cero, es decir, que habrá pocos fallos de página.
El tiempo de acceso efectivo = (1-p) * am + p * TFP, siendo TFP el tiempo de fallo página.
Para calcular el tiempo de acceso efectivo, necesitamos saber cuanto tiempo se requiere para
servir un fallo de página.
Un fallo de página desencadena la siguiente secuencia:
1. Interrupción para el sistema operativo.
2. Determinar si la interrupción es un fallo de página.
3. Verificar si la referencia a la página ha sido legal y determinar la ubicación de la página en
el disco.
4. Guardar los registros de usuario y el estado del procesador.
5. Durante la espera, asignar la UCP a otro usuario.
6. Leer del disco a un marco libre.
• Esperar en la cola del dispositivo.
• Esperar el tiempo de posicionamiento y latencia.
• Comenzar la transferencia de la página al marco libre.
7. Interrupción del disco, para comunicar la finalización de la operación de E/S.
8. El sistema operativo determina, si la interrupción proviene del disco.
9. Guardar los registros y el estado del procesador del usuario que lo está utilizando.
10. Actualizar la tabla de páginas y las demás tablas, para indicar que la página deseada se
encuentra en memoria.
11. Esperar que la UCP se le asigne nuevamente a este proceso.
12. Restablecer los registros de usuario, estado del procesador y nueva tabla de páginas y
reanudar la instrucción interrumpida

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 28 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Es posible que no siempre sean necesarios todos los pasos, pero en cualquier caso, nos
enfrentamos a tres componentes principales del tiempo de servicio del fallo de página:
• Servir la interrupción de fallo de página.
• Leer la página.
• Reanudar el proceso.
La primera y tercera tareas pueden reducirse con una codificación cuidadosa a varios cientos de
instrucciones y pueden suponer una media de 100 microsegundos cada una, sin embargo, el tiempo de
cambio de página estará próximo a los 25 milisegundos.
Un disco de cabeza móvil típico tiene un tiempo medio de posicionamiento de 15 milisegundos,
un tiempo medio de latencia de 8 milisegundos y un tiempo medio de transferencia de un milisegundo,
por lo tanto, el tiempo total de paginación estará muy próximo a los 25 milisegundos.
Si una cola de procesos que esperan al dispositivo, es decir, otros procesos que han provocado
fallos de página, se debe añadir el tiempo de espera en la cola, mientras que el dispositivo de
paginación esté ocupado por otros procesos, antes de atender nuestra solicitud, lo cual incrementa más
aun nuestro tiempo de intercambio.
De esta manera, si tomamos un tiempo promedio de servicio de fallo de página de 25
milisegundos y un tiempo de acceso a memoria de 100 nanosegundos, entonces el tiempo de acceso
efectivo expresado en nanosegundos sería:
Tiempo de acceso efectivo = (1-p) * 100 + p * 25 msg.= (1-p) * 100 + p * 25.000.000 nanoseg. =
= 100 + 24.999.900 * p
Se comprueba, que el tiempo de acceso efectivo es directamente proporcional a la tasa de fallos
de página, por lo tanto, si se considera que un acceso de cada mil provoca un fallo de página, el tiempo
de acceso efectivo es aproximadamente de 25.000 microsegundos, es decir, 25 milisegundos.
por tanto, la relación 25.000/100 nos indicaría que, el computador sería
25.000.000/1.000 = 25.000
250 veces más lento debido a la paginación por demanda y eso no sería admisible.

Si un acceso de cada 25.000 provoca un fallo de página, el tiempo de acceso efectivo es de 1.000
nanosegundos, es decir, un microsegundo.
25.000.000/25.000 = 1.000 por tanto, la relación 1.000/100 nos indicaría, que el computador sería en
este caso, 10 veces más lento debido a la paginación por demanda y esto si que podría ser admisible.
Por lo tanto, si queremos una degradación menor al 10% se necesitaría:
110 > 100 + 25.000.000 * p
10 > 25.000.000 * p

Por tanto, la probabilidad sería: p < 10 / 25.000.000 = 4 * 10 p < 0,0000004


Esto quiere decir, que para mantener un nivel razonable, la lentitud adicional provocada por la
paginación por demanda, solo puede permitir, que menos de un acceso a memoria de cada 2.500.000,
tenga un fallo de página.
Es muy importante, mantener muy baja la tasa de fallos de página, en un sistema de paginación
por demanda, ya que sino es así, aumenta el tiempo de acceso efectivo, frenando considerablemente la
ejecución de los procesos.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 29
!

La asignación de solo un conjunto de marcos de página, a un proceso determinado, requiere la


incorporación de ciertas políticas de diseño en el gestor de memoria virtual.
En términos de su orden relativo de aparición cuando se gestiona un proceso se pueden
establecer estas políticas:
• Asignación, cantidad de memoria real que se asigna a cada proceso activo.
• Búsqueda y lectura, que tiene por objeto determinar, que elementos introducir en la memoria y
cuando introducirlos desde la memoria secundaria a la memoria principal.
• Sustitución, cuando un elemento nuevo tiene que ser introducido en la memoria y no hay
memoria libre, que elemento intercambiar, para hacer sitio al nuevo elemento.
• Colocación, donde se debe situar un elemento nuevo.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 30 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

SUSTITUCIÓN DE PÁGINAS.

En la presentación que se ha realizado hasta el momento, la tasa de fallos de página no


representa un gran problema, ya que como máximo se produce un fallo por cada página, cuando se
hace referencia a ella por primera vez, sin embargo, esta representación no es muy exacta, ya que si
un proceso de 10 páginas solo emplea la mitad de ellas, entonces la paginación por demanda, ahorra
la E/S necesaria para cargar cinco páginas que nunca se usarán.
Se puede aumentar el nivel de multiprogramación ejecutando el doble de procesos, ya que si
tuviésemos 50 marcos, podríamos ejecutar diez procesos, en lugar de los cinco, que se ejecutarían, si
cada uno necesitara 10 marcos, aunque cinco de ellos no se usarían nunca.
Residencia N. Marco

0 A 0 1 3

1 B 1 1 7

2 C 2 0

3 D 3 1 5

4 E 4 0

5 F 5 0 0 N

6 G 6 1 2 1 Q

7 H 7 1 8 2 G

3 A
8 I 8 0 A B C D

9 J 9 0 4 M
E F G H
M. VIRTUAL T. DE PÄGINAS 5 D

I J K L
6 K
0 K 0 1 6
7 B M N O P
1 L 1 0
8 H
2 M 2 1 4 . . . .

3 1 0 9 R
3 N
M. REAL MEM. SECUNDARIA
4 O 4 0

5 P 5 0

6 1 1
6 Q

7 R 7 1 9

8 0
8 S
9 0
9 T

M. VIRTUAL T. DE PÄGINAS

Si se aumenta el nivel de multiprogramación, sin duda, se está produciendo una


sobreasignación de la memoria, ya que si se ejecutan ocho procesos, cada uno con diez páginas, pero

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 31
!

que solo utilizan cinco páginas, se obtiene una mayor utilización de la UCP y por lo tanto, una mayor
productividad con diez marcos de sobra.
Sin embargo puede ocurrir que en un momento determinado, cada uno de estos procesos
intente utilizar sus diez páginas, entonces, serían necesarios 80 marcos, cuando solo tenemos 50.
Aunque esta solución es muy poco probable, es posible que se produzca una sobreasignación y es
necesario tratarla.
Sí se supone, que está ejecutándose un proceso de usuario y ocurre un fallo de página, se
produce una interrupción y el control pasa al sistema operativo, el cual consulta sus tablas internas y
determina sí se trata de un fallo de página o de un acceso ilegal a la memoria.
El sistema operativo determina en que lugar del disco se encuentra la página deseada,
posteriormente se comprueba que no existen marcos libres. Al llegar a este punto, el sistema operativo
podría abortar el proceso de usuario, sin embargo, la paginación por demanda, es una técnica, que el
sistema operativo proporciona, para mejorar la utilización y la productividad del sistema informático,
por lo tanto, se pueden producir distintas estrategias para solucionar el problema.
Una primera estrategia consiste en descargar un proceso y liberar todos sus marcos, reduciendo
el nivel de multiprogramación, esto puede ser una buena idea y la consideraremos con mayor detalle
posteriormente.
Otra estrategia quizá más interesante podría ser el reemplazo de páginas, que consiste en lo que
se va a exponer a continuación.
Si no hay ningún marco libre, se busca uno que no se esté utilizando en ese momento y lo
liberamos. Se puede liberar un marco escribiendo en el disco todo su contenido y modificando la tabla
de páginas y todas las demás tablas, para indicar que la página ya no se encuentra en memoria.
El marco liberado puede usarse ahora para contener la página por la cual falló el proceso, de
esta manera, se modifica la rutina de servicio del fallo de página, para incluir el reemplazo de página.
1. Encontrar la ubicación en disco de la página deseada.
2. Buscar un marco libre:
• Si hay un marco libre, utilizarlo.
• De lo contrario, utilizar un algoritmo de reemplazo de página, para seleccionar la
víctima.
• Escribir la página víctima en disco y modificar la tabla de páginas.
3. Copiar la página deseada en el nuevo marco libre y modificar la tabla de páginas.
4. Reanudar el proceso de usuario.
Es preciso observar que si no quedan marcos libres, se requieren dos transferencias, una de
entrada y otra de salida. Esta situación duplica el tiempo de servicio de un fallo de página y en
consecuencia aumentará el tiempo de acceso efectivo.
Este tiempo de proceso adicional, se puede reducir utilizando un bit de modificación, así cada
página o marco puede tener asociado un bit de modificación en el hardware, que pone el bit de
modificación en 1 para una página, cuando en ella se realiza alguna modificación.
Cuando se selecciona una página para reemplazo, examinamos su bit de modificación y si esta
activo, sabemos que la página ha sido modificada, por lo tanto, debemos escribirla en el disco
nuevamente, en el caso de que el bit de modificación no este activo no será necesario escribirla sobre el

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 32 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

disco. Del mismo modo, tampoco será necesario copiar la página en el disco, si los bits de protección
indican que la página es de solo lectura.
Este esquema puede reducir considerablemente el tiempo para servir un fallo de página, ya que
reduce a la mitad el tiempo de E/S, si la página no se ha modificado.
El reemplazo de páginas es esencial para la paginación por demanda, pues completa la
separación entre la memoria lógica y la memoria física.
Con la paginación por demanda, el espacio de direcciones lógicas ya no esta restringido por la
memoria física y si tenemos un proceso de 20 páginas, podemos ejecutarlo en 10 marcos, empleando un
algoritmo de reemplazo, para encontrar un marco libre cuando sea necesario.
Para implantar la paginación por demanda debemos resolver dos grandes problemas:
• Desarrollar un algoritmo de asignación de marcos.
• Desarrollar algoritmos para el reemplazo de páginas.
El diseño de algoritmos adecuados para resolver estos problemas es una tarea importante, ya
que la E/S de disco es muy costosa, por lo tanto, una pequeña mejora en los métodos de paginación por
demanda, produce amplias ganancias en el rendimiento del sistema.
ALGORITMOS DE REEMPLAZO DE PÁGINAS.

Existen diferentes algoritmos para el reemplazo de páginas y cada sistema operativo, cuenta
con su propio esquema de reemplazo de páginas.
Para la evaluación de los distintos algoritmos, utilizaremos una determinada serie de
referencias a memoria y sobre ella calcular él número de fallos de página.
Esta serie de referencias se puede generar:
• Utilizando un generador de números aleatorios.
• Rastreando el sistema y anotando la dirección de cada referencia a memoria.
Para determinar el número de fallos de página, para una serie de referencias y un algoritmo de
reemplazo de páginas determinado, necesitamos conocer también el número de marcos de página
disponibles.
En teoría, si el número de marcos disponibles aumenta, se debe reducir el número de fallos de
página, tal y como se expresa en la figura.

Número de
Fallos Página

Número de Marcos
Para evaluar los algoritmos de reemplazo de páginas, utilizaremos la siguiente serie de
referencias:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 33
!

Al no disponer por el momento de los adecuados algoritmos de asignación de memoria, se


utilizará para la evaluación tres marcos de página.
ALGORITMO FIFO. (First-In First-out).

El algoritmo más sencillo es el algoritmo Primero en entrar Primero en salir. Según este
algoritmo, cuando se necesita sustituir una página, se elegirá aquella que lleve más tiempo en memoria.
Para controlar el tiempo de permanencia en memoria de las páginas, se utiliza una cola de llegada a
memoria de las mismas.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 34 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Aplicando este algoritmo a la serie de referencias anterior:


7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 4 4 4 0 0 0 7 7 7
0 0 0 3 3 3 2 2 2 1 1 1 0 0
1 1 1 0 0 0 3 3 3 2 2 2 1
x x x x x x x x x x x x x x x

Este algoritmo provoca 15 fallos de página.


Un criterio de selección tan simple es fácil de programar y además producirá poca sobrecarga
en el sistema. Su eficacia es relativa, ya que puede ocurrir que la página que lleva más tiempo en
memoria sea la de mayor utilización y en este el algoritmo sustituirá la página menos adecuada.
Por ejemplo, en un sistema de tiempo compartido, en el que varios usuarios están utilizando el
mismo programa, compartiendo sus páginas. Normalmente serán estas páginas las que más tiempo
lleven en la memoria y aunque su utilización es muy alta, el criterio FIFO las reemplazará provocando
inmediatamente una serie de fallos de página.
Por lo tanto, el algoritmo FIFO, no será el más adecuado para los sistemas de tiempo
compartido, pero puede ser útil en otros tipos de sistemas operativos.
Si el algoritmo FIFO se aplica a la serie de referencias siguiente: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

16 __
Nº DE FALLOS 14 __
12 __ * *
DE PÁGINA 10 __ *
9 __ *
6 __
5 __ * *
4 __
2 __

1 2 3 4 5 6
Nº DE MARCOS DE PÁGINA

1 2 3 4 1 2 5 1 2 3 4 5
1 1 1 4 4 4 5 5 5
2 2 2 1 1 1 3 3
3 3 3 2 2 2 4
x x x x x x x x x Total 9 Fallos

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 35
!

Si incrementamos en uno los marcos disponibles, veremos que la tasa de fallas es mayor.
1 2 3 4 1 2 5 1 2 3 4 5
1 1 1 1 5 5 5 5 4 4
2 2 2 2 1 1 1 1 5
3 3 3 3 2 2 2 2
4 4 4 4 3 3 3
x x x x x x x x x x Total 10 fallos

Parece lógico pensar que el número de fallos de página, debería disminuir al ir aumentando el
número de marcos disponibles, sin embargo, si observamos la figura, al pasar de 3 a 4 marcos el
número de fallos de página aumenta, pasando de 9 a 10 fallos de página.
Este resultado va en contra de la teoría anteriormente citada y se denomina Anomalía de
Belady, la cual indica que para algunos algoritmos de reemplazo de páginas, la tasa de fallos de página,
puede aumentar al incrementarse el número de marcos asignados. En las investigaciones realizadas
sobre los distintos algoritmos se observó esta anomalía.
ALGORÍTMO ÓPTIMO.

Como consecuencia del descubrimiento de la anomalía de Belady, se buscó un algoritmo de


reemplazo de páginas óptimo, con la menor tasa de fallos de página, de todos los algoritmos y que
nunca presentará la anomalía de Belady.
El algoritmo óptimo, al que se le ha dado el nombre OPT, garantiza la menor tasa de fallos de
página posible, para un numero fijo de marcos y consiste en reemplazar la página que más tiempo
tardará en utilizarse.
Supongamos que disponemos de 3 marcos de memoria real y le vamos a aplicar el algoritmo
óptimo, según la serie anteriormente citada.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 2 7
0 0 0 0 4 0 0 0
1 1 3 3 3 1 1
x x x x x x x x x

Se producen 9 fallos de página y este será el tratamiento óptimo para esta serie.
Si se compara con el algoritmo FIFO, que presentó 15 fallos de página, vemos que si
descontamos los tres primeros fallos de página, que son comunes en todos los algoritmos, es el doble
mejor, que el algoritmo FIFO, ya que el número de fallos de página disminuye a la mitad.
Ningún algoritmo de reemplazo, puede procesar esta serie de referencias, con menos de 9 fallos
de página, si utilizamos 3 marcos de memoria real, por desgracia, es difícil implantar el algoritmo de
reemplazo de páginas óptimo (OPT) o (MIN), ya que requiere un conocimiento futuro de la serie de
referencias. En consecuencia, este algoritmo se utiliza preferentemente para realizar estudios
comparativos.
ALGORITMO LRU. (Least Recently Used).

Si el algoritmo óptimo no es factible, quizá sea posible una aproximación y este algoritmo es
una buena aproximación a la solución óptima, considerando que aquellas páginas muy usadas en el
pasado reciente lo serán también en el futuro, es decir, en este mismo sentido podríamos considerar que

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 36 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

las poco utilizadas en el pasado, seguirán sin usarse en el futuro, por lo tanto, de deberá sustituir
aquella página, que haya sido menos usada recientemente.
Si aplicamos este criterio a la serie de referencias utilizada anteriormente, tendremos:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 4 4 4 0 1 1 1
0 0 0 0 0 0 3 3 3 0 0
1 1 3 3 2 2 2 2 2 7
x x x x x x x x x x x x

Se producen 12 fallos de página, un resultado sensiblemente mejor que el del algoritmo FIFO.
La política LRU, se utiliza frecuentemente como algoritmo de reemplazo de páginas y se
considera que es bastante buena, además no se produce la anomalía de Belady.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 7 3 3 3 7
0 0 0 0 0 0 0
1 1 1 4 1 1
2 2 2 2 2
x x x x x x x x

Se producen 8 fallos de página, un resultado sensiblemente mejor que el del algoritmo FIFO.
El problema principal es como implantar este algoritmo ya que para ponerlo en práctica, el
sistema debe contabilizar de alguna manera, el tiempo en el que se produce cada acceso a memoria,
para poder clasificar las páginas según su utilización, este control se puede realizar de varias formas:
Contadores hardware.
La solución más simple consiste en incorporar un contador que se incremente
automáticamente, con cada referencia a memoria y añadir un campo a las entradas de la tabla de
páginas, que pueda almacenar el valor del contador, en el campo correspondiente de la tabla de
páginas, cuando se realiza una referencia a una página determinada. Para servir un fallo de página, el
sistema buscará en dicha tabla, la pagina cuyo valor de contador sea menor.
Pilas.
Otra alternativa consiste en mantener una pila que contiene los números de los marcos de
página utilizados. Cada vez que se utiliza un marco de página, su numero se coloca al principio de
la pila. En un momento determinado, la página menos recientemente utilizada, será la que está
situada en el marco que esta situado en el fondo de la pila.
Supongamos que la serie de referencia utiliza los cuatro marcos de página siguientes:
0, 1, 2, 3, 2, 1

La pila estaría constituida de la manera siguiente:


0 1 2 3 2 1

3 2 1
2 3 2
1 1 3
0 0 0

Esta alternativa se puede realizar como es natural por software, pero él número de operaciones
que exige cada acceso a memoria:

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 37
!

• Localizar el número del marco de página en la pila.


• Colocarlo al principio.
• Actualizar los diferentes apuntadores, etc.
Obliga a utilizar algún dispositivo especifico de hardware que la haga operativa, porque de lo
contrario, significaría un aumento de los tiempos de ejecución, que la haría inviable.
Matrices hardware.
En este caso, si el ordenador dispone de n marcos, el hardware debe mantener una matriz de n
x n bits, puestos inicialmente a cero. Al accederse a un marco de página k, el hardware pone a 1 todos
los bits de la fila k y a 0 todos los bits de la columna k. En cualquier momento, la página menos
recientemente usada, es aquella que figura en el marco de página, cuya fila tiene un valor binario
menor.
Si utilizamos las referencias a marcos de página anteriormente citada, para cuatro marcos de
memoria real tendremos:
0 1 2
0 1 2 3 0 1 2 3 0 1 2 3
0 0 1 1 1 0 0 0 1 1 0 0 0 0 1
1 0 0 0 0 1 1 0 1 1 1 1 0 0 1
2 0 0 0 0 2 0 0 0 0 2 1 1 0 1
3 0 0 0 0 3 0 0 0 0 3 0 0 0 0
3 2 1
0 1 2 3 0 1 2 3 0 1 2 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 1 1 0 0 0 1 1 0 1 1
2 1 1 0 0 2 1 1 0 1 2 1 0 0 1
3 1 1 1 0 3 1 1 0 0 3 1 0 0 0

Si se utiliza el mismo sistema, expresado anteriormente con serie utilizada en los algoritmos
anteriores se puede obtener el siguiente resultado.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
3 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
2 1 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
1 0 0 0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1 7
0 7 7 7 7 7 1 1 2 3 0 4 4 4 0 0 3 3 2 2 2
x x x x x x x x

Con esta serie hay que observar, que las referencias de página, hay que situarlas en los marcos
de página en donde se encuentran, ya que las matrices se forman según el número de marcos de página.

7 0 1 2
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0
1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0
2 0 0 0 0 2 0 0 0 0 2 1 1 0 1 2 1 1 0 0
3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3 1 1 1 0
0 3 0 4
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0
1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0
2 1 0 0 0 2 0 0 0 0 2 1 1 0 1 2 1 1 0 0
3 1 0 1 0 3 0 0 1 0 3 0 0 0 0 3 1 1 1 0
2 3 0 3

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 38 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0
2 0 1 0 0 2 0 1 0 0 2 0 1 0 0 2 1 1 0 1
3 0 1 1 0 3 0 1 1 0 3 1 1 1 0 3 1 1 0 0
2 1 2 0
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1
1 1 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1
2 1 0 0 1 2 0 0 0 1 2 1 1 0 1 2 0 1 0 1
3 1 0 0 0 3 0 0 0 0 3 0 0 0 0 3 0 0 0 0
1 7 0 1
0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0
1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1
2 0 0 0 1 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0
3 0 0 0 0 3 1 1 1 0 3 1 0 1 0 3 1 0 1 0

ALGORITMOS APROXIMADOS AL LRU.

Algunos sistemas no proporcionan ayuda suficiente del hardware, para el reemplazo de páginas
LRU, siendo necesario utilizar la ayuda de otros algoritmos, como por ejemplo el FIFO.

Otra manera de ofrecer una cierta ayuda consiste en la utilización de un bit de referencia, que
se coloca un 1 cada vez que se hace referencia a una página, bien sea para leer o escribir, este bit de
referencia esta asociado a cada entrada de la tabla de páginas.
En un principio, el sistema operativo borra todos los bits asignándoles un 0, cuando comienza
la ejecución de un proceso de usuario, el hardware asigna un 1 al bit de referencia asociado a cada
página, cuando se realiza un acceso a dicha página. Después de un cierto tiempo, examinando los bits
de referencia se puede determinar, que páginas se han utilizado y cuales no, pero no se puede saber el
orden en que se han utilizado. Esta información parcial de la ordenación nos lleva a la utilización de
varios algoritmos de reemplazo de páginas, que se aproximan al LRU.
ALGORITMOS DE BITS ADICIONALES DE REFERENCIA.

Se puede obtener información adicional de la ordenación, utilizando un byte de ocho bits por
cada página, que puede situarse en cada una de las entradas de la tabla de páginas, anotando en ese
byte, los bits de referencia a intervalos regulares.
Así por ejemplo cada 100 microsegundos, una interrupción del reloj del sistema transfiere el
control al sistema operativo, que desplaza el bit de referencia de cada página, al bit de orden superior
del byte de ocho bits, desplazando los otros bits una posición a la derecha y descartando el bit de
orden inferior, posteriormente los bits de referencia se pondrán a cero.
Estos registros de desplazamiento de ocho bits, contienen la historia de la utilización de la
página durante los últimos ocho periodos de tiempo. Si el registro de desplazamiento contiene
00000000, entonces la pagina no ha sido utilizada en ninguno de los ocho últimos periodos, sin embargo,
una página que se utiliza por lo menos una vez en cada periodo tendría un valor 11111111, en su registro
de desplazamiento.
Una página con un valor 11000100 en su registro histórico, ha sido utilizada más recientemente,
que una con valor 01110111. Si interpretamos estos bytes de ocho bits, como enteros sin signo, la página
con el menor numero en valor absoluto, es la página menos recientemente utilizada y puede

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 39
!

reemplazarse. No obstante puede ocurrir, que existan varios números iguales, en este caso, se puede
utilizar para el reemplazo una selección FIFO entre ellas.
El número de bits históricos puede variar y esa cantidad se seleccionaría, dependiendo del
hardware disponible, para acelerar las actualizaciones todo lo posible. En un caso extremo, él número
puede reducirse a cero, dejando únicamente el bit de referencia y a esta versión se la denomina
algoritmo de reemplazo de páginas de segunda oportunidad.
ALGORITMO DE SEGUNDA OPORTUNIDAD.

El algoritmo básico para el reemplazo de páginas de segunda oportunidad es un algoritmo FIFO


y consiste en que cuando se selecciona una página, se examina su bit de referencia, si es igual a cero, se
reemplaza la página, sin embargo, si el bit de referencia es igual a uno, se le da a la página una segunda
oportunidad y se pasa a seleccionar la siguiente página en el orden FIFO.
Cuando a una página se le brinda una segunda oportunidad, se borra su bit de referencia, es
decir, se coloca un cero en su bit de referencia, de esta manera, una página a la que se le brinda una
segunda oportunidad, no será reemplazada hasta que todas las demás páginas se reemplacen o se les
otorgue una segunda oportunidad, además si una página se utiliza con una frecuencia suficiente, para
mantener en uno su bit de acceso, nunca será reemplazada.
Existen dos maneras de implantar el algoritmo de Segunda Oportunidad:
Una de ellas que se ha venido utilizando tradicionalmente consiste en utilizar una cola FIFO, en
la cual, la página que se reemplazará será la que más tiempo ha permanecido en memoria, es decir, se
seguirá el orden FIFO, pero si la página a sustituir tiene el bit de referencia en 1, se colocará en 0 y se le
proporcionará una segunda oportunidad, siguiendo el orden FIFO, hasta encontrar una página que tenga
el bit de referencia en 0, si todos los bits de la cola FIFO están en 1, se pondrán todos en 0 y en este caso,
se sustituirá la página que le corresponda por su antigüedad, esta situación daría lugar a un FIFO
degradado.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
71 71 71 21 21 21 21 20 21 21 01 01 01 01 01 01 01 71 71 71
01 01 00 01 00 01 41 41 41 40 40 21 21 21 21 21 20 01 01
11 10 10 31 31 30 30 31 30 31 30 11 11 11 11 10 10 11
x x x x x x x x x x x
Total = 11 fallos de Página

Otra forma de implantar el algoritmo de segunda oportunidad, consiste en utilizar también una
cola circular, en la cual un apuntador indica cual es la siguiente página que se reemplazará, por lo tanto,
cuando se requiere un marco, el apuntador avanza hasta encontrar una página, con el bit de referencia a
cero y conforme avanza va borrando los bits de referencia que están en uno.
Cuando todos los bits están en uno, el apuntador recorre toda la cola, dando a cada página una
segunda oportunidad y borrando todos los bits de referencia, antes de seleccionar la siguiente página
para el reemplazo, por lo tanto, si todos los bits están activos, el reemplazo de segunda oportunidad se
convierte en un reemplazo FIFO degradado.
BIT DE BIT DE
REFERENCIA REFERENCIA

0 0 0 0

0 1 0

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 40 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

0
1 1
1 0 0 1

1 0

0 1 0 0

1 1 1 0

1 1 1 0

1 0
0 0

M. FÍSICA M. FÍSICA

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 41
!

El desarrollo del algoritmo de segunda oportunidad, fundamentado en la utilización de los


punteros, toma el nombre del Reloj, es el siguiente:

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
*71 71 71 *21 21 21 *21 *41 41 41 40 *31 31 30 30 *01 01 00 01 01
*01 01 00 *01 *00 01 00 *21 21 20 20 *21 *11 11 11 *11 *71 71 71
*11 10 10 31 31 30 30 *31 *01 01 01 00 *21 21 21 20 *20 *11
X X X X X X X X X X X X X X
TOTAL = 14 FALLOS DE PAGÍNA

ALGORITMO LFU, (LEAST FRECUENTLY USED).

El algoritmo de reemplazo de página, que utiliza el criterio de menos frecuentemente usada,


LFU, (Least Frequently Used), mantiene un contador del numero de accesos, que se han hecho para
cada página y se reemplazará la página con el menor recuento. La razón para esta selección, es que una
página que se usa activamente debe tener un alto número de referencias.
Este algoritmo tiene problemas, cuando una página se utiliza mucho en la fase inicial del
proceso, pero después ya no se utiliza, como se usó bastantes veces al principio, el contador tiene un
valor muy alto y permanece en memoria aunque ya no se necesite.
Una solución para resolver este problema consiste en mantener un contador asociado a cada
página, por ejemplo un byte inicialmente a cero, 00000000. A intervalos regulares como consecuencia de
los pulsos del reloj del sistema, se produce una interrupción, pasando el control al sistema operativo,
que añade el valor del bit de referencia de cada página al contador correspondiente, desplazando todos
los bit,s a la derecha y perdiendo el último bit de la izquierda.
A continuación pondrá a cero todos los bit,s de referencia y esperará al siguiente pulso del
reloj, volviendo a realizar lo mismo, de esta manera el valor del contador puede disminuir
exponencialmente cuando una página deja de utilizarse y comienzan a entrar ceros por la derecha.
ACCESO A LAS PÁGINAS 0 - 5
PULSOS DE RELOJ 0 1 2 3 4
1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0
0 10000000 11000000 11100000 11110000 01111000
1 00000000 10000000 11000000 01100000 10110000
2 10000000 01000000 00100000 00010000 10001000
3 00000000 00000000 10000000 01000000 00100000
4 10000000 11000000 01100000 10110000 01011000
5 10000000 01000000 10100000 01010000 00101000

ALGORITMO MFU. (MOST FREQUENTLY USED).

Este algoritmo utiliza como criterio reemplazar la pagina más frecuentemente usada y se basa
en el argumento de que la página con el menor recuento, probablemente acabe de llegar y por lo tanto
aun tiene que utilizarse.
Como se podría esperar, no es muy común la utilización de estos dos últimos criterios, para el
reemplazo de páginas y además su implantación es bastante costosa y no se aproximan mucho al
algoritmo Óptimo (OPT), ya explicado anteriormente.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 42 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

ALGORITMOS ADICIONALES.

Existen muchos algoritmos, que pueden utilizarse para el reemplazo de páginas, entre ellos se
puede citar el NRU (No recientemente utilizado) o NFU (De uso no frecuente). Con este algoritmo,
consideramos tanto el bit de referencia como el bit de modificación, como un par ordenado, dando
lugar a las cuatro clases siguientes:
(0,0) Ni usada ni modificada.
(0,1) No usada (recientemente), pero modificada.
(1,0) Usada pero no modificada.
(1,1) Usada y modificada.
Cuando es necesario un reemplazo de página, cada una de ellas se puede encontrar en una de
estas cuatro clases. Al elegir una página para sustituir, se seleccionarán primero las de clase inferior.
La aparente contradicción que se produce en la clase (0,1), es decir, no usada pero modificada,
se resuelve, si consideramos que en estos algoritmos, periódicamente, el sistema pone a cero los bits de
referencia, ya que si no se hiciera así, llegaría un momento en el que todas las páginas en memoria
tendrían activado el bit de referencia y este dejaría de tener un valor selectivo.
ALGORITMOS ADJUNTOS.

Con frecuencia se utilizan otros algoritmos, junto a un algoritmo especifico de reemplazo de


páginas. Así por ejemplo, es normal, que los sistemas operativos mantengan una lista de marcos libres,
de esta manera, cuando ocurre un fallo de página, se selecciona un marco de página víctima de la
manera acostumbrada, sin embargo, la página deseada se lee en uno de los marcos libres antes de sacar
la víctima.
Este método permite, que el proceso se reanude lo más pronto posible, sin tener que esperar a
que salga la página víctima, cuando posteriormente, una vez reanudado el proceso, se saca la página
víctima y su marco se añadirá a la lista de marcos libres.
Una extensión de este concepto es mantener una lista de páginas modificadas y cuando el
dispositivo de paginación esta inactivo, se seleccionará una página modificada y se escribirá en el
disco, poniendo en cero el bit de modificación.
Otra modificación consiste, en mantener un deposito de marcos libres, pero recordando que
página se encuentra en cada uno.
Estos algoritmos, reducen notablemente el tiempo de acceso, ya que se elimina el doble
intercambio, comentado anteriormente.
ASIGNACIÓN DE MEMORIA.

El diseño de un sistema operativo, debe afrontar otro aspecto importante de la gestión de


memoria y este es sin ninguna duda, determinar el número de marcos que debe asignar a cada proceso
activo.
Considerando el inicio de un proceso en un sistema de paginación pura, cuando el procesador
intenta cargar la primera instrucción, se produce un fallo de página y a continuación se irían
produciendo sucesivos fallos de página, hasta un momento en el que el proceso dispone de suficientes
páginas en memoria, para seguir su ejecución con una frecuencia menor de fallos de página.
Este sería el comportamiento, si el sistema asignara la memoria aplicando una estricta política
de petición de páginas, sin embargo, en la practica, las cosas no funcionan de esta manera, la propia
APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL
ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 43
!

arquitectura del ordenador utilizado y las características de las instrucciones de maquina, imponen unos
mínimos de asignación por proceso.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 44 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Si se considera una instrucción, que permita mover información entre dos campos de memoria,
su utilización permite que cada uno de los operandos, apunte a direcciones de páginas distintas entre sí
y respecto a la que contiene la instrucción, por lo tanto, su ejecución exige un mínimo de tres páginas
en memoria.
Esto se puede complicar algo más si los operandos utilizan direccionamiento indirecto, es decir,
cada uno apunta a una posición de memoria, que contiene la dirección del dato, en este caso, se
necesitarán cinco marcos para asegurar su ejecución.
Todo ello nos indica, que el sistema deberá asegurar a todo proceso, un mínimo de páginas en
memoria, marcado por la instrucción más exigente al respecto, entre el juego de instrucciones de la
maquina correspondiente. A este mínimo le podemos denominar mínimo estructural, impuesto por la
arquitectura del ordenador.
Si por cualquier razón (sustitución de paginas, procesos más prioritarios, etc.) un proceso se
queda con menos marcos de los indicados por dicho mínimo estructural, el sistema deberá suspenderlo
es decir el Planificador a medio plazo deberá retirarlo (Swap-out) al almacenamiento secundario, para
liberar los marcos que ocupe.
Aunque en principio, el número de marcos asignados a un proceso podrá reducirse hasta ese
mínimo estructural, si en un momento determinado, el proceso no tuviera los marcos de página
necesarios, provocaría inmediatamente sucesivos fallos de página, dando lugar a una anomalía en el
funcionamiento del sistema operativo conocida por Hiperpaginación.
ALGORITMOS DE ASIGNACIÓN.

Tienen por objeto, determinar cuantos marcos de página van a ser asignados a un proceso, que
se carga en memoria inicialmente y también determinan si esta asignación se va a realizar bajo un
ámbito local o global, es decir, si para el reemplazo se deberán tener en cuenta solo los marcos de
página asignados al proceso o bien puede hacerse extensible a todos los marcos de memoria física
disponibles.
Un condicionante a tener en cuenta, para determinar cuantos marcos de memoria se asignan a
un proceso, es la limitación existente en cuanto al mínimo número de marcos, que viene determinado
por la arquitectura del ordenador.
Si una instrucción puede referenciar como máximo hasta n direcciones de memoria de forma
directa o indirecta, habrá que reservar, para asegurar que el proceso pueda ejecutarse en cualquier
condición, n+1 marcos de página.
Las políticas de asignación pueden seguir los siguientes criterios:
• Asignación local.
• Asignación global.
• Asignación igualitaria o equitativa.
• Asignación proporcional.
ASIGNACIÓN LOCAL.

Cuando un proceso necesita cargar una nueva página en memoria y no exista ningún marco
libre, el sistema operativo, selecciona una página activa, para ser intercambiada a la memoria
secundaria, del conjunto de páginas activas del proceso que necesita la página.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 45
!

Cuando el sistema trabaja utilizando un algoritmo de asignación local, el número de fallos de


página, depende de las condiciones de ejecución de cada proceso y no estará afectado por el modo en
que se ejecutan otros procesos de usuario.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 46 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

ASIGNACIÓN GLOBAL.

Cuando un proceso necesita cargar una nueva página en memoria y no existe ningún marco
libre para alojarla, el algoritmo de reemplazo puede asignar cualquier página activa, para ser
intercambiada a la memoria secundaria, pertenezca o no dicha página, al proceso que generó el fallo de
página.
En este caso, las condiciones de ejecución de un proceso, se hacen dependientes de las
condiciones de ejecución de otros procesos cargados en la memoria, ya que un proceso en estado de
espera (WAIT) o listo (READY), puede ver disminuido su número de marcos de página asignados, por la
paginación de otro proceso actualmente activo.
Si se aumenta excesivamente el grado de multiprogramación y se sigue un criterio de
asignación global de marcos, aumentan las posibilidades de que un proceso entre en un estado de
excesiva paginación, produciéndose la anomalía citada anteriormente Hiperpaginación.
ASIGNACIÓN IGUALITARIA O EQUITATIVA.

El número total de marcos asignados a un proceso de usuario se divide equitativamente entre el


número de procesos que conforman la cola activa y cada vez que un proceso se carga en memoria, se
lleva a cabo una redistribución de los marcos.
La asignación esta regulada por los siguientes factores:
• Grado máximo de multiprogramación.
• El mínimo número de marcos que han de asignarse a un proceso.
Esta estrategia de asignación, no contempla el tamaño de los procesos ni la prioridad de
ejecución de estos. De esta manera si por ejemplo, tenemos 80 marcos libres y existen 4 procesos, se
asignarían 20 marcos a cada proceso y si existieran 6 procesos, se podrían asignar 13 marcos a cada uno
y dejar 2 marcos libres, para utilizar en algún proceso extra requerido.
En ambos casos, no se ha tenido en cuenta como son ambos procesos, por lo tanto, si los
citados procesos tienen los siguientes tamaños: 2 de ellos 50 páginas él 3º 15 páginas y el 4º solo consta
de 5 páginas. Al repartir 20 marcos de página entre estos procesos, el 3º y 4º estarán desaprovechando el
espacio de la memoria, mientras que en el 1º y 2º se producirán muchos fallos de página.
ASIGNACIÓN PROPORCIONAL.

El número total de marcos asignados a procesos de usuario se distribuye proporcionalmente en


función del tamaño y/o la prioridad de los procesos, que forman la cola activa y cuando un proceso
nuevo se carga en memoria, se lleva a cabo una redistribución de los marcos.
La asignación esta regulada por los siguientes factores:
• Grado máximo de multiprogramación.
• Tamaño y/o prioridad de los procesos.
• El mínimo número de marcos que han de asignarse a un proceso.
En este caso, la memoria disponible se asigna a cada proceso, de acuerdo con el tamaño de
este, por lo tanto, sea Vi el tamaño de la memoria virtual para el proceso Pi y se puede definir:
V = = Nº total de paginas, entonces, si el total de marcos de página disponibles es M, asignamos Ai
M
marcos al proceso Pi, donde Ai es aproximadamente Ai = Vi * V por supuesto, se deberá ajustar los

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 47
!

Ai, para que sean enteros, mayores al numero mínimo de marcos requerido por el conjunto de
instrucciones y que sumados no excedan de M.

Así por ejemplo, para el mismo caso anteriormente citado, suponiendo que tenemos 120
páginas para los 80 marcos libres, a cada página se le asignará el número de marcos que necesita,
multiplicado por la razón 80/120, de esta manera:
A los dos primeros procesos se le asignan: 50 * 80/120 aproximadamente 33 marcos.
Al tercer proceso se le asignan: 15 * 80/120 aproximadamente 10 marcos.
Al cuarto proceso se le asignan: 5 * 80/120 aproximadamente 3 marcos.
Con esta distribución quedará un marco libre para algún requerimiento posterior.
Tanto en la asignación igualitaria o equitativa, como en la asignación proporcional, la
asignación para cada proceso, puede variar de acuerdo con el nivel de multiprogramación.
Si aumenta el nivel de multiprogramación, cada proceso perderá algunos marcos, para
proporcionar al nuevo proceso la memoria necesaria, sin embargo, si disminuye el nivel de
multiprogramación, los marcos asignados al proceso que sale, pueden distribuirse entre los que se
quedan.
Es preciso observar que con la asignación proporcional o la igualitaria, se trata de igual manera
a un proceso de alta prioridad y a uno de baja prioridad, sin embargo, por definición, queremos darle
más memoria al proceso de alta prioridad, para acelerar su ejecución, en perjuicio de los de baja
prioridad.
Una estrategia podría ser utilizar un esquema de asignación proporcional, donde la tasa de
marcos no dependa de los tamaños relativos de los procesos, sino de sus prioridades o de una
combinación de tamaño y prioridad.
Así por ejemplo, para el mismo caso anteriormente citado, trataremos de distribuir los 80
marcos disponibles proporcionalmente a la prioridad de los procesos. Si suponemos que los cuatro
procesos tienen las siguientes prioridades 1, 2, 3, 4, y la prioridad aumenta en sentido creciente, se
conseguiría la siguiente distribución:
En este caso, a cada proceso le asignaremos el número de marcos proporcionalmente a la
prioridad que aumenta en sentido creciente, por lo tanto, si tenemos en cuenta que, la suma de las
prioridades es 10, multiplicaremos la prioridad del proceso por la razón 80/10, de esta manera:
Al primer proceso se le asignan: 1 * 80/10 = 8 marcos.
Al segundo proceso se le asignan: 2 * 80/10 = 16 marcos.
Al tercer proceso se le asignan: 3 * 80/10 = 24 marcos.
Al cuarto proceso se le asignan 4 * 80/10 = 32 marcos.

Si la prioridad aumentara en sentido decreciente, el número de marcos se repartiría con relación


a la inversa de la prioridad, es decir con relación a 1 / 1, 1 / 2, 1 / 3, y 1 / 4.
En este caso, la suma de 1/1+1/2+1/3+1/4 = 12+6+4+3/12 = 25/12
Luego la repartición se realizaría proporcionalmente a 12, 6, 4 y 3, cuya suma es 25, de esta manera:
Al primer proceso le asignaríamos: 12 * 80/25 = 960/25 = 38

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 48 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

Al segundo proceso le asignaríamos: 6 * 80/25 = 400/25 = 19


Al tercer proceso le asignaríamos: 4 * 80/25 = 320/25 = 12
Al cuarto proceso le asignaríamos: 3 * 80/25 = 240/25 = 9

La suma total seria 78 marcos y quedarían dos libres.


Otra estrategia podía ser permitir que un proceso de alta prioridad, seleccione para su
reemplazo, los marcos de un proceso de menor prioridad, es decir, un proceso puede seleccionar el
reemplazo entre sus propios marcos o entre los de cualquier proceso de menor prioridad.
Esta estrategia permite, que un proceso de alta prioridad, aumente su número de marcos en
perjuicio de los procesos de menor prioridad.
En el caso de que se quieran distribuir los marcos proporcionalmente al tamaño y a la
prioridad, considerando que la prioridad aumenta en orden ascendente. Si tenemos en cuenta el mismo
ejemplo utilizado anteriormente, obtendríamos el siguiente resultado:
Si los tamaños de los procesos son: 50, 50, 15, 5

Las prioridades correspondientes: 1, 2, 3, 4

Los 80 marcos de página se repartirían proporcionalmente al producto del tamaño por la


prioridad, es decir, proporcionalmente a 50, 100, 45, 20.

Por lo tanto, los cálculos teniendo en cuenta que la suma de 50 + 100 + 45 + 20 = 215 serían los
siguientes:
50 * 80 / 215 = 4.000 / 215 = 18 marcos de página.
100 * 80 / 215 = 8.000 / 215 = 37 “ “
45 * 80 / 215 = 3.600 / 215 = 16 “ “
20 * 80 / 215 = 1.600 / 215 = 7 “ “
La suma total sería de 78 marcos de página y quedarían dos libres.
En el caso de que se quieran distribuir los marcos de página proporcionalmente al tamaño y
a la prioridad, considerando que la prioridad disminuye en orden ascendente. Si tenemos en cuenta
el mismo ejemplo utilizado anteriormente, obtendríamos el siguiente resultado:
Si los tamaños de los procesos son: 50, 50, 15, 5

Las prioridades correspondientes son: 1/1, 1/2, 1/3, 1/4

Los 80 marcos se distribuirán proporcionalmente al producto del tamaño por la inversa de la


prioridad, por lo tanto, los cálculos que será preciso realizar son los siguientes:
50 / 1 + 50 / 2 + 15 / 3 + 5 / 4 = (50 *12) + (50 * 6) + (15 * 4) + (5 * 3) / 12 = 600 + 300 + 60 + 15 / 12 = 975 / 12

De esta manera, los 80 marcos de página habrá que distribuirlos proporcionalmente a:


600 * 80 / 975 = 48.000 / 975 = 49
300 * 80 / 975 = 24.000 / 975 = 24
60 * 80 / 975 = 4.800 / 975 = 4
15 * 80 / 975 = 1.200 / 975 = 1

La suma total sería de 78 marcos de página y quedarían dos libres.


HIPERPAGINACIÓN.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 49
!

Si el número de marcos asignados a un proceso de baja prioridad, desciende por debajo del
número mínimo requerido por la arquitectura del ordenador, debemos descargar sus páginas restantes,
liberando todos los marcos asignados.
Esta medida introduce un nivel de intercambios, llevada a cabo por el planificador a medio
plazo del procesador, de hecho se puede observar, que cualquier proceso que no tenga el número de
marcos suficientes, aunque técnicamente es posible reducir al mínimo el número de marcos asignados,
existe un número de páginas que se usan activamente, por lo tanto, si el proceso no tiene este número
de marcos, provocará fallos de página muy frecuentemente.
Esta situación puede dar lugar, a que un proceso al reemplazar una página, tenga que
reemplazar una de sus páginas activas, que casi de inmediato se volverá a necesitar, por consiguiente,
se producirán fallos de página consecutivos.
A esta altísima actividad de paginación, reemplazando páginas que rápidamente deberán
reincorporarse, la denomina Hiperpaginación o también Thrashing y se dice que un proceso está en
hiperpaginación, cuando emplea más tiempo paginando que ejecutando.
CAUSAS DE LA HIPERPAGINACIÓN.

El sistema operativo que esta supervisando la utilización del procesador continuamente, si


comprueba que esta es demasiado baja, aumenta el nivel de multiprogramación, introduciendo un
nuevo proceso en el sistema. Si se emplea un algoritmo de reemplazo de páginas global, que
reemplaza páginas sin importar a que procesos pertenezcan, esto puede afectar de la siguiente
forma.
Supongamos que un proceso entra en una nueva fase de su ejecución y necesita más marcos de
página, el proceso comienza a generar fallos de página y a tomar marcos de página de otros procesos,
pero estos procesos pueden necesitar esas páginas, por lo tanto, producirán también fallos de página en
esos procesos tomando marcos de página de otros procesos.
Todos estos procesos que generan fallos de página, deben usar el dispositivo de paginación
para intercambiar las páginas, por lo tanto, la cola del dispositivo de paginación va aumentando,
mientras que la cola de procesos listos para ejecutarse va disminuyendo, por consiguiente la utilización
del procesador disminuye.
El planificador de la UCP observa que la utilización del procesador decrece y por lo tanto
aumenta el nivel de multiprogramación. El nuevo proceso trata de comenzar tomando marcos de
página de los procesos en ejecución, lo cual ocasiona más fallos de página y una cola más larga para el
dispositivo de paginación, disminuyendo todavía más la utilización del procesador.
El planificador de la UCP trata de incrementar más aun el nivel de multiprogramación,
desplomándose la productividad del sistema, ya que la tasa de fallos de página aumenta
considerablemente y como resultado se incrementa el tiempo de acceso efectivo a memoria. En este
caso, no se efectúa ningún trabajo porque los procesos solamente se dedican a la paginación y este
fenómeno se ilustra en la figura que se expresa a continuación.

UTILIZACIÓN HIPERPAGINACIÓN

DEL

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 50 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

PROCESADOR

NIVEL DE MULTIPROGRAMACIÓN

Al llegar a este punto, para aumentar la utilización del procesador y detener la hiperpaginación,
se debe reducir el nivel de multiprogramación. Los efectos de la hiperpaginación, se pueden limitar
utilizando un algoritmo de remplazo local o bien por prioridades.
Con un algoritmo de reemplazo local, si un proceso comienza la hiperpaginación, no se puede
arrebatar marcos a otro proceso y provocar que este entre también en hiperpaginación, las páginas se
reemplazaran considerando únicamente el proceso al cual pertenecen.
Sin embargo, si los procesos están en hiperpaginación, la mayor parte del tiempo pueden
encontrarse en la cola del dispositivo de paginación, por lo tanto, el tiempo promedio de servicio de un
fallo de página aumentará, por ser mayor el tamaño promedio de la cola del dispositivo de paginación,
de esta manera, el tiempo de acceso efectivo aumentará incluso para un proceso que no este en
hiperpaginación.
Para evitar la hiperpaginación, debemos ofrecer a un proceso todos los marcos que necesita,
pero el problema será conocer los marcos que necesita un proceso y existen varias técnicas para
resolver este problema.
LOCALIDAD DE LOS PROCESOS.

El modelo de localidad es una técnica utilizada por el sistema operativo, que establece que
un proceso durante su ejecución, pasa de una localidad a otra y una localidad es un conjunto de
páginas que se utilizan conjuntamente.
Un programa generalmente esta compuesto por varias localidades distintas, las cuales
pueden superponerse. Realmente un programa esta compuesto por varias partes o subrutinas de
forma que su ejecución se realiza por fases, una a continuación de otra. Durante cualquier fase, es
preciso direccionar una pequeña parte de sus páginas y esto irá cambiando según se vayan
ejecutando las distintas fases.
Este comportamiento se conoce como localidad de referencias de los procesos y con su ayuda
podemos conocer el número mínimo de marcos, que requiere un proceso para evitar la
hiperpaginación.
Cuando se diseña y desarrolla un programa, se construye separando las rutinas por tipos,
normalmente, se trabaja en bucles y dentro de estos sobre unas estructuras de datos determinadas,
constituyendo una localidad espacial de datos e instrucciones.
Esta localidad espacial de datos e instrucciones irá cambiando, según se vaya ejecutando el
programa y de esta forma a cada proceso se le debe asignar los marcos necesarios, para cargar las
paginas requeridas por la fase de ejecución en la que se encuentre su localidad actual.
CONJUNTO DE TRABAJO.

La técnica del conjunto de trabajo (Working Set), tiene por objeto cuantificar la localidad de los
procesos, con el fin de asignarle a cada uno, los marcos necesarios.
Para ello se define el conjunto de trabajo de un proceso en un instante determinado, que se
representa de la siguiente forma: WS = (t,w).

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
TEORIA DE LOS SISTEMAS OPERATIVOS 51
!

WS representa el conjunto de páginas utilizadas por el proceso en ese instante t y w es el


tamaño de la ventana del conjunto de trabajo, que consiste en el número de referencias consecutivas,
que se utilizan para determinar WS.
Así por ejemplo, si tenemos una secuencia de referencias de un proceso:
...2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1...

w = 10 w = 10

WS = (1,2,5,6,7) WS = (3.4)

El factor w que como se ha dicho anteriormente, se denomina ventana de trabajo, establece el


tamaño de la muestra, que se toma de las páginas referidas por el proceso. Su valor condicionará la
efectividad de esta técnica, ya que si es pequeña no cubrirá la localidad del proceso y si es demasiado
grande indicará un número de marcos excesivo, por lo tanto, el valor elegido será función de las
características del sistema y del tipo de procesos a tratar.
El sistema deberá controlar el conjunto de los procesos activos, asegurándoles los marcos
necesarios, para ello deberá tener en cuenta, que el número de marcos necesarios va cambiando, según
la localidad de los procesos y puede llegar un momento, en el que el número de marcos total, sea
superior a la memoria disponible.
En este caso, el sistema operativo deberá suspender algún proceso para liberar memoria, es
decir, disminuir el grado de multiprogramación, por el contrario, si queda memoria disponible, podrá
aumentar el grado de multiprogramación, cargando en memoria nuevos procesos.
La utilización de esta técnica, obliga a registrar, de alguna manera, las páginas referidas por los
procesos y para ello puede utilizar procedimientos similares a los utilizados en el algoritmo LFU.
FRECUENCIA DE FALLOS DE PÁGINA.

La forma más directa de controlar la asignación de memoria, se basa en el control de la


frecuencia con que un proceso produce fallos de página. Puesto que la hiperpaginación se caracteriza
por un gran número de dichos fallos de página, el objetivo será mantener la frecuencia de los fallos de
página entre unos límites preestablecidos.
La figura que se representa a continuación, muestra la función teórica que representa la relación
existente entre los fallos de página y el número de marcos asignados en la que se pueden establecer los
límites necesarios para controlar la tasa de fallos de página.

NIVEL SUPERIOR
Número de
Fallos Página
NIVEL INFERIOR

Número de Marcos
Si la frecuencia de fallos de página de un proceso, sobrepasa el límite superior lógicamente el
sistema operativo intentará asignarle más marcos, para lo cual será necesario disminuir el grado de

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA
! 52 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA
VIRTUAL

multiprogramación, por el contrario, si la frecuencia de fallos de página de un proceso se sitúa por


debajo del limite inferior, indicará al sistema operativo que a ese proceso se le puede reducir el número
de marcos asignados y eso se consigue aumentando el grado de multiprogramación.

APUNTES DE SISTEMAS OPERATIVOS ANGEL GLEZ. DEL


ALBA

También podría gustarte