NDICE
NDICE
INTRODUCCIN
ESTRUCTURAS DE HARDWARE Y DE CONTROL MEMORIA VIRTUAL PAGINACION
SEGMENTACIN PAGINACIN Y SEGMENTACIN COMBINADAS PROTECCIN Y
COMPARTIMIENTO
SOFTWARE DEL SISTEMA OPERATIVO POLTICAS DE LECTURA
POLTICAS DE UBICACIN POLTICAS DE REEMPLAZO o ALGORITMOS BSICOS o
ALMACENAMIENTO INTERMEDIO DE PGINAS
POLTICAS DE REEMPLAZO Y TAMAO DE CACHE GESTIN DEL CONJUNTO
RESIDENTE ALCANCE DEL REEMPLAZO POLTICAS DE VACIADO
GESTIN DE MEMORIA EN UNIX Y SOLARIS
GESTIN DE MEMORIA EN LINUX
GESTIN DE MEMORIA EN WINDOWS 2000
CONCLUSIN
INTRODUCCIN
La memoria es uno de los principales recursos de la computadora,
la cual debe de administrarse con mucho cuidado.
Aunque actualmente la mayora de los sistemas de cmputo cuentan
con una alta capacidad de memoria, de igual manera las aplicaciones
actuales tienen tambin altos requerimientos de memoria, lo que
sigue generando escasez de memoria en los sistemas multitarea y/o
multiusuario.
La parte del sistema operativo que administra la memoria se
llama administrador de memoria y su labor consiste en llevar un
registro de las partes de memoria que se estn utilizando y aquellas
que no, con el fin de asignar espacio en memoria a los procesos
cuando stos la necesiten y liberndola cuando terminen, as como
administrar el intercambio entre la memoria principal y el disco en
los casos en los que la memoria principal no le pueda dar capacidad
a todos los procesos que tienen necesidad de ella.
Estos sistemas de administracin de memoria se pueden clasificar
en dos tipos:
_los que desplazan los procesos de la memoria principal al disco
y viceversa durante la ejecucin, y,
_ los que no.
ESTRUCTURAS DE HARDWARE Y DE CONTROL Los mtodos de administracin
de la memoria principal, que no utilizan Memoria Virtual y esquemas
de Paginacin y Segmentacin, es decir que llevan a las direcciones
directamente al bus de la memoria, tienen un inconveniente:
producen lo que se denomina fragmentacin. La fragmentacin, que son
huecos en la memoria que no pueden usarse debido a lo pequeo de su
espacio, provoca un desperdicio de memoria principal.
Una posible solucin para la fragmentacin externa es permitir que
espacio de direcciones lgicas lleve a cabo un proceso en
direcciones no contiguas, as permitiendo al proceso ubicarse en
cualquier espacio de memoria fsica que est disponible, aunque est
dividida. Una forma de implementar esta solucin es a travs del uso
de un esquema de paginacin. La paginacin evita el considerable
problema de ajustar los pedazos de memoria de tamaos variables que
han sufrido los esquemas de manejo de memoria anteriores. Dado a
sus ventajas sobre los mtodos previos, la paginacin, en sus
diversas formas, es usada en muchos sistemas operativos.
Al utilizar la memoria virtual, las direcciones no pasan en
forma directa al bus de memoria, sino que van a una unidad
administradora de la memoria (MMU Memory Management Unit). Estas
direcciones generadas por los programas se llaman direcciones
virtuales y conforman el hueco de direcciones virtuales. Este hueco
se divide en unidades llamadas pginas. Las unidades
correspondientes en la memoria fsica se llaman marcos para pgina o
frames. Las pginas y los marcos tienen siempre el mismo tamao.
Comparando la paginacin y segmentacin simple por un lado, con la
particin esttica y dinmica por el otro, se establecen las bases
para un avance fundamental en la gestin de memoria, y es que:
Se puede cargar y descargar un proceso de la memoria principal
de tal forma que ocupe regiones diferentes de la memoria principal
en momentos distintos a lo largo de su ejecucin. Un proceso puede
dividirse en varias partes (pginas o segmentos) y no es necesario
que estas partes se encuentren contiguas en la memoria principal.Si
estas dos caractersticas estn presentes, no ser necesario que todas
las pginas o todos los segmentos de un proceso estn en la memoria
durante la ejecucin.
El trmino fragmento hace referencia tanto a pginas como a
segmentos, dependiendo de si se emplea paginacin o segmentacin.
Supngase que se trae un proceso a la memoria en un momento dado, el
S.O comienza trayendo slo unos pocos fragmentos, incluido el
fragmento que contiene el comienzo del programa.
Se llamar conjunto residente del proceso a la parte que est
realmente en la memoria principal.
Si el procesador encuentra una direccin lgica que no est en la
memoria principal, genera una interrupcin que indica un fallo de
acceso a la memoria. El S.O pone al proceso interrumpido en estado
Bloqueado y toma el control. Para que la ejecucin de este proceso
siga ms tarde, el S.O necesita traer a la memoria principal el
fragmento del proceso que contiene la direccin. Para ello se emite
una solicitud de Lectura de E/S al disco; luego se expide otro
proceso para que se ejecute mientras se realiza la operacin.
Una vez que el fragmento deseado se ha trado a la memoria
principal y se ha emitido la interrupcin de E/S, se devuelve el
control al S.O, que coloca el proceso afectado en el estado de
Listo.
MEMORIA VIRTUALLa memoria virtual es una tcnica para
proporcionar la simulacin de un espacio de memoria mucho mayor que
la memoria fsica de una mquina. Esta "ilusin" permite que los
programas se hagan sin tener en cuenta el tamao exacto de la
memoria fsica.
La ilusin de la memoria virtual est soportada por el mecanismo
de traduccin de memoria, junto con una gran cantidad de
almacenamiento rpido en disco duro. As en cualquier momento el
espacio de direcciones virtual hace un seguimiento de tal forma que
una pequea parte de l, est en memoria real y el resto almacenado en
el disco, y puede ser referenciado fcilmente.
Debido a que slo la parte de memoria virtual que est almacenada
en la memoria principal, es accesible a la CPU, segn un programa va
ejecutndose, la proximidad de referencias a memoria cambia,
necesitando que algunas partes de la memoria virtual se traigan a
la memoria principal desde el disco, mientras que otras ya
ejecutadas, se pueden volver a depositar en el disco (archivos de
paginacin).La memoria virtual ha llegado a ser un componente
esencial de la mayora de los S.O actuales. Y como en un instante
dado, en la memoria slo se tienen unos pocos fragmentos de un
proceso dado, se pueden mantener ms procesos en la memoria. Es ms,
se ahorra tiempo, porque los fragmentos que no se usan no se cargan
ni se descargan de la memoria. Sin embargo, el S.O debe saber cmo
gestionar este esquema.
La memoria virtual tambin simplifica la carga del programa para
su ejecucin llamado reubicacin, este procedimiento permite que el
mismo programa se ejecute en cualquier posicin de la memoria
fsica.
En un estado estable, prcticamente toda la memoria principal
estar ocupada con fragmentos de procesos, por lo que el procesador
y el S.O tendrn acceso directo a la mayor cantidad de procesos
posibles, y cuando el S.O traiga a la memoria un fragmento, deber
expulsar otro. Si expulsa un fragmento justo antes de ser usado,
tendr que traer de nuevo el fragmento de manera casi inmediata.
Demasiados intercambios de fragmentos conducen a lo que se conoce
como hiperpaginacin: donde el procesador consume ms tiempo
intercambiando fragmentos que ejecutando instrucciones de usuario.
Para evitarlo el S.O intenta adivinar, en funcin de la historia
reciente, qu fragmentos se usarn con menor probabilidad en un
futuro prximo.
Los argumentos anteriores se basan en el principio de cercana o
principio de localidad que afirma que las referencias a los datos y
el programa dentro de un proceso tienden a agruparse. Por lo tanto,
es vlida la suposicin de que, durante cortos perodos de tiempo, se
necesitarn slo unos pocos fragmentos de un proceso.
Una manera de confirmar el principio de cercana es considerar el
rendimiento de un proceso en un entorno de memoria virtual.
El principio de cercana sugiere que los esquemas de memoria
virtual pueden funcionar. Para que la memoria virtual sea prctica y
efectiva, se necesitan dos ingredientes. Primero, tiene que existir
un soporte de hardware y, en segundo lugar, el S.O debe incluir un
software para gestionar el movimiento de pginas o segmentos entre
memoria secundaria y memoria principal.
Justo despus de obtener la direccin fsica y antes de consultar
el dato en memoria principal se busca en memoria-cache, si esta
entre los datos recientemente usados la bsqueda tendr xito, pero si
falla, la memoria virtual consulta memoria principal , , en el peor
de los casos se consulta de disco (swapping).
Memoria Virtual = Memoria Fsica + Area de Swapping en Disco
PAGINACION
El trmino memoria virtual se asocia normalmente con sistemas que
emplean paginacin, aunque tambin se puede usar memoria virtual
basada en la segmentacin. El uso de la paginacin en la memoria
virtual fue presentado por primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de pginas y cuando carga
todas sus pginas en la memoria principal, se crea y carga en la
memoria principal una tabla de pginas. Cada entrada de la tabla de
pginas contiene el nmero de marco de la pgina correspondiente en la
memoria principal. Puesto que slo algunas de las pginas de un
proceso pueden estar en la memoria principal, se necesita un bit en
cada entrada de la tabla para indicar si la pgina correspondiente
est presente (P) en la memoria principal o no. Si el bit indica que
la pgina est en la memoria, la entrada incluye tambin el nmero de
marco para esa pgina.
Otro bit de control necesario en la entrada de la tabla de
pginas es el bit de modificacin (M), para indicar si el contenido
de la pgina correspondiente se ha alterado desde que la pgina se
carg en la memoria principal. Si no ha habido cambios, no es
necesario escribir la pgina cuando sea sustituida en el marco que
ocupa actualmente.
Estructura de la tabla de pginas
El mecanismo bsico de lectura de una palabra de la memoria
supone la traduccin por medio de la tabla de pginas de una direccin
virtual o lgica, formada por un nmero de pgina y un desplazamiento,
a una direccin fsica que est formada por un nmero de marco y un
desplazamiento.
Con la memoria virtual, la CPU produce direcciones virtuales que
son traducidas por una combinacin de hardware y software a
direcciones fsicas, pues pueden ser utilizadas para acceder a
memoria principal. Este proceso se denomina correspondencia de
memoria o traduccin de direcciones. Actualmente los dos niveles de
la jerarqua de memoria controlados por la memoria virtual son las
DRAM y los Discos magnticos.
Puesto que la tabla de pginas es de longitud variable, en funcin
del tamao del proceso, no es posible suponer que quepa en los
registros.
La figura anterior sugiere una implementacin en hardware de este
esquema. Cuando se est ejecutando un proceso en particular, la
direccin de comienzo de la tabla de pginas para este proceso se
mantiene en un registro. El nmero de pgina de la direccin virtual
se emplea como ndice en esta tabla para buscar el nmero de marco
correspondiente. Este se combina con la parte de desplazamiento de
la direccin virtual para generar la direccin real deseada.
La mayora de los esquemas de memoria virtual almacenan las
tablas de pginas en la memoria virtual en vez de en la memoria
real. Esto significa que estas tablas de pginas estn tambin sujetas
a paginacin, de la misma forma que las otras pginas.
Cuando un proceso se est ejecutando, al menos una parte de su
tabla de pginas debe estar en la memoria principal, incluyendo la
entrada de la tabla de pginas para la pgina actualmente en
ejecucin. Algunos procesadores usan un esquema de dos niveles para
organizar grandes tablas de pginas, donde hay un directorio de
pginas en el que cada entrada seala a una tabla de pginas. As pues,
si la longitud del directorio de pginas es X, y la longitud mxima
de una tabla de pginas es Y, un proceso puede estar formado por
hasta X x Y pginas. Normalmente, la longitud mxima de una tabla de
pginas est limitada a una pgina. Por ejemplo, el procesador Pentium
utiliza este mtodo.
Un enfoque alternativo al uso de tablas de pginas de uno o dos
niveles es el uso de una estructura de tabla de pginas invertida.
Con este mtodo, la parte del nmero de pgina de una direccin virtual
se traduce a una tabla de dispersin por medio de una funcin de
dispersin simple. La tabla de dispersin contiene un puntero a la
tabla de pginas invertida, que contiene a su vez las entradas de la
tabla de pginas.
Con esta estructura, hay una entrada en la tabla de dispersin y
en la tabla de pginas invertida por cada pgina de memoria real en
lugar de una por cada pgina virtual. As pues, se necesita una parte
fija de la memoria real para las tablas, sin reparar en el nmero de
procesos o de pginas virtuales soportados. La tcnica de dispersin
genera normalmente cadenas cortas, de dos a tres entradas cada
una.
Buffer de traduccin adelantada
Cada referencia a la memoria virtual puede generar dos accesos a
la memoria: uno para obtener la entrada de la tabla de pginas
correspondientes y otro para obtener el dato deseado.
Un esquema sencillo de memoria virtual podra tener el efecto de
doblar el tiempo de acceso a la memoria. Para solucionar este
problema, la mayora de los esquemas de memoria virtual hacen uso de
una cache especial para las entradas de la tabla de pginas, llamada
generalmente buffer de traduccin adelantada (TLB,Translation
Lookaside Buffer) que contiene aquellas entradas de la tabla de
pginas usadas hace menos tiempo.
La organizacin de hardware de paginacin resultante se muestra en
la figura siguiente.
Dada una direccin virtual, el procesador examinar primero la
TLB. Si la entrada de la tabla de pginas buscada est presente se
obtiene el nmero de marco y se forma la direccin real. Si no se
encuentra, el procesador emplea el nmero de pgina como ndice para
buscar en la tabla de pginas del proceso y examinar la entrada
correspondiente de la tabla de pginas. Si no se encuentra activo el
bit de presencia, es que la pgina est en la memoria principal y el
procesador puede obtener el nmero de marco de la entrada de la
tabla de pginas para formar la direccin real. El procesador, adems,
actualiza la TLB para incluir esta nueva entrada de la tabla de
pginas. Si el bit de presencia no est activo, es que la pgina
buscada no est en la memoria principal y se produce un fallo en el
acceso a la memoria, llamado fallo de pgina.
Existe una serie de detalles adicionales sobre la organizacin
real de la TLB. Puesto que la TLB contiene slo algunas de las
entradas de la tabla de pginas completa, no se puede indexar
simplemente la TLB por el nmero de pginas. Cada entrada debe
incluir el nmero de pgina, adems de la entrada completa a la tabla
de pginas. El procesador estar equipado con un hardware que permita
consultar simultneamente varias entradas de la TLB para determinar
si hay coincidencia en el nmero de pgina. Esta tcnica se denomina
correspondencia asociativa y contrasta con la correspondencia
directa, que se emplea para buscar en la tabla de pginas de la
figura de Bsqueda directa y asociativa. El diseador de la TLB
tambin debe considerar la forma en que se organiza las entradas en
la TLB y que entrada reemplazar cuando se introduce una nueva.
ESQUEMA DE CORRESPONDENCIA DIRECTA
Direccin virtual
n pg. Desplazam.
n marco Desplaza-
miento
Direccin real Tabla de pginas ESQUEMA DE CORRESPONDENCIA
ASOCIATIVA
Direccin virtual
n pg. Desplazam.
n pg. Entrada a PTE
.
.
.
.
.
n marco Desplaza-
miento
Direccin real Buffer de traduccin adelantada
Por ltimo, el mecanismo de la memoria virtual debe interactuar
con el sistema de cache de la memoria principal. La de traduccin
con buffer ilustra esta interaccin. Una direccin virtual estar
formada por el nmero de pgina ms el desplazamiento. Una vez que se
ha generado la direccin real, que est en forma de etiqueta(formada
por los bits ms significativos de la direccin real) y un resto, se
consulta la cache para ver si est presente el bloque que contiene
dicha palabra. Si lo est, es devuelto a la CPU. Si no, se toma la
palabra de la memoria principal.
Tamao de Pgina
Hay varios factores que considerar. Uno es la fragmentacin
interna. Sin duda, cuanto menor sea el tamao de pgina, menor ser la
cantidad de fragmentacin interna. Para optimizar el uso de la
memoria principal, es positivo reducir la fragmentacin interna. Por
otro lado, cuanto menor sea la pgina, mayor ser el nmero de pginas
que se necesitan por proceso. Un nmero mayor de pginas por proceso
significa que las tablas de pginas que se necesitan por proceso
sern mayores. As pues, pueden suceder dos fallos de pgina para una
nica referencia a la memoria: primero, para traer la parte
necesaria de la tabla de pginas y, segundo, para traer la pgina del
proceso.
Se puede considerar el efecto que tiene el tamao de pgina en el
porcentaje de fallos de pgina y se basa en el principio de cercana.
Si el tamao de pgina es muy pequeo, normalmente estarn disponibles
en la memoria principal un gran nmero de pginas para cada proceso.
Despus de un tiempo, todas las pginas de la memoria contendrn parte
de las referencias ms recientes del proceso y la tasa de fallos de
pgina ser menor. Cuando de incrementa el tamao de la pgina, cada
pgina individual contendr posiciones cada vez ms distantes de
cualquier referencia reciente; se atena el efecto de principio de
cercana y comienza a aumentar la tasa de fallos de pgina, que
comenzar a bajar cuando, finalmente, el tamao de pgina se aproxime
al tamao de todo el proceso. Cuando una sola pgina abarca todo el
proceso, no hay fallos de pgina.
Una dificultad ms es que la tasa de fallos de pgina viene
determinada tambin por el nmero de marcos asignados a un proceso.
Por ltimo el diseo del tamao de pgina est relacionado con el tamao
de la memoria fsica principal. Al mismo tiempo que la memoria
principal se hace mayor, el espacio de direcciones que emplean las
aplicaciones tambin crece. Esta tendencia es ms evidente en las
computadoras personales y estaciones de trabajo, donde las
aplicaciones se hacen cada vez ms complejas.
SEGMENTACION
Implicaciones de la memoria virtual
La segmentacin permite al programador contemplar la memoria como
si constara de varios espacios de direcciones o segmentos. Los
segmentos pueden ser de distintos tamaos, incluso de forma dinmica.
Las referencias a la memoria constan de una direccin de la forma
(nmero de segmento, desplazamiento).
Esta organizacin ofrece al programador varias ventajas sobre un
espacio de direcciones no segmentado:
1. 1. Simplifica la gestin de estructuras de datos crecientes.
Si el programador no conoce a priori cun larga puede llegar a ser
una estructura de datos determinada, es necesario suponerlo a menos
que se permitan tamaos de segmentos dinmicos. Con memoria virtual
segmentada, a la estructura de datos se le puede asignar a su
propio segmento y el S.O expandir o reducir el segmento cuando se
necesite.
2. 2. Permite modificar y recopilar los programas
independientemente, sin que sea necesario recopilar o volver a
montar el conjunto de programas por completo.
3. 3. Se presta a la comparticin entre procesos. Un programador
puede situar un programa de utilidades o una tabla de datos en un
segmento que puede ser referenciado por otros procesos.
4. 4. Se presta a la proteccin. Puesto que un segmento puede ser
construido para albergar un conjunto de procedimientos y datos bien
definido, el programador o el administrador del sistema podr
asignar los permisos de acceso de la forma adecuada.
Organizacin
En el estudio de la segmentacin simple, se lleg a la conclusin
de que cada proceso tiene su propia tabla de segmento y que, cuando
todos los segmentos se encuentran en la memoria principal, la tabla
de segmentos del proceso se crea y se carga en la memoria. Cada
entrada de la tabla contiene la direccin de comienzo del segmento
correspondiente de la memoria principal, as como su longitud. La
misma estructura se necesitar al hablar de un esquema de memoria
virtual basado en la segmentacin donde las entradas de la tabla de
segmentos pasan a ser ms complejas. Puesto que slo algunos de los
segmentos de un proceso estarn en la memoria principal, se necesita
un bit en cada entrada de la tabla de segmentos para indicar si el
segmento correspondiente est presente en la memoria principal. Si
el bit indica que el segmento est en la memoria, la entrada incluye
tambin la direccin de comienzo y la longitud del segmento.
Otro bit de control necesario en la entrada de la tabla de
segmentos es un bit de modificacin que indique si el contenido del
segmento correspondiente ha sido modificado desde que se carg por
ltima vez en la memoria principal. Si no ha habido cambios, no ser
necesario escribir en el disco el segmento cuando llegue el momento
de reemplazarlo en el espacio que ocupa actualmente.
Traduccin de direcciones en un sistema con segmentacin
PAGINACION Y SEGMENTACION COMBINADASTanto la paginacin como la
segmentacin tienen sus ventajas. La paginacin elimina la
fragmentacin externa y de este modo, aprovecha la memoria principal
de forma eficiente. Adems, puesto que los fragmentos que se cargan
y descargan de la memoria principal son de tamao fijo e iguales, es
posible construir algoritmos se gestin de memoria sofisticados que
aprovechen mejor el comportamiento de los programas. La segmentacin
tiene las ventajas antes citadas, incluida la capacitacin de
gestionar estructuras de datos que puedan crecer, la modularidad y
el soporte de la comparticin y la proteccin. Para combinar las
ventajas de ambas, algunos sistemas estn equipados con hardware del
procesador y software del S.O.
En un sistema con paginacin y segmentacin combinadas, el espacio
de direcciones de un usuario se divide en varios segmentos segn el
criterio del programador. Cada segmento se vuelve a dividir en
varias pginas de tamao fijo, que tienen la misma longitud que un
marco de memoria principal. Si el segmento tiene menor longitud que
la pgina, el segmento ocupar slo una pgina. Desde el punto de vista
del programador, una direccin lgica todava est formada por un nmero
de segmento y un desplazamiento en el segmento. Desde el punto de
vista de sistema, el desplazamiento del segmento se ve como un
nmero de pgina dentro del segmento y un desplazamiento dentro de la
pgina.
La entrada de la tabla de segmentos contiene la longitud del
segmento. Los bits de presencia y modificacin no son necesarios,
puesto que estos elementos se gestionan en la pgina. Pueden usarse
otros bits de control para comparicin y proteccin. La entrada de la
tabla de pginas es, la misma que se usa en un sistema de paginacin
pura. Cada nmero de pgina se convierte en el nmero de marco
correspondiente si la pgina est presente en la memoria. El bit de
modificacin indica si se necesita escribir la pgina en el disco
cuando se asigna el marco a otra pgina.
Direccin virtual
ProgramaMecanismo de Mecanismo de Memoria Principal
segmentacin paginacin
-Traduccin de direcciones en un sistema con segmentacin y
paginacin-
PROTECCION Y COMPARTIMIENTO
Un proceso de usuario slo puede acceder memoria localizada en su
espacio de direccionamiento virtual y un espacio de memoria
compartido para sus procesos-hijo.
Habilidad de separar completamente las tareas, al poder dar a
cada tarea un espacio de direcciones virtuales diferentes. Esto se
hace dando un mapa de traduccin de direcciones virtuales diferente
a cada tarea. Los otros mecanismos funcionan dentro de una tarea:
para proteger al propio sistema operativo de la intrusin por parte
de esa tarea, y al uso de registros especiales del procesador e
instrucciones reservadas nicamente al sistema operativo. Slo un
proceso kernel puede controlar y acceder cualquier espacio de
direccionamiento.
Adems la segmentacin se presta a la implementacin de polticas de
proteccin, puesto que cada entrada de la tabla de segmentos incluye
la longitud, adems de la direccin base, un programa no podr acceder
por descuido a una posicin de la memoria principal ms all de los
lmites de un segmento.
Para conseguir la comparticin, es posible que un segmento se
referencia desde las tablas de segmentos de ms de un proceso. Este
mismo mecanismo es vlido en un sistema de paginacin.
Se pueden ofrecer tambin mecanismos ms sofisticados. Un esquema
habitual consiste en usar una estructura de anillo de proteccin
donde los anillos interiores gozan de mayores privilegios que los
anillos externos. Normalmente, el anillo 0 est reservado para las
funciones del ncleo del S.O y las aplicaciones estn situadas a un
nivel ms alto. Algunos servicios del S.O pueden ocupar un anillo
intermedio. Los principios bsicos del sistema de anillos son los
siguientes:
1. 1. Un programa puede acceder slo a datos que estn en el mismo
anillo o en un anillo de menor privilegio.
2. 2. Un programa puede hacer llamadas a servicios que residan
en el mismo anillo o en anillos ms privilegiados.
SOFTWARE DEL SISTEMA OPERATIVOEl diseo del gestor de memoria en
un sistema operativo depende de tres reas fundamentales de decisin:
v Si se emplean o no tcnicas de memoria virtual. v El uso de
paginacin, segmentacin o ambas. v Los algoritmos empleados para los
problemas de la gestin de memoria.Las decisiones tomadas en las dos
primeras reas dependen de la plataforma de hardware disponible. Las
decisiones del tercer punto (los algoritmos) son del dominio del
software del S.O.. En las polticas, elementos claves de diseo, que
luego se desarrollarn, el punto clave es el rendimiento: se busca
minimizar el porcentaje de fallos de pgina. Los fallos de pgina
originan una considerable sobrecarga en el software. Como mnimo, la
sobrecarga incluye la decisin que el S.O. debe tomar sobre las
pginas residentes o pginas que se deben reemplazar y la E/S de
intercambiar pginas. Adems, el S.O. debe planificar la ejecucin de
otro proceso durante el intercambio de pgina, dando lugar a un
cambio de proceso.
Los elementos clave del diseo son los desarrollados a
continuacin:POLTICAS DE LECTURA (FETCH)Es la que est relacionada
con la decisin de cundo se debe cargar una pgina en la memoria
principal. Las dos alternativas ms comunes son: Paginacin por
demanda: Se trae una pgina a la memoria principal slo cuando se
hace referencia a una posicin en dicha pgina. Paginacin previa: Se
cargan otras pginas distintas a las demandadas debido a un fallo de
pgina.Esta poltica no es efectiva si la mayora de las pginas extra
que se traen no se referencian.
La utilidad no ha sido demostrada.POLTICAS DE UBICACINTiene que
ver con determinar dnde va ha residir una parte de un proceso en la
memoria principal. Es un aspecto importante del diseo en un sistema
puro de segmentacin.Como posibles alternativas se tiene:
Polticas del mejor ajuste. Polticas del primer ajuste Y
otras.Sin embargo, para un sistema que usa tanto paginacin pura
como paginacin combinada con segmentacin, la ubicacin carece de
importancia puesto que el hardware de traduccin de direcciones y el
hardware de acceso a la memoria principal pueden desarrollar sus
funciones en cualquier combinacin de marco de pgina con idntica
eficiencia.
POLTICAS DE REEMPLAZO Trata de la seleccin de la pgina a
reemplazar en la memoria principal cuando se debe cargar una nueva
pgina. Esto resulta difcil de explicar por lo que se debe tener en
cuenta algunos conceptos interrelacionados como ser:
El numero de marcos de pgina a asignar a cada proceso activo. Si
el conjunto de pginas a considerar para el reemplazo debe limitarse
a las del proceso que provoc el fallo de pgina o abarcar todos los
marcos de pgina situados en la memoria principal. De entre el
conjunto de pginas consideradas, cul es la pgina especfica que debe
elegirse para el reemplazo. MEMORIA PRINCIPAL
MEMORIA SECUNDARIA- X6 FUE EL MARCO ELEGIDO PARA REALIZAR EL
REEMPLAZO DE PGINAS. SE ELIMINA LA PGINA QUE NO SE ESTA USANDO Y SE
TRAE A MEMORIA PRINCIPAL LA PGINA QUE EL SISTEMA OPERATIVO
NECESITA.
La Poltica de Reemplazo se encarga de seleccionar la pgina a
reemplazar de entre las que estn actualmente en la memoria, cuando
todos los marcos de memoria principal estn ocupados y es necesario
traer una nueva pgina para atender a un fallo de pgina.
Todas las polticas tienen como objetivo que la pgina a
reemplazar sea la que tenga una menor posibilidad de ser
referenciada en un futuro cercano. Debido al principio de cercana,
hay una alta correlacin entre la historia de referencias recientes
y las pautas de futuras referencias.
Es necesario tener en cuenta una restriccin de la poltica de
reemplazo: algunos de los marcos de la memoria principal pueden
estar bloqueados; si es as, la pgina cargada actualmente en ese
marco no puede ser reemplazada. En los marcos bloqueados se
albergan: la mayora del ncleo del S.O. y las estructuras clave de
control. El bloqueo se consigue asignando un bit de bloqueo a cada
marco, este bit puede guardarse en una tabla de marcos o estar en
la tabla de pgina actual.
Algoritmos bsicosLos algoritmos que se emplean para seleccionar
una pgina a reemplazar son las siguientes: ptima: selecciona para
reemplazar la pgina que tiene que esperar ms tiempo hasta que se
produzca la referencia siguiente. Esta poltica genera el menor
nmero de fallos de pgina. Este algoritmo resulta imposible de
implementar ya que requiere que el S. O. Tenga un conocimiento
exacto de los sucesos futuros. Algoritmo de reemplazo de pginas
segn el uso no tan reciente:Este algoritmo hace uso de los dos bits
de estado que estn asociados a cada pgina. Estos bits son: R, el
cual se activa cuando se hace referencia (lectura / escritura) a la
pgina asociada; y M, que se activa cuando la pgina asociada es
modificada (escritura). Estos bits deben de ser actualizado cada
vez que se haga referencia a la memoria, por esto es de suma
importancia que sean activados por el hardware. Una vez activado el
bit, permanece en ese estado hasta que el sistema operativo,
mediante software, modifica su estado.Estos bits pueden ser
utilizados para desarrollar un algoritmo de reemplazo que cuando
inicie el proceso, el sistema operativo asigne un valor de 0 a
ambos bits en todas las pginas. En cada interrupcin de reloj,
limpie el bit R para distinguir cules pginas tuvieron referencia y
cules no.Cuando ocurre un fallo de pgina, el sistema operativo
revisa ambos bits en todas las pginas y las clasifica de la
siguiente manera: - Clase 0: La pgina no ha sido referenciada, ni
modificada. - Clase 1: La pgina no ha sido referenciada, pero ha
sido modificada. - Clase 2: La pgina ha sido referenciada, pero no
ha sido modificada. - Clase 3: La pgina ha sido referenciada y
tambin modificada.Estrategia: Sustituir primero celdas tipo 0
(mejor opcin), tipo 1 (lento) pero grabando celda de salida, tipo 2
(posible hiperpaginacin), tipo 3 (peor) pero grabando celda de
salida.Una vez obtenida la clasificacin, elimina una pgina de
manera aleatoria de la primera clase no vaca con el nmero ms
pequeo. Esto porque para el algoritmo es mejor eliminar una pgina
modificada sin referencias en al menos un intervalo de reloj, que
una pgina en blanco de uso frecuente.A pesar de que este algoritmo
no es el ptimo, es fcil de implementar y de comprender y con mucha
frecuencia es el ms adecuado. Usada menos recientemente (LRU, Last
Recently Used): reemplaza la pgina de memoria que no ha sido
referenciada desde hace ms tiempo. Debido al principio de cercana
esta debera ser la pgina con menor probabilidad de ser referenciada
en un futuro cercano. El problema de este mtodo es su dificultad de
implementacin. Una solucin sera etiquetar cada pgina con el momento
de su ltima referencia; tanto para instrucciones como datos. Este
esquema produce sobrecarga. Primera en entrar, primera en salir
(FIFO, First In First Out): trata los marcos asignados a un proceso
como un buffer circular y las pginas se suprimen de la memoria segn
la tcnica de Round-Robin. Lo que se necesita es un puntero que
circule a travs de los marcos del proceso. Esta es una de las
polticas de reemplazo ms sencillas de implementar. Se reemplaza la
pgina que a estado ms tiempo en la memoria, teniendo como
desventaja que habr regiones del programa o de datos que son muy
usadas a lo largo de la vida de un programa por lo cual estas
pginas se cargarn y expulsarn repetidas veces. Reloj (Clock):
requiere asociar un bit adicional a cada marco, denominado bit de
uso. Cuando se carga una pgina por primera vez el bit de uso se
pone a cero. Cuando se hace referencia a la pgina posteriormente,
el bit de uso se pone a uno. Para el algoritmo de reemplazo de
pginas, el conjunto de marcos candidatos a ser reemplazados se
considera como un buffer circular con un puntero asociado. Al
reemplazar una pgina, se hace que el puntero seale a la primer
puntero del buffer. Cuando llega el momento de reemplazar una
pgina, el S.O. recorre el buffer buscando un marco con el bit de
uso a cero. Cada vez que se encuentra un marco con el bit de uso a
uno, lo pone a cero. Si algn marco del buffer tiene el bit de uso a
cero, al comienzo de la bsqueda, se elige para reemplazar el
primero que se haya encontrado. Si todo los marcos tienen el bit de
uso a uno, el puntero dar una vuelta completa al buffer, poniendo
todos los bits a cero y se detendr en la posicin inicial,
reemplazando la pgina de dicho marco.
Almacenamiento intermedio de pginas
El coste de reemplazar una pgina que ha sido modificada es mayor
que el de una que no lo ha sido, porque las pginas modificadas
deben volver a escribirse en la memoria secundaria.
Una solucin representativa es la del VAX/VMS. El algoritmo de
reemplazo es simplemente un FIFO. Para mejorar el rendimiento, no
se pierde la pista de la pgina reemplazada, sino que se asigna a
una de las dos listas siguientes:
- la lista de pginas libres (si no ha sido modificada), o, - la
lista de pginas modificadas (si lo ha sido).Pero la pgina no se
mueve fsicamente de la memoria principal, sino que se suprime su
entrada en la tabla de pginas y se pone en la lista de pginas
libres o modificadas.
As, si la pgina que fue agregada a una de las listas (permanente
en la memoria) y si el proceso hace referencia a dicha pgina,
simplemente se devuelve al conjunto residente del proceso con un
coste pequeo.
Estas listas de pginas libres y modificadas actan como una cach
de pginas.La lista de pginas modificadas tiene otra funcin
provechosa: las pginas modificadas son reescritas por bloques, en
vez de una a una; esto reduce significativamente el nmero de
operaciones se E/S y por tanto, la cantidad de tiempo de acceso al
disco.
Polticas de reemplazo y tamao de cach
Por ser el tamao de la memoria cada vez ms grande, y la cercana
en las aplicaciones cada vez menor; se busca compensar haciendo ms
grande el tamao de las caches.Con una cach grande, el reemplazo de
pginas de memoria virtual puede tener un gran impacto en el
rendimiento. Si el marco seleccionado para reemplazar se encuentra
en la cach, entonces se pierde el bloque de cach, as como la pgina
que contiene.
Una estrategia cuidadosa de reemplazo de pginas puede dar como
resultado de un 10 a un 20% menos de fallos de cach que la ubicacin
arbitraria, utilizando una poltica de ubicacin de pginas en el
buffer de pginas.
GESTION DEL CONJUNTO RESIDENTETamao del conjunto residente
Con memoria virtual paginada no es necesario y, puede no ser
posible, traer todas las pginas de un proceso a la memoria
principal para preparar su ejecucin. El sistema operativo debe
decidir cuantas paginas traer, es decir, cuanta memoria principal
asignar a un proceso. Aqu entran en juego varios factores:
Cuanto menor es la cantidad de memoria asignada a un proceso,
mayor es el nmero de procesos que pueden estar en la memoria
principal. Esto aumenta la probabilidad de que el sistema operativo
encuentre al menos un proceso Listo y, por lo tanto, reduzca el
tiempo perdido en el intercambio. Si en la memoria principal hay un
nmero relativamente pequeo de paginas de un proceso entonces a
pesar del principio de cercana, el porcentaje de fallos de pagina
ser algo mayor. La asignacin de memoria adicional a un proceso en
particular no tendr efectos notables en el porcentaje de fallos de
pagina para ese proceso debido al principio de cercana.Con estos
factores en los sistemas operativos actuales se pueden encontrar
con dos tipos de polticas. La poltica de asignacin fija otorga a
cada proceso un nmero fijo de paginas en las que ejecutar. Con una
poltica de asignacin fija, cada vez que se produce un fallo de
pagina en la ejecucin de un proceso, se debe reemplazar una de las
paginas de dicho procesador la pagina que se necesite.La poltica de
asignacin variable permite que el ncleo de marcos asignados a un
proceso cambie a lo largo de su vida.
La poltica de asignacin variable parece ser la mas potente. La
dificultad de este mtodo esta en que requiere que el sistema
operativo evalu el compartimiento de los procesos activos.
Alcance del reemplazoEl alcance de una estrategia de reemplazo
puede clasificarse en global o local. Un fallo de pagina, producido
cundo no hay marcos libres, es le activador de ambos tipos de
polticas. Para seleccionar la pagina a reemplazar, una poltica de
reemplazo local escoge nicamente de entre las paginas residentes
del proceso que origin el fallo de pagina. Una poltica de reemplazo
global considera todas las pginas de la memoria como candidatas
para reemplazar, independientemente del proceso particular a que
pertenezcan.
Reemplazo localReemplazo global
Asignacin fija El nmero de marcos asignados a un proceso es
fijo.
La pagina a reemplazar se elige de entre los marcos asignados al
proceso. No es posible.
Asignacin variable El nmero de marcos asignados a un proceso
puede cambiar de un momento a otro para mantener su conjunto de
trabajo.
La pagina a reemplazar se elige de entre las paginas asignadas
al proceso. La pagina a reemplazar se elige de entre todos los
marcos disponible en la memoria principal; esto hace que cambie el
tamao del conjunto residente de los procesos.
Asignacin fija y alcance localEn este caso, se tiene un proceso
que se ejecuta en la memoria principal con un nmero fijo de
paginas. Cuando se produce un fallo de pagina, el sistema operativo
debe elegir la pagina a reemplazar entre las de dicho proceso que
estn actualmente en la memoria.Con una poltica de asignacin fija,
es necesario decidir por anticipado la cantidad de memoria asignada
a un proceso.
Asignacin variable y alcance global
Esta combinacin es sencilla de implementar y ha sido adoptada
por un buen nmero de sistemas operativos. En un instante en la
memoria principal habr varios procesos, cada uno de ellos con un
cierto nmero de marcos asignados. El sistema operativo tambin
mantiene una lista de marcos libres. Cuando se produce un fallo de
pgina, se aade un marco libre al conjunto residente del proceso y
se carga la pagina.
La dificultad de este mtodo es la eleccin del reemplaz. Cuando
no hay marcos libres, el sistema operativo debe elegir una pagina
que este en la memoria para reemplazar. La seleccin se realiza
entre todos los marcos de la memoria excepto los marcos
bloqueados.
Asignacin variable y alcance local
Es otro mtodo de agnacin variable, que intenta superar los
problemas de alcance global. La estrategia de asignacin variable y
alcance local puede resumirse como sigue:
1. 1. cuando se carga un nuevo proceso en la memoria, se le
asigna cierto nmero de marcos en funcin del tipo de aplicacin, las
necesidades del programa u otros criterios. La asignacin puede
cubrirse tanto con paginacin previa como con paginacin por
demanda.
2. 2. cuando se produce un fallo de pagina, se selecciona la
pagina a reemplazar de entre las del conjunto residente del proceso
que sufre el fallo.
3. 3. de vez en cuando, se vuelve a evaluar la asignacin
otorgada al proceso y se aumenta o disminuye para mejorar el
rendimiento global.
El conjunto de trabajo ha tenido un gran impacto en el diseo de
la gestin de la memoria virtual. El conjunto de trabajo de un
proceso en un instante virtual t y con parmetro *, denotado por
W(t,*), es el conjunto de paginas a las que el proceso ha hecho
referencia en las ultimas * unidades de tiempo virtual. Se usa el
termino tiempo virtual par indicar el tiempo que transcurre
mientras que el proceso est en ejecucin.
La variable * es una ventana de tiempo para la observacin del
proceso. El tamao del conjunto de trabajo ser una funcin no
decreciente del tamao de la ventana. Los puntos indican unidades de
tiempo en las que no cambia el conjunto de trabajo, cuando mayor es
el conjunto de trabajo, menos frecuentes son los fallos de
pgina.
Este concepto de conjunto de trabajo puede modificar la
siguiente estrategia para el tamao del conjunto residente:
1. 1. Supervisar el conjunto de trabajo de cada proceso.
2. 2. Eliminar peridicamente del conjunto residente de un
proceso aquellas paginas que no pertenezcan a su conjunto de
trabajo.
3. 3. Un proceso puede ejecutar si su conjunto de trabajo es en
la memoria principal (es decir, si su conjunto residente incluye a
su conjunto de trabajo).
Esta estrategia resulta atractiva porque toma un principio
reconocido, el principio de cercana y lo aprovecha para obtener la
estrategia de gestin de memoria que permita minimizar los fallos de
pgina. Por desgracia, la estrategia del conjunto de trabajo
presenta una serie de problemas.
1. 1. El pasado no siempre predice el futuro. Tanto el tamao
como el contenido del conjunto de trabajo cambiarn con el
tiempo.
2. 2. Es impracticable una medida real del conjunto de trabajo
para cada proceso. Sera necesario marcar cada referencia de pagina
de cada proceso con su tiempo virtual y mantener una cola ordenada
entorno de las pginas de cada proceso.
3. 3. El valor ptimo de ( es desconocido y, en cualquier caso,
puede variar.
El algoritmo de frecuencia de fallo de pgina (PFF. Page Fault
Frequency) sigue esta estrategia. El algoritmo exige que se asocie
un bit de uso a cada pagina de la memoria. El bit se pone cuando se
accede a la pgina. Cuando produce un fallo de pagina el sistema
operativo anota el tiempo virtual transcurrido desde el ultimo
fallo de pagina para ese proceso. Se define un umbral F. Si el
tiempo transcurrido desde el ultimo fallo de pgina es menor que F,
entonces una pgina se aade al conjunto residente del proceso. En
otro caso, descartan todas las pginas con bit de uso a 0 y, en
consecuencia, se reduce el conjunto residente. Al mismo tiempo, se
restauran a 0 el valor del bit de uso en las paginas restantes.
Un mtodo que intenta solucionar el fenmeno de las transiciones
entre ubicaciones con una pequea sobrecarga, es la poltica de
conjunto de trabajo con muestreos en intervalo variables (VSWS,
Variable Interval Sampled Working Set). La poltica VSWS evala el
conjunto de trabajo de un proceso tomando muestras en funcin del
tiempo virtual transcurrido. Al comienzo de un intervalo de
muestreo, se restauran los bit de uso de todas las pginas
residentes del proceso durante el intervalo siguiente, descartndose
el resto. As pues, el tamao del conjunto residente puede disminuir
slo al final de un intervalo.
La poltica del VSWS est gobernada por los siguientes
parmetros:
M: Duracin mnima del intervalo de muestreo.
L: Duracin mxima del intervalo de muestreo.
Q: Nmero de fallos de pgina permitidos entre cada par de
muestras.
La poltica VSWS es la siguiente:
1. 1. Si el tiempo virtual transcurrido desde la ltima muestra
alcanza L, suspende el proceso y explora los bits de uso.
2. 2. Si, antes de que transcurra un tiempo virtual L, se
producen Q fallos de pgina:
a) a) Si el tiempo virtual desde la ltima muestra es menor que
M, espera hasta que el tiempo virtual transcurrido alcance M para
suspender el proceso y explorar los bit de uso.
b) b) Si el tiempo virtual desde la ltima muestra es mayor o
igual que M, suspende el proceso y explora los bits de uso.
POLTICA DE VACIADO
Una poltica de vaciado es la contraria a una poltica de lectura:
se preocupa de determinar el momento en que hay que escribir en la
memoria secundaria una pgina modificada. Las dos alternativas son
el vaciado por demanda y el vaciado previo. Con vaciado por
demanda, una pagina se escribir en la memoria secundaria slo cuando
haya sido elegida para reemplazarse. Una poltica de vaciado previo
escribe las pginas modificadas antes de que se necesiten sus
marcos, de forma que las pginas pueden escribirse por lotes.
Existe un peligro si se sigue estrictamente cualquiera de las
dos polticas. Con el vaciado previo, una pagina se escribe pero
permanece en la memoria principal hasta que el algoritmo de
reemplazo de pagina diga que se suprime. El vaciado previo permite
escribir las paginas por lotes, pero tiene poco sentido escribir
miles de pginas para encontrarse que la mayora de ellas han sido
modificadas antes de ser reemplazadas. La capacidad de
transferencia de la memoria secundaria es limitada y no debe
malgastarse con operaciones de vaciado innecesarias.
Por otro lado, en el vaciado por demanda, la escritura de una
pgina modificada es anterior a la lectura de una nueva pgina. Esta
tcnica puede minimizar las escrituras de paginas, pero hace que un
proceso que sufra un fallo de pagina pueda tener que esperar dos
transferencias de pagina antes de desbloquearse.
Una solucin es incorporar almacenamiento intermedio de paginas,
que permite la adopcin de la siguiente poltica: vaciar solo las
paginas que es posible reemplazar, pero desconectar las operaciones
de vaciado y reemplazo. Con almacenamiento intermedio de pginas
reemplazadas pueden situarse en dos listas: modificadas y no
modificadas
GESTION DE MEMORIA EN WINDOWS 2000
El gestor de memoria virtual de Windows 2000 (W2K) controla como
se asigna la memoria y como se realiza la paginacin.
Mapa de Direcciones Virtuales de W2K
Cada proceso de usuario de W2K dispone de un espacio de
direcciones separado de 32 bits, lo que permite 4 Gbytes de memoria
por proceso. Por lo que, una parte de esta memoria esta reservada
para el sistema operativo y cada usuario tiene 2 Gbytes de espacio
de direcciones virtual disponible.
Paginacin en W2K
Cuando se crea un proceso en principio puede hacer uso de todo
el espacio de usuario de 2 Gbytes. Este espacio se divide en
paginas de tamao fijo, y cualquiera puede cargarse en la memoria
principal. En la prctica una pgina puede estar en uno de estos tres
estados:
v Disponible: las pginas no usadas actualmente por este
proceso.
v Reservada: un conjunto de paginas contiguas que el gestor de
la memoria virtual separa para un proceso pero no cuentan para la
cuota de memoria del proceso hasta que se usan.
v Confirmada: paginas para las cuales el gestor de memoria
virtual mantiene un conjunto de espacio separado en su archivo de
paginacin.
La distincin entre memoria confirmada y reservada es que la
primera permite a procesos o hilos declarar una cantidad de memoria
que puede asignarse rpidamente cuando sea necesaria; y la otra,
minimiza la cantidad de espacio en el disco separada para un
proceso particular dejando ese espacio en disco para otros
procesos.
CONCLUSIN La memoria virtual ha llegado a ser un componente
esencial de los S.O, convirtindose en una herramienta til de gestin
de memoria. Desde su aparicin se ha comprobado que se agiliz la
labor del programador, ya que desarrollando un programa no debe
restringir su tamao, no teniendo necesidad de conocer la capacidad
de memoria principal disponible.
Oculta tambin la complejidad de los algoritmos utilizados para
el intercambio de los trozos de los procesos.
Por dichas razones, se busca implementarla en la mayora de los
S.O. actuales, dejado como optativa, la no utilizacin de la
misma.
ADMINISTRACION DE LA MEMORIA
En esta seccin se describirn las tcnicas ms usuales en el manejo
de memoria, revisando los conceptos relevantes. Se abarcarn los
esquemas de manejo simple de memoria real, la multiprogramacin en
memoria real con sus variantes, el concepto de `overlays', la
multiprogramacin con intercambio y los esquemas de manejo de
memoria virtual.
4.1. Panorama general
Un vistazo al material que se va a cubrir en esta seccin se
muestra en la figura 4.1. Es una grfica en donde se especifican, en
trminos generales, los conceptos ms importantes en cuanto a las
tcnicas empleadas en el manejo de memoria.
4.2. Manejo de memoria en sistemas monousuario sin
intercambio
Este esquema es an muy frecuente en Mxico y se usa
principalmente en sistemas monousuario y monotarea, como son las
computadoras personales con DOS. Bajo este esquema, la memoria real
es tomada para almacenar el programa que se est ejecutando en un
momento dado, con la visible desventaja de que si se est limitado a
la cantidad de RAM disponible nicamente. La organizacin fsica bajo
este esquema es muy simple: El sistema operativo se ubica en las
localidades superiores o inferiores de la memoria, seguido por
algunos manejadores de dispositivos ( `drivers' ). Esto deja un
espacio contiguo de memoria disponible que es tomado por los
programas del usuario, dejando generalmente la ubicacin de la pila
(` stack' ) al ltimo, con el objetivo de que sta pueda crecer hasta
el mximo posible. Estas diferentes opciones se pueden ver en la
figura 4.2. Como es obvio, bajo estos esquemas no se requieren
algoritmos sofisticados para asignar la memoria a los diferentes
procesos, ya que stos son ejecutados secuencialmente conforme van
terminando.
4.3. Multiprogramacin en memoria real
En los 60's, las empresas e instituciones que haban invertido
grandes sumas en la compra de equipo de cmputo se dieron cuenta
rpidamente que los sistemas en lote invertan una gran cantidad de
tiempo en operaciones de entrada y salida, donde la intervencin de
la unidad central de procesamiento era prcticamente nula, y se
comenzaron a preguntar cmo hacer que se mantuviera ms tiempo
ocupada. Fue as como naci el concepto de multiprogramacin, el cual
consiste en la idea de poner en la memoria fsica ms de un proceso
al mismo tiempo, de manera que si el que se est ejecutando en este
momento entraba en un periodo de entrada/salida, se podia tomar
otro proceso para que usara la unidad central de procesamiento. De
esta forma, la memoria fisica se divida en secciones de tamao
suficiente para contener a varios programas.
De esta manera, si un sistema gastaba en promedio 60% de su
tiempo en entrada/salida por proceso, se poda aprovechar ms el CPU.
Anterior a esto, el CPU se mantena ese mismo porcentaje ocioso; con
la nueva tcnica, el tiempo promedio ocioso disminuye de la
siguiente forma. Llmese al tiempo promedio que el CPU est ocupado
`grado de multiprogramacin'. Si el sistema tuviese un solo proceso
siempre, y ste gastara 60% en entrada/salida, el grado de
multiprogramacin sera 1 - 60% = 40% = 0.4. Con dos procesos, para
que el CPU est ocioso se necesita que ambos procesos necesiten
estar haciendo entrada/salida, es decir, suponiendo que son
independientes, la probabilidad de que ambos estn en entrada/salida
es el producto de sus probabilidades, es decir, 0.6x0.6 = 0.36.
Ahora, el grado de multiprogramacin es 1 - (probabilidad de que
ambos procesos estn haciendo entrada/salida) = 1 - 0.36 = 0.64.
Como se ve, el sistema mejora su uso de CPU en un 24% al
aumentar de uno a dos procesos. Para tres procesos el grado de
multiprogramacin es 1 - (0.6) 3 = 0.784, es decir, el sistema est
ocupado el 78.4% del tiempo. La frmula del grado de
multiprogramacin, aunque es muy idealista, pudo servir de gua para
planear un posible crecimiento con la compra de memoria real, es
decir, para obtener el punto en que la adicin de procesos a RAM ya
no incrementa el uso de CPU.
Dentro del esquema de multiprogramacin en memoria real surgieron
dos problemas interesantes: la proteccin y la relocalizacin.
4.3.1. El problema de la relocalizacin
Este problema no es exclusivo de la multiprogramacin en memoria
real, sino que se present aqu pero se sigue presentando en los
esquemas de memoria virtual tambin. Este problema consiste en que
los programas que necesitan cargarse a memoria real ya estn
compilados y ligados, de manera que internamente contienen una
serie de referencias a direcciones de instrucciones, rutinas y
procedimientos que ya no son vlidas en el espacio de direcciones de
memoria real de la seccin en la que se carga el programa. Esto es,
cuando se compil el programa se definieron o resolvieron las
direcciones de memoria de acuerdo a la seccin de ese momento, pero
si el programa se carga en otro dia en una seccin diferente, las
direcciones reales ya no coinciden. En este caso, el manejador de
memoria puede solucionar el problema de dos maneras: de manera
`esttica' o de manera `dinmica'. La solucin `esttica' consiste en
que todas las direcciones del programa se vuelvan a recalcular al
momento en que el programa se carga a memoria, esto es,
prcticamente se vuelve a recompilar el programa. La solucin
`dinmica' consiste en tener un registro que guarde la direccin base
de la seccin que va a contener al programa. Cada vez que el
programa haga una referencia a una direccin de memoria, se le suma
el registro base para encontrar la direccin real. Por ejemplo,
suponga que el programa es cargado en una seccin que comienza en la
direccin 100. El programa har referencias a las direcciones
50,52,54. Pero el contenido de esas direcciones no es el deseado,
sino las direcciones 150, 152 y 154, ya que ah comienza el
programa. La suma de 100 + 50, ...,etctera se hacen al tiempo de
ejecucin. La primera solucin vale ms la pena que la segunda si el
programa contiene ciclos y es largo, ya que consumir menos tiempo
en la resolucin inicial que la segunda solucin en las resoluciones
en lnea.
4.3.2. El problema de la proteccin
Este problema se refiere a que, una vez que un programa ha sido
caragado a memoria en algn segmento en particular, nada le impide
al programador que intente direccionar ( por error o
deliberadamente ) localidades de memoria menores que el lmite
inferior de su programa o superiores a la direccin mayor; es decir,
quiere referenciar localidades fuera de su espacio de direcciones.
Obviamente, este es un problema de proteccin, ya que no es legal
leer o escribir en reas de otros programas.
La solucin a este problema tambin puede ser el uso de un
registro base y un registro lmite. El registro base contiene la
direccin del comienzo de la seccin que contiene al programa,
mientras que el lmite contiene la direccin donde termina. Cada vez
que el programa hace una referencia a memoria se checa si cae en el
rango de los registros y si no es as se enva un mensaje de error y
se aborta el programa.
4.3.3. Particiones fijas o particiones variables
En el esquema de la multiprogramacin en memroia real se manejan
dos alternativas para asignarle a cada programa su particin
correspondiente: particiones de tamao fijo o particiones de tamao
variable. La alternativa ms simple son las particiones fijas.
Dichas particiones se crean cuando se enciende el equipo y
permanecern con los tamaos iniciales hasta que el equipo se apague.
Es una alternativa muy vieja, quien haca la divisin de particiones
era el operador analizando los tamaos estimados de los trabajos de
todo el da. Por ejemplo, si el sistema tena 512 kilobytes de RAM,
podia asignar 64 k para el sistema operativo, una particin ms de 64
k, otra de 128k y una mayor de 256 k. Esto era muy simple, pero
inflexible, ya que si surgan trabajos urgentes, por ejemplo, de
400k, tenan que esperar a otro da o reparticionar, inicializando el
equipo desde cero. La otra alternativa, que surgi despus y como
necesidad de mejorar la alternativa anterior, era crear particiones
contiguas de tamao variable. Para esto, el sistema tena que
mantener ya una estructura de datos suficiente para saber en dnde
haban huecos disponibles de RAM y de dnde a dnde haban particiones
ocupadas por programas en ejecucin. As, cuando un programa requera
ser cargado a RAM, el sistema analizaba los huecos para saber si
haba alguno de tamao suficiente para el programa que queria entrar,
si era as, le asignaba el espacio. Si no, intentaba relocalizar los
programas existentes con el propsito de hacer contiguo todo el
espacio ocupado, as como todo el espacio libre y as obtener un
hueco de tamao suficiente. Si an as el programa no caba, entonces
lo bloqueaba y tomaba otro. El proceso con el cual se juntan los
huecos o los espacios ocupados se le llama `compactacin'. El lector
se habr dado cuenta ya de que surgen varios problemas con los
esquemas de particiones fijas y particiones variables: En base a qu
criterio se elige el mejor tamao de particin para un programa ? Por
ejemplo, si el sistema tiene dos huecos, uno de 18k y otro de 24 k
para un proceso que desea 20 k, Cual se le asigna ? Existen varios
algoritmos para darle respuesta a la pregunta anterior, los cuales
se ennumeran y describen enseguida.
Primer Ajuste: Se asigna el primer hueco que sea mayor al tamao
deseado.
Mejor Ajuste: Se asigna el hueco cuyo tamao exceda en la menor
cantidad al tamao deseado. Requiere de una bsqueda exhaustiva.
Peor Ajuste: Se asigna el hueco cuyo tamao exceda en la mayor
cantidad al tamao deseado. Requiere tambin de una bsqueda
exhaustiva.
El Siguiente Ajuste: Es igual que el `primer ajuste' con la
diferencia que se deja un apuntador al lugar en donde se asign el
ltimo hueco para realizar la siguiente bsqueda a partir de l.
Ajuste Rpido: Se mantienen listas ligadas separadas de acuerdo a
los tamaos de los huecos, para as buscarle a los procesos un hueco
ms rpido en la cola correspondiente.
Otro problema que se vislumbra desde aqu es que, una vez
asignado un hueco, por ejemplo, con "el peor ajuste", puede ser que
el proceso requiriera 12 kilobytes y que el hueco asignado fuera de
64 kilobytes, por lo cual el proceso va a desperdiciar una gran
cantidad de memoria dentro de su particin, lo cual se le llama
`fragmentacin interna'.
Por otro lado, conforme el sistema va avanzando en el da,
finalizando procesos y comenzando otros, la memoria se va
configurando como una secuencia contigua de huecos y de lugares
asignados, provocando que existan huecos, por ejemplo, de 12 k, 28k
y 30 k, que sumados dan 70k, pero que si en ese momento llega un
proceso pidindolos, no se le pueden asignar ya que no son
localidades contiguas de memoria ( a menos que se realice la
compactacin ). Al hecho de que aparezcan huecos no contiguos de
memoria se le llama `fragmentacin externa'.
De cualquier manera, la multiprogramacin fue un avance
significativo para el mejor aprovechamiento de la unidad central de
procesamiento y de la memoria misma, as como dio pie para que
surgieran los problemas de asignacin de memoria, proteccin y
relocalizacin, entre otros.
4.3.4. Los overlays
Una vez que surgi la multiprogramacin, los usuarios comenzaron a
explorar la forma de ejecutar grandes cantidades de cdigo en reas
de memoria muy pequeas, auxiliados por algunas llamadas al sistema
operativo. Es as como nacen los `overlays'.
Esta tcnica consiste en que el programador divide lgicamente un
programa muy grande en secciones que puedan almacenarse el las
particiones de RAM. Al final de cada seccin del programa ( o en
otros lugares necesarios ) el programador insertaba una o varias
llamadas al sistema con el fin de descargar la seccin presente de
RAM y cargar otra, que en ese momento resida en disco duro u otro
medio de almacenamiento secundario. Aunque esta tcnica era eficaz (
porque resolva el problema ) no era eficiente ( ya que no lo
resolva de la mejor manera ). Esta solucin requera que el
programador tuviera un conocimiento muy profundo del equipo de
cmputo y de las llamadas al sistema operativo. Otra desventaja era
la portabilidad de un sistema a otro: las llamadas cambiaban, los
tamaos de particiones tambin. Resumiendo, con esta tcnica se podan
ejecutar programas ms grandes que las particiones de RAM, donde la
divisin del cdigo corra a cuenta del programador y el control a
cuenta del sistema operativo.
4.4. Multiprogramacin en memoria virtual
La necesidad cada vez ms imperiosa de ejecutar programas grandes
y el crecimiento en poder de las unidades centrales de
procesamiento empujaron a los diseadores de los sistemas operativos
a implantar un mecanismo para ejecutar automticamente programas ms
grandes que la memoria real disponible, esto es, de ofrecer
`memoria virtual'.
La memoria virtual se llama as porque el programador ve una
cantidad de memoria mucho mayor que la real, y en realidad se trata
de la suma de la memoria de almacenamiento primario y una cantidad
determinada de almacenamiento secundario. El sistema operativo, en
su mdulo de manejo de memoria, se encarga de intercambiar programas
enteros, segmentos o pginas entre la memoria real y el medio de
almacenamiento secundario. Si lo que se intercambia son procesos
enteros, se habla entonces de multiprogramacin en memoria real,
pero si lo que se intercambian son segmentos o pginas, se puede
hablar de multiprogramacin con memoria virtual.
La memoria virtual se apoya en varias tcnicas interesantes para
lograr su objetivo. Una de las teorias ms fuertes es la del
`conjunto de trabajo', la cual se refiere a que un programa o
proceso no est usando todo su espacio de direcciones en todo
momento, sino que existen un conjunto de localidades activas que
conforman el `conjunto de trabajo'. Si se logra que las pginas o
segmentos que contienen al conjunto de trabajo estn siempre en RAM,
entonces el programa se desempear muy bien.
Otro factor importante es si los programas exhiben un fenmeno
llamado `localidad', lo cual quiere decir que algunos programas
tienden a usar mucho las instrucciones que estn cercanas a la
localidad de la instruccin que se est ejecutando actualmente.
4.4.1 Paginacin pura
La paginacin pura en el majejo de memoria consiste en que el
sistema operativo divide dinmicamente los programas en unidades de
tamao fijo ( generalmente mltiplos de 1 kilobyte ) los cuales va a
manipular de RAM a disco y viceversa. Al proceso de intercambiar
pginas, segmentos o programas completos entre RAM y disco se le
conoce como `intercambio' o `swapping'. En la paginacin, se debe
cuidar el tamo de las pginas, ya que si stas son muy pequeas el
control por parte del sistema operativo para saber cules estn en
RAM y cuales en disco, sus direcciones reales, etc; crece y provoca
mucha `sobrecarga' (overhead). Por otro lado, si las pginas son muy
grandes, el overhead disminuye pero entonces puede ocurrir que se
desperdicie memoria en procesos pequeos. Debe haber un
equilibrio.
Uno de los aspectos ms importantes de la paginacin, asi como de
cualquier esquema de memoria virtual, es la forma de traducir una
direccin virtual a direccin real. Para explicarlo, obsrvese la
figura 4.3.
Como se observa, una direccin virtual `v' = ( b,d) est formada
por un nmero de pgina virtual `b' y un desplazamiento `d'. Por
ejemplo, si el sistema ofrece un espacio de direcciones virtuales
de 64 kilobytes, con pginas de 4 kilobytes y la RAM slo es de 32
kilobytes, entonces tenemos 16 pginas virtuales y 8 reales. La
tabla de direcciones virtuales contiene 16 entradas, una por cada
pgina virtual. En cada entrada, o registro de la tabla de
direcciones virtuales se almacenan varios datos: si la pgina est en
disco o en memoria, quin es el dueo de la pgina, si la pgina ha
sido modificada o es de lectura nada mas, etc. Pero el dato que nos
interesa ahora es el nmero de pgina real que le corresponde a la
pgina virtual. Obviamente, de las 16 virtuales, slo ocho tendrn un
valor de control que dice que la pgina est cargada en RAM, as como
la direccin real de la pgina, denotada en la figura 4.3 como b' .
Por ejemplo, supngase que para la pgina virtual nmero 14 la tabla
dice que, efectivamente est cargada y es la pgina real 2 ( direccin
de memoria 8192 ). Una vez encontrada la pgina real, se le suma el
desplazamiento, que es la direccin que deseamos dentro de la pgina
buscada ( b' + d ).
La tabla de direcciones virtuales a veces est ubicada en la
misma meoria RAM, por lo cual se necesita saber en qu direccin
comienza, en este caso, existe un registro con la direccin base
denotada por la letra `a' en la figura 4.3.
Cuando se est buscando una pgina cualquiera y sta no est
cargada, surge lo que se llama un `fallo de pgina' (page fault ).
Esto es caro para el manejador de memoria, ya que tiene que
realizar una serie de pasos extra para poder resolver la direccin
deseada y darle su contenido a quien lo pide. Primero, se detecta
que la pgina no est presente y entonces se busca en la tabla la
direccin de esta pgina en disco. Una vez localizada en disco se
intenta cargar en alguna pgina libre de RAM. Si no hay pginas
libres se tiene que escoger alguna para enviarla hacia el disco.
Una vez escogida y enviada a disco, se marca su valor de control en
la tabla de direcciones virtuales para indicar que ya no est en
RAM, mientras que la pgina deseada se carga en RAM y se marca su
valor para indicar que ahora ya est en RAM. Todo este procedimiento
es caro, ya que se sabe que los accesos a disco duro son del orden
de decenas de veces ms lentos que en RAM. En el ejemplo anterior se
mencion que cuando se necesita descargar una pgina de RAM hacia
disco se debe de hacer una eleccin. Para realizar esta eleccin
existen varios algoritmos, los cuales se describen enseguida. _ La
primera en entrar, primera en salir: Se escoge la pgina que haya
entrado primero y est cargada en RAM. Se necesita que en los
valores de control se guarde un dato de tiempo. No es eficiente
porque no aprovecha ninguna caracterstica de ningn sistema. Es
justa e imparcial. _ La no usada recientemente: Se escoge la pgina
que no haya sido usada (referenciada) en el ciclo anterior.
Pretende aprovechar el hecho de la localidad en el conjunto de
trabajo.
La usada menos recientemente: Es parecida a la anterior, pero
escoge la pgina que se us hace ms tiempo, pretendiendo que como ya
tiene mucho sin usarse es muy probable que siga sin usarse en los
prximos ciclos. Necesita de una bsqueda exhaustiva.
La no usada frecuentemente: Este algoritmo toma en cuenta no
tanto el tiempo, sino el nmero de referencias. En este caso
cualquier pgina que se use muy poco, menos veces que alguna
otra.
La menos frecuentemente usada: Es parecida a la anterior, pero
aqu se busca en forma exhaustiva aquella pgina que se ha usado
menos que todas las dems.
En forma aleatoria: Elige cualquier pgina sin aprovechar nada.
Es justa e imparcial, pero ineficiente.
Otro dato interesante de la paginacin es que ya no se requiere
que los programas estn ubicados en zonas de memoria adyacente, ya
que las pginas pueden estar ubicadas en cualquier lugar de la
memoria RAM.
4.4.2 Segmentacin pura
La segmentacin se aprovecha del hecho de que los programas se
dividen en partes lgicas, como son las partes de datos, de cdigo y
de pila (stack). La segmentacin asigna particiones de memoria a
cada segmento de un programa y busca como objetivos el hacer fcil
el compartir segmentos ( por ejemplo libreras compartidas ) y el
intercambio entre memoria y los medios de almacenamiento
secundario.
Por ejemplo, en la versin de UNIX SunOS 3.5, no existan libreras
compartidas para algunas herramientas, por ejemplo, para los
editores de texto orientados al ratn y mens. Cada vez que un
usuario invocaba a un editor, se tena que reservar 1 megabyte de
memoria. Como los editores son una herramienta muy solicitada y
frecuentemente usada, se dividi en segmentos para le versin 4.x (
que a su vez se dividen en pginas ), pero lo importante es que la
mayor parte del editor es comn para todos los usuarios, de manera
que la primera vez que cualquier usuario lo invocaba, se reservaba
un megabyte de memoria como antes, pero para el segundo, tercero y
resto de usuarios, cada editor extra slo consuma 20 kilobytes de
memoria. El ahorro es impresionante. Obsrvese que en la segmentacin
pura las particiones de memoria son de tamao variable, en contraste
con pginas de tamao fijo en la paginacin pura. Tambin se puede
decir que la segmentacin pura tiene una granularidad menor que la
paginacin por el taman de segmentos versus tamao de pginas.
Nuevamente, para comprender mejor la segmentacin, se debe dar un
repaso a la forma en que las direcciones virtuales son traducidas a
direcciones reales, y para ellos se usa la figura 4.4. Prcticamente
la traduccin es igual que la llevada a cabo en la paginacin pura,
tomando en consideraci que el tamao de los bloques a controlar por
la tabla de traduccin son variables, por lo cual, cada entrada en
dicha tabla debe contener la longitud de cada segmento a controlar.
Otra vez se cuenta con un registro base que contiene la direccin
del comienzo de la tabla de segmentos. La direccin virtual se
compone de un nmero de segmento (s) y un desplazamiento ( d ) para
ubicar un byte (o palabra ) dentro de dicho segmento. Es importante
que el desplazamiento no sea mayor que el tamao del segmento, lo
cual se controla simplemente checando que ese valor sea mayor que
la direccin del inicio del segmento y menor que el inicio sumado al
tamao.
Una ves dada una direccin virtual v=( s,d ), se realiza la
operacin b + s para hallar el registro (o entrada de la tabla de
segmentos ) que contiene la direccin de inicio del segmento en la
memoria real, denotado por s'. Ya conociendo la direccin de inicio
en memoria real s' slo resta encontrar el byte o palabra deseada,
lo cual se hace sumndole a s' el valor del desplazamiento, de modo
que la direccin real r = s' + d.
Cada entrada en la tabla de segmentos tiene un formato similar
al mostrado en la figura 4.5. Se tienen campos que indican la
longitud, los permisos, la presencia o ausencia y direccin de
inicio en memoria real del segmento.
Segn amplios experimentos [Deitel93] sugieren que un tamao de
pginas de 1024 bytes generalmente ofrece un desempeo muy aceptable.
Intuitivamente parecera que el tener pginas del mayor tamao posible
hara que el desempeo fuera ptimo pero no es as, a menos que la
pgina fuera del tamao del proceso total. No es as con tamaos
grandes de pgina menores que el proceso, ya que cuando se trae a
memoria principal una pgina por motivo de un solo byte o palabra,
se estn trayendo muchsimos ms bytes de los deseados. La dependencia
entre el nmero de fallas respecto al tamao de las pginas se muestra
en la figura 4.6.
Un hecho notable en los sistemas que manejan paginacin es que
cuando el proceso comienza a ejecutarse ocurren un gran nmero de
fallos de pgina, porque es cuando est referenciando muchas
direcciones nuevas por vez primera, despus el sistema se
estabiliza, conforme el nmero de marcos asignados se acerca al
tamao del conjunto de trabajo.
El la figura 4.7 se muestra la relacin entre el tiempo promedio
entre fallas de pgina y el nmero de marcos de pgina asignados a un
proceso. All se ve que el tiempo entre fallas decrece conforme se
le asignan ms pginas al proceso. La grfica se curva en un punto, el
cual corresponde a que el proceso tiene un nmero de pginas asignado
igual al que necesita para almacenar su conjunto de trabajo. Despus
de eso, el asignarle a un proceso ms pginas que las de su conjunto
de trabajo ya no conviene, ya que el tiempo promedio entre fallas
permanece sin mucha mejora. Un aspecto curioso de aumentar el nmero
de pginas a un proceso cuando el algoritmo de seleccin de pginas
candidatas a irse a disco es la primera en entrar primera en salir
es la llamada `anomala FIFO' a `anomala de Belady'. Belady encontr
ejemplos en los que un sistema con un nmero de pginas igual a tres
tena menos fallas de pginas que un sistema con cuatro pginas. El
ejemplo descrito en [Tanxx] es injusto. Si se mira con cuidado,
obviamente si se compara un sistema con 10 pginas contra otro de 5,
ya de inicio el primer sistema tendr 5 fallos de pgina ms que el de
5, porque se necesitan diez fallos para cargarlo. A esto debera
llamrsele `anomala de Belady con correccin.
4.4.3 Sistemas combinados
La paginacin y la segmentacin puras son mtodos de manejo de
memoria bastante efectivos, aunque la mayora de los sistemas
operativos modernos implantan esquemas combinados, es decir,
combinan la paginacin y la segmentacin. La idea de combinar estos
esquemas se debe a que de esta forma se aprovechan los conceptos de
la divisin lgica de los programas (segmentos) con la granularidad
de las pginas. De esta forma, un proceso estar repartido en la
memoria real en pequeas unidades (pginas) cuya liga son los
segmentos. Tambin es factible as el compartir segmentos a medida
que las partes necesitadas de los mismos se van referenciando
(pginas). Para comprender este esquema, nuevamente se ver cmo se
traduce una direccin virtual en una localidad de memoria real. Para
la paginacin y segmentacon puras se puede decir que el
direccionamiento es `bidimensional' porque se necesitan dos valores
para hallar la direccin real. Para el caso combinado, se puede
decir que se tiene un direccionamiento `tridimensional'. En la
figura 4.8 [ Deitel93] se muestran las partes relevantes para
lograr la traduccin de direcciones. El sistema debe contar con una
tabla de procesos (TP). Por cada rengln de esa tabla se tiene un
nmero de proceso y una direccin a una tabla de segmentos. Es decir,
cada proceso tiene una tabla de segmentos. Cuando un proceso hace
alguna referencia a memoria, se consulta TP para encontrar la tabla
de segmentos de ese proceso. En cada tabla de segmentos de proceso
(TSP) se tienen los nmeros de los segmentos que componen a ese
proceso. Por cada segmento se tiene una direccin a una tabla de
pginas. Cada tabla de pginas tiene las direcciones de las pginas
que componen a un solo segmento. Por ejemplo, el segmento `A' puede
estar formado por las pginas reales `a','b','c','p' y `x'. El
segmento `B' puede estar compuesto de las pginas `f','g','j','w' y
`z'.
Para traducir una direccin virtual v=(s,p,d) donde `s' es el
segmento, `p' es la pgina y `d' el desplazamiento en la pgina se
hace lo siguiente. Primero se ubica de qu proceso es el segmento y
se localiza la tabla de segmentos de ese proceso en la TP. Con `s'
como ndice se encuentra un rengln ( registro) en la tabla de
segmentos de ese proceso y en ese rengln est la direccin de la
tabla de pginas que componen al segmento. Una vez en la tabla de
pginas se usa el valor `p' como ndice para encontrar la direccin de
la pgina en memoria real. Una vez en esa direccin de memoria real
se encuentra el byte (o palabra) requerido por medio del valor de
`d'.
Ahora, en este esquema pueden haber dos tipos de fallos: por
fallo de pgina y por fallo de segmento. Cuando se hace referencia a
una direccin y el segmento que la contiene no est en RAM ( aunque
sea parcialmente ), se provoca un fallo por falta de segmento
[Deitel93] y lo que se hace es traerlo del medio de almacenamiento
secundario y crearle una tabla de pginas. Una vez caragado el
segmento se necesita localizar la pgina correspondiente, pero sta
no existe en RAM, por lo cual se provoca un fallo de pgina y se
carga de disco y finalmente se puede ya traer la direccin deseada
por medio del desplazamiento de la direccin virtual.
La eficiencia de la traduccin de direcciones tanto en paginacin
pura, segmentacin pura y esquemas combinados se mejora usando
memorias asociativas para las tablas de pginas y segmentos, as como
memorias cache para guardar los mapeos ms solicitados.
Otro aspecto importante es la estrategia para cargar pginas ( o
segmentos ) a la memoria RAM. Se usan ms comunmente dos
estrategias: cargado de pginas por demanda y cargado de pginas
anticipada. La estrategia de caragdo por demanda consiste en que
las pginas solamente son llevadas a RAM si fueron solicitadas, es
decir, si se hizo referencia a una direccin que cae dentro de
ellas. La carga anticipada consiste en tratar de adivinar qu pginas
sern solicitadas en el futuro inmediato y cargarlas de antemano,
para que cuando se pidan ya no ocurran fallos de pgina. Ese
`adivinar' puede ser que se aproveche el fenmeno de localidad y que
las pginas que se cargan por anticipado sean aquellas que contienen
direcciones contiguas a la direccin que se acaba de refenciar. De
hecho, el sistema operativo VMS usa un esquema combinado para
cargar pginas: cuando se hace referencia a una direccin cuya pgina
no est en RAM, se provoca un fallo de pgina y se carga esa pgina
junto con algunas pginas adyacentes. En este caso la pgina
solicitada se carg por demanda y las adyacentes se cargaron por
anticipacin.
Traduccin de direcciones en un sistema de paginacin
N pg. Desplaza- miento
Direccin virtual
n marco Desplaza . .miento
Desplazamiento
Cargar pgina
Memoria Principal
Memoria Secundaria
Buffer de traduccin adelantada
Tabla de pginas
Direccin Real
37 502
37
.
.
.
.
.
.
.
.
.
5 502
37 502
19
5 37
511
.
.
.
.
.
.
56
Marco
de
pgina
Puntero a
tabla de pginas
+
N. marco
Desplaza
miento
+
Tabla
de segmentos
Tabla
de pginas
Segg.
mento
Desp.
laza
miento
pg.
ina
X6