Administración de Memoria
Administración de Memoria
Administración de Memoria
ADMINISTRACION DE MEMORIA
Administración de la Memoria
La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Para
ello existen diferentes esquemas de administración de memoria desde los más simples hasta los más
elaborados entre los cuales se ubican:
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 (intercambio y paginación) y
aquellos que no.
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.
El objetivo en todo esto es tener más de un proceso en memoria a la vez, solución posible sería dividir la
memoria en n partes al inicio de una sesión de uso de la máquina, pero aún así se obtiene el desperdicio
de particiones grandes con una tarea pequeña, la respuesta puede ser tener particiones pequeñas
también. Las tareas que van llegando se forman hasta que una partición adecuada está disponible, en
cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar.
· Intercambio
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 es 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 .las estrategias de administración del almacenamiento determinan el comportamiento
de la administración de memoria.
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.
Unix permite procesos múltiples y en 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.
FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un
proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el
esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay
procesos con la misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una
cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final
de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo más corto): Se ejecuta primero el proceso en espera que
tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a
rezagarse mucho tiempo e incluso nunca ejecutarse.
SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso
comienza su ejecución continua hasta terminar. En SRT, un proceso en ejecución puede ser desposeído
por uno nuevo de menor tiempo de ejecución.
HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa
que corrige el retraso excesivo de procesos grandes que produce el SJF, para así no caer en un
favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera
y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo está en función del tiempo de
servicio sino también del tiempo que ha esperado para ser atendido.
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
más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez
mayor.
Este tipo de administración divide la memoria en unidades de asignación, las cuales pueden ser tan
pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación
le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y 1 si está
ocupada (o viceversa). La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits.
Otra forma de mantener un registro de la memoria es mediante una lista ligada de los segmentos de
memoria asignados o libres, en donde un segmento puede ser un proceso o un hueco entre dos
procesos. La memoria de la figura 7(a) está mostrada como una lista ligada de segmentos en la figura
7(b). Cada entrada de la lista especifica un hueco (H) o un proceso (P), la dirección donde comienza, su
longitud y un apuntador a la siguiente entrada.
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con
una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de
direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real
y el resto almacenado en el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es
accesible a la CPU, según un programa va ejecutándose, 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 paginación).
• Técnicas de paginación.
• Técnicas de segmentación.
Paginación.
Segmentación.
Segmentación y paginación.
“Estrategias de búsqueda”:
- Tratan de los casos en que una página o segmento deben ser traídos del almacenamiento secundario al
primario.
- Las estrategias de “búsqueda por demanda” esperan a que se haga referencia a una página o
segmento por un proceso antes de traerlos al almacenamiento primario.
- Los esquemas de “búsqueda anticipada” intentan determinar por adelantado a qué páginas o
segmentos hará referencia un proceso para traerlos al almacenamiento primario antes de ser
explícitamente referenciados.
“Estrategias de colocación”:
o Tratan del lugar del almacenamiento primario donde se colocará una nueva página o segmento.
o Los sistemas toman las decisiones de colocación de una forma trivial ya que una nueva página puede
ser colocada dentro de cualquier marco de página disponible.
“Estrategias de reposición”:
o Tratan de la decisión de cuál página o segmento desplazar para hacer sitio a una nueva página o
segmento cuando el almacenamiento primario está completamente comprometido.
Es similar a lo visto para la paginación introduciendo el concepto de swapping. Los procesos residen en
el disco y al ser ejecutados deben ser cargados en memoria. Cuando un proceso va a ser ejecutado, el
mismo es swappeado a memoria, utilizando lazy swapping. El lazy swapping nunca trae paginas a
memoria si no van a ser ejecutadas. Se necesita determinar si un pagina esta en memoria o en disco, por
lo cual se utiliza el bit de válido / inválido de la tabla de páginas. Si el bit = 1 la página es valida y esta
cargada en memoria si es 0 la página es inválida y no esta cargada en memoria (esta en disco).
Cuando un proceso intenta acceder a una página que no esta cargada en memoria ocurre un page fault
(tomo de página). El procedimiento para manejar un page fault es el siguiente:
1. Verificar si la referencia a la pagina es valida (se utiliza una tabla interna (generalmente llevada en
PCB) donde se indica las paginas validas.
3. Encontrar un frame disponible para cargarla (la página esta en disco)(por ejemplo de la free frame list)
4. Solicitar operación de I/O para leer la página de disco cargarla en el frame obtenido.
5. Modificar la tabla interna y la tabla de paginas para que ahora esta pagina figure como que esta en
memoria.