Gestión de memoriaGestión de memoria
Gestión de memoriaGestión de memoria
• Consiste en la subdivisión de la memoria
para incorporar varios procesos que
compitan por el uso de la CPU.
• Es necesario repartir eficientemente la
memoria para introducir tantos procesos
como sea posible.
Requisitos de la gestión de memoriaRequisitos de la gestión de memoria
Reubicación
o Cuando Proceso suspendido es reingresado a memoria, puede que ubicación distinta a la anterior (reubicación).
o Se deben traducir las referencias a la memoria encontradas en el código del programa a las direcciones físicas reales.
Requisitos de la gestión de Requisitos de la gestión de memoriamemoria
ProtecciónProtección
o El código de un proceso no puede hacer referencia a posiciones de memoria de otros procesos sin permiso.
o Antes de que un proceso acceda a buscar una instrucción o un dato debe comprobarse si tiene el acceso permitido
Requisitos de la gestión de memoriaRequisitos de la gestión de memoria
o CompartimientoCompartimiento:
o Permite el acceso de varios procesos a la misma zona de la memoria principal.
o Es mejor permitir a cada proceso que acceda a la misma copia del programa, en lugar de tener cada uno su propia copia aparte.
Requisitos de la gestión de memoriaRequisitos de la gestión de memoria
Organización lógicaOrganización lógica:o La mayoría de los programas se organizan
en módulos.o Los módulos pueden escribirse y
compilarse independientemente.o Pueden otorgarse distintos grados de
protección (sólo lectura, sólo ejecución) a los módulos.
o Compartir módulos.
Requisitos de la gestión de memoriaRequisitos de la gestión de memoria
Organización físicaOrganización física:
o La memoria disponible para un programa y sus datos puede ser insuficiente:
oLa superposición permite que varios módulos sean asignados a la misma región de memoria.
o El programador no conoce cuánto espacio habrá disponible.
Particiones estáticas
• Particiones de igual tamaño:– Cualquier proceso cuyo tamaño sea menor o
igual que el tamaño de la partición puede cargarse en cualquier partición libre.
– Si todas las particiones están ocupadas, el sistema operativo puede sacar un proceso de una partición.
– Un programa puede que no se ajuste a una partición. El programador debe diseñar el programa mediante superposiciones.
Particiones estáticas
• El uso de la memoria principal es ineficiente. Cualquier programa, sin importar lo pequeño que sea, ocupará una partición completa. Este fenómeno se denomina fragmentación interna.
Sistema operativo
8M
Sistema operativo
8M
(a) Particiones de igual tamaño (a) Particiones de distinto tamaño
Figura 7.2. Ejemplo de partición estática en una memoria de 64Mb.
8M
8M
8M
8M
8M
8M
8M
2M
4M
6M
8M
8M
12M
16M
Algoritmo de ubicación con particiones
• Particiones de igual tamaño:– Puesto que todas las particiones son de igual
tamaño, no importa la partición que se use.
• Particiones de distintos tamaños:– Pueden asignar cada proceso a la partición más
pequeña en la que quepa. – Hace falta una cola para cada partición.– Los procesos están asignados de forma que se
minimiza la memoria desaprovechada dentro de cada partición.
Sistema
operativo
Sistema
operativo
Procesos
nuevosProcesos
nuevos
(a) Una cola de procesos por partición (b) Cola única de procesos
Figura 7.3. Asignación de memoria en partición estática.
Particiones dinámicas
• Las particiones son variables en número y longitud.
• Al proceso se le asigna exactamente tanta memoria como necesite.
• Finalmente, hay varios huecos en la memoria. Este fenómeno se denomina fragmentación externa.
• Se debe usar la compactación para desplazar los procesos que estén contiguos, de forma que toda la memoria libre quede junta en un bloque.
Sistema
operativo
Sistema
operativo
Sistema
operativo
Sistema
operativo
Proceso 1 Proceso 1Proceso 1
Proceso 2 Proceso 2
Proceso 3
Figura 7.4. Efectos de la partición dinámica.
8M
56M
20M 20M 20M
36M
14M 14M
22M 18M
4M
(a) (b) (c) (d)
Figura 7.4. Efectos de la partición dinámica.
Sistema
operativo
Sistema
operativo
Sistema
operativo
Sistema
operativo
Proceso 1 Proceso 1
Proceso 3 Proceso 3Proceso 3Proceso 3
Proceso 4 Proceso 4Proceso 4
Proceso 220M20M 20M
14M
18M
4M
8M
6M
18M
4M 4M
18M
6M
8M 8M
6M
6M
18M
14M
4M
(e) (f) (g) (h)
Algoritmo de ubicación con particiones dinámicas
• El sistema operativo debe decidir qué bloque libre se tiene que asignar al proceso.
• Algoritmo del mejor ajuste (best-fit):– Elige el bloque de tamaño más próximo al
solicitado. – Proporciona en general los peores resultados. – Puesto que este algoritmo busca el hueco más
pequeño para el proceso, garantiza que el fragmento que se deja es lo más pequeño posible y, por lo tanto, se debe compactar más frecuentemente.
Algoritmo de ubicación con particiones dinámicas
• Algoritmo del primer ajuste (first-fit):– Es más rápido.– Puede tener varios procesos cargados en el
extremo inicial de la memoria que es necesario recorrer cuando se intente encontrar un bloque libre.
Algoritmo de ubicación con particiones dinámicas
• Algoritmo del siguiente ajuste (next-fit):– Lleva frecuentemente a la asignación de un
bloque de memoria de la última ubicación, donde se encuentra el bloque más grande.
– El bloque de memoria más grande se divide en fragmentos pequeños.
– Hará falta la compactación para obtener un bloque de memoria grande al final del espacio de memoria.
Último bloque asignado (14K)
Primer ajuste
Mejor ajuste
Bloque asignado
Bloque libre
Siguiente ajuste
(a) Antes (b) Después
Figura 7.5. Ejemplo de una configuración de memoria antes y después de asignar un bloque de 16 Mbytes.
8M 8M
12M 12M
22M
18M
8M 8M
6M 6M
6M
2M
14M
36M
14M
20M
Sistema de colegas
• El espacio entero disponible para la asignación se trata como un solo bloque de tamaño 2U.
• Si se hace una solicitud de tamaño s tal que 2U-1 < s <= 2U, entonces el bloque entero se asigna:– En otro caso, el bloque se divide en dos
colegas de igual tamaño. – Este proceso continúa hasta que el bloque más
pequeño sea mayor o igual que s generándose.
1 bloque de 1 megabyte
Solicitud de 100K
Solicitud de 240K
Solicitud de 64K
Solicitud de 256K
Solicitud de 75K
Liberación de B
Liberación de A
Liberación de C
Liberación de E
Liberación de D
Figura 7.6. Ejemplo del sistema de colegas.
Figura 7.7. Representación en árbol del sistema de colegas.
Reubicación
• Cuando el proceso se carga en la memoria, se determina la ubicación real (absoluta) de la memoria.
• Un proceso puede ocupar diferentes particiones, lo que significa diferentes posiciones absolutas de la memoria durante su ejecución (a partir de la carga).
• La compactación también hará que un programa ocupe una partición distinta, lo que significa que las ubicaciones absolutas de la memoria cambien.
Direcciones
• Dirección lógica:
– Es una referencia a una posición de memoria independiente de la asignación actual de datos a la memoria.
– Se debe hacer una traducción a una dirección física.
• Dirección relativa:
– La dirección se expresa como una posición relativa a algún punto conocido.
• Dirección física:
– La dirección absoluta o la posición real en la memoria principal.
Dirección relativa
Direcciónabsoluta
Interrupción al sistema operativo
Registro base
Registro límite
Sumador
Comparador
Programa
Datos
Pila
Bloque de control de proceso
Imagen de un procesoen la memoria
principal
Figura 7.8. Soporte de hardware para la reubicación.
Registros utilizados durante la ejecución
• Registro base:– Se carga con la dirección en la memoria
principal del proceso.
• Registro límite:– Indica la posición final del programa.
• Estos valores deben asignarse cuando se carga el programa y cuando se carga el proceso.
Registros utilizados durante la ejecución
• Se añade el valor del registro base a la dirección relativa para obtener una dirección absoluta.
• La dirección obtenida se compara con el valor del registro límite.
• Si la dirección no está dentro de los límites, se generará una interrupción en el sistema operativo.
Paginación• La memoria principal se encuentra dividida en
trozos iguales de tamaño fijo y cada proceso en pequeños trozos de tamaño fijo.
• Los trozos del proceso se denominan páginas y los trozos libres de memoria se denominan marcos.
• El sistema operativo mantiene una tabla de páginas para cada proceso:– Muestra la posición del marco de cada página
del proceso. – La dirección de la memoria consta de un
número de página y de un desplazamiento dentro de la página.
Memoria principal Memoria principal Memoria principalNúmero de marco
(a) Quince marcos libres (b) Carga del proceso A (c) Carga del proceso B
Figura 7.9. Asignación de páginas de procesos a marcos libres.
Memoria principal Memoria principalMemoria principal
(d) Carga del proceso C (e) Descarga del proceso B (f) Carga del proceso D
Figura 7.9. Asignación de páginas de procesos a marcos libres.
Page Tables for ExampleTablas de páginas
Tabla de
páginas del
proceso A
Tabla de
páginas del
proceso B
Tabla de
páginas del
proceso CTabla de
páginas del
proceso D
Lista de
marcos
libres
Figura 7.10. Estructuras de datos para el ejemplo de la Figura 7.9 en el instante de tiempo (f).
Segmentación
• No es necesario que todos los segmentos de todos los programas tengan la misma longitud.
• Existe una longitud máxima de segmento.• Un dirección lógica segmentada consta de
dos partes, un número de segmento y un desplazamiento.
• Como consecuencia del empleo de segmentos de distinto tamaño, la segmentación resulta similar a la partición dinámica.
Top Related