Está en la página 1de 9

Administracin de la Memoria:

La administracin de memoria se refiere a los distintos mtodos y operaciones que se encargan de obtener la mxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible. La administracin de memoria se refiere, entonces, a la serie de mtodos y procesos que se llevan adelante desde la parte usuaria a los efectos de obtener el mejor rendimiento posible por parte de estas unidades. Para poder lograrlo, la operacin principal que realiza es la de trasladar la informacin que deber ser ejecutada por el procesador, a la memoria principal. Actualmente esta administracin se conoce como Memoria Virtual ya que no es la memoria fsica del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria ms extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera ms eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario. Entre las principales operaciones que desarrolla la administracin de memoria se encuentran la reubicacin, que consiste en trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilizacin del procesador; la proteccin, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de cdigos y datos, con lo que el mecanismo de proteccin permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en comn.

Particiones
Se le llama particiones a la divisin de la memoria en diferentes partes. Existen 3 tipos:

Particiones Fijas
El primer intento para posibilitar la multiprogramacin fue la creacin de las particiones fijas o estticas, en la memoria principal, una particin para cada tarea. El tamao de la particin se especificaba al encender el sistema, cada particin poda reconfigurarse al volver encender el sistema o reiniciar el sistema. Este esquema introdujo un factor esencial, la proteccin del espacio de memoria para la tarea. Una vez asignada una particin a una tarea, no se permita que ninguna otra tarea entrara en sus fronteras. Este esquema de particin es ms flexible que la de usuario nico, porque permite que varios programas estn en memoria al mismo tiempo.

Particiones Dinmicas
Con las particiones dinmicas, la memoria principal disponible aun se conserva en bloques contiguos, pero a las tareas nada ms se les da memoria que solicitan cuando se cargan para su procesamiento. Aunque es una mejora significativa en relacin con las particiones fijas, no se elimina el problema de las mismas. Un esquema de particiones dinmicas utiliza toda la memoria al cargar las primeras tareas, pero conforme entran nuevas tareas en el sistema que no son del mismo tamao de las que acaban de salir de la memoria se acomodan en los espacios disponibles de acuerdo con su prioridad.

Particiones Dinmicas Re Localizables


Con este esquema de asignacin de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacios y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar. La compactacin no es una tarea sencilla. Primero, todos los programas en memoria se deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada direccin y cada referencia a una direccin en todo programa para tomar en consideracin la nueva localizacin del programa en memoria.

Paginacin
El espacio de direcciones de cada proceso se divide en bloques de tamao uniforme llamados pginas, los cuales se pueden colocar dentro de cualquier marco disponible en memoria. Cuando las tablas de pginas son muy grandes se puede utilizar un esquema de paginacin de varios niveles para que las pginas se paginen a s mismas. Existen distintos niveles de paginacin y a su vez distintos modelos de computadoras han trabajado con ellas. Paginacin de nivel 1: PDP-11 Paginacin de 2 niveles: la VAX Paginacin de 3 niveles: la SPARC Paginacin de 4 niveles: la 68030

Asignacin de la Memoria en Pginas


Se basa en el concepto de dividir cada tarea de llegada en pginas de igual tamao. Algunos sistemas operativos escogen el tamao de la pgina igual al tamao de bloque de memoria. Que es el tamao de las secciones de disco en las cuales se almacena la tarea. Las secciones de un disco se conocen como sectores. Y los sectores de la memoria principal se denominan marcos de pgina. Antes de ejecutar un programa, el administrador de la memoria lo prepara mediante: 1.-la determinacin del nmero de pginas del programa. 2.-la ubicacin de suficientes marcos de pagina vacios en la memoria principal. 3.-la carga de todas las pginas del programa de los mismos.

Paginacin por Demanda


La paginacin por demanda introdujo la idea de cargar nada ms una porcin del programa en la memoria para su procesamiento. Fue el primer esquema ampliamente utilizado que elimino la necesidad de colocar toda la tarea en la memoria desde el principio hasta el final.

