Contenidos Tercer Corte

Sistemas Operativos

27/2/11

Publicación

En el siguiente link encontra mas información referente al tema que se esta desarrollando:

Link: http://www.slideshare.net/KKristhiann/sistemas-operativos-7085376

Gestión de memoria

La memoria es es uno de los principales recursos de la maquina, la cual debe de administrarse con mucho cuidado. Actualmente la mayoría de los sistemas de operativos cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.

La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. 

Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.

El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria.

Modelos de Memoria
Memoria de Intercambio
Memoria Virtual
Operaciones

Modelos de memoria

Uniprogramado/Multiprogramado: Numero de programas en memoria a la vez: 1 / Más de 1.
Residente/No residente: Información ha de estar en memoria toda la ejecución.
Inmóvil/ Móvil: La traducción de @ lógica a física es siempre la misma.
Contigua/No contigua: Direcciones @ lógicas contiguas son @ físicas contiguas.
Entero/No entero: El programa ha de estar completamente en memoria física para ejecutarse.

Memoria virtual
Multiprogramado, no residente, móvil, no contiguo, no entero
Paginación
Segmentación
Paginación segmentada, segmentación paginada, ...
 

SO entero
  • SO sencillo
  • Uso ineficiente de la memoria
SO no entero, partes residentes
  • SO más complejo
  • Código y datos esenciales ( gestión de memoria, RSI, ... ) siempre residentes

Memoria Virtual

El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema. Esta ilusión existe tanto a nivel del sistema, es decir, teniendo en ejecución más aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar más memoria de la que realmente hay o incluso de forma más general, ofreciendo a cada aplicación más memoria de la que existe físicamente en la maquina. 

Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta técnica facilita enormemente la generación de código, puesto que el compilador no tiene por qué preocuparse sobre dónde residirá la aplicación cuando se ejecute.

Memoria de Intercambio

El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema:
 
Consiste en trasladar el código 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 más memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.

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 ejecución..
El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios.

Asignación contigua:
La memoria principal normalmente se divide en dos particiones:

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

Asignación de partición simple:
Puede utilizarse un esquema de registro de relocalización y límite para proteger un proceso de usuario de otro y de cambios del código y datos del sistema operativo.
El registro de relocalización contiene la dirección física más pequeña; el registro limite contiene el rango de las direcciones lógicas. Cada dirección lógica debe ser menor al registro limite

Asignación de particiones múltiples:
Bloques de distintos tamaños están distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle.

El sistema operativo debe tener información sobre:

- Particiones asignadas
- Particiones libres (huecos)
- Asignación de partición dinámica

El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica, el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son:

Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande.
Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible.
Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño 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 el tiempo del almacenamiento. Ni el primer ajuste o el mejor ajuste es claramente el mejor en términos de uso de espacio, pero por lo general el primer ajuste es más rápido.

Problema: La fragmentación.