Revisión del examen del sistema operativo: Capítulo 4 Gestión de la memoria 4.1 4.2

Jerarquía de memoria:

Estructura de memoria multicapa:

La memoria se divide en al menos tres niveles: registros de la CPU, memoria principal y memoria auxiliar.

Pero generalmente se divide en seis capas : registros, caché, memoria principal, caché de disco, disco fijo y medios de almacenamiento extraíbles.

La velocidad de estas piezas disminuye pero la capacidad de almacenamiento aumenta .

 Sólo la información almacenada en discos fijos y medios de almacenamiento extraíbles se conservará durante mucho tiempo y la información almacenada no desaparecerá cuando se corte la energía. La información de registros, caché, memoria principal y caché del disco no se guardará después del apagado. Los registros y las cachés también se denominan memoria ejecutable.

Memoria principal y registros.

  1. memoria principal.
    La memoria principal se denomina memoria o memoria principal. Dado que la velocidad de acceso a la memoria principal es mucho menor que la velocidad de la CPU al ejecutar instrucciones, para paliar esta contradicción se introdujeron registros y cachés en el sistema informático.
  2. registro.
    Los registros tienen la misma velocidad que el procesador. Es rápido pero caro, por lo que la capacidad es baja. Se utiliza principalmente para almacenar datos cuando el procesador está en ejecución. Por ejemplo, los registros se utilizan para almacenar operandos o como registros de direcciones para acelerar la conversión de direcciones, etc.

Caché y caché de disco

1. caché

El caché es una memoria entre registros y memoria y se utiliza principalmente para realizar copias de seguridad de los datos más utilizados en la memoria principal. Su capacidad es mucho mayor que la de un registro, pero entre dos y tres órdenes de magnitud menor que la de una memoria.
De acuerdo con el principio de localidad de ejecución del programa (es decir, el programa mostrará reglas de localidad cuando se ejecute, y la ejecución del programa solo se limita a una determinada parte en un corto período de tiempo), parte de la información a la que se accede con frecuencia en el archivo principal la memoria se almacena en En caché. Cuando la CPU accede a un conjunto específico de información, primero verifica si está en el caché y luego lo saca para usarlo directamente; de ​​lo contrario, lo lee de la memoria principal.

2. Caché de disco

Dado que la velocidad de E/S actual del disco es mucho menor que la velocidad de acceso a la memoria principal, para aliviar la contradicción en la falta de coincidencia de velocidad entre los dos. Por lo tanto, almacenar temporalmente algunos datos e información del disco de uso frecuente en la memoria caché del disco puede reducir la cantidad de accesos al disco. Sin embargo, el caché de disco es diferente del caché: no es un medio de almacenamiento real en sí mismo, sino que utiliza parte del espacio de almacenamiento en la memoria principal para almacenar temporalmente la información leída (o escrita) del disco.

Carga y vinculación de programas:

Para ejecutar un programa de usuario en el sistema, primero debe cargarse en la memoria y luego convertirse en un programa ejecutable, lo que generalmente requiere los siguientes pasos: 1) Compilación: el compilador compila el código fuente del usuario en varios módulos de destino
.
2) Vinculación: El vinculador vincula un conjunto de módulos de objetos compilados y las funciones de biblioteca que requieren para formar un módulo de carga completo.
3) Cargando, el programa de carga carga el módulo de carga en la memoria.

Carga del programa:

1. Método de carga absoluta:

Este método se puede utilizar cuando sólo se puede ejecutar un único programa . Una vez cargado el módulo de carga en la memoria, la dirección lógica del programa es exactamente la misma que la dirección de memoria real.

2. Método de carga reubicable

Usando el método de carga reubicable, el módulo de carga se carga en la ubicación apropiada en la memoria de acuerdo con la situación actual de la memoria. Vale la pena señalar que cuando un módulo de carga se carga en la memoria mediante un cargador reubicable, todas las direcciones lógicas en el módulo de carga serán diferentes de las direcciones físicas realmente cargadas en la memoria. Por lo general, el proceso de modificar las instrucciones y direcciones de datos en el programa de destino durante la carga se denomina reubicación. Y debido a que la transformación de la dirección generalmente se completa una vez durante la carga y no cambiará más adelante, se llama reubicación estática.

3. Método de carga del tiempo de ejecución dinámico.

El cargador de tiempo de ejecución dinámico no convierte inmediatamente la dirección relativa en el módulo de carga en una dirección absoluta después de cargar el módulo de carga en la memoria, sino que pospone esta conversión de dirección hasta que el programa se ejecuta realmente. Por lo tanto, todas las direcciones después de cargarlas en la memoria siguen siendo direcciones relativas. Para que la traducción de direcciones no afecte la velocidad de ejecución de las instrucciones, este método requiere el soporte de un registro de reubicación.

Enlace del programa:

1. Enlace estático

Antes de ejecutar el programa, cada módulo de destino y las funciones de biblioteca que requieren están vinculados a un módulo de ensamblaje completo y no se desmontarán en el futuro. Al ensamblar estos módulos de destino en un módulo de carga, se deben resolver los dos problemas siguientes:
1) Modificar la dirección relativa. Esto se debe a que en todos los módulos de destino generados por el compilador, se utilizan direcciones relativas y sus direcciones iniciales son 0. La dirección en cada módulo se calcula en relación con la dirección inicial.
2) Cambiar el símbolo de llamada externa. Los símbolos de llamada externa utilizados en cada módulo también se convierten en direcciones relativas.
Un módulo de carga completo formado por este primer enlace también se denomina archivo ejecutable.

2. Enlace dinámico durante la carga

Se refiere al módulo de objeto obtenido después de compilar el programa fuente del usuario. Al cargar en la memoria, se utiliza el método de enlace para cargar y vincular al mismo tiempo . Esto facilita la modificación y actualización antes de la carga, así como el intercambio de módulos de destino.

3. Enlace dinámico en tiempo de ejecución

La vinculación de ciertos módulos se pospone hasta que se ejecuta el programa , es decir, durante el proceso de ejecución, cuando se descubre que un módulo llamado no se ha cargado en la memoria, el sistema operativo inmediatamente encontrará el módulo y lo cargará en la memoria. Vincúlelo al módulo de llamada. Cualquier módulo de destino que no se utilice durante la ejecución no se transferirá a la memoria ni se vinculará al módulo de carga, lo que no solo acelerará el proceso de carga del programa, sino que también ahorrará mucho espacio en la memoria.

Supongo que te gusta

Origin blog.csdn.net/m0_53345417/article/details/130534041
Recomendado
Clasificación