270 likes | 637 Views
Teoría de Sistemas Operativos Memoria. Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo321. La organización y la administración de la memoria principal (primaria o real) es uno de los factores mas importantes que influyen en el
E N D
Teoría de Sistemas OperativosMemoria Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo321
La organización y la administración de la memoria principal (primaria o real) es uno de los factores mas importantes que influyen en el diseño de los Sistemas Operativos. Históricamente la memoria ha sido un recurso caro, por lo que se desea optimizar su uso, aunque en la actualidad ha bajado de precio, los programa han aumentado su tamaño.
La forma más simple de administrar memoria es ejecutando sólo un programa a la vez. Cuando usuario digita un comando, el sistema operativo carga el programa correspondiente en la memoria, y lo ejecuta. Cuando el programa termina, el sistema operativo solicita un nuevo comando y carga el nuevo programa en la memoria, sobreescribiendo el anterior.
Ventajas: • simple de implementar Desventajas: • No permite dividir un programa de usuario en varios procesos • Bajo rendimiento en sistemas de tiempo compartido • Menor utilización de recursos
Multiprogramación: Varios procesos en memoria. La memoria debe ser dividida en sectores. Ejemplo
Multiprogramación: Ejemplo: Active - total memory active Inactive - total memory inactive Wired - memory that cannot be paged out Cache - memory in the buffer cache queue Free - free memory in the system ¿Cómo se logra mantener varios procesos en memoria?
Algunos problemas • El código debe ser relocalizable: • ajustar las direcciones de un programa al sitio donde fue cargado, para que éste pueda ser ejecutado.
Algunos problemas El código debe ser relocalizable: 100: add $a, 1 101: jump 110 .... 110: load $b,$a eq 200: add $a, 1 201: jump 210 ... 210: load $b, $a
Algunos problemas Un proceso no debe interferir con otro
Filas independientes Kernel 400Kb 210 250 300 350 200Kb 100 600Kb 500 450 590 Memoria Real Multiprogramación con particiones fijas
Kernel Fila única 400Kb 200Kb 100 500 550 190 600Kb Memoria Real Multiprogramación con particiones fijas
Multiprogramación con particiones fijas Desventajas . • ·Se hace una mala utilización de la memoria debido a la poca flexibilidad del método. • ·Es complicado correr programas más grandes que el tamaño de la partición.
Multiprogramación con particiones fijas Desventajas . • Fragmentación interna. • Ocurre cuando un proceso no ocupa toda la memoria asignada. • El espacio libre no puede ser utilizado por ningún otro proceso.
Multiprogramación con particiones fijas Ventajas . • Administración es relativamente simple. • Protección entre procesos se puede realizar mediante el registro base y la longitud de la zona
Multiprogramación con particiones variables La memoria se divide en bloques de diferente tamaño de acuerdo a las necesidades del proceso. Ventajas • Define bloques del tamaño requerido • termina con la fragmentación interna • permite un mejor uso de la memoria
Multiprogramación con particiones variables Desventajas Fragmentación externa: • Existen 400Kb libres • Pero un proceso de 400Kb no puede ser cargado en memoria ...
Multiprogramación con particiones variables Implementación con Listas/BitsMaps
Multiprogramación con particiones variables Estrategias para la asignación de memoria • Primer Ajuste (first fit): • Se asigna el primer espacio • que sea mayor al tamaño deseado
Multiprogramación con particiones variables Estrategias para la asignación de memoria • Mejor Ajuste (best fit): • Se asigna el espacio cuyo tamaño exceda en la menor cantidad al tamaño deseado. • - Requiere de una búsqueda exhaustiva. • - Mayor fragmentación externa. • - Tiende a llenar con trozos de memoria • pequeños.
Multiprogramación con particiones variables Estrategias para la asignación de memoria • Peor Ajuste (worst fit): • Se asigna un espacio de memoria cuyo tamaño exceda en la mayor cantidad al tamaño deseado. • - Requiere de una búsqueda exhaustiva. • - Genera la mayor fragmentación interna
Multiprogramación con particiones variables Administración de memoria insuficiente • Compactación de memoria: • Es una fusión de bloques adyacentes para formar un sólo bloque más grande.
Multiprogramación con particiones variables Estrategias para la asignación de memoria Compactación de memoria:
Multiprogramación con particiones variables Estrategias para la asignación de memoria • Swapping: • Se puede crear un nuevo espacio de memoria eliminando uno de los procesos residentes y temporalmente enviarlos a almacenamiento secundario.