Está en la página 1de 9

Sistema Operativo

Administracin de 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. 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.

Administracin Bsica
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.

Administracin de la memoria sin intercambio o paginacin.


Los 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 (intercambio y paginacin) y aquellos que no.

1- Monopogramacin sin intercambio o paginacin.


Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice.

1 .1

Multiprogramacin y uso de la memoria.

La multiprogramacin facilita la programacin de una aplicacin al dividirla en dos o ms procesos. La mayora de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilstico dado por la frmula: Uso de la CPU = 1 - pn

1.2

Multiprogramacin con particiones fijas

El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solucin posible sera dividir la memoria en n partes al inicio de una sesin de uso de la mquina, pero an as se obtiene el desperdicio de particiones grandes con una tarea pequea, la respuesta puede ser tener particiones pequeas tambin. Las tareas que van llegando se forman hasta que una particin adecuada est disponible, en cuyo momento la tarea se carga en esa particin y se ejecuta hasta terminar.

1 .3

Multiprogramacin con particiones fijas

El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solucin posible sera dividir la memoria en n partes al inicio de una sesin de uso de la mquina, pero an as se obtiene el desperdicio de particiones grandes con una tarea pequea, la respuesta puede ser tener particiones pequeas tambin. Las tareas que van llegando se forman hasta que una particin adecuada est disponible, en cuyo momento la tarea se carga en esa particin y se ejecuta hasta terminar.

Intercambio
El objetivo del intercambio es dar cabida a la ejecucin de mas aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar ms memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin... El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de memoria de todos los usuarios.

Asignacin Contigua La memoria principal normalmente se divide en dos particiones:


Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta.

Asignacin de particin simple:


Puede utilizarse un esquema de registro de relocalizacin y limite para proteger un proceso de usuario de otro y de cambios del cdigo y datos del sistema operativo. El registro de relocalizacin contiene la direccin contiene la direccin fsica mas pequea; el registro limite contiene el rango de las direcciones lgicas cada direccin lgica debe ser menor al registro limite

Asignacin de particiones mltiples:


Bloques de distintos tamaos estn distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle.

El sistema operativo debe tener informacin sobre:


a. Particiones asignadas b. Particiones libres (huecos)

Asignacin de particin dinmica


El proceso de compactacin es una instancia particular del problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cul hueco es el ms indicado para asignarse. Las estrategias ms comunes para asignar algn hueco de la tabla son:

Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde termin la ltima bsqueda. La bsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a menos que la tabla est ordenada por tamao. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar en toda la tabla de huecos a menos que est organizada por tamao. Esta estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser de ms uso si llegan procesos de tamao mediano que quepan en ellos.

Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido.

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.

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 para pgina 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

La mayor parte de los sistemas de memoria virtual emplean una tcnica llamada paginacin. En cualquier computadora, existe un conjunto de direcciones de memoria que los Programas pueden producir. Cuando un programa ejecuta una instruccin como: MOVE REG,1000 Lo hace para copiar el contenido de la direccin de memoria 1000 en REG (o viceversa, dependiendo de la computadora). Las direcciones pueden generarse empleando indexacin, registros base, registros de segmento y otros mtodos o tcnicas. Estas direcciones generadas por programas se denominan direcciones virtuales y constituyen el espacio de direcciones virtual. En las computadoras sin memoria virtual, la direccin virtual se coloca directamente en el bus de memoria y hace que se lea o escriba la palabra de memoria fsica que tiene la misma direccin. 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 como se ilustra en la En la figura anterior se muestra la MMU formando parte del chip del CPU porque es lo ms comn en la actualidad. Sin embargo, lgicamente podra ser un chip aparte y en el pasado lo era. 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.

Algoritmo 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. 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. Aunque es posible elegir una pgina al azar para el reemplazo relacionado con un fallo de pgina, el rendimiento del sistema es mucho mejor si se elige una pgina de poco uso.

Algoritmo de reemplazo de pginas optimo


