You are on page 1of 17

ADMINISTRACION DE MEMORIA

En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema operativo (monitor residente, ncleo) y otra parte para el programa que se ejecuta en ese instante. En un sistema multiprogramado, la parte de "usuario" de la memoria debe Subdividirse an ms para hacer sitio a varios procesos. La tarea de subdivisin la lleva a cabo dinmicamente el sistema operativo y se conoce como administracin de memoria. En un sistema multiprogramado resulta vital una gestin efectiva de la memoria. Si solo hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarn esperando a la E/S y el procesador estar desocupado. Por ello, hace falta repartir eficientemente la memoria para meter tantos procesos como sea posible.

ADMINISTRACION DE MEMORIA BASICA


La tarea central de cualquier sistema de gestin de memoria es traer los programas a memoria principal para su ejecucin en el procesador. En casi todos los sistemas multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. La memoria virtual esta, a su vez, basada en el uso de una de dos tcnicas bsicas; intercambio y/o paginacin. Antes de ver estas tcnicas de memoria virtual, se debe preparar el terreno considerando tcnicas ms simples que no requieren el uso de memoria virtual. Una de estas tcnicas, la particin, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos tcnicas, la paginacin simple o intercambio simple, no se usan en solitario. No obstante, el estudio de la memoria virtual resultara ms sencillo si se Consid0eran en primer lugar estas dos tcnicas, sin tener en cuenta la memoria virtual.

MULTIPROGRAMACIN CON PARTICIONES FIJAS

En la mayora de los esquemas de administracin de memoria, se puede suponer que el sistema operativo ocupa una parte fija de memoria principal y que el resto de la memoria est disponible

para ser usado por varios procesos. El esquema ms sencillo de admiracin de la memoria disponible es dividirla en regiones con limites fijos. Tamaos de Particin Emplear particiones de igual tamao. En este caso, cualquier proceso cuyo tamao sea menor o igual que el tamao de la particin puede cargarse en cualquier particin libre. Si todas las particiones estn ocupadas y no hay procesos residentes en estado Listo o Ejecutando, el sistema operativo puede sacar un proceso de alguna de las particiones y cargar otro proceso de forma que haya trabajo para el procesador. Las particiones fijas de igual tamao plantean dos dificultades: Un programa puede ser demasiado grande para caber en la particin. En este caso, el programador debe disear el programa mediante superposiciones, para que solo una parte del programa este en memoria principal en cada instante. Cuando se necesita un mdulo que no est presente, el programa de usuario debe cargar dicho modulo en la particin del programa, Superponindose a los programas y datos que se encuentren en ella.

MONOPROGRAMACION SIN INTERCAMBIO NI PAGINACION.


Este esquema de administracin de memoria consiste en ejecutar solo un programa a la vez, repartiendo la memoria entre ese programa y el sistema operativo.

A) Particiones de memoria fija con colas de entrada individuales para cada una. b) Particiones de memoria fijas con una sola cola de entrada .

REUBICACIN
En un sistema multiprogramado, la memoria disponible se encuentra normalmente compartida por varios procesos. En general, el programador no puede conocer por adelantado que otros programas residirn en memoria en el momento de la ejecucin del programa. Adems, se busca poder cargar y descargar los procesos activos en la memoria principal para maximizar el uso del procesador, manteniendo una gran reserva de procesos listos para ejecutar. Una vez que un programa haya sido descargado al disco, se limitara a declarar que, cuando vuelva a ser cargado, debe situarse en la misma regin de memoria principal que antes. De este modo, se sabe antes de tiempo donde debe situarse un programa y hay que permitir que el programa pueda moverse en memoria principal como resultado de un intercambio. Esta situacin plantea algunos asuntos tcnicos relativos al direccionamiento, que representa la imagen de un proceso

