Fragmentación externa y fragmentación interna
La fragmentación interna
es un bloque de almacenamiento dentro del área de memoria asignada por el sistema operativo para los procesos de carga. Los procesos que ocupan estas áreas o páginas no utilizan estos bloques de memoria. Cuando un proceso ocupa el bloque de almacenamiento, el sistema no puede utilizar el bloque de almacenamiento. El sistema no puede utilizar el bloque de almacenamiento hasta que el proceso lo libere o el proceso finalice.
Fragmentación externa
La fragmentación externa se refiere a áreas de memoria libres que aún no han sido asignadas (y no pertenecen a ningún proceso), pero que son demasiado pequeñas para asignarse a nuevos procesos que lo soliciten. espacio de memoria.
La fragmentación externa es un bloque de memoria libre ubicado entre dos regiones o páginas asignadas. La suma de estos bloques de almacenamiento puede cumplir con el requisito de longitud de la solicitud actual, pero sus direcciones son discontinuas u otras razones impiden que el sistema cumpla con la solicitud actual.
Se produce fragmentación interna: debido a que todas las asignaciones de memoria deben comenzar desde una dirección divisible por 4, 8 o 16 (según la arquitectura del procesador), o debido a limitaciones del mecanismo de paginación de la MMU, el algoritmo de asignación de memoria sólo Capacidad para asignar bloques de memoria de tamaños predefinidos a los clientes. Supongamos que cuando un cliente solicita un bloque de memoria de 43 bytes, puede obtener un bloque de memoria un poco más grande de 44 bytes, 48 bytes, etc., ya que no hay memoria del tamaño adecuado.
La generación de fragmentación externa: la asignación y el reciclaje frecuentes de páginas físicas darán lugar a una gran cantidad de páginas pequeñas consecutivas intercaladas en las páginas asignadas, generando así fragmentación externa. Supongamos que hay un espacio de memoria libre contiguo de 100 celdas en el rango 0 99, si le solicita un bloque de memoria, digamos 10 celdas, entonces el bloque de memoria solicitado estará en el rango 0 9. En este momento, continúa solicitando un bloque de memoria, como un bloque de memoria grande de 5 unidades, y el bloque de memoria obtenido por el segundo bloque de memoria debe estar en el rango de 10 14. Si libera el primer bloque de memoria y luego solicita un bloque de memoria mayor de 10 unidades, digamos 20 unidades. Dado que el bloque de memoria recién liberado no puede satisfacer la nueva solicitud, solo se puede asignar un bloque de memoria de 20 unidades comenzando en 15. Ahora el estado de todo el espacio de memoria es 0 9 libre, 10 14 ocupado, 15 24 ocupado y 25 99 libre. donde 0 9 es ahora un segmento de memoria. Si 10 14 permanece ocupado y todas las solicitudes de espacio futuras son mayores que 10 unidades, entonces 0 9 nunca se utilizará y se convertirá en un fragmento externo.
?
¿Usar el algoritmo de amigos para analizar fragmentos externos?
¿Usar el algoritmo de placa para analizar fragmentos internos?