Revisión final del sistema operativo: administración de memoria de clase diez (1)

1. Principios básicos y requisitos de la gestión de memoria

1) Definición de gestión de memoria
La división y asignación dinámica de memoria por parte del sistema operativo es el concepto de gestión de memoria.

2) Funciones de gestión de memoria
(1) Asignación y recuperación de espacio de memoria: La asignación y recuperación de la memoria principal la completa el sistema operativo, que es transparente para los programadores.
(2) Traducción de direcciones: Convierta direcciones lógicas en direcciones físicas reales.
(3) Expansión del espacio de memoria: use tecnología de almacenamiento virtual o tecnología de superposición automática para expandir lógicamente la memoria.
(4) Protección del almacenamiento: asegúrese de que cada trabajo se ejecute en su propio espacio de almacenamiento sin interferir entre sí.

3) Carga y vinculación del programa Para
crear un proceso, primero se deben cargar el programa y los datos en la memoria, y el programa fuente del usuario se puede convertir en un programa que se puede ejecutar en la memoria.
(1) Descripción del paso:
Compilar: Compilar el código fuente del usuario en varios módulos de destino por parte del compilador . Vinculación
: el conjunto compilado de módulos de objetos y las funciones de biblioteca requeridas se vinculan entre sí mediante el vinculador para formar un módulo de carga completo. Cargando: El cargador carga el módulo de carga en la memoria para ejecutarlo. (2) El método de vinculación del programa Vinculación estática : antes de que se ejecute el programa, los módulos de destino y sus funciones de biblioteca requeridas se vinculan a un programa ejecutable y luego no se desarmarán. Vinculación dinámica durante la carga : al cargar un conjunto de módulos de destino obtenidos después de la compilación, se vinculan mientras se cargan. Enlace dinámico en tiempo de ejecución : el enlace de ciertos módulos de destino se realiza cuando se necesita el módulo de destino durante la ejecución del programa. Es conveniente modificar y actualizar y realizar el intercambio de módulos de destino.

inserte la descripción de la imagen aquí



(3) El método de carga en la memoria
está absolutamente cargado : la dirección específica de la memoria que se cargará en el programa se conoce en tiempo de compilación y el compilador generará el código objeto de la dirección absoluta. Luego, cargue el programa y los datos en la memoria, que solo es aplicable al entorno de un solo programa.
Carga reubicable : en un entorno de programación múltiple, las direcciones de inicio de varios módulos de destino comienzan en 0. Al cargar en la memoria, la dirección se transforma dinámicamente a través de la dirección de inicio de la memoria asignada más la dirección relativa en el programa, y ​​se completa de una vez, lo que también se denomina reubicación estática. (Debe cargarse todo a la vez y no puede expandirse ni moverse dinámicamente durante la operación).
Carga dinámica en tiempo de ejecución : después de que el módulo cargado se carga en la memoria, la traducción de direcciones no se realiza de inmediato, sino que espera hasta que se ejecuta el programa. Necesita el soporte de registros de reubicación (el programa se puede dividir en áreas de almacenamiento discontinuas, solo se debe cargar una parte del código antes de que se ejecute el programa, y ​​la memoria se asigna dinámicamente de acuerdo con las necesidades durante la ejecución, lo cual es conveniente para el intercambio de segmentos de programas, y puede proporcionar a los usuarios una relación de almacenamiento de espacio de direcciones mucho mayor).
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
(4) Espacio de direcciones lógicas y espacio de direcciones físicas
Espacio de direcciones lógicas: después de compilar el programa, cada módulo comienza a direccionarse con 0, que se denomina la dirección lógica del módulo de destino. Al vincular a un programa de destino ejecutable completo, el vinculador comenzará a direccionar con 0 para construir un espacio de direcciones lógicas unificadas.
Espacio de direcciones físicas: una colección de unidades físicas en la memoria, que es la dirección final de la traducción de direcciones. Cuando el cargador carga el código ejecutable en la memoria, debe convertir las direcciones lógicas en direcciones físicas.

(5) Protección de memoria
Antes de la asignación de memoria, es necesario proteger el sistema operativo de los procesos de usuario y proteger los procesos de usuario de otros procesos de usuario.