PROTECCIN
Cada proceso debe protegerse contra interferencias no deseadas de otros procesos, tanto accidentales como intencionadas. As pues, el cdigo de un proceso no puede hacer referencia a posiciones de memoria de otros procesos, con fines de lectura o escritura, sin permiso. Hasta cierto punto, satisfacer las exigencias de reubicacin aumenta la dificultad de satisfaccin de las exigencias de proteccin. Puesto que se desconoce la ubicacin de un programa en memoria principal, es imposible comprobar las direcciones absolutas durante la compilacin para asegurar la proteccin. Es ms, la mayora de los lenguajes de programacin permiten el clculo dinmico de direcciones durante la ejecucin, generando, por ejemplo, un ndice de un vector o un puntero a una estructura de datos. Por tanto, todas las referencias a memoria generadas por un proceso deben comprobarse durante la ejecucin para asegurar que solo hacen referencia al espacio de memoria destinado a dicho proceso. Afortunadamente, como se vern, los mecanismos que respaldan la reubicacin tambin

forman parte bsica del cumplimiento de las necesidades de proteccin.

INTERCAMBIO
Cualquier mecanismo de proteccin que se implemente debe tener la flexibilidad de permitir el acceso de varios procesos a la misma zona de memoria principal. Por ejemplo, si una serie de procesos estn ejecutando el mismo programa, resultara beneficioso permitir a cada proceso que acceda a la misma copia del programa, en lugar de tener cada uno su propia copia aparte. Los procesos que cooperan en una tarea pueden necesitar acceso compartido a la misma estructura de datos. El sistema de gestin de memoria debe, por tanto, permitir accesos controlados a las reas compartidas de la memoria, sin comprometer la proteccin bsica. De nuevo, se ver que los mecanismos empleados para respaldar la reubicacin forman parte bsica de las capacidades de comparticin.

ADMINISTRACION DE MEMORIA CON LISTAS ENLAZADAS.


Puesto que la compactacin de memoria consume tiempo, atae al diseador del sistema operativo decidir adecuadamente como asignar un proceso a memoria (como llenar los huecos). Cuando llega el momento de cargar o traer un proceso a memoria principal y, si hay libre ms de un bloque de memoria de tamao suficiente, el sistema operativo debe decidir cul asignar. Los tres algoritmos de ubicacin que se pueden considerar son el del mejor ajuste (best-fit), el del primer ajuste (first-fit) y el del siguiente ajuste (next-fit). Todos ellos se limitan a elegir entre los bloques de memoria libres que son mayores o iguales que el proceso a traer. El mejor ajuste elige el bloque de tamao ms parecido al solicitado. El primer ajuste comienza recorriendo la memoria desde el principio y escoge el primer bloque disponible que sea suficientemente grande. El siguiente ajuste recorre la memoria desde el lugar de la ltima ubicacin y elige el siguiente bloque disponible que sea suficientemente grande.

MEMORIA VIRTUAL
Hace mucho tiempo aparecieron los primeros programas que eran demasiado grandes para caber en la memoria disponible. La solucin que se adopta comnmente era dividir el programa en segmentos llamados superposiciones (overlays) Es posible que un proceso sea ms grande que toda la memoria principal. Se elimina as una de las limitaciones ms notorias de la programacin. Sin el esquema que se ha expuesto, un programador debe ser consciente de cuanta memoria tiene disponible. Si el programa que est escribiendo es demasiado grande, el programador debe idear formas de estructurar el programa en fragmentos que puedan cargarse de forma separada con algn tipo de estrategia de superposicin. Con una memoria virtual basada en paginacin o segmentacin, este trabajo queda para el sistema operativo y el hardware. En lo que atae al programador, se las arregla con una memoria enorme,

dependiendo del tamao de almacenamiento en disco. El sistema operativo cargara automticamente en memoria principal los fragmentos de un proceso cuando los necesita.

PAGINACION
El termino memoria virtual se asocia normalmente con sistemas que emplean paginacin, aunque tambin se puede usar memoria virtual basada en la segmentacin, que se tratara despus. El uso de la paginacin en la memoria virtual fue presentado por primera vez en el computador Atlas [KILB62] y pronto alcanzo un uso comercial muy extendido. En el estudio de la paginacin simple se indic que cada proceso tiene su propia tabla de pginas y que, cuando carga todas sus pginas en memoria principal, se crea y carga en memoria principal una tabla de pginas. Cada entrada de la tabla de pginas contiene el nmero de marco de la pgina correspondiente en memoria principal. Cuando se considera un esquema de memoria virtual basado en la paginacin se necesita la misma estructura, una tabla de pginas.

