You are on page 1of 6

ADMINISTRACION DE LA MEMORIA

Parafraseando la ley de Parkinson, "los programas se expanden hasta llenar la memoria disponible para contenerlos". La parte del sistema operativo que administra la jerarqua de memoria se denomina administrador de memoria. Su trabajo consiste en mantenerse al tanto de qu partes de la memoria est en uso y cules no lo estn, asignar memoria a los procesos cuando la necesitan y recuperarla cuando terminan, y controlar el intercambio entre la memoria principal y el disco cuando la primera es demasiado pequea para contener todos los procesos. ADMINISTRACIN BSICA DE MEMORIA Los sistemas de administracin de memoria se pueden dividir en dos clases, los que trasladan procesos entre la memoria y el disco durante la ejecucin (intercambio y paginacin) y los que no lo hacen. En las IBM PC, la porcin del sistema que est en ROM se llama BIOS (Basic Input Output System, sistema bsico de entrada salida). Multiprogramacin con particiones fijas La forma ms fcil de lograr la multiprogramacin consiste simplemente en dividir la memoria en n particiones, posiblemente desiguales. Esta divisin puede, por ejemplo, efectuarse manualmente cuando se inicia el sistema. Este sistema, con particiones fijas establecidas por el operador en la maana y que no se modificaban posteriormente, fue utilizado por OS/360 en macrocomputadoras de IBM durante muchos aos. Se le llamaba MFT (multiprogramacin con un nmero fijo de tareas, u OS/MFT). Este sistema es fcil de entender e igualmente sencillo de implementar: los trabajos entrantes se ponen en cola hasta que est disponible una particin apropiada. En ese momento, el trabajo se carga en esa particin y se ejecuta hasta terminar. Hoy da son pocos los sistemas operativos que dan soporte a este modelo, si es que todava existe alguno. Relocalizacin La reubicacin hace referencia al hecho de poder localizar a los programas para su ejecucin en diferentes zonas de memoria El esquema anterior le brinda a la computadora la habilidad de cargar varios programas a la memoria simultneamente en cualquier parte de la memoria que se encuentre disponible en ese momento.

y y y y

El programador no puede saber donde el programa se pondr en memoria cuando ste es ejecutado Un proceso puede ser (a menudo) relocalizado en memoria principal debido al intercambio (swapping) El intercambio le permite al OS, tener un pool ms grande de procesos listo-para-ejecutar (ready-to-execute) Referencias de memoria en cdigo (para instrucciones y datos), debe traducirse a la direccin de memoria fsica real

Proteccin y y y Los procesos no deben estar habilitados para referenciar localizaciones de memoria de otro proceso, sin el permiso correspondiente. Es imposible verificar direcciones en tiempo de compilacin en programas, debido a que el programa puede ser relocalizado Las direcciones de memoria deben ser chequeadas, en tiempo de ejecucin, por el Hardware

INTERCAMBIO La estrategia ms sencilla, llamada intercambio, consiste en traer a la memoria cada proceso en su totalidad, ejecutarlo durante un tiempo, y despus colocarlo otra vez en el disco. La otra estrategia, llamada memoria virtual, permite a los programas ejecutarse aunque slo estn parcialmente en la memoria principal. Si el intercambio crea mltiples agujeros en la memoria, es posible combinarlos todos para formar uno grande desplazando todos los procesos hacia abajo hasta donde sea posible. Esta tcnica se conoce como compactacin de memoria, y pocas veces se practica porque requiere mucho tiempo de CPU. Administracin de memoria con mapas de bits Con un mapa de bits, la memoria se divide en unidades de asignacin, tal vez slo de unas cuantas palabras o quiz de varios kilobytes. A cada unidad de asignacin corresponde un bit del mapa de bits, que es 0 si la unidad est libre y 1 si est ocupada (o viceversa). Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamao del mapa slo depende del tamao de la memoria y el tamao de la unidad de asignacin. Administracin de memoria con listas enlazadas Otra forma de contabilizar la memoria es mantener una lista enlazada de segmentos de memoria libres y asignados, donde un segmento es un proceso o bien un agujero entre dos procesos.