Dos formas de protección de la memoria:
a. Configure un par de registros de límite superior e inferior en la CPU para almacenar las direcciones de límite superior e inferior de los trabajos de usuario en la memoria principal. Cada vez que la CPU desea acceder a una dirección, primero juzga si los registros de límite superior e inferior están Acceso fuera de límites.
b.Utilice registros de reubicación y registros de límite de longitud para realizar esta protección. El registro de reubicación contiene la dirección física más pequeña y el registro de límite contiene la dirección lógica más grande . (Nota: una es la dirección física más pequeña y la otra es la dirección lógica más grande) al realizar el acceso a la memoria, primero determine si la dirección lógica es mayor que el valor del registro límite, si no, agregue el valor del registro de reubicación para asignarlo a una dirección física y luego realice el acceso a la memoria.

inserte la descripción de la imagen aquí

2. Superposición e intercambio

La sobrescritura y el intercambio son dos métodos para expandir la memoria en un entorno de multiprogramación.

1) Superposición
En el sistema inicial, la memoria principal era pequeña y solo se almacenaba un programa de usuario, pero a veces sucedía que el espacio de almacenamiento no cabía en el proceso del usuario. Este problema se puede resolver con la tecnología de superposición.
== La idea de cubrir la tecnología: == Dividir el programa en múltiples segmentos (múltiples módulos). Los segmentos de uso común residen en la memoria y los segmentos de uso poco frecuente se cargan en la memoria cuando se necesitan.
Divida la memoria en un área fija y varias áreas superpuestas. El área fija almacena las partes frecuentemente activas del programa de usuario. Después de llamarlo, no se llamará (a menos que finalice la operación), y las partes restantes se segmentan según a la relación de llamada Póngalo en el área de cobertura, llámelo a la memoria cuando necesite ser usado, y llámelo fuera de la memoria cuando no sea necesario. Otros se colocan en almacenamiento externo y, antes de que sea necesario llamarlos, el sistema los transfiere al área de cobertura para reemplazar el segmento original.
La estructura de anulación debe ser declarada por el programador y el sistema operativo lo hace automáticamente.
inserte la descripción de la imagen aquí
Desventajas: es opaco para los usuarios, lo que aumenta la carga de la programación del usuario, y la tecnología de superposición solo se usa en los primeros sistemas operativos.


2) La idea básica de intercambio: elimine el proceso que está en estado de espera o el proceso que está privado de autoridad de ejecución por la CPU de la memoria al almacenamiento auxiliar, este proceso se denomina intercambio; mueva el proceso que está listo para competir por la CPU desde el almacenamiento auxiliar hasta la memoria .
El estado del proceso que se intercambia temporalmente fuera de la memoria externa y espera es el estado suspendido (estado suspendido).
El estado suspendido se puede subdividir en dos estados: listo suspendido y bloqueado suspendido.
inserte la descripción de la imagen aquí
(1) En el sistema operativo con función de intercambio, el espacio en disco generalmente se divide en dos partes: el área de archivo y el área de intercambio. El área de archivo se usa principalmente para almacenar archivos y persigue principalmente la tasa de utilización del espacio de almacenamiento . Por lo tanto, la gestión del espacio del área de archivos adopta el método de distribución discreta;

Método de asignación discreta :
1. Método de gestión de almacenamiento paginado
2. Método de gestión de almacenamiento segmentado
3. Método de gestión de almacenamiento de página segmentado

El espacio de intercambio ocupa solo una pequeña parte del espacio del disco, y los datos del proceso que se intercambian se almacenan en el área de intercambio. Dado que la velocidad del intercambio afecta directamente la velocidad general del sistema, la administración del espacio de intercambio es principalmente para intercambiar en la velocidad de intercambio, por lo que el área de intercambio generalmente se asigna de forma continua. En resumen, la velocidad de E/S del acoplamiento es más rápida que la del área de archivos.

Método de asignación continua :
asignación continua única
, asignación de partición fija,
asignación de partición dinámica,
asignación de partición reubicable dinámica

(2) El intercambio generalmente se ejecuta cuando se ejecutan muchos procesos y la memoria es escasa, y se detiene cuando disminuye la carga del sistema. Por ejemplo, cuando se encuentra que muchos procesos se están ejecutando con fallas de página, significa que la memoria es escasa. En este momento, algunos procesos se pueden intercambiar. Si las fallas de página se reducen significativamente, el intercambio se puede pausar.
(3) Los procesos bloqueados se pueden cambiar primero: los procesos de baja prioridad se pueden cambiar; para evitar que los procesos de baja prioridad se cambien rápidamente después de transferirlos a la memoria, algunos sistemas también consideran el estado residente de los procesos en la memoria .Dejar tiempo.
(Tenga en cuenta que la PCB residirá en la memoria y no se cambiará de la memoria externa)
inserte la descripción de la imagen aquí

Je suppose que tu aimes

Origine blog.csdn.net/weixin_52030647/article/details/130905403
conseillé
Classement