Memoria Real y Vitual

25
ÍNDICE INTRODUCCIÓN ESTRUCTURAS DE HARDWARE Y DE CONTROL Ø MEMORIA VIRTUAL Ø PAGINACION Ø SEGMENTACIÓN Ø PAGINACIÓN Y SEGMENTACIÓN COMBINADAS Ø PROTECCIÓN Y COMPARTIMIENTO SOFTWARE DEL SISTEMA OPERATIVO Ø POLÍTICAS DE LECTURA Ø POLÍTICAS DE UBICACIÓN Ø POLÍTICAS DE REEMPLAZO o o ALGORITMOS BÁSICOS o o ALMACENAMIENTO INTERMEDIO DE PÁGINAS Ø POLÍTICAS DE REEMPLAZO Y TAMAÑO DE CACHE Ø GESTIÓN DEL CONJUNTO RESIDENTE Ø ALCANCE DEL REEMPLAZO Ø POLÍTICAS DE VACIADO GESTIÓN DE MEMORIA EN UNIX Y SOLARIS GESTIÓN DE MEMORIA EN LINUX GESTIÓN DE MEMORIA EN WINDOWS 2000 CONCLUSIÓN INTRODUCCIÓN La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también 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 estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola 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 administración de memoria se pueden clasificar en dos tipos: _los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución, y, _ los que no. ESTRUCTURAS DE HARDWARE Y DE CONTROL Los métodos de administración de la memoria principal, que no utilizan Memoria Virtual y esquemas de Paginación y Segmentación, es decir que llevan a las direcciones directamente al bus de la memoria, tienen un inconveniente: producen lo que se denomina fragmentación. La fragmentación, que son huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio, provoca un desperdicio de memoria principal.

description

Memoria Real y Vitual de Computacion

Transcript of Memoria Real y Vitual

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