martes, 21 de octubre de 2014

Unidad 3 ADMINISTRACIÓN DE MEMORIA

La parte del S.O. que administra la memoria se llama “administrador de la memoria”: 
Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no. 
Asigna espacio en memoria a los procesos cuando estos la necesitan. 
Libera espacio de memoria asignada a procesos que han terminado. 
La memoria principal es un recurso costoso, por lo que su uso debe optimizarse.

3.1 Políticas y filosofía

FILOSOFÍA: 
La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. 
Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando. 
Sea cual sea el esquema de organización del almacenamiento que se adopte para un sistema específico, es necesario decidir qué estrategias se deben utilizar para obtener un rendimiento óptimo. Las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas: 
¿Cuándo se toma un nuevo programa para colocarlo en memoria? 
¿Se toma el programa cuando el sistema lo solicita específicamente o intenta anticiparse a las peticiones del sistema? 
¿En qué lugar del almacenamiento principal se coloca el programa por ejecutar? 
¿Se colocan los programas lo más cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mínimo el desperdicio de espacio, o se colocan los programas lo más rápido posible para 
reducir al mínimo el tiempo de ejecución?
Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno, ¿Cuál de los otros programas se desaloja? 
Se han realizado sistemas que utilizan cada una de estas estrategias de administración. 
Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer 
referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario. 
Por ejemplo el caso de Unix permite procesos múltiples y un proceso puede generar otro fácilmente. La planificación del procesador usa un algoritmo basado en prioridades. La administración de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeño de 
memoria. 
Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX 
intercambiaba el contenido en memoria de los procesos. 

POLÍTICAS: 
Organización de la memoria.- Forma de considerar este almacenamiento: 
¿se coloca un solo programa de usuario o varios?
Si se encuentran varios programas de usuario:
o ¿se les concede la misma cantidad de espacio o particiones de diferente tamaño? o ¿se usa un esquema rígido de número y tamaño de particiones o un esquema dinámico y 
adaptable? o ¿se requiere que los trabajos funcionen en una partición específica o en cualquiera donde 
quepan? o ¿se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria?
Independiente del esquema de organización hay que decidir las estrategias que se usarán para optimizar el 
rendimiento. 
Las “estrategias de administración” deben considerar: 
¿cómo se consigue un nuevo programa para colocar en la memoria: cuando el sistema lo pide o intenta 
anticiparse a las peticiones?2
¿dónde se colocará el programa que se ejecutará a continuación: se prioriza el tiempo de carga o la optimización en el uso de la memoria?
¿con qué criterio se desplazarán programas?

3.2 Memoria real

Cantidad de memoria principal con que cuenta un equipo
Memoria secundaria auxiliar.- la soportada generalmente en discos. 
Para que un programa pueda ser ejecutado, él y sus datos deben estar en memoria principal. Para mejorar el rendimiento del cpu se pueden repartir sus servicios entre varios programas que necesitan estar cargados simultáneamente en memoria “compartiéndola”.
La memoria real o principal se considera el recurso central, ya que tanto el cpu como los dispositivos e/s la acceden para leer o grabar.
Hay 2 parámetros relacionados con la velocidad de r/w en memoria real:

  1. Tiempo de acceso.- Tiempo que transcurre del inicio al fin de una operación r/w.
  2. Tiempo de ciclo de memoria.- Retraso que impone el hardware entre una operación y otra.

3.3 Organización de memoria virtual





“Memoria virtual.- capacidad de direccionar un espacio de memoria mucho mayor que el disponible en la memoria primaria.
Los métodos más comunes de implementación son mediante: 


  • Técnicas de “paginación”.
  • Técnicas de “segmentación”.
  • Combinación de ambas.






Las direcciones generadas por los programas en su ejecución no son necesariamente, las contenidas en la memoria primaria (real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho 
mayor de direcciones que las disponibles dentro de la memoria primaria. 

3.4 Administración de memoria virtual


Los sistemas de gestión de la memoria vistos hasta ahora están sujetos a la exigencia de que un programa, para ejecutarse, debe de estar cargado en memoria principal en su totalidad. Sin embargo, no todas las partes del programa se ejecutan a la vez.
El programador diseña rutinas que sólo se ejecutan en determinadas circunstancias. Por ejemplo, las rutinas de error. Así, no parece necesario que todo el programa esté cargado en memoria para poder ser procesado.
La memoria virtual es una técnica de gestión que, combinando hardware y software, permite la ejecución de programas parcialmente cargados en memoria real.
Esta forma de trabajar aporta ventajas importantes:
Si los programas se pueden ejecutar por partes, la memoria lógica puede ser mayor que la real disponible.
Puesto que cada programa ocupa menos memoria real, se puede elevar el índice de multiprogramación, y por tanto, la eficiencia del sistema.
Al cargar menos cantidad de cada programa, se necesitan menos operaciones de entrada/salida para las operaciones de carga e intercambio de los mismos.