TABLA DE PGINAS
As pues, el mecanismo bsico de lectura de una palabra de 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. 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. En su lugar, debe estar en memoria principal para ser accesible.

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.

TABLAS DE PGINAS INVERTIDAS


Este mtodo se emplea en el AS/400 de IBM [CORA88, SCHL89] y en las estaciones de trabajo RISC Sistema/600 de IBM [CHAN88, CHAN90a, WATE86]. Esta tcnica tambin la utiliza una implementacin del sistema operativo Mach en el RT-PC [RASH88]. Con este mtodo, la parte del nmero de pgina en una direccin virtual se contrasta en 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 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. Puesto que ms de una direccin de memoria pueden corresponderse con la misma entrada de la tabla de dispersin, para gestionar las colisiones se emplea una tcnica de encadenamiento. La tcnica de dispersin genera normalmente cadenas cortas, de dos a tres entradas cada una.

BUFFER DE TRADUCCION ADELANTADA


En principio, cada referencia a memoria virtual puede generar dos accesos a memoria: uno para obtener la entrada de la tabla de pginas correspondiente y otro para obtener el dato deseado. As pues, un esquema sencillo de memoria virtual podra tener el efecto de doblar el tiempo de acceso a 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). Esta cache funciona del mismo modo que una memoria cache y contiene aquellas entradas de la tabla de pginas usadas hace menos tiempo. La organizacin del hardware de paginacin resultante. Dada por una direccin virtual, el procesador examinara primero la TLB. Si la entrada de tabla de pginas

buscada est presente (un acierto en la TLB), se obtiene el nmero de marco y se forma la direccin real. Si no se Encuentra la entrada de la tabla de pginas buscada (un fallo de TLB), el procesador emplea el nmero de pgina para buscar en la tabla de pginas del proceso y examinar la entrada correspondiente de la tabla de pginas. Si se encuentra activo el bit de presencia, es que la pagina esta en 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. Por ltimo, si el bit de presencia no est activo, es que la pgina buscada no est en memoria principal y se produce un fallo en el acceso a memoria, llamado fallo de pgina. En este punto, se abandona el mbito del hardware y se invoca al sistema operativo, que carga la pgina necesaria y actualiza la tabla de pginas.

MANEJO DE TLB POR SOFTWARE


Existe una serie de detalles adicionales sobre la organizacin real de la TLB. Puesto que la TLB contiene solo algunas de las entradas de la tabla de pginas completa, no se puede indexar simplemente la TLB por el nmero de pgina. En su lugar, cada entrada de la TLB debe incluir el nmero de pgina, adems de la entrada completa a la tabla de pginas. El procesador estar equipado con hardware que permita consultar simultneamente varias entradas de la TLB para determinar si hay una coincidencia en el nmero de pgina. Esta tcnica llamada correspondencia asociativa y contrasta con la correspondencia directa, que se emplea para buscar en la tabla de pginas. El diseador de la TLB debe tener tambin en cuenta la forma en que se organizan las entradas en la TLB y que entrada reemplazar cuando se introduce una nueva. Estas cuestiones deben considerarse en cualquier diseo de cache de hardware. Este problema no se trata aqu; se debe consultar un tratado de diseo de caches para obtener ms detalles (por ejemplo, [STAL93a]). Por ltimo, el mecanismo de memoria virtual debe interactuar con el sistema de cache (no con la cache TLB, sino con la cache de memoria principal).Una direccin virtual tendr normalmente un formato de numero de pgina ms desplazamiento.

ALGORITMOS DE REMPLAZO
Existen ciertos algoritmos bsicos que se emplean para la seleccin de una pgina a reemplazar. Entre las polticas de los algoritmos de reemplazo se incluyen: ptimo de remplazo de pagina Usada hace ms tiempo (LRU, Least Recently U sed) Primera en entrar, primera en salir (FIFO, First-In, First-Out)

