Gestión de memoria del sistema operativo

A continuación se describe principalmente el proceso de asignación de memoria.

1. La historia del desarrollo de la gestión de la memoria

1.1 Era de DOS de un solo proceso

Era de DOS: solo se puede ejecutar un proceso al mismo tiempo,
inicio de Windows9x de un solo proceso , se pueden cargar varios procesos en la memoria
.
Causa el problema: la memoria está a punto de estallar y se
molesta entre sí
Inserte la descripción de la imagen aquí

1.2 Gestión de la memoria

Para resolver los problemas mencionados anteriormente, se introduce el sistema de gestión de memoria actual: uso de direcciones virtuales, carga de paginación y direccionamiento con una combinación de software y hardware.

1.2.1 Resuelve la explosión de la memoria

Paginar la memoria (la memoria no es suficiente), dividir la memoria en marcos de página de tamaño fijo (4K), dividir el programa (en el disco duro) en bloques de 4K, qué bloque se utiliza, qué bloque se carga y durante el proceso de carga, si la memoria ya está Cuando esté llena, el bloque menos utilizado se colocará en la partición de intercambio y se cargará el último bloque (algoritmo LRU)

Por ejemplo, cuando se ejecuta QQ.exe, se registra su tabla de páginas, y cuando se ejecuta, qué página de la tabla de páginas se utiliza, la página se carga en la memoria.
Durante el proceso de carga, si la memoria está llena, el bloque menos utilizado se colocará en la partición de intercambio (partición de intercambio de Linux) y se cargará el último bloque (algoritmo LRU).
Inserte la descripción de la imagen aquí
Casi todo lo que implica el almacenamiento en caché utiliza el algoritmo LRU (menos usado recientemente) o LFU.

Cómo diseñar el mecanismo de caché LFU para admitir la obtención de datos y la escritura de datos O (1) complejidad:
si es una matriz, cada elemento guarda la marca de tiempo, si lo verifica nuevamente, la complejidad es O (n)
si usa una sola lista enlazada, el usado más recientemente Agregado a la cola, la cabeza es definitivamente el menos usado Cuando se vuelve a utilizar uno de ellos, es necesario mover la posición. Se trata de operaciones de puntero O (1), pero la búsqueda de un determinado elemento sigue siendo O (n).
Mejorado: utilizar la tabla hash de hashmap (garantizar la operación de búsqueda O (1) )) + Lista doblemente enlazada (la lista enlazada garantiza la operación de clasificación y la nueva operación O (1), la lista doblemente enlazada garantiza que el bloque al que apunta el puntero izquierdo del bloque del elemento encontrado puede apuntar al bloque derecho), el LinkedHashMap de java implementa el almacenamiento en caché de esta manera
Inserte la descripción de la imagen aquí

1.2.2 Resolver el problema de la perturbación mutua

Memoria virtual
Para asegurarse de que no se afecten entre sí, deje que los procesos funcionen en el espacio virtual, la dirección de espacio utilizada en el programa ya no es una dirección física directa, sino una dirección virtual. De esta manera, el proceso A nunca puede acceder el espacio del proceso B.
Tamaño del espacio virtual: observe el espacio de direccionamiento: sistema de 64 bits 2 ^ 64, sistema de 32 bits 2 ^ 32 (expresado 2 ^ 32 direcciones de memoria diferentes), y cada dirección puede almacenar datos de 8 bits, es decir, la unidad es un byte
estación Desde la perspectiva del espacio virtual, el proceso es exclusivo de todo el sistema + CPU

Segmentación del espacio virtual, paginación de segmentos, ¿qué página debe cargarse en el marco de la página?
Inserte la descripción de la imagen aquí
La dirección virtual utilizada por el programa, cómo se asigna a la dirección física:
desplazamiento (20 a continuación) + dirección base del segmento (1000 a continuación) = dirección lineal (espacio virtual) Después de
obtener la dirección lineal, use OS + MMU (Unidad de administración de memoria de hardware interno de la CPU)
Inserte la descripción de la imagen aquí
para comprender mejor
P1, P2, P3 y P4 a través de la siguiente figura. Los cuatro procesos piensan que están monopolizando el kernel completo, que en realidad es un sistema operativo compartido.
MMU asigna sus recursos de memoria a cada proceso.
Si la memoria está llena, utilice el algoritmo LRU para colocar las páginas menos utilizadas en el espacio de intercambio del disco duro.
Inserte la descripción de la imagen aquí
Cuando la interrupción de falla de página
está ejecutando una instrucción, si se encuentra que la página que debe usarse no está en la memoria, entonces la ejecución de la instrucción se detiene y se genera una excepción de falla de página (interrupción), que es procesada y cargada por el kernel Después de eso, la excepción causada por la instrucción original puede continuar ejecutándose sin generar una excepción.

Supongo que te gusta

Origin blog.csdn.net/qq_33873431/article/details/112003010
Recomendado
Clasificación