MEMORIA VIRTUAL Hace muchos aos las personas enfrentaron por primera vez programas que eran demasiado grandes para caber en la memoria disponible. La solucin que normalmente se adoptaba era dividir el programa en fragmentos, llamados superposiciones. La superposicin O era la primera que se ejecutaba. Al terminar, esta superposicin llamaba a otra. Algunos sistemas de superposicin eran muy complejos, pues permitan varias superposiciones en la memoria a la vez. Las superposiciones se mantenan en disco y el sistema operativo las intercambiaba con la memoria dinmicamente, segn fuera necesario. El mtodo que se invent (Fotheringham, 1961) se conoce ahora como memoria virtual. La idea en que se basa la memoria virtual es que el tamao combinado del programa, los datos y la pila puede exceder la cantidad de memoria fsica disponible para l. El sistema operativo mantiene en la memoria principal las partes del programa que actualmente se estn usando, y el resto en el disco. La memoria virtual tambin puede funcionar en un sistema de multiprogramacin, manteniendo segmentos de muchos programas en la memoria a la vez. Paginacin y y y y y Es un esquema de gestin de memoria en el que la asignacin de memoria no es contigua El espacio de direcciones virtuales de un proceso est dividido en bloques de tamao fijo llamados pginas La direccin virtual consta de un nmero de pgina virtual y un desplazamiento La traduccin de direcciones se lleva a cabo con la ayuda de la tabla del mapa de pginas (TDP) La TDP se construye en tiempo de carga del proceso en memoria

Cuando se usa memoria virtual, las direcciones virtuales no pasan directamente al bus de memoria; en vez de ello, se envan a una unidad de administracin de memoria (MMU), un chip o coleccin de chips que transforma las direcciones virtuales en direcciones de memoria fsica. El espacio de direcciones virtual se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se denominan marcos de pgina. Las pginas y los marcos de pgina siempre tienen exactamente el mismo tamao.

Tablas de pginas El propsito de la tabla de pginas es transformar pginas virtuales en marcos de pgina. En trminos matemticos, la tabla de pgina es una funcin, con el nmero de pgina virtual como argumento y el nmero de marco fsico como resultado. Usando el resultado de esta funcin, el campo de pgina virtual de una direccin virtual se puede sustituir por un campo de marco de pgina, formando as una direccin de memoria fsica. Tablas de pginas multnivel El secreto del mtodo de tabla de pginas multinivel es evitar mantener todas las tablas de pginas en la memoria todo el tiempo, en particular, las tablas que no se necesiten no deben estar ah. TLB Buffers de consulta para traduccin El dispositivo, llamado TLB (buffer de consulta para traduccin, en ingls, Translation Lookaside Buffer) o tambin memoria asociativa, generalmente, el TLB est dentro de la MMU y consiste en un pequeo nmero de entradas64. Cada entrada contiene informacin acerca de una pgina; en particular, el nmero de pgina virtual, un bit que se enciende cuando la pgina se modifica, el cdigo de proteccin (permisos de leer/escribir/ejecutar) y el marco de pgina fsico en el que se encuentra la pgina. Estos campos tienen una correspondencia uno a uno con los campos de la tabla de pginas. Otro bit indica si la entrada es vlida (si est en uso) o no. Tablas de pginas invertidas En este diseo, hay una entrada por marco de pgina de la memoria real, no por cada pgina del espacio de direcciones virtual. ALGORITMOS DE SUSTITUCIN DE PGINAS Cuando ocurre una falla de pgina, el sistema operativo tiene que escoger la pgina que sacar de la memoria para que pueda entrar la nueva pgina. El algoritmo de sustitucin de pginas ptimo Cada pgina puede rotularse con el nmero de instrucciones que se ejecutarn antes de que se haga referencia a esa pgina. El algoritmo de reemplazo de pginas ptimo simplemente dice que se debe eliminar la pgina que tenga el rtulo ms alto.

