M. C. Perla Ma. Saldivar Castillo
I.S.C. Karla Celina Velarde Alarcón
En la unidad pasada vimos cómo se puede compartir el procesador por un conjunto de procesos utilizando técnicas de planificación para mejorar la utilización del procesador y la velocidad de respuesta a los usuarios. Esto implica que debemos mantener tantos procesos en memoria como sea posible.
Administrar la memoria es una de las tareas más complejas e importantes del sistema operativo ya que la memoria principal es un recurso que debe asignarse y compartirse entre varios procesos activos.
El administrador de memoria es la parte del sistema operativo que administra la memoria.
Se encarga de:
Llevar un registro de las áreas de memoria que están siendo utilizadas y las que no.
Asignar espacio en memoria a los procesos cuando éstos la necesiten.
Liberar la memoria asignada cuando termina un proceso.
Administrar el intercambio entre la memoria principal y el disco en aquellos casos en los que la memoria principal no pueda alojar a todos los procesos que necesitan de ella.
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 datos y procesos 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 que estrategias se deben utilizar para obtener un rendimiento óptimo.
Políticas
Las políticas definen el funcionamiento del sistema de memoria. Existen diversas técnicas de gestión de memoria y cada una de ellas tiene sus políticas propias que definen la forma en la que se organiza la información de los procesos en memoria con la finalidad de lograr el mejor aprovechamiento de este recurso
Cada técnica da respuesta a las siguientes preguntas:
¿se coloca un solo programa de usuario o varios?
Si se encuentran varios programas de usuario:
¿se les concede la misma cantidad de espacio o particiones de diferente tamaño?
¿se usa un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable?
¿se requiere que los trabajos funcionen en una partición específica o en cualquiera donde quepan?
¿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?
¿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?
Memoria Real
La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de mas rápido acceso.
Por su localización la podemos clasificar en:
Memoria interna del procesador. Consta de un pequeño conjunto de registros de alta velocidad. La utiliza la CPU como almacenamiento temporal de instrucciones y datos.
Memoria principal. Relativamente es grande y rápida. Se utiliza para el almacenamiento de los programas y sus datos correspondientes.
Memoria externa. Son dispositivos periféricos de almacenamientos accesible a la CPU por medio de controladores de E/S. Es más grande y lenta. Almacena datos y programas que no están siendo utilizados continuamente por la CPU.
Los datos o instrucciones que se necesitan más frecuentemente se debe situar en los niveles superiores .
Registros. Los datos con los que se está ejecutando la instrucción en curso.
Chaché. Los datos de las últimas instrucciones.
Memoria principal y secundaria. El resto de los datos del programa en ejecución.
Memoria secundaria masiva. los programas o datos que no se están ejecutando.
La CPU y el sistema operativo se encargan de llevar y traer los datos de las memorias lentas a las rápidas y viceversa, a medida que se vayan referenciando los distintos datos o programas.
Unos conceptos previos que debemos definir respecto a la memoria son los siguientes:
Capacidad. Forma de especificar cuantos bits se pueden almacenar un dispositivo de memoria particular o en un sistema de memoria completo.
Dirección. Cada celda de memoria es asociada unívocamente a una dirección, de tal manera que mediante esa dirección se puede acceder a ella para escribir o leer un dato.
Palabra. Es la unidad común de organización de la memoria. Su tamaño viene determinado por el tamaño de los registros internos de la CPU, varía comúnmente de 4 a 64 bits.
MMU (Unidad de Gestión de Memoria). Hardware de un ordenador que es responsable de gestionar la memoria del sistema. Sirve como una especie de caché entre la CPU y el sistema de memoria.
La memoria está dividida en dos áreas: una de ellas asignada al sistema operativo y el resto asignado al proceso.
Direcciones físicas y virtuales
Un programa máquina es un conjunto ordenado de instrucciones en código máquina, que encajarán en n palabras de memoria, pudiéndose numerar correlativamente de la 0 a la n-1.
Las direcciones del programa se denominan direcciones virtuales o lógicas o relativas (dv)
Los programas se cargan en la memoria principal a partir de una determinada posición de memoria, en función de las zonas libres, que se denomina dirección base (DB).
Las direcciones reales donde se carga el programa se denominan direcciones físicas (df)
Para transformar una dirección virtual a física:
df = DB + dv
para todo 0 ≤ dv ≤ n-1
Se suele realizar con ayuda de un registro base (que se carga previamente en la dirección base) que se encuentra en la propia CPU o en unos circuitos específicos denominados Unidad de Gestión de Memoria (MMU)
En la actualidad, la MMU suele incluirse en el mismo chip del microprocesador y realiza transformaciones entre direcciones virtuales y físicas que antiguamente se hacían por software.
Estrategias de Administracion de Memoria
Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.
Se dividen en las siguientes categorías:
Estrategias de búsqueda. Están relacionadas con el hecho de cuando obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
Búsqueda por demanda. El siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia
Búsqueda anticipada. Puede producir un mejor rendimiento del sistema.
Estrategias de colocación. Están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.
Estrategias de reposición. Están relacionadas con la determinación de que fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.
Mecanismos de asignación de memoria
Se refiera al cómo ubicar los procesos en la memoria principal para que:
Quepa el mayor número de ellos
Se aproveche al máximo (no queden zonas libres)
Dependiendo de las posibilidades del SO, la asignación puede realizarse de distintas formas
Particiones estáticas
Particiones dinámicas
Segmentación
Paginación
Memoria virtual
Particiones Estáticas
La memoria se divide en cierto número de particiones o zonas, cada una de las cuales contendrá un proceso.
La DB de cada proceso es la dirección de inicio de cada partición.
El tamaño de las particiones (que puede no ser uniforme) es un parámetro del SO.
El SO tiene una tabla de particiones (procesos).
Para transformar las direcciones virtuales a físicas en cada acceso de memoria la MMU consulta la tabla de particiones para saber la partición en qué encuentra el proceso y calcular su dirección base.
El planificador de trabajos, una vez que una partición está libre, hace que se introduzca el programa de máxima prioridad que haya en la cola de espera.
Particiones Dinámicas
Los programas son introducidos por el SO inicialmente en posiciones consecutivas de memoria, no existiendo por tanto particiones predefinidas.
El SO Se utiliza una tabla de procesos y una tabla de fragmentos libres.
El planificador de trabajos la consulta y coloca en la memoria principal los programas que quepan en los fragmentos libres y actualiza las dos tablas.
Para transformar las direcciones virtuales a físicas en cada acceso a memoria, la MMU consulta la tabla de procesos para obtener la DB correspondiente.
Organización de la Memoria Virtual
La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta ilusión permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.
La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.
Administración de la Memoria Virtual
La clave del concepto de memoria (almacenamiento) virtual esta en la disociación:
De las direcciones a las que hace referencia un programa.
De las direcciones disponibles en la memoria real (almacenamiento primario).
Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demás páginas que estarán disponibles cuando las requiera el proceso.
El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.