Mejor algoritmo posible para reemplazo de pginas pero irrealizable en la prctica. Al momento de ocurrir un fallo de pgina cierto conjunto de pginas se encuentran en la memoria, en la siguiente instruccin se har referencia a una de estas pginas, otras pginas no se utilizaran sino hasta mucho despus, cada pgina puede ejecutarse con el nmero de instrucciones ejecutadas antes de la primera referencia a esa pgina, el algoritmo dice que se elimine la pgina con la mayor etiqueta; si una pgina no va a utilizase sino hasta mucho despus que otra la eliminacin de la primera retrasa el fallo de pgina lo mas posible, el nico problema de este algoritmo es que es irrealizable.

Al momento del fallo de pgina el S.O. no tiene forma de saber a qu pgina se hace referencia.

Algoritmo de pgina de uso no muy reciente.


En un fallo de pgina, el sistema operativo inspecciona todas las pginas y las divide en cuatro categoras segn los valores actuales de los bits Ri y Mii Clase 0: No se ha hecho referencia ni ha sido modificada Clase 1: No se ha hecho referencia pero ha sido modificada Clase 2: Se ha hecho referencia pero no ha sido modificada Clase 3: Se ha hecho referencia y ha sido modificada El algoritmo NRU implica una hiptesis que indica que es mejor eliminar una pgina modificada sin referencias al menos por lo general un intervalo de reloj, este algoritmo es fcil de comprender, de implantacin eficiente y con un rendimiento que, an sin ser el ptimo si es adecuado en muchos casos.

Algoritmo de reemplazo " primero en entrar, primero en salir FIFO"


El sistema operativo tiene una lista de todas las pginas que se encuentran en memoria, siendo la primera pgina la mas antigua y la ltima la mas reciente, en un fallo de pgina, se elimina la primera pgina y se aade la nueva al final de la lista.

Algoritmo de reemplazo de pginas de la segunda oportunidad


Una modificacin simple del FIFO que evita deshacerse de una pgina de uso frecuente inspecciona el bit R de la pgina mas antigua, busca una pgina antigua sin referencias durante el anterior intervalo de tiempo.

Algoritmo de reemplazo de pginas del reloj


Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las pginas en una lista circular con la forma de un reloj, una manecilla apunta hacia la ms antigua. Al ocurrir un fallo de pgina se inspecciona la pgina a la que apunta la manecilla si su bit R=0 se retira de la memoria, se inserta la nueva pgina en su lugar en el reloj y la manecilla avanza una posicin, si R=1 la manecilla avanza una posicin y el bit se limpia, esto continua hasta encontrar una pgina con R=0.

Diseo de los Sistemas de Paginacin


Modelo de conjunto de trabajo
Paginacin por demanda: Las pginas se cargan cuando son necesarias y no antes. Localidad de referencia: En una fase de ejecucin de un proceso se hace referencia a un conjunto reducido de pginas. Conjunto de trabajo: Conjunto de pginas que usa actualmente el proceso. Modelo de conjunto de trabajo: Enfoque que sigue al conjunto de trabajo utilizado por cada proceso. Pre paginacin: Carga de pginas antes que se necesiten. Implementacin del conjunto de trabajo a travs de maduracin. Cualquier pgina que tenga un 1 en los ltimos n bits. N de determina en forma experimental Algoritmo wsclock Mejora al algoritmo de reloj. Verificacin de pertenencia al conjunto de trabajo si R=0.

Asignacin local y global


Adems de escoger que pgina debe ser sustituida se debe considerar en que forma se debe repartir la memoria entre los procesos ejecutables Los procesos varan el tamao de su conjunto de trabajo durante su vida. Algoritmos de asignacin local Asignan a cada proceso un nmero fijo de marcos de memoria Si aumenta el conjunto de trabajo aumentan los fallos de pgina. Si disminuye el conjunto de trabajo se desperdician marcos de pgina. Algoritmos de asignacin global Reparten dinmicamente los marcos de pginas entre procesos ejecutables. Vara nmero de marcos de pgina asignado a cada proceso. Enfoques de asignacin de marcos Examinar los bits de maduracin: No considera cambios en el conjunto de trabajo entre tics. Existencia de algoritmo de asignacin de marcos de pginas El algoritmo debe determinar en nmero de procesos en ejecucin. Asignacin equitativa Asignacin proporcional al tamao. Algoritmo de frecuencia de fallas de pginas PFF Tasa de falla muy alta: Implica asignacin de marcos de pginas para reduccin de fallas.

