Professional Documents
Culture Documents
Un solo Usuario
Memoria Contigua
Particiones
Fijas
Variables
Almacenamiento Virtual
Memoria no Contigua
Combinacin
Segmentacin Paginacin Segmentacin
y Paginacin
El trmino 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 informtico determinado.
El concepto de memoria virtual no es un concepto nuevo, ya que aparece en 1.960 en un sistema
informtico denominado ATLAS, diseado y construido en la Universidad de Manchester; pero las
tecnologas existentes en aquel tiempo, no proporcionaban la ayuda necesaria para su implantacin, sin
embargo, actualmente con la ayuda de esas tecnologas, se ha generalizado el empleo de la memoria
virtual y la mayor parte de los ordenadores actuales, ya pueden gestionar el almacenamiento virtual.
Los mtodos ms comunes para gestionar la memoria de los sistemas, que permiten la existencia
de un almacenamiento virtual, son la paginacin y la segmentacin y en algunos sistemas, se puede
utilizar una combinacin de los dos mtodos.
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 ejecucin, no necesitan estar todas ellas en el almacenamiento real.
La clave del concepto de memoria virtual, consiste en la diferenciacin que es preciso realizar,
entre las direcciones a las que hace referencia un programa en ejecucin y las direcciones disponibles en
el almacenamiento real.
Las direcciones a las que hace referencia un programa en ejecucin, se denominan direcciones
lgicas o virtuales y las direcciones disponibles en el almacenamiento real, se denominan se denominan
direcciones fsicas o reales.
El intervalo de direcciones lgicas o virtuales, a las que hace referencia un programa en
ejecucin, constituyen espacio de direcciones virtuales (V) y el intervalo de direcciones fsicas 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).
Lgicamente, 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 ejecucin del proceso.
Adems, esto debe hacerse con rapidez, pues de lo contrario, el rendimiento del sistema se
degradara a niveles inaceptables, eliminando as, las ganancias logradas, por el empleo del concepto de
almacenamiento virtual.
Los mecanismos de traduccin dinmica 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 preocupacin por la posicin de los procedimientos y los datos en
el almacenamiento real.
ORGANIZACIN DEL ALMACENAMIENTO DE VARIOS NIVELES.
Si se va a permitir, que el espacio de direcciones virtuales del usuario, sea ms grande que el
espacio de direcciones reales y adems 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 tamao 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 ms grande que el almacenamiento real, en un momento
dado, solo ser posible mantener una pequea parte de los programas y los datos de un proceso, en el
almacenamiento real
PROCESADOR
MEMORIA VIRTUAL
DAT
MEMORIA
SECUNDARIA
MEMORIA REAL
CORRESPONDENCIA DE BLOQUES.
Los mecanismos de traduccin dinmica de direcciones, deben mantener las estructuras de datos
necesarias, para efectuar la traduccin de direcciones virtuales en direcciones reales, de manera que se
muestren las localidades de la memoria virtual, que estn 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 informacin de correspondencias, requerira tanto espacio de almacenamiento real, como el que
necesitaran los propios procesos o quizs ms, por lo tanto es necesario, agrupar la informacin en
bloques, para reducir la cantidad de informacin de correspondencias y adems se pueda obtener el
beneficio deseado, con la implantacin del concepto de memoria virtual.
El mtodo a seguir consiste, en que el sistema tiene que agrupar en bloques de informacin 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 tamao del bloque, menor ser la
fraccin del almacenamiento real dedicada a guardar la informacin de correspondencias.
La decisin de hacer bloques ms grandes reduce el espacio necesario, para guardar las
estructuras de datos, que utiliza el mecanismo de correspondencias, sin embargo, los bloques grandes
tardan ms en ser transferidos, de la memoria virtual a la memoria real y adems consumen ms espacio
en la memoria real, limitando el nmero de procesos que pueden compartir la memoria real.
Tambin ser preciso decidir si los bloques deben ser del mismo o de distinto tamao. S los
bloques son del mismo tamao, se llaman pginas y la organizacin de la memoria virtual utiliza el
esquema de paginacin. S los bloques pueden ser de tamaos diferentes, se llaman segmentos y la
organizacin de la memoria virtual utiliza el esquema de segmentacin.
Tal y como se ha expresado anteriormente, algunos sistemas, establecen una combinacin de
ambas tcnicas, utilizando segmentos, que son entidades de tamao variable, divididos en pginas de
tamao fijo.
Las direcciones de un sistema de correspondencia de bloques de informacin, son
bidimensionales y para referirse a un elemento de informacin cualquiera, el programa especifica el
bloque de informacin, en el que se encuentra el elemento y su desplazamiento a partir del inicio del
bloque, por lo tanto, una direccin virtual (V), se denota con un par ordenado (b,d), donde b es el
nmero del bloque y d es el desplazamiento dentro del bloque.
La traduccin de una direccin virtual V = (b,d) a una direccin de almacenamiento real R, se
efecta de la forma que expresa la siguiente figura:
REGISTRO ORIGEN
DE LA TABLA
DE BLOQUES
DIRECCIN VIRTUAL
BLOQUE
DESPLAZAMIENTO
b
b
a+b
TABLA BLOQUES
d
b
LONG.
BASE
Base
DIRECCIN REAL
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 direccin base donde comienza el bloque y su
longitud.
Realmente, todo lo que se ha expresado anteriormente, es valido tanto para bloques de tamao
fijo o variable, por lo tanto, a continuacin se tratar de especificar las diferencias existentes entre un
sistema u otro.
Si los bloques son de tamao fijo e iguales unos a otros, estos toman el nombre de pginas y se
estar estableciendo un sistema de paginacin por el contrario, si los bloques son de tamao variable,
estos toman el nombre de segmentos y se estar estableciendo un sistema de segmentacin.
Como se ha dicho anteriormente, en algunos sistemas se realiza una combinacin de los dos
mtodos, definiendo los bloques de tamao variable, es decir segmentos, que posteriormente se dividen
en partes fijas e iguales, es decir pginas. En estos sistemas se deber establecer la condicin, de que el
tamao de los segmentos debe ser mltiplo del tamao de la pgina.
PAGINACIN.
N. PGINA DESPLAZAMIENTO
TABLA PGINAS
a+p
d
DIRECCIN REAL (R)
p* Tp
R = p* Tp + d
BITS DE
PROTECCIN
R W E A B
debe ser el producto de p' por el tamao fijo de la pgina ms el desplazamiento, suponiendo que los
marcos de pgina, estn numerados consecutivamente, a partir de cero.
Es preciso recordar, que el tamao de la pgina al igual que el tamao del marco, esta definido
por el hardware y generalmente es una potencia de 2, que varia segn la arquitectura de la maquina. La
seleccin de una potencia de 2 como tamao de la pgina, facilita la traduccin de una direccin virtual
a un numero de pgina y un desplazamiento en la pgina.
Si el tamao de pgina es 2 n unidades de direccionamiento, entonces, los n bits de orden
inferior de la direccin virtual, representan el desplazamiento en la pgina y los bits restantes de orden
superior, indican el numero de pgina.
Como se ha indicado anteriormente, no todas las pginas se encuentran en la memoria real en un
instante determinado, por lo tanto, la tabla de pginas debe indicar si la pgina 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 mtodos para almacenar las tablas de pginas, la
mayora de ellos asigna una tabla de pginas para cada proceso y en el bloque de control de proceso, se
almacena la direccin de la tabla de pginas.
Para conseguir que la traduccin de direcciones se efectu de la forma ms rpida posible,
existen varias tcnicas para establecer la correspondencia entre una direccin virtual y una direccin
real. A continuacin analizaremos estas posibles tcnicas:
Correspondencia directa.
Correspondencia asociativa.
Correspondencia combinada Asociativa/Directa.
Un proceso en ejecucin hace referencia a una direccin virtual V = (p,d). Antes de que el
proceso comience su ejecucin, el sistema carga en el almacenamiento principal la tabla de
correspondencia de pginas, segn el esquema que figura a continuacin:
REGISTRO ORIGEN
DE LA TABLA
DE PGINAS
N. PGINA
DESPLAZAMIENTO
TABLA PGINAS
a
DIRECCIN REAL (R)
R = p* Tp + d
n pginas en su memoria virtual, entonces, la tabla de pginas con correspondencia directa del proceso
contiene entradas sucesivas para las pginas 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 direccin virtual que se traduce, como la direccin base de la tabla de correspondencia
de pginas, 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 ejecucin de instrucciones.
No obstante, la tabla de pginas, 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 ejecucin de instrucciones y se necesita un ciclo de almacenamiento primario adicional, para la
correspondencia de pginas, el empleo de traduccin de direcciones de pginas mediante
correspondencia directa, puede hacer que el sistema ejecute los programas en el doble del tiempo, que
se necesitara si no se utilizase el concepto de memoria virtual, es decir, se ejecutaran los procesos a la
mitad de la velocidad, lo cual es completamente inadmisible.
Por tanto, para lograr una traduccin ms rpida, las tecnologas de los sistemas actuales,
pueden colaborar en ello y colocar la tabla completa de correspondencia directa de pginas, 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 tecnologa de memorias.
TRADUCCIN DE DIRECCIONES POR CORRESPONDENCIA ASOCIATIVA.
Una forma de acelerar la traduccin dinmica de direcciones, es colocar toda la tabla de pginas,
dentro de un almacenamiento asociativo, accesible por contenido y no por direccin, el cual tiene ciclos,
de un orden de magnitud mucho ms rpidos, que los del almacenamiento primario.
La figura que se muestra a continuacin, muestra como se realiza la traduccin dinmica de
direcciones con una correspondencia asociativa pura.
N. PGINA
DESPLAZAMIENTO
V = (p,d)
TABLA DE PGINAS
N. MARCO DESPLAZAMIENTO
DIR REAL
R = p* Tp + d
Un programa en ejecucin hace referencia a una direccin virtual V = (p,d). Cada entrada en la
memoria asociativa se revisa en forma simultnea, para encontrar la pgina p, que una vez localizada,
devuelve p' como el marco de pgina que corresponde a p. El nmero del marco p' se multiplica por el
tamao de la pgina y se concatena con d, para formar la direccin real R= p*Tp + d.
En la figura se puede observar que las flechas dirigidas a la tabla de pginas situada en la
memoria asociativa, entran directamente en cada entrada. Esto indica que se revisa al mismo tiempo
cada entrada de la tabla de pginas, para buscar el valor de p.
Para realizar la bsqueda as, es preciso incorporar al sistema un hardware especfico y esta
es la razn de que la memoria asociativa, tenga un costo mucho mayor, similar al que se necesita,
para la utilizacin de las memorias cach, por lo tanto, normalmente no se utiliza la correspondencia
asociativa pura.
TRADUCCIN DE DIRECCIONES CON CORRESPONDENCIA COMBINADA.
N PGINA DESPLAZAMIENTO
DIR VIRTUAL
a
p
p
V = (p,d)
MAPA DE CORRESP.
ASOCIATIVA PARCIAL
p
p
TABLA PGINAS
N MARCO
DESPLAZAMIENTO
DIR. REAL
R = p*Tp + d
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.
La utilizacin o no este mecanismo combinado, es una decisin de diseo basada en factores
econmicos y en las tecnologas de hardware existentes.
COMPARTICIN EN UN SISTEMA DE PAGINACIN.
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 desperdiciara mucho almacenamiento primario, la solucin es compartir las pginas
que puedan compartirse.
La comparticin 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, tambin pueden compartirse.
Todos estos conceptos hacen evidente, la necesidad de identificar si cada pgina se puede
compartir o no, clasificadas de esta forma las pginas de los procesos, se realiza el compartimiento.
SEGMENTACIN.
En los sistemas de almacenamiento virtual con segmentacin, una direccin 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 tamao sea suficiente para contenerlo y las estrategias de colocacin para la segmentacin, son
idnticas a las empleadas en la multiprogramacin con particiones variables, es decir, empleando las
tcnicas de primer ajuste, mejor ajuste y peor ajuste.
La traduccin dinmica de direcciones en la segmentacin de la siguiente forma:
APUNTES DE SISTEMAS OPERATIVOS
N. SEGMENTO DESPLAZAMIENTO
s
s
a
TABLA SEGMENTOS
d < LONG
d
s
LONG
BASE
R = b + d
Una de las cualidades de los sistemas con segmentacin 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 proteccin del almacenamiento con claves, en una asignacin de almacenamiento no
contigua, en un sistema multiprogramado, se realiza mediante las claves de usuario, es decir, mientras la
clave de proteccin 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 proteccin 2.
Estas claves estn bajo el estricto control del sistema operativo y solo pueden manipularse
mediante instrucciones privilegiadas. Los tipos de control de acceso ms utilizados por los sistemas
actuales son los siguientes:
Si un proceso tiene acceso para lectura a un segmento, podr obtener cualquier informacin
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 informacin adicional. Si lo desea el proceso puede destruir la
informacin del segmento, aunque en algunos sistemas este derecho puede estar separado.
Un proceso con acceso para ejecucin a un segmento, puede ejecutar ese segmento como
programa. El acceso de ejecucin se suele denegar para segmentos de datos.
Un proceso con acceso para adicin a un segmento, puede agregar informacin adicional
solamente al final del segmento, pero no puede modificar la informacin existente.
TIPO ACCESO
ABREV.
EXPLICACIN
LECTURA
ACTUALIZACIN
EJECUCIN
ADICIN
10
Un sistema con estos cuatro tipos de control de acceso, se pueden crear 16 modos de control de
acceso diferentes, es decir, 2 4 . Con tres tipos de control se podran realizar los siguientes:
MODO
LECTURA
ESCRITURA
EJECUCIN
OBSERVACIONES
MODO 0
NO SE PERMITE EL ACCESO
MODO 1
SOLO EJECUCIN
MODO 2
NO TIENE SENTIDO
MODO 3
NO TIENE SENTIDO
MODO 4
SOLO LECTURA
MODO 5
LECTURA / EJECUCIN
MODO 6
LECTURA / ESCRITURA
MODO 7
ACCESO ILIMITADO
Correspondencia directa.
Correspondencia asociativa.
Correspondencia combinada.
Estos mtodos pueden realizarse con memorias asociativas de tamao suficiente, para contener
toda la tabla de correspondencia de segmentos o con almacenamientos asociativos parciales de tamao
suficiente, para contener entradas para los segmentos a los que se hace referencia mas recientemente.
Por el momento, se va a tratar la traduccin de direcciones con segmentacin, empleando la
correspondencia directa, con toda la tabla de correspondencias de segmentos dentro de una memoria
cach de alta velocidad.
11
LONGITUD
SEGMENTO
LONG
BITS DE
PROTECCIN
R W E A B
Una de las ventajas que tiene la segmentacin sobre la paginacin es que la segmentacin es un
concepto lgico, no fsico.
En su forma general, los segmentos no estn restringidos de una manera arbitraria a un cierto
tamao, ya que estos pueden ser, dentro de unos limites razonables, tan grandes o tan pequeos como
sea necesario.
Un segmento correspondiente a una tabla tiene el tamao de la tabla y un segmento
correspondiente a una estructura de datos dinmica, puede crecer o decrecer segn lo haga la propia
estructura de datos.
Un segmento correspondiente a un cdigo de procedimientos generado por un compilador, ser
tan grande como sea necesario para contener el cdigo.
La comparticin de segmentos es bastante sencilla, en comparacin con la comparticin de una
pgina, en un sistema de paginacin.
Si un proceso en un sistema de paginacin ocupa tres pginas y media de longitud, entonces, en
lugar de tener entradas simples, para indicar el vector compartido, habr que tener entradas individuales,
para cada una de las pginas donde reside el proceso, por lo tanto, la gestin de una pgina parcial,
puede ser difcil.
12
La situacin empeora con una estructura de datos dinmica, cuando una estructura as, crece y
ocupa una nueva pgina, las indicaciones de la comparticin en la tabla de correspondencia, debern
ajustarse en el momento de la ejecucin.
En un sistema con segmentacin, cuando el segmento se declara como compartido, las
estructuras de datos pueden crecer o decrecer, sin afectar a la informacin 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 SEGMENTACIN / PAGINACIN COMBINADAS.
Los segmentos tendrn un tamao que debe ser mltiplo del tamao de las pginas.
No es necesario que todas las pginas de un segmento estn en el almacenamiento primario
simultneamente.
Las pginas 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 direccin de almacenamiento virtual
estar formada por los segmentos componentes v = (s, p, d) donde:
s
Nmero del segmento.
p
Nmero de pgina dentro del segmento.
d
Desplazamiento donde se encuentra el elemento de informacin deseado.
13
Esta tabla indica que p es el nmero de marco de pgina que corresponde a la pgina virtual p,
que se concatena con el desplazamiento d, para formar la direccin real R, correspondiente a la
direccin virtual V = (s,p,d).
Un programa en ejecucin hace referencia a una direccin virtual V = (s,p,d).
DIR. ORIGEN DE
TAB. SEGMENTOS
DIRECCIN VIRTUAL
N. SEGMENTO
N. PAGINA
DESPLAZAMIENTO
d
TLB
s p
T. DE SEGMENTOS
DE UN PROCESO
T. DE PAGINAS PARA
EL SEGMENTO S
LPT
BPT
DIRECCIN REAL
R = p * Tp + d
En este proceso de traduccin se da por hecho, que cada elemento de informacin se encuentra
donde se supone que debe estar, pero hay muchos pasos en donde puede fallar el proceso.
La bsqueda en la tabla de correspondencia de segmentos puede indicar que el segmento s no se
encuentra en el almacenamiento principal, ocasionando una interrupcin por fallo de segmento y que el
sistema operativo tiene que resolver esa interrupcin, localizando el segmento en el almacenamiento
virtual, creando una tabla de pginas para el segmento y cargando la tabla de pginas apropiada en el
almacenamiento principal, reemplazando posiblemente a una tabla de pginas de este u otro proceso.
Si el segmento se encuentra en el almacenamiento primario, la referencia a la tabla de
correspondencia de pginas puede indicar que la pgina deseada no se encuentra en el almacenamiento
principal, lo cual generara una interrupcin por fallo de pgina y el sistema operativo tiene que resolver
esa interrupcin localizando la pgina en el almacenamiento virtual y cargndola en el almacenamiento
real, reemplazando posiblemente a otra pgina.
Al igual que en la segmentacin pura, una direccin de almacenamiento virtual puede rebasar el
final del segmento generando as una excepcin por desbordamiento de segmento. Por otra parte los
bits de proteccin tambin pueden marcar, que no est permitida la operacin que se pretende realizar,
generndose as una interrupcin por proteccin del segmento.
Todos estos problemas que se
pueden producir nos indican que el almacenamiento asociativo es crtico para la operacin eficiente de
este mecanismo de traduccin dinmica.
14
.
.
M. PRINCIPAL
.
TABLAS DE PROCESOS
DEL SISTEMA OPERATIVO
b
.
.
.
.
.
.
.
.
.
.
.
En el nivel ms 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.
Cada entrada en la tabla de correspondencia de segmentos de un proceso, apunta a la tabla de
correspondencia de pginas del segmento asociado y cada entrada de esa tabla, apunta al marco de
pgina donde reside esa pgina o bien la direccin en el almacenamiento secundario donde puede
encontrarse la pgina.
APUNTES DE SISTEMAS OPERATIVOS
15
En un sistema con un nmero muy grande de procesos, segmentos y pginas, esta estructura
de tablas puede consumir una parte importante del almacenamiento primario. La cuestin aqu es que
la traduccin de direcciones, se realiza con ms rapidez en el momento de la ejecucin, si todas las
tablas estn en el almacenamiento principal. Ahora bien, si existen ms tablas en el almacenamiento
principal, el sistema tiene capacidad para menos procesos y de esta manera baja la productividad.
Los diseadores de sistemas operativos, deben evaluar dicha cuestin, 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 PAGINACIN SEGMENTADA.
Cuando el tamao de palabra de una maquina aumenta y el nmero de bits utilizados para definir
el nmero de pgina es alto, la cantidad de pginas que podemos tener crece de forma alarmante y con
ello el tamao de la tabla de pginas, haciendo que las bsquedas se hagan muy lentas y el mtodo de la
paginacin pierda toda su eficacia.
Una posible solucin consiste en segmentar la tabla de pginas, que debe ser muy grande, con lo
que ahorramos tener que recorrer toda la tabla. Dicha solucin es utilizada por los grandes sistemas
operativos de la familia IBM.
El diagrama que se expresa a continuacin, indica como se realiza la conversin de una
direccin lgica a una direccin fsica, en este sistema.
DIRECCIN
ORIGEN DE
T. SEGEMENTOS
STBR
DIRECCIN VIRTUAL
SEGM. DE LA T. PAG
LTP
BTP
ERROR
p< LTP
T. PGINAS
p m
m * TP + d
DIRECCIN REAL
En los sistemas con paginacin/segmentacin, 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 pginas.
El compartimiento tanto en sistemas de paginacin, como en aquellos con segmentacin o
paginacin/segmentacin, requiere un cuidadoso manejo por parte del sistema operativo.
APUNTES DE SISTEMAS OPERATIVOS
16
Es preciso considerar lo que sucedera, si una pgina entrante reemplazara, una pgina
compartida por varios procesos.
T. DE SEGMENTOS
PROCESO A
T. DE PGINAS
SEGMENTOS
PROCESO A
T. DE PROCESOS
*
COMPARTIDOS
PROCESO B
*
*
PROCESO B
Anteriormente hemos analizado los distintos esquemas que se pueden utilizar para la gestin de
memoria en los sistemas operativos.
De todos estos esquemas algunos son los ms apropiados para la gestin de memoria en los
sistemas de almacenamiento real, otros se consideran ms apropiados para la gestin de memoria en los
sistemas de almacenamiento virtual y alguno se puede utilizar en ambos sistemas.
Todos estos esquemas tienen un objetivo comn, que consiste en mantener simultneamente
varios procesos en memoria, para permitir la multiprogramacin; no obstante, no todos ellos requieren
que el proceso completo se encuentre en la memoria, antes de poder ejecutarlo.
Las tcnicas que se pueden utilizar, para la administracin de la memoria virtual, permiten la
ejecucin de procesos, que no estn totalmente cargados en la memoria real, siendo esta la principal
ventaja de la utilizacin de la memoria virtual, que consiste en que los programas pueden ser mayores
que el espacio de memoria real asignado para ellos, liberando a los programadores de la preocupacin
por las limitaciones de la memoria real.
No obstante, por todas las consideraciones expuestas con anterioridad, se puede llegar a la
conclusin, de que el concepto de memoria virtual no es fcil de implantar y si no se disea de una
manera eficiente, puede reducir considerablemente el rendimiento del sistema.
17
Una vez analizados los distintos problemas que se pueden presentar con la utilizacin de una
estrategia u otra, para la gestin de la memoria virtual:
Paginacin.
Segmentacin.
Segmentacin paginada.
La paginacin por demanda tiene por objeto, introducir en la memoria real las pginas que son
necesarias, para la ejecucin de los procesos.
Si se examina un programa cualquiera, se puede llegar a la conclusin de que en la mayora 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:
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:
18
TABLA DE
CORRESPONDENCIA
PAG 2
*
*
*
PAG
MEMORIA VIRTUAL
MEMORIA SECUNDARIA
MEMORIA REAL
Si se trata de utilizar una pgina que no este incorporada a la memoria, se producir una
interrupcin por falta de pgina, es decir, el hardware de paginacin, al traducir la direccin mediante la
tabla de pginas, observar que el bit de residencia es 0, generando la interrupcin para que el sistema
operativo, haga la transferencia de esa pgina a la memoria real desde el almacenamiento secundario.
19
S:O:
MOVER M
1 REFERENCIA
6 REINICIAR
INSTRUCCIN
2 INTERRUPCIN
0
M LIBRE
5 RESTABLECER
TABLA PGINAS
4 CARGAR LA
PGINA QUE FALTA
Una memoria virtual, donde estn situadas las pginas para llevar a cabo el proceso de
traduccin de direcciones virtuales a direcciones reales.
Una tabla de pginas, con capacidad para determinar s la pgina esta en la memoria real o
no y un valor especial para los bits de proteccin.
Una memoria principal, que contiene las pginas del proceso que se necesitan para la
ejecucin, es decir, las pginas activas.
Una memoria secundaria, que contiene las pginas, que no estn en la memoria principal y
normalmente, es un disco de alta velocidad que se denomina dispositivo de intercambios.
Adems de esta ayuda del hardware, se requiere un considerable apoyo del software, como se
ver ms adelante.
APUNTES DE SISTEMAS OPERATIVOS
20
Un aspecto critico de esta tcnica, es la capacidad para reiniciar cualquier instruccin, despus
de un fallo de pgina. En la mayora de los casos, es fcil cumplir con este requisito, ya que un fallo de
pgina, puede ocurrir en cualquier referencia a memoria.
Si el fallo de pgina ocurre al buscar la instruccin, se puede reiniciar efectuando de nuevo la
bsqueda, pero si el fallo de pgina ocurre al buscar un operando, ser necesario buscar de nuevo la
instruccin, decodificarla y luego buscar el operando.
En el peor de los casos, si consideramos una instruccin de tres direcciones, como por ejemplo,
colocando el resultado en C. Los pasos para ejecutar esta instruccin sern:
ADD A y B,
1.
2.
3.
4.
5.
Si se presenta el fallo de pgina al tratar de almacenar C, porque C est en una pgina, que no se
encuentra actualmente en memoria, tendremos que obtener la pgina deseada, traerla a memoria,
modificar la tabla de pginas y reiniciar la instruccin, que implicara buscar de nuevo la instruccin,
decodificarla, buscar una vez ms los dos operandos y volver a sumar. El trabajo que se repite es inferior
a una instruccin completa y solo seria necesario si ocurre un fallo de pgina en ese momento.
La principal dificultad surge cuando la instruccin puede modificar varias localidades distintas.
Por ejemplo, la instruccin MVC (Mover Carcter), 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 pgina, puede ocurrir un fallo de pgina, despus de haber efectuado parte de la
transferencia y adems 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 instruccin.
A
Una solucin sera disponer de un microcdigo 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
pgina suceda en esta etapa antes de modificar algo, de esta manera se podr realizar la
transferencia, sabiendo que no va a ocurrir ningn fallo de pgina.
La otra solucin podra ser utilizar registros temporales, para contener los valores de las
localidades sobrescritas, si se presenta un fallo de pgina, todos los valores que haba antes
de que ocurriese la interrupcin regresan a la memoria. Esta accin restablece la memoria a
su estado anterior a la ejecucin de la instruccin, por lo que podemos repetir la instruccin.
Estos no son los nicos problemas que surgen al aadir la paginacin a una arquitectura
existente, para permitir la paginacin por demanda, pero si ilustran algunas de las dificultades.
En un sistema informtico, la paginacin 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 paginacin se puede aadir a cualquier sistema.
RENDIMIENTO DE LA PAGINACIN POR DEMANDA.
21
La primera y tercera tareas pueden reducirse con una codificacin cuidadosa a varios cientos de
instrucciones y pueden suponer una media de 100 microsegundos cada una, sin embargo, el tiempo de
cambio de pgina estar prximo a los 25 milisegundos.
Un disco de cabeza mvil tpico 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 paginacin estar muy prximo a los 25 milisegundos.
Si una cola de procesos que esperan al dispositivo, es decir, otros procesos que han provocado
fallos de pgina, se debe aadir el tiempo de espera en la cola, mientras que el dispositivo de paginacin
APUNTES DE SISTEMAS OPERATIVOS
22
est ocupado por otros procesos, antes de atender nuestra solicitud, lo cual incrementa ms aun nuestro
tiempo de intercambio.
De esta manera, si tomamos un tiempo promedio de servicio de fallo de pgina de 25
milisegundos y un tiempo de acceso a memoria de 100 nanosegundos, entonces el tiempo de acceso
efectivo expresado en nanosegundos sera:
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 pgina, por lo tanto, si se considera que un acceso de cada mil provoca un fallo de pgina, el tiempo
de acceso efectivo es aproximadamente de 25.000 microsegundos, es decir, 25 milisegundos.
25.000.000/1.000 = 25.000 por tanto, la relacin 25.000/100 nos indicara que, el computador
250 veces ms lento debido a la paginacin por demanda y eso no sera admisible.
sera
Si un acceso de cada 25.000 provoca un fallo de pgina, el tiempo de acceso efectivo es de 1.000
nanosegundos, es decir, un microsegundo.
25.000.000/25.000 = 1.000 por tanto, la relacin 1.000/100 nos indicara, que el computador sera en
este caso, 10 veces ms lento debido a la paginacin por demanda y esto si que podra ser admisible.
*p
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
paginacin por demanda, solo puede permitir, que menos de un acceso a memoria de cada 2.500.000,
tenga un fallo de pgina.
Es muy importante, mantener muy baja la tasa de fallos de pgina, en un sistema de paginacin
por demanda, ya que sino es as, aumenta el tiempo de acceso efectivo, frenando considerablemente la
ejecucin de los procesos.
La asignacin de solo un conjunto de marcos de pgina, a un proceso determinado, requiere la
incorporacin de ciertas polticas de diseo en el gestor de memoria virtual.
En trminos de su orden relativo de aparicin cuando se gestiona un proceso se pueden
establecer estas polticas:
23
M. VIRTUAL
A
4
T. DE PGINAS
M. VIRTUAL
R
M. REAL
A
M
MEM. SECUNDARIA
T. DE PGINAS
24
Aunque esta solucin es muy poco probable, es posible que se produzca una sobreasignacin y es
necesario tratarla.
S se supone, que est ejecutndose un proceso de usuario y ocurre un fallo de pgina, se
produce una interrupcin y el control pasa al sistema operativo, el cual consulta sus tablas internas y
determina s se trata de un fallo de pgina o de un acceso ilegal a la memoria.
El sistema operativo determina en que lugar del disco se encuentra la pgina deseada,
posteriormente se comprueba que no existen marcos libres. Al llegar a este punto, el sistema operativo
podra abortar el proceso de usuario, sin embargo, la paginacin por demanda, es una tcnica, que el
sistema operativo proporciona, para mejorar la utilizacin y la productividad del sistema informtico,
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 multiprogramacin, esto puede ser una buena idea y la consideraremos con mayor detalle
posteriormente.
Otra estrategia quiz ms interesante podra ser el reemplazo de pginas, que consiste en lo que
se va a exponer a continuacin.
Si no hay ningn 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 pginas y todas las dems tablas, para indicar que la pgina ya no se encuentra en memoria.
El marco liberado puede usarse ahora para contener la pgina por la cual fall el proceso, de
esta manera, se modifica la rutina de servicio del fallo de pgina, para incluir el reemplazo de pgina.
1. Encontrar la ubicacin en disco de la pgina deseada.
2. Buscar un marco libre:
Si hay un marco libre, utilizarlo.
De lo contrario, utilizar un algoritmo de reemplazo de pgina, para seleccionar la
vctima.
Escribir la pgina vctima en disco y modificar la tabla de pginas.
3. Copiar la pgina deseada en el nuevo marco libre y modificar la tabla de pginas.
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 situacin duplica el tiempo de servicio de un fallo de pgina y en
consecuencia aumentar el tiempo de acceso efectivo.
Este tiempo de proceso adicional, se puede reducir utilizando un bit de modificacin, as cada
pgina o marco puede tener asociado un bit de modificacin en el hardware, que pone el bit de
modificacin en 1 para una pgina, cuando en ella se realiza alguna modificacin.
Cuando se selecciona una pgina para reemplazo, examinamos su bit de modificacin y si esta
activo, sabemos que la pgina ha sido modificada, por lo tanto, debemos escribirla en el disco
nuevamente, en el caso de que el bit de modificacin no este activo no ser necesario escribirla sobre el
disco. Del mismo modo, tampoco ser necesario copiar la pgina en el disco, si los bits de proteccin
indican que la pgina es de solo lectura.
Este esquema puede reducir considerablemente el tiempo para servir un fallo de pgina, ya que
reduce a la mitad el tiempo de E/S, si la pgina no se ha modificado.
El reemplazo de pginas es esencial para la paginacin por demanda, pues completa la
separacin entre la memoria lgica y la memoria fsica.
25
Con la paginacin por demanda, el espacio de direcciones lgicas ya no esta restringido por la
memoria fsica y si tenemos un proceso de 20 pginas, podemos ejecutarlo en 10 marcos, empleando un
algoritmo de reemplazo, para encontrar un marco libre cuando sea necesario.
Para implantar la paginacin por demanda debemos resolver dos grandes problemas:
El diseo 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 pequea mejora en los mtodos de paginacin por
demanda, produce amplias ganancias en el rendimiento del sistema.
ALGORITMOS DE REEMPLAZO DE PGINAS.
Existen diferentes algoritmos para el reemplazo de pginas y cada sistema operativo, cuenta con
su propio esquema de reemplazo de pginas.
Para la evaluacin de los distintos algoritmos, utilizaremos una determinada serie de referencias
a memoria y sobre ella calcular l nmero de fallos de pgina.
Esta serie de referencias se puede generar:
Para determinar el nmero de fallos de pgina, para una serie de referencias y un algoritmo de
reemplazo de pginas determinado, necesitamos conocer tambin el nmero de marcos de pgina
disponibles.
En teora, si el nmero de marcos disponibles aumenta, se debe reducir el nmero de fallos de
pgina, tal y como se expresa en la figura.
Nmero de
Fallos Pgina
Nmero de Marcos
Para evaluar los algoritmos de reemplazo de pginas, 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.
26
2
0
1
x
2
3
1
x
2
3
0
x
4
3
0
x
4
2
0
x
4
2
3
x
0
2
3
x
0
1
3
x
0
1
2
x
7
1
2
x
7
0
2
x
7
0
1
x
16 __
N DE FALLOS
14 __
12 __
DE PGINA
10 __
9 __
6 __
5 __
4 __
2 __
N DE MARCOS DE PGINA
1 2 3 4 1 2 5 1 2 3 4 5
1 1 1
2 2
3
x x x
4
2
3
x
4
1
3
x
4
1
2
x
5
1
2
x
5
3
2
x
5
3
4
x
Total 9 Fallos
27
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
2 2 2
3 3
4
x x x x
5
2
3
4
x
5
1
3
4
x
5
1
2
4
x
5
1
2
3
x
4
1
2
3
x
4
5
2
3
x
Total 10 fallos
Parece lgico pensar que el nmero de fallos de pgina, debera disminuir al ir aumentando el
nmero de marcos disponibles, sin embargo, si observamos la figura, al pasar de 3 a 4 marcos el nmero
de fallos de pgina aumenta, pasando de 9 a 10 fallos de pgina.
Este resultado va en contra de la teora anteriormente citada y se denomina Anomala de Belady,
la cual indica que para algunos algoritmos de reemplazo de pginas, la tasa de fallos de pgina, puede
aumentar al incrementarse el nmero de marcos asignados. En las investigaciones realizadas sobre los
distintos algoritmos se observ esta anomala.
ALGORTMO PTIMO.
2
0
1
x
2
0
3
x
2
4
3
x
2
0
3
x
2
0
1
x
7
0
1
x
Se producen 9 fallos de pgina y este ser el tratamiento ptimo para esta serie.
Si se compara con el algoritmo FIFO, que present 15 fallos de pgina, vemos que si
descontamos los tres primeros fallos de pgina, que son comunes en todos los algoritmos, es el doble
mejor, que el algoritmo FIFO, ya que el nmero de fallos de pgina disminuye a la mitad.
Ningn algoritmo de reemplazo, puede procesar esta serie de referencias, con menos de 9 fallos
de pgina, si utilizamos 3 marcos de memoria real, por desgracia, es difcil implantar el algoritmo de
reemplazo de pginas 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.
Si el algoritmo ptimo no es factible, quiz sea posible una aproximacin y este algoritmo es una
buena aproximacin a la solucin ptima, considerando que aquellas pginas muy usadas en el pasado
reciente lo sern tambin en el futuro, es decir, en este mismo sentido podramos considerar que las
poco utilizadas en el pasado, seguirn sin usarse en el futuro, por lo tanto, de deber sustituir aquella
pgina, 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
28
2
0
1
x
2
0
3
x
4
0
3
x
4
0
2
x
4
3
2
x
0
3
2
x
1
3
2
x
1
0
2
x
1
0
7
x
Se producen 12 fallos de pgina, un resultado sensiblemente mejor que el del algoritmo FIFO.
La poltica LRU, se utiliza frecuentemente como algoritmo de reemplazo de pginas y se
considera que es bastante buena, adems no se produce la anomala 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
0 0 0
1 1
2
x x x x
3
0
1
2
x
3
0
4
2
x
3
0
1
7
0
1
x
Se producen 8 fallos de pgina, un resultado sensiblemente mejor que el del algoritmo FIFO.
El problema principal es como implantar este algoritmo ya que para ponerlo en prctica, el
sistema debe contabilizar de alguna manera, el tiempo en el que se produce cada acceso a memoria, para
poder clasificar las pginas segn su utilizacin, este control se puede realizar de varias formas:
Contadores hardware.
La solucin ms simple consiste en incorporar un contador que se incremente automticamente,
con cada referencia a memoria y aadir un campo a las entradas de la tabla de pginas, que pueda
almacenar el valor del contador, en el campo correspondiente de la tabla de pginas, cuando se realiza
una referencia a una pgina determinada. Para servir un fallo de pgina, 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 nmeros de los marcos de
pgina utilizados. Cada vez que se utiliza un marco de pgina, su numero se coloca al principio de la
pila. En un momento determinado, la pgina 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 pgina siguientes:
0, 1, 2, 3, 2, 1
2
3
2
1
0
1
2
3
1
0
1
2
3
0
Esta alternativa se puede realizar como es natural por software, pero l nmero de operaciones
que exige cada acceso a memoria:
Obliga a utilizar algn dispositivo especifico de hardware que la haga operativa, porque de lo
contrario, significara un aumento de los tiempos de ejecucin, que la hara inviable.
Matrices hardware.
APUNTES DE SISTEMAS OPERATIVOS
29
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 pgina 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 pgina menos
recientemente usada, es aquella que figura en el marco de pgina, cuya fila tiene un valor binario menor.
Si utilizamos las referencias a marcos de pgina anteriormente citada, para cuatro marcos de
memoria real tendremos:
0
1
2
3
0
0
0
0
0
1
1
0
0
0
0
2
1
0
0
0
3
1
0
0
0
0
1
2
3
0
0
1
1
1
1
0
0
1
1
3
2
0
0
0
1
3
0
0
0
0
0
1
2
3
0
0
1
0
0
1
0
0
0
0
1
2
1
1
0
0
3
1
1
0
0
0
1
2
3
0
0
1
1
1
2
1 2
0 0
0 0
1 0
1 0
3
0
0
1
0
0
1
2
3
0
0
1
1
0
1
0
0
1
0
2
2
0
0
0
0
3
1
1
1
0
0
1
2
3
0
0
1
1
1
1
1 2
0 0
0 1
0 0
0 0
3
0
1
1
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
1
0
2
1
0
7
x
1
0 0
7 7 7
x x x
0
2
1
7
3
0
2
1
x
0
3
2
1
4
0
3
2
x
2
4
0
3
3
2
4
0
0
3
2
4
3
0
2
4
2
3
0
4
1
2
3
0
x
2
1
3
0
0
2
1
3
1
0
2
3
7
1
0
2
x
0
7
1
2
1
0
7
2
Con esta serie hay que observar, que las referencias de pgina, hay que situarlas en los marcos
de pgina en donde se encuentran, ya que las matrices se forman segn el nmero de marcos de pgina.
0
1
2
3
0
0
0
0
0
1
1
0
0
0
7
2
1
0
0
0
3
1
0
0
0
0
1
2
3
0
0
1
1
1
1
0
0
0
0
0
2
0
1
0
1
3
0
1
0
0
0
1
2
3
0
0
0
0
0
1
1
0
1
1
2
2
1
0
0
1
3
1
0
0
0
0
1
2
3
0
0
1
1
1
1
0
0
0
0
2
2
0
1
0
0
3
0
1
1
0
0
1
2
3
0
0
1
0
0
1
0
0
0
0
0
2
1
1
0
0
3
1
1
0
0
0
1
2
3
0
0
0
0
0
3
1 2
1 1
0 1
0 0
0 1
3
1
1
0
0
0
1
2
3
0
0
0
0
0
1
1
0
1
1
3
2
1
0
0
1
3
1
0
0
0
0
1
2
3
0
0
0
0
0
1
1 2
1 1
0 1
0 0
0 0
3
1
1
1
0
1
0 1 2 3
APUNTES DE SISTEMAS OPERATIVOS
7
0 1 2 3
0
1
2
3
1
0 1 2 3
0 0 0 1
1 0 0 1
1 1 0 1
0 0 0 0
0
1
2
3
0
0
0
1
0
0
1
2
3
0
0 1 2 3
0 1 1 0
0 0 0 0
0 1 0 0
1 1 1 0
0
1
2
3
0
0
0
1
0
0
1 2
1 0
0 0
1 0
0 0
2
1 2
1 0
0 0
1 0
0 0
3
1
1
1
0
3
1
1
1
0
0
0 1 2 3
0
1
2
3
0
0
1
1
1
2
1 2
0 0
0 0
1 0
1 1
3
0
0
0
0
0
1
2
3
0
0
0
1
1
4
1 2
1 0
0 0
1 0
1 1
3
0
0
0
0
0
1
2
3
0
0
0
1
1
3
1 2
1 0
0 0
1 0
1 0
3
0
0
1
0
0
1
2
3
0
0
0
0
0
0
1 2
1 1
0 0
1 0
0 0
3
1
1
1
0
1
0 1 2 3
30
0
1
0
0
0
0
0
0
1
1
0
0
1
1
1
0
0
1
2
3
0
1
0
1
0
0
0
1
1
1
0
1
0
0
0
0
0
1
2
3
0
1
0
1
0
0
0
0
1
1
0
1
0
1
0
0
0
1
2
3
0
1
0
1
0
0
0
0
1
1
0
1
0
1
0
0
Algunos sistemas no proporcionan ayuda suficiente del hardware, para el reemplazo de pginas
algoritmos, como por ejemplo el FIFO.
Otra manera de ofrecer una cierta ayuda consiste en la utilizacin de un bit de referencia, que se
coloca un 1 cada vez que se hace referencia a una pgina, bien sea para leer o escribir, este bit de
referencia esta asociado a cada entrada de la tabla de pginas.
En un principio, el sistema operativo borra todos los bits asignndoles un 0, cuando comienza la
ejecucin de un proceso de usuario, el hardware asigna un 1 al bit de referencia asociado a cada pgina,
cuando se realiza un acceso a dicha pgina. Despus de un cierto tiempo, examinando los bits de
referencia se puede determinar, que pginas se han utilizado y cuales no, pero no se puede saber el
orden en que se han utilizado. Esta informacin parcial de la ordenacin nos lleva a la utilizacin de
varios algoritmos de reemplazo de pginas, que se aproximan al LRU.
ALGORITMOS DE BITS ADICIONALES DE REFERENCIA.
Se puede obtener informacin adicional de la ordenacin, utilizando un byte de ocho bits por
cada pgina, que puede situarse en cada una de las entradas de la tabla de pginas, anotando en ese byte,
los bits de referencia a intervalos regulares.
As por ejemplo cada 100 microsegundos, una interrupcin del reloj del sistema transfiere el
control al sistema operativo, que desplaza el bit de referencia de cada pgina, al bit de orden superior
del byte de ocho bits, desplazando los otros bits una posicin a la derecha y descartando el bit de
orden inferior, posteriormente los bits de referencia se pondrn a cero.
Estos registros de desplazamiento de ocho bits, contienen la historia de la utilizacin de la
pgina 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
pgina que se utiliza por lo menos una vez en cada periodo tendra un valor 11111111, en su registro de
desplazamiento.
Una pgina con un valor 11000100 en su registro histrico, ha sido utilizada ms recientemente,
que una con valor 01110111. Si interpretamos estos bytes de ocho bits, como enteros sin signo, la pgina
con el menor numero en valor absoluto, es la pgina menos recientemente utilizada y puede
reemplazarse. No obstante puede ocurrir, que existan varios nmeros iguales, en este caso, se puede
utilizar para el reemplazo una seleccin FIFO entre ellas.
El nmero de bits histricos puede variar y esa cantidad se seleccionara, dependiendo del
hardware disponible, para acelerar las actualizaciones todo lo posible. En un caso extremo, l nmero
puede reducirse a cero, dejando nicamente el bit de referencia y a esta versin se la denomina
algoritmo de reemplazo de pginas de segunda oportunidad.
ALGORITMO DE SEGUNDA OPORTUNIDAD.
31
otorgue una segunda oportunidad, adems si una pgina 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 pgina que se reemplazar ser la que ms tiempo ha permanecido en memoria, es decir, se
seguir el orden FIFO, pero si la pgina 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 pgina que tenga
el bit de referencia en 0, si todos los bits de la cola FIFO estn en 1, se pondrn todos en 0 y en este caso,
se sustituir la pgina que le corresponda por su antigedad, esta situacin dara 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 Pgina
Otra forma de implantar el algoritmo de segunda oportunidad, consiste en utilizar tambin una
cola circular, en la cual un apuntador indica cual es la siguiente pgina que se reemplazar, por lo tanto,
cuando se requiere un marco, el apuntador avanza hasta encontrar una pgina, con el bit de referencia a
cero y conforme avanza va borrando los bits de referencia que estn en uno.
Cuando todos los bits estn en uno, el apuntador recorre toda la cola, dando a cada pgina una
segunda oportunidad y borrando todos los bits de referencia, antes de seleccionar la siguiente pgina
para el reemplazo, por lo tanto, si todos los bits estn activos, el reemplazo de segunda oportunidad se
convierte en un reemplazo FIFO degradado.
BIT DE
REFERENCIA
0
BIT DE
REFERENCIA
0
0
M. FSICA
M. FSICA
32
Este algoritmo tiene problemas, cuando una pgina se utiliza mucho en la fase inicial del
proceso, pero despus 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 solucin para resolver este problema consiste en mantener un contador asociado a cada
pgina, por ejemplo un byte inicialmente a cero, 00000000. A intervalos regulares como consecuencia de
los pulsos del reloj del sistema, se produce una interrupcin, pasando el control al sistema operativo,
que aade el valor del bit de referencia de cada pgina al contador correspondiente, desplazando todos
los bit,s a la derecha y perdiendo el ltimo bit de la izquierda.
A continuacin 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 pgina deja de utilizarse y comienzan a entrar ceros por la derecha.
ACCESO A LAS PGINAS 0 - 5
PULSOS DE RELOJ 0
0
1
2
3
4
5
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
10000000
00000000
10000000
00000000
10000000
10000000
11000000
10000000
01000000
00000000
11000000
01000000
11100000
11000000
00100000
10000000
01100000
10100000
11110000
01100000
00010000
01000000
10110000
01010000
01111000
10110000
10001000
00100000
01011000
00101000
Este algoritmo utiliza como criterio reemplazar la pagina ms frecuentemente usada y se basa en
el argumento de que la pgina con el menor recuento, probablemente acabe de llegar y por lo tanto aun
tiene que utilizarse.
Como se podra esperar, no es muy comn la utilizacin de estos dos ltimos criterios, para el
reemplazo de pginas y adems su implantacin es bastante costosa y no se aproximan mucho al
algoritmo ptimo (OPT), ya explicado anteriormente.
33
ALGORITMOS ADICIONALES.
Existen muchos algoritmos, que pueden utilizarse para el reemplazo de pginas, 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 modificacin, como un par ordenado, dando lugar
a las cuatro clases siguientes:
(0,0)
(0,1)
(1,0)
(1,1)
Ni usada ni modificada.
No usada (recientemente), pero modificada.
Usada pero no modificada.
Usada y modificada.
Cuando es necesario un reemplazo de pgina, cada una de ellas se puede encontrar en una de
estas cuatro clases. Al elegir una pgina para sustituir, se seleccionarn primero las de clase inferior.
La aparente contradiccin que se produce en la clase (0,1), es decir, no usada pero modificada,
se resuelve, si consideramos que en estos algoritmos, peridicamente, el sistema pone a cero los bits de
referencia, ya que si no se hiciera as, llegara un momento en el que todas las pginas en memoria
tendran activado el bit de referencia y este dejara de tener un valor selectivo.
ALGORITMOS ADJUNTOS.
34
Si se considera una instruccin, que permita mover informacin entre dos campos de memoria,
su utilizacin permite que cada uno de los operandos, apunte a direcciones de pginas distintas entre s y
respecto a la que contiene la instruccin, por lo tanto, su ejecucin exige un mnimo de tres pginas en
memoria.
Esto se puede complicar algo ms si los operandos utilizan direccionamiento indirecto, es decir,
cada uno apunta a una posicin de memoria, que contiene la direccin del dato, en este caso, se
necesitarn cinco marcos para asegurar su ejecucin.
Todo ello nos indica, que el sistema deber asegurar a todo proceso, un mnimo de pginas en
memoria, marcado por la instruccin ms exigente al respecto, entre el juego de instrucciones de la
maquina correspondiente. A este mnimo le podemos denominar mnimo estructural, impuesto por la
arquitectura del ordenador.
Si por cualquier razn (sustitucin de paginas, procesos ms prioritarios, etc.) un proceso se
queda con menos marcos de los indicados por dicho mnimo 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 nmero de marcos asignados a un proceso podr reducirse hasta ese
mnimo estructural, si en un momento determinado, el proceso no tuviera los marcos de pgina
necesarios, provocara inmediatamente sucesivos fallos de pgina, dando lugar a una anomala en el
funcionamiento del sistema operativo conocida por Hiperpaginacin.
ALGORITMOS DE ASIGNACIN.
Tienen por objeto, determinar cuantos marcos de pgina van a ser asignados a un proceso, que
se carga en memoria inicialmente y tambin determinan si esta asignacin se va a realizar bajo un mbito
local o global, es decir, si para el reemplazo se debern tener en cuenta solo los marcos de pgina
asignados al proceso o bien puede hacerse extensible a todos los marcos de memoria fsica disponibles.
Un condicionante a tener en cuenta, para determinar cuantos marcos de memoria se asignan a
un proceso, es la limitacin existente en cuanto al mnimo nmero de marcos, que viene determinado
por la arquitectura del ordenador.
Si una instruccin puede referenciar como mximo hasta n direcciones de memoria de forma
directa o indirecta, habr que reservar, para asegurar que el proceso pueda ejecutarse en cualquier
condicin, n+1 marcos de pgina.
Las polticas de asignacin pueden seguir los siguientes criterios:
Asignacin local.
Asignacin global.
Asignacin igualitaria o equitativa.
Asignacin proporcional.
ASIGNACIN LOCAL.
Cuando un proceso necesita cargar una nueva pgina en memoria y no exista ningn marco
libre, el sistema operativo, selecciona una pgina activa, para ser intercambiada a la memoria secundaria,
del conjunto de pginas activas del proceso que necesita la pgina.
Cuando el sistema trabaja utilizando un algoritmo de asignacin local, el nmero de fallos de
pgina, depende de las condiciones de ejecucin de cada proceso y no estar afectado por el modo en
que se ejecutan otros procesos de usuario.
35
Cuando un proceso necesita cargar una nueva pgina en memoria y no existe ningn marco libre
para alojarla, el algoritmo de reemplazo puede asignar cualquier pgina activa, para ser intercambiada a
la memoria secundaria, pertenezca o no dicha pgina, al proceso que gener el fallo de pgina.
En este caso, las condiciones de ejecucin de un proceso, se hacen dependientes de las
condiciones de ejecucin de otros procesos cargados en la memoria, ya que un proceso en estado de
espera (WAIT) o listo (READY), puede ver disminuido su nmero de marcos de pgina asignados, por la
paginacin de otro proceso actualmente activo.
Si se aumenta excesivamente el grado de multiprogramacin y se sigue un criterio de asignacin
global de marcos, aumentan las posibilidades de que un proceso entre en un estado de excesiva
paginacin, producindose la anomala citada anteriormente Hiperpaginacin.
ASIGNACIN IGUALITARIA O EQUITATIVA.
En este caso, la memoria disponible se asigna a cada proceso, de acuerdo con el tamao de este,
por lo tanto, sea Vi el tamao de la memoria virtual para el proceso Pi y se puede definir:
V=
M
V
los Ai, para que sean enteros, mayores al numero mnimo de marcos requerido por el conjunto de
instrucciones y que sumados no excedan de M.
36
As por ejemplo, para el mismo caso anteriormente citado, suponiendo que tenemos 120 pginas
para los 80 marcos libres, a cada pgina se le asignar el nmero de marcos que necesita, multiplicado
por la razn 80/120, de esta manera:
A los dos primeros procesos se le asignan: 50 * 80/120
aproximadamente 33 marcos.
aproximadamente 10 marcos.
aproximadamente 3 marcos.
Con esta distribucin quedar un marco libre para algn requerimiento posterior.
Tanto en la asignacin igualitaria o equitativa, como en la asignacin proporcional, la asignacin
para cada proceso, puede variar de acuerdo con el nivel de multiprogramacin.
Si aumenta el nivel de multiprogramacin, cada proceso perder algunos marcos, para
proporcionar al nuevo proceso la memoria necesaria, sin embargo, si disminuye el nivel de
multiprogramacin, los marcos asignados al proceso que sale, pueden distribuirse entre los que se
quedan.
Es preciso observar que con la asignacin proporcional o la igualitaria, se trata de igual manera
a un proceso de alta prioridad y a uno de baja prioridad, sin embargo, por definicin, queremos darle
ms memoria al proceso de alta prioridad, para acelerar su ejecucin, en perjuicio de los de baja
prioridad.
Una estrategia podra ser utilizar un esquema de asignacin proporcional, donde la tasa de
marcos no dependa de los tamaos relativos de los procesos, sino de sus prioridades o de una
combinacin de tamao 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 conseguira la
siguiente distribucin:
En este caso, a cada proceso le asignaremos el nmero 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 razn 80/10, de esta manera:
Al primer proceso se le asignan:
Al segundo proceso se le asignan:
Al tercer proceso se le asignan:
Al cuarto proceso se le asignan
1 * 80/10 = 8 marcos.
2 * 80/10 = 16 marcos.
3 * 80/10 = 24 marcos.
4 * 80/10 = 32 marcos.
37
Esta estrategia permite, que un proceso de alta prioridad, aumente su nmero de marcos en
perjuicio de los procesos de menor prioridad.
En el caso de que se quieran distribuir los marcos proporcionalmente al tamao y a la prioridad,
considerando que la prioridad aumenta en orden ascendente. Si tenemos en cuenta el mismo ejemplo
utilizado anteriormente, obtendramos el siguiente resultado:
Si los tamaos de los procesos son:
50,
50,
15,
1,
2,
3,
50,
50,
15,
1/2,
1/3,
1/4
Si el nmero de marcos asignados a un proceso de baja prioridad, desciende por debajo del
nmero mnimo requerido por la arquitectura del ordenador, debemos descargar sus pginas 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 nmero de marcos
suficientes, aunque tcnicamente es posible reducir al mnimo el nmero de marcos asignados, existe un
nmero de pginas que se usan activamente, por lo tanto, si el proceso no tiene este nmero de marcos,
provocar fallos de pgina muy frecuentemente.
Esta situacin puede dar lugar, a que un proceso al reemplazar una pgina, tenga que
reemplazar una de sus pginas activas, que casi de inmediato se volver a necesitar, por consiguiente, se
producirn fallos de pgina consecutivos.
38
HIPERPAGINACIN
DEL
PROCESADOR
NIVEL DE MULTIPROGRAMACIN
Al llegar a este punto, para aumentar la utilizacin del procesador y detener la hiperpaginacin,
se debe reducir el nivel de multiprogramacin. Los efectos de la hiperpaginacin, se pueden limitar
utilizando un algoritmo de remplazo local o bien por prioridades.
Con un algoritmo de reemplazo local, si un proceso comienza la hiperpaginacin, no se puede
arrebatar marcos a otro proceso y provocar que este entre tambin en hiperpaginacin, las pginas se
reemplazaran considerando nicamente el proceso al cual pertenecen.
Sin embargo, si los procesos estn en hiperpaginacin, la mayor parte del tiempo pueden
encontrarse en la cola del dispositivo de paginacin, por lo tanto, el tiempo promedio de servicio de un
fallo de pgina aumentar, por ser mayor el tamao promedio de la cola del dispositivo de paginacin,
de esta manera, el tiempo de acceso efectivo aumentar incluso para un proceso que no este en
hiperpaginacin.
Para evitar la hiperpaginacin, debemos ofrecer a un proceso todos los marcos que necesita,
pero el problema ser conocer los marcos que necesita un proceso y existen varias tcnicas para resolver
este problema.
APUNTES DE SISTEMAS OPERATIVOS
39
El modelo de localidad es una tcnica utilizada por el sistema operativo, que establece que un
proceso durante su ejecucin, pasa de una localidad a otra y una localidad es un conjunto de pginas
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 ejecucin se realiza por fases, una a continuacin de otra. Durante cualquier fase, es preciso
direccionar una pequea parte de sus pginas y esto ir cambiando segn se vayan ejecutando las
distintas fases.
Este comportamiento se conoce como localidad de referencias de los procesos y con su ayuda
podemos conocer el nmero mnimo de marcos, que requiere un proceso para evitar la hiperpaginacin.
Cuando se disea 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, segn 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 ejecucin en la que se encuentre su localidad actual.
CONJUNTO DE TRABAJO.
La tcnica 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).
WS representa el conjunto
w = 10
WS = (3.4)
40
Nmero de
Fallos Pgina
NIVEL INFERIOR
Nmero de Marcos
Si la frecuencia de fallos de pgina de un proceso, sobrepasa el lmite superior lgicamente el
sistema operativo intentar asignarle ms marcos, para lo cual ser necesario disminuir el grado de
multiprogramacin, por el contrario, si la frecuencia de fallos de pgina de un proceso se sita por
debajo del limite inferior, indicar al sistema operativo que a ese proceso se le puede reducir el nmero
de marcos asignados y eso se consigue aumentando el grado de multiprogramacin.