[Sistema operativo] Capítulo 3: Asignación continua de memoria (Parte2)

Problema de fragmentación de memoria

Cuando asignamos un espacio a un programa en ejecución, habrá algo de espacio libre que no se puede usar más. Ese fragmento, dividido en dos piezas (escombros exterior, residuo en el interior)
fragmentos exteriores: entre la unidad de asignación de memoria a no utilizar
el fragmento: inactivo ha sido asignado a la aplicación, pero la aplicación a la memoria uso no puede ser más
de dos Todos ellos son lo que intentamos evitar.
Inserte la descripción de la imagen aquí
Resuelva el problema de la fragmentación: ¡un método efectivo de asignación de memoria!
Desde la perspectiva del sistema operativo, ¿cuándo proporcionará la asignación continua de espacio? Debido a que el sistema operativo desea cargar la aplicación desde el disco duro en la memoria, de hecho, es necesario asignar un área continua en la memoria para permitir que el programa se ejecute; en otro caso, la aplicación accederá a los datos cuando la aplicación se esté ejecutando. En este momento, el sistema operativo debe proporcionar los datos Asignar espacio. Para este fin, el sistema operativo necesita administrar el espacio libre y no libre . Aquí, algunas estructuras de datos o algoritmos se utilizan para identificar cuáles son libres y cuáles no.
Algoritmo de asignación de memoria:
Inserte la descripción de la imagen aquí

Primer ajuste

Inserte la descripción de la imagen aquí
El amarillo indica espacio libre y el verde indica espacio no libre. Parece simple y fácil de entender, pero su implementación también requiere ciertas condiciones.
Requisitos:
1. Bloques libres de acuerdo con la secuencia de la tarjeta de dirección
2. La asignación necesita encontrar una partición adecuada
3. La redistribución necesita detectar el
proceso de asignación y debe considerarse el problema de reciclaje de memoria. Al reciclar, es necesario considerar si los bloques libres pueden fusionarse, porque una vez que se puede formar la fusión Los bloques de espacio más grandes pueden satisfacer más necesidades de aplicaciones
Ventajas: simple. Hay un gran espacio en la dirección alta.
Desventajas: es fácil formar escombros externos y tiene incertidumbre.

Mejor ajuste

Inserte la descripción de la imagen aquí
Los bloques libres se asignan de acuerdo con el tamaño más adecuado y más cercano a la solicitud de asignación.
1. Bloques libres de acuerdo con la secuencia de la tarjeta de dirección
2. La asignación necesita encontrar una partición adecuada
3. La redistribución necesita ser detectada
Ventajas: relativamente simple. Es muy eficaz cuando la mayor parte de la asignación es de tamaño pequeño
Desventajas: el problema de la fragmentación externa sigue siendo grave. Reasignación lenta. Es fácil producir muchos fragmentos pequeños inútiles que afectan la gestión posterior.

Peor ajuste peor ajuste

Inserte la descripción de la imagen aquí
Según la diferencia de tamaño más grande, este tipo de adaptación puede convertir bloques grandes en bloques pequeños y mantener los bloques pequeños tanto como sea posible. El principio es que los desechos externos son grandes, y existe una alta probabilidad de que los desechos puedan continuar siendo utilizados.
1. Bloques libres de acuerdo con la secuencia de la tarjeta de dirección
2. La asignación necesita encontrar una partición adecuada
3. La redistribución necesita ser detectada
Ventajas: En términos generales, la velocidad de asignación es relativamente rápida, las solicitudes de asignación de unión son medianas y grandes, y el efecto es mejor.
Desventajas: redistribución lenta; Fragmentación externa; dividir grandes bloques libres hace que se asignen bloques grandes en el futuro

En resumen: los tres métodos de asignación no son los mejores, solo son aplicables según la situación.
Entonces necesitamos un poco de manejo de escombros

Desfragmentación comprimida

Inserte la descripción de la imagen aquí
Estos son los problemas:
1. La esencia del proceso de fusión y movimiento del proceso es en realidad el proceso de copiar la memoria (la sobrecarga es relativamente grande). Sin embargo, no se puede mover durante la ejecución del programa, por lo que debe esperar hasta que el programa esté inactivo para manejarlo.
2. ¿Cuánto cuesta moverse a una posición ideal? Estos son problemas que deben considerarse.

Desfragmentación de intercambio

Inserte la descripción de la imagen aquí
Propósito: Aproveche al máximo el disco duro y considere el disco duro como una copia de seguridad de la memoria.
Ahora hay cuatro programas, de los cuales P3 se está ejecutando, lo que significa que P1P2P4 está esperando ser ejecutado en la memoria. Si P3 repentinamente necesita más memoria durante la ejecución, pero P124 ya ha llenado el espacio de la memoria y necesita ser reemplazado . P4 está esperando que ocurra un evento y el tiempo de espera es relativamente largo. Por esta razón, movemos el espacio ocupado por P4 al disco duro, para que el espacio se libere en la memoria. En este momento, P3 continúa ejecutándose normalmente usando los bloques libres liberados.
El problema aquí es: 1. Cuándo realizar operaciones de intercambio e intercambio 2. Qué programa se selecciona para intercambiar espacio
Por otro lado, la granularidad de intercambio e intercambio se basa en el tamaño de un solo programa, es decir, si el programa en sí se compara Grande, entonces la sobrecarga de intercambio dentro y fuera también es muy grande.
Entonces, ¿cómo gestionar y optimizar? Esto se explicará en detalle en el seguimiento [Virtual Storage Management], aquí solo entendemos estos dos métodos de asignación.

Publicado 10 artículos originales · ganó 3 · vistas 289

Supongo que te gusta

Origin blog.csdn.net/Chahot/article/details/105465093
Recomendado
Clasificación