De reloj LA POLITICA PTIMO selecciona para reemplazar la pgina que tiene que esperar una mayor cantidad tiempo hasta que se produzca la referencia siguiente. Se puede demostrar que esta poltica genera el menor nmero de fallos de pgina [BELA66]. Sin duda, este algoritmo resulta imposible de implementar, puesto que requiere que el sistema operativo tenga un conocimiento exacto de los sucesos futuros. Sin embargo, sirve como un estndar con el que comparar los otros algoritmos. La figura 7.14 ofrece un ejemplo del optimo remplazo de pgina El ejemplo supone una asignacin constante de tres marcos para el proceso. La ejecucin del proceso hace referencia a cinco pginas distintas. La cadena de referencias a las pginas durante la ejecucin del programa es: 232 152453252 lo que significa que la primera referencia es a la pgina 2, la segunda a la 3 y as sucesivamente. El algoritmo ptimo origina tres fallos de pgina despus de haber llenado los marcos Asignados. La poltica de la USADA HACE MS TIEMPO (LRU, Least Recently U sed) 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. De hecho, la poltica LRU afina casi tanto como la poltica ptima. El problema de este mtodo es su dificultad de implementacin. Una solucin sera etiquetar cada pgina con el instante de su ltima referencia; esto tendra que hacerse para cada referencia a memoria, tanto para instrucciones como datos. Incluso si el hardware respaldara este esquema, la sobrecarga resultara tremenda. Como alternativa, se podra mantener una pila de referencias a pgina, aunque tambin con un coste elevado. La figura 7.14 muestra un ejemplo del comportamiento del LRU, utilizando la misma cadena de referencias. En este caso, se producen cuatro fallos de pgina. LA PRIMERA EN ENTRAR, PRIMERA EN SALIR (FIFO) trata los marcos asignados a un proceso como un buffer circular y las pginas se suprimen de memoria segn la tcnica de espera circular (round-robiri). Todo lo que se necesita es un puntero que circule a travs de los marcos del proceso. Esta es, por tanto, una de las polticas de reemplazo ms sencillas de implementar.

La lgica que hay detrs de esta eleccin, adems de su sencillez, es reemplazar la pgina que ha estado ms tiempo en memoria: Una pgina introducida en memoria hace mucho tiempo puede haber cado en desuso. Este razonamiento ser a menudo incorrecto, porque habr regiones de programa o de datos que son muy usadas a lo largo de la vida de un programa. Con el algoritmo FIFO, estas pginas se cargaran y expulsaran repetidas veces. Continuando con el ejemplo de la figura 7.14, la poltica FIFO genera seis fallos de pgina. Ntese que la LRU se da cuenta de que las pginas 2 y 5 se referencian ms frecuentemente que las otras, mientras que la FIFO no lo hace. Si bien la poltica LRU se acerca mucho a la poltica optima, es difcil de implementar e impone una sobrecarga significativa. Por otro lado, la poltica FIFO es muy simple de implementar, pero su rendimiento es relativamente pobre. A lo largo de los anos, los diseadores de sistemas operativos han probado una serie de algoritmos para aproximarse al rendimiento de la LRU sin introducir mucha sobrecarga. Muchos de esos algoritmos son variantes de un esquema denominado poltica del reloj.

ALMACENAMIENTO INTERMEDIO DE PGINAS


A pesar de que las polticas LRU y del reloj son superiores a la FIFO, ambas poseen una complejidad y sobrecarga que esta ltima no padece. Adems, el coste de reemplazar una pgina que ha sido modificada es mayor que el de una que no lo ha sido, porque la primera debe volver a escribirse en memoria secundaria. Una estrategia interesante que puede mejorar el rendimiento de la paginacin y permitir el uso de una poltica de reemplazo de pginas ms sencilla es el almacenamiento intermedio de pginas. Un mtodo representativo es el del VAX/VMS. VMS emplea una estrategia de asignacin variable y reemplazo local. El algoritmo de reemplazo de pginas 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 la pgina no ha sido modificada o la lista de pginas modificadas, si lo ha sido. Ntese que la pagina no se mueve fsicamente de la memoria principal; en su lugar, se suprime su entrada en la tabla de pginas y se pone en la lista de pginas libres o modificadas.

COMPARACION ENTRE LOS ALGORITMOS BASICOS.

You might also like