Ejemplo: cuando los usuarios escogen la primera opcin del men de un programa de aplicacin, los otros mdulos que no se requieren en ese momento se pueden extraer de la memoria y cargar de nuevo cuando sean llamados. No requiere todas las pginas al mismo tiempo 1.- Los mdulos de manejo de errores escritos por el usuario se procesan solo cuando se detectan un error especfico durante la ejecucin. 2.-Muchos mdulos son mutuamente excluyentes. 3.- Ciertas opciones de programa son excluyentes entre s o no resultan siempre accesibles.

Asignacin de memoria
La asignacin de memoria consiste en el proceso de asignar memoria para propsitos especficos, ya sea en tiempo de compilacin o de ejecucin. Si es en tiempo de compilacin es esttica, si es en tiempo de ejecucin es dinmica y si son variables locales a un grupo de sentencias se denomina automtica.

Asignacin esttica de memoria


La Asignacin esttica de memoria consiste en el proceso de asignar memoria en tiempo de compilacin antes de que el programa asociado sea ejecutado, a diferencia de la asignacin dinmica o la automtica donde la memoria se asigna a medida que se necesita en tiempo de ejecucin. Una aplicacin de esta tcnica conlleva que un mdulo de programa (por ejemplo funcin o subrutina) declara datos estticos de forma local, de forma que estos datos son inaccesibles desde otros mdulos a menos que se les pasen referenciados como parmetros o que les sean devueltos por la funcin. Se mantiene una copia simple de los datos estticos, accesible a travs de llamadas a la funcin en la cual han sido declarados. El uso de variables estticas dentro de una clase en la programacin orientada a objetos permite que una copia individual de tales datos se comparta entre todos los objetos de esa clase. Las constantes conocidas en tiempo de compilacin, como literales de tipo cadena, se asignan normalmente de forma esttica. En programacin orientada a objetos, el mtodo usual para las tablas de clases tambin es la asignacin esttica de memoria.

Asignacin automtica de memoria


Las variables automticas son variables locales a un bloque de sentencias (subrutina, funcin o procedimiento). Pueden ser asignadas automticamente en la pila de datos cuando se entra en el bloque de cdigo. Cuando se sale del bloque, las variables son automticamente desasignadas. Las variables automticas tendrn un valor sin definir cuando son declaradas, por tanto es buena prctica de programacin inicializarlas con un valor vlido antes de usarlas.

Asignacin dinmica de memoria


En ciencia de la computacin, asignacin dinmica de la memoria es la asignacin de almacenamiento de memoria para utilizacin por parte de un programa de computador durante el tiempo de ejecucin de ese programa. Es una manera de distribuir la propiedad de recursos de memoria limitada entre muchas piezas de cdigo y datos. Un objeto asignado dinmicamente permanece asignado hasta que es desasignado explcitamente, o por el programador o por un recolector de basura; esto es notablemente diferente de la asignacin automtica de memoria y de la asignacin esttica de memoria (la de las variables estticas). Se dice que tal objeto tiene tiempo de vida dinmico.

Algoritmos de reemplazo de pginas


En sistemas operativos que utilizan paginacin para el manejo de memoria, los algoritmos de reemplazo de pginas son usados para decidir qu pginas pueden ser sacadas de memoria cuando se necesita cargar una nueva y ya no hay espacio. Existen varios tipos:

ptimo
Este algoritmo tiene como finalidad retirar la pgina que vaya a ser referenciada ms tarde, por ejemplo si hay una pgina A que ser usada dentro de 10000 instrucciones, y una pgina B que ser usada dentro de 2800 instrucciones, se debera eliminar de la memoria la pgina A. Como se puede deducir, para esto el sistema operativo debera ver en cunto tiempo ser usada cada pgina en memoria y elegir la que est ms distante. El problema de este mtodo es que necesita conocimiento del futuro, por lo que es imposible su implementacin. Es un algoritmo terico. Se utiliza a los efectos comparativos con los algoritmos factibles de ser implementados para ver cul se aproxima ms a ste.