El algoritmo de sustitucin de pginas no usadas recientemente El algoritmo NRU (no utilizada recientemente) elimina una pgina al azar de la clase no vaca que tiene el nmero ms bajo. El atractivo principal de NRU es que es fcil de entender, eficiente de implementar y tiene un rendimiento que, si bien ciertamente no es ptimo, a menudo es adecuado. El algoritmo de sustitucin de pginas de primera que entra, primera que sale (FIFO) El sistema operativo mantiene una lista de todas las pginas que estn en la memoria, siendo la pgina que est a la cabeza de la lista la ms vieja, y la del final, la ms reciente. Cuando hay una falla de pgina, se elimina la pgina que est a la cabeza de la lista y se agrega la nueva pgina al final. El algoritmo de sustitucin de pginas de segunda oportunidad Lo que hace el algoritmo de segunda oportunidad es buscar una pgina vieja a la que no se, haya hecho referencia en el intervalo de reloj anterior. Si se ha hecho referencia a todas las pginas, este algoritmo pasa a ser FIFO puro. El algoritmo de sustitucin de pginas por reloj Un enfoque mejor consiste en mantener todas las pginas en una lista circular con forma de reloj. Una manecilla apunta a la pgina ms vieja. Cuando ocurre una falla de pgina, se inspecciona la pgina a la que apunta la manecilla. Si su bit R es O, se desaloja la pgina, se inserta la nueva pgina en el reloj en su lugar, y la manecilla avanza una posicin. Si R es 1, se pone en O y la manecilla se avanza a la siguiente pgina. Este proceso se repite hasta encontrar una pgina con R = 0. No resulta sorprendente que este algoritmo se llame de reloj. La nica diferencia respecto al de segunda oportunidad es la implementacin. El algoritmo de sustitucin de pginas menos recientemente usadas (LRU) Las pginas que hace mucho no se usan probablemente seguirn sin usarse durante largo tiempo. Esta idea sugiere un algoritmo factible: cuando ocurra una falla de pgina, se desalojar la pgina que haya estado ms tiempo sin usarse. Esta estrategia se denomina paginacin LRN (menos recientemente utilizada). El modelo de conjunto de trabajo (Denning, 1980). Si todo el conjunto de trabajo est en la memoria, el proceso ejecutar sin causar muchas fallas hasta que pase a otra fase de su ejecucin. Se dice que un programa q causa fallas de pgina repetidamente despus de unas cuantas instrucciones se est "sacudiendo (thrashing). Est diseado para reducir considerablemente la tasa de fallas de pgina. La carga de las pginas antes de dejar que los procesos se ejecuten tambin se denomina prepaginacin.

La informacin relativa al conjunto de trabajo puede servir para mejorar el rendimiento del algoritmo del reloj. Normalmente, cuando la manecilla apunta a una pgina cuyo bit R es O, esa pgina se desaloja. La mejora consiste en verificar si esa pgina forma parte del conjunto de trabajo del proceso en curso. Si lo es, se le perdona la vida. Este algoritmo se conoce como wsclock. Polticas de asignacin local vs. global En general, los algoritmos globales funcionan mejor, sobre todo cuando el tamao del conjunto de trabajo puede variar durante la vida de un proceso. Si se emplea un algoritmo local y el conjunto de trabajo crece, habr thrashing, incluso si hay muchos marcos de pgina libres. Si el conjunto de trabajo se reduce, los algoritmos locales desperdician memoria. Si se emplea un algoritmo global, el sistema debe decidir continuamente cuntos marcos de pgina habr de asignar a cada proceso. Una forma de vigilar el tamao del conjunto de trabajo es examinar los bits de maduracin, pero este enfoque no necesariamente evita el thrashing.