Professional Documents
Culture Documents
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.
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.
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
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.
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.
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.
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.
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.