Primera en entrar, primera en salir (FIFO, First In, First Out)


En este mtodo el sistema operativo slo tiene que guardar en qu orden las pginas fueron cargadas, de modo que al necesitar hacer espacio pueda fcilmente elegir la primera pgina cargada. Se usa una cola, al cargar una pgina nueva se ingresa en el ltimo lugar. Aunque las colas FIFO son simples e intuitivas, no se comportan de manera aceptable en la aplicacin prctica, por lo que es raro su uso en su forma simple. Uno de los problemas que presentan es la llamada Anomala FIFO o Anomala de Belady. Belady encontr ejemplos en los que un sistema con un nmero de marcos de pginas igual a tres tena menos fallos de pginas que un sistema con cuatro marcos de pginas. El problema consiste en que podemos quitar de memoria una pgina de memoria muy usada, slo porque es la ms antigua.

Segunda oportunidad
Es una pequea modificacin al algoritmo FIFO, que funciona bastante mejor que el FIFO. En este caso cuando una pgina debe ser sacada se toma la primera en la cola, y en vez de sacarla, consulta el valor de un bit de referencia. En caso de estar fijado (en 001) se cambia el bit a 99 y se

lo coloca al final de la obstruccin, autorizando su tiempo de carga como si recin hubiera llegado al procesador. De esta forma, se le da una segunda oportunidad. Si el bit se encuentra sin fijar(en 99 ), la pgina se saca de memoria. Cada vez que la MMU accede a una pgina, fija su bit de referencia a 1. Para esto es necesario soporte para bit de referencia por hardware.

Reloj
Existe una variante de este algoritmo que sobre la misma idea presenta una mejora en la implementacin. Es el algoritmo del reloj, que lo que hace es tener una lista circular, de forma que al llegar al ltimo elemento de la lista, pasa automticamente al primero. Los elementos no se mueven al final de la cola cuando son accedidos, simplemente se pone su bit de referencia a 1. Esto nos evita tener que hacer movimientos de punteros en el caso de implementarlo con una lista enlazada. De hecho, se puede implementar con un array perfectamente, ahorrando as memoria.

No usada recientemente (Not Recently Used, NRU)


Este algoritmo favorece a las pginas que fueron usadas recientemente. Funciona de la siguiente manera: cuando una pgina es referenciada, fija el bit de referencia para esa pgina. Similarmente, cuando una pgina es modificada, fija su bit de modificacin. Usualmente estas operaciones son realizadas por el hardware, aunque puede hacerse tambin por software. En un tiempo fijo, el sistema operativo pone en 0 los bits de referencia de todas las pginas, de modo que las pginas con su bit de referencia en 1 son las que fueron referenciadas dentro del ltimo intervalo de reloj. Cuando una pgina debe ser reemplazada, el sistema operativo divide las pginas en cuatro categoras:

Categora 0: no referenciada, no modificada Categora 1: no referenciada, modificada Categora 2: referenciada, no modificada Categora 3: referenciada, modificada

Las mejores pginas para cambiar son las que se encuentran en la categora 0, mientras que las peores son las de la categora 3. Se desaloja al azar una pgina de la categora ms baja que no est vaca. Este algoritmo se basa en la suposicin de que es mejor desalojar una pgina modificada a la que no se ha hecho referencia en al menos un tic de reloj, en vez de una pgina limpia que se est usando mucho.

Menos usada recientemente (Least Recently Used, LRU)


Este algoritmo difiere del de 'No usada recientemente' en el hecho de que aquel slo se fija en el intervalo de tiempo desde que se pusieron en 0 los bits de referencia de las pginas, mientras que el algoritmo de 'Menos usada recientemente' intenta proveer un comportamiento casi ptimo mediante la observacin de las pginas que menos fueron usadas recientemente. Este tipo de pginas, estadsticamente son las que tienen menor probabilidad de ser usadas nuevamente. Aunque este algoritmo provee un buen comportamiento en teora, es caro de implementar, en cuanto a recursos consumidos. Hay varias implementaciones que intentan mantener bajo el costo y lograr un rendimiento considerable. Un mtodo consiste en tener una lista enlazada y ordenada