Tasa de falla muy baja: Implica demasiados marcos de pgina asignados. PFF intenta mantener tasa de falla entre lmites aceptables. Desalojamiento de procesos de memoria en caso de muchos procesos con altas tasas de falla.

Segmentacin
La memoria virtual de la que hemos hablado hasta ahora es unidimensional porque las direcciones virtuales van desde O hasta alguna direccin mxima, una direccin tras otra. Para muchos problemas, tener dos o ms espacios de direcciones virtuales independientes puede ser mucho mejor que tener slo uno. Por ejemplo, un compilador tiene muchas tablas que se construyen conforme procede la compilacin, y que pueden incluir: 1. 2. 3. 4. El texto fuente que se est guardando para el listado impreso (en sistemas por lotes). La tabla de smbolos, que contiene los nombres y los atributos de las variables. La tabla que contiene todas las constantes enteras y de punto flotante empleadas. El rbol de anlisis sintctico, que condene el rbol de anlisis sintctico del programa. 5. La pila empleada para llamadas a procedimientos dentro del compilador. Las primeras cuatro tablas crecen continuamente conforme avanza la compilacin. La ltima crece y se encoge de forma impredecible durante la compilacin. En una memoria unidimensional, habra que asignar a estas cinco tablas trozos contiguos del espacio de direcciones virtual, ver Figura.

Figura. En un espacio de direcciones unidimensional con tablas crecientes, una tabla podra chocar contra otra. Consideremos lo que sucede si un programa tiene un nmero excepcionalmente grande de variables. El trozo del espacio de direcciones asignado a la tabla de smbolos podra llenarse, pero podra haber espacio de sobra para otras tablas. Desde luego, el compilador podra limitarse a exhibir un mensaje diciendo que la compilacin no puede continuar debido a un exceso de variables, pero esto no parece justo si hay espacio desocupado en las otras tablas.

Otra posibilidad es hacerla de Robin Hood, tomando espacio de las tablas que tienen mucho espacio y dndolo a las que tienen poco. Es posible efectuar estos movimientos, pero sera anlogo a administrar las propias superposiciones: una molestia en el mejor de los casos y una gran cantidad de trabajo tedioso. Lo que realmente se necesita es una forma de liberar al programador de la tarea de administrar las tablas en expansin y contraccin, del mismo modo como la memoria virtual elimina la preocupacin de tener que organizar el programa en superposiciones. Una solucin directa y en extremo general consiste en proveer a la mquina con muchos espacios de direcciones completamente independientes, llamados segmentos. Cada segmento consiste en una secuencia lineal de direcciones, desde O hasta algn mximo. La longitud de cada segmento puede ser cualquiera desde O hasta el mximo permitido. Los diferentes segmentos pueden, y suelen, tener diferentes longitudes. Es ms, la longitud de los segmentos puede cambiar durante la ejecucin. La longitud de un segmento de pila puede aumentarse cada vez que algo se empila y reducirse cada vez que algo se desempila. Puesto que cada segmento constituye un espacio de direcciones aparte, los distintos segmentos pueden crecer o encogerse de forma independiente, sin afectarse entre s. Si una pila de cierto segmento necesita ms espacio de direcciones para crecer, se le puede conceder, porque no hay nada ms en su espacio de direcciones con lo que pueda chocar. Desde luego, podra llenarse un segmento, pero los segmentos suelen ser muy grandes, as que esta ocurrencia es poco comn. Para especificar una direccin en esta memoria segmentada o bidimensional, el programa debe proporcionar una direccin de dos partes: un nmero de segmento y una direccin dentro de ese segmento. En la Figura 13 se ilustra una memoria segmentada empleada para las tablas de compilador.

Figura . Una memoria segmentada permite a cada tabla crecer o encogerse con independencia de las dems tablas. Cabe mencionar que un segmento es una entidad lgica, de la cual el programador est consciente y que utiliza como entidad lgica. Un segmento podra contener un procedimiento, un arreglo, una pila o una coleccin de variables escalares, pero por lo regular no contiene una mezcla diferentes cosas.

También podría gustarte