de todas las pginas en memoria. En el final de la lista est la pgina menos usada recientemente, y al principio la ms usada recientemente. El costo alto de este mtodo es porque cada vez que se referencia una pgina debe ser movida en la lista, algo que consume mucho tiempo. Otra forma, que requiere soporte de hardware, consiste en tener un contador que es incrementado en cada instruccin del CPU. Cada vez que una pgina es accedida, gana el nmero del contador en ese momento. Cuando una pgina debe ser retirada de memoria, simplemente hay que buscar cul es la que tiene el menor nmero, que es la que fue usada hace ms tiempo. En el presente no existen contadores tan grandes para permitir esto. Debido al alto costo del LRU, se proponen algoritmos similares, pero que permiten implementaciones menos costosas, como los que siguen.

Ejemplos (Aging)
Este algoritmo es un descendiente del algoritmo "No usada frecuentemente", con algunas modificaciones necesarias para tener en cuenta en qu momento fue usada frecuentemente una pgina, y no solamente cuntas veces fue referenciada. En vez de slo incrementar el contador de la pgina cuando es referenciada, primero se desplaza a la derecha (se divide por 2) y despus s se suma 1. Por ejemplo, si los bits de referencia de una pgina fueron 1, 0, 0, 1, 1 y 0 en los ltimos 6 ticks del reloj, el contador se ver as: 10000000, 01000000, 00100000, 10010000, 11001000, 01100100. De esta forma, cuando se necesite eliminar una pgina de memoria, se eliminar la que tenga el nmero ms pequeo en su contador. Este algoritmo provee una buena aproximacin al desempeo del algoritmo ptimo, por un mdico precio.

Memoria Virtual
La memoria virtual es una tcnica de administracin de la memoria real que permite al sistema operativo brindarle al software de usuario y a s mismo un espacio de direcciones mayor que la memoria real o fsica.

La mayora de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cach (tanto dentro como fuera del CPU), la memoria fsica (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rpido) y el disco duro que es mucho ms lento, pero tambin ms grande y barato. Muchas aplicaciones requieren el acceso a ms informacin (cdigo y datos) que la que se puede mantener en memoria fsica. Esto es as sobre todo cuando el sistema operativo permite mltiples procesos y aplicaciones ejecutndose simultneamente. Una solucin al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su informacin en disco, movindola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opcin es que la aplicacin misma sea responsable de decidir qu informacin ser guardada en cada sitio (segmentacin), y de traerla y llevarla. La desventaja de esto, adems de la dificultad en el diseo e implementacin del programa, es que es muy probable

que los intereses sobre la memoria de dos o varios programas generen conflictos entre s: cada programador podra realizar su diseo teniendo en cuenta que es el nico programa ejecutndose en el sistema. La alternativa es usar memoria virtual, donde la combinacin entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha ms memoria principal (RAM) que la que realmente posee. Este mtodo es invisible a los procesos. La cantidad de memoria mxima que se puede hacer ver que hay tiene que ver con las caractersticas del procesador. Por ejemplo, en un sistema de 32 bits, el mximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho ms fcil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria. Aunque la memoria virtual podra estar implementada por el software del sistema operativo, en la prctica casi siempre se usa una combinacin de hardware y software, dado el esfuerzo extra que implicara para el procesador.

Cuando se usa Memoria Virtual, o cuando una direccin es leda o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:

la direccin real de memoria (la direccin de memoria fsica), o una indicacin de que la direccin de memoria deseada no se encuentra en memoria principal (llamado excepcin de memoria virtual)

En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde deba y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situacin y permitir que el programa siga ejecutando o aborte segn sea el caso. La 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 ejecuten 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 sistemas operativos 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 sistema operativo debe saber cmo gestionar este esquema.