Principios del sistema operativo Capítulo 8 Administración de la memoria

Principios del sistema operativo para estudiantes universitarios Registro de aprendizaje
Registro de aprendizaje Cubo familiar

8.1 Antecedentes de la gestión de la memoria

8.1.1 Hardware básico

Los programas deben estar cargados en la memoria para ser ejecutados

La única memoria a la que la CPU puede acceder directamente es la memoria caché principal y registra

Por lo general, se puede acceder a los registros en 1 (o menos) ciclo de reloj de la CPU, y los accesos a la memoria principal pueden tardar varios ciclos de reloj de la CPU en completarse.

Pausa de la CPU (bloqueo): al leer datos de la memoria, la CPU está inactiva

El caché se encuentra entre la memoria principal y los registros de la CPU para coordinar las diferencias de velocidad

Se requiere protección de la memoria para garantizar un funcionamiento correcto

Unidad de gestión de memoria MMU:

  • Hardware que asigna direcciones virtuales a direcciones físicas

  • Es la línea de control utilizada por la CPU para administrar la memoria.

  • En la estrategia MMU, el valor en el registro base se agrega a cada dirección generada por un proceso de usuario cuando se lleva a la memoria.

  • El programa de usuario corresponde a la dirección lógica, y la dirección física nunca es visible para él.

Propósito de la gestión de la memoria

  • Mejorar la utilización de la memoria
  • Mejorar la velocidad de ejecución de instrucciones
  • Garantizar el funcionamiento seguro de las instrucciones.

Funciones de gestión de memoria:

  • asignación de memoria
  • recuperación de memoria
  • traducción de direcciones
  • protección de almacenamiento
  • expansión de memoria
  • compartir memoria

8.1.2 Direcciones lógicas y físicas

Dirección lógica Dirección lógica

  • Generado por la CPU

  • dirección relativa dentro del proceso

  • También conocido como: dirección virtual, dirección del programa

Dirección físicaDirección física

  • dirección de memoria

  • Toda la memoria se direcciona uniformemente

  • También conocido como: dirección absoluta, dirección real

8.1.3 Carga dinámica

El proceso no se carga antes de llamarlo, se carga cuando se usa

No requiere soporte especial del sistema operativo, y se puede realizar a través de la programación

Bibliotecas de vínculos dinámicos para Windows

8.1.4 Enlace dinámico

Vinculación dinámica : aquellos archivos objeto que componen el programa no se vinculan hasta que el programa está a punto de ejecutarse

  • La vinculación con varias bibliotecas se difiere hasta el momento de la ejecución

  • Necesita soporte técnico de carga dinámica

  • Se requiere soporte de sistema operativo

8.1.5 Posicionamiento de direcciones

Enlace de dirección (reubicación): cuando el programa se carga en la memoria, la dirección correspondiente en el programa

El proceso de convertir una dirección en una dirección absoluta en la memoria

Las instrucciones y los datos están vinculados a direcciones de memoria en tres etapas distintas:

Tiempo de compilación ( Tiempo de compilación )

  • Puede generar código absoluto si se conoce la ubicación de la memoria

  • Si la posición de inicio cambia, el código debe volver a compilarse

Tiempo de carga ( Tiempo de carga )

  • Si no se conoce la ubicación de almacenamiento en el momento de la compilación, se debe generar un código reubicable ( reubicable )

Tiempo de ejecución ( Tiempo de ejecución )

  • El enlace de direcciones se puede diferir hasta el tiempo de ejecución si la memoria se puede mover mientras se ejecuta el proceso

  • Requiere soporte de hardware para el mapeo de direcciones (por ejemplo, dirección base y registros de longitud limitada)

8.2 Asignación y recuperación de memoria

8.2.1 Asignación de memoria contigua

Asignar un espacio de memoria contiguo para un programa de usuario,

Clasificación:

  • asignación única contigua
  • asignación de partición fija
  • asignación de partición variable

asignación única contigua

Método de asignación: en un entorno de programa único, solo se instala un programa de usuario, es decir, el espacio de usuario de toda la memoria está ocupado exclusivamente por este programa

  • La administración de asignación de memoria es muy simple, baja utilización de memoria

  • Para SO de un solo usuario y una sola tarea

  • CP/M, MS-DOS, RT11

No se han tomado medidas de protección de la memoria

  • guardar hardware

  • La solución es factible

asignación de partición fija

El método de gestión de almacenamiento más antiguo y sencillo que puede ejecutar varios programas.

Divida el espacio de memoria principal asignable en varias áreas contiguas de antemano, lo que se denomina partición.

Cada partición puede ser del mismo tamaño o diferente. Pero el tamaño de la partición es fijo, cada partición puede instalar uno y solo un programa

Asignación de memoria: si hay una partición libre, se asigna al proceso

El método de partición:

  • El mismo tamaño de partición: falta de flexibilidad: el programa es demasiado grande, no se puede instalar; el programa es demasiado pequeño, una pérdida de memoria

    ​ También hay méritos, que se pueden usar en algunas ocasiones específicas: como una computadora que controla múltiples objetos del mismo tamaño

  • El tamaño de las particiones es diferente: varias particiones pequeñas, una cantidad moderada de particiones medianas y una pequeña cantidad de particiones grandes

asignación de partición variable

Particiones (agujeros, agujeros): bloques de memoria disponibles, particiones de diferentes tamaños se distribuyen por toda la memoria

Cuando entra un proceso, asigna memoria de una partición lo suficientemente grande como para contenerlo.

El sistema operativo contiene la siguiente información:

  • Partición asignada - Tabla de particiones asignadas

  • partición vacía - tabla de partición libre

Algoritmo de asignación:

  • Algoritmo de primer ajuste Primer ajuste: la asignación primero encuentra una partición libre adecuada
  • Algoritmo de mejor ajuste Mejor ajuste: busque en toda la lista y encuentre la partición más pequeña adecuada para la condición de asignación
  • Algoritmo de peor ajuste Peor ajuste: busque en toda la lista para encontrar la partición más grande para la asignación

recuperación de memoria

Cuatro situaciones posibles:

  • Antes y después de la partición recuperada son áreas libres, fusione estas tres particiones en una gran área libre
  • La ida y vuelta de la partición reclamada son áreas utilizadas, en este momento solo se puede reclamar la partición actual
  • La partición anterior de la partición recuperada es gratuita, y la última partición es el área utilizada, luego combine la partición actual y la partición anterior en un área libre grande
  • La última partición de la partición recuperada es gratuita, y la partición anterior es el área utilizada, luego combine la partición actual y la última partición en un área libre grande

fragmentos

Fragmentación externa: todo el espacio de memoria disponible se puede usar para satisfacer una solicitud, pero no es contiguo

Fragmentación interna: la memoria asignada puede ser un poco más grande que la memoria solicitada, la diferencia entre los dos está dentro de la partición, pero no se usa

Se puede compactar para reducir los desechos externos.

  • Combine pequeños fragmentos de memoria libre en un solo fragmento grande.

  • La compactación solo es posible cuando la reubicación es dinámica y la compactación se produce en el momento de la ejecución

8.2.2 Asignación de memoria discreta

gestión de páginas

El espacio de direcciones físicas del proceso puede no ser contiguo

  • Si hay memoria física disponible, se asignará al proceso.

Divide la memoria física en bloques de tamaño fijo llamados marcos

  • poder de 2

  • Temprano: 512 bytes a 8192 bytes

  • Ahora: 4K-64K

La memoria lógica también se divide en bloques del mismo tamaño, llamados páginas (Page)

El sistema mantiene un registro de todos los marcos inactivos

Para ejecutar un programa con un tamaño de N páginas, necesita encontrar N marcos vacíos para cargar el programa

Cree una tabla de páginas para convertir direcciones lógicas en direcciones físicas

Fragmentación dentro de la existencia

mecanismo de traducción de direcciones

Las direcciones de paginación se dividen en:

  • Número de página: contiene la dirección base de cada página en la dirección física, que se utiliza como número de índice de la tabla de páginas.
  • Desplazamiento de página: combinado con la dirección base, se utiliza para determinar la dirección de memoria física enviada al dispositivo de memoria

Soporte de hardware para paginación:

protección de la memoria

Método simple:
compare el número de página con el registro de límite de longitud de la tabla de páginas (PRLR)

La protección de la memoria se realiza mediante el bit de protección conectado con cada trama

Los bits válidos-no válidos se agregan a cada entrada en la tabla de páginas:

  • "Válido" significa que la página asociada está en el espacio de direcciones lógicas del proceso y es una página válida

  • "no válido" significa que la página no está en el espacio de direcciones lógicas del proceso

Bits válidos e inválidos en la tabla de páginas

8.3 Gestión de la estructura de la tabla de páginas

8.3.1 Tablas de páginas de dos niveles

Una dirección lógica se divide en (en una máquina de 32 bits con un tamaño de página de 4K)

  • un número de página de 20 dígitos

  • Un desplazamiento de página de 12 bits

Dado que la página donde se encuentra la tabla de páginas también está paginada, el número de página se divide en:

  • un número de página de 10 dígitos

  • Un desplazamiento de página de 10 bits

La dirección lógica se representa así de la siguiente manera:

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-CUU9MBiP-1641365161591) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Octavo Capítulo\Dirección lógica de paginación de dos niveles.png)]

mecanismo de traducción de direcciones

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-BKI6pCEz-1641365161593) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Eighth Chapter \Hardware de traducción de direcciones para tablas de páginas de dos niveles.png)]

8.3.2 Tabla de páginas hash

Típicamente espacio de direcciones > 32 bits

Los números de página virtuales se codifican en una tabla de páginas. Cada entrada en una tabla de páginas de este tipo consta de un elemento de lista vinculado que se convierte en hash en la misma ubicación.

El número de página virtual se compara con cada elemento de la lista vinculada para encontrar una coincidencia. Si hay una coincidencia, se obtiene el marco físico correspondiente.

8.3.3 Tabla de páginas inversas

Hay una entrada para cada página o cuadro de memoria real.
Cada entrada contiene la dirección virtual de la página en la ubicación de memoria real, junto con información que incluye el proceso propietario de la página.

Mecanismo de tabla de página invertida:

8.4 Gestión de memoria segmentada

Un mecanismo de administración de memoria que admite vistas de usuario.

Un programa es una colección de segmentos, un segmento es una unidad lógica,

Mecanismo de Segmentación (1)

Una dirección lógica es una colección de dos vectores:
<segment-number, offset>
Tabla de segmentos: mapea direcciones de usuario bidimensionales, cada entrada de la tabla incluye:
dirección base: contiene la dirección inicial del segmento dirección física en
la longitud del límite de memoria: especifica la longitud del segmento
El registro base de la tabla de segmentos (STBR) apunta a la dirección de la tabla de segmentos en la memoria El
registro de límite de la tabla de segmentos (STLR) indica el número de segmentos utilizados por un programa El
número de segmento s es válido si s < STLR

Segmento de hardware:

Mecanismo de segmentación (2)

Dado que los segmentos varían en longitud, la asignación de memoria es un problema dinámico de asignación de almacenamiento.

asignación de memoria

  • primer/mejor ajuste
  • problema de escombros externos

reiniciar

  • dinámica
  • Ejecutado por tabla de segmentos

compartido

  • segmento compartido
  • mismo número de segmento

Mecanismo de Segmentación (3)

protección, las entradas de cada tabla de segmentos son:

  • bit válido = 0 => segmento ilegal

  • derechos de lectura/escritura/ejecución

Los bits de protección están asociados con segmentos, código compartido a nivel de segmento

8.5 Gestión de páginas de segmento

Combinación de principios de segmentación y paginación

Primero divida el programa de usuario en varios segmentos, luego divida cada segmento en varias páginas y asigne un número de segmento a cada segmento.

Dirección lógica: <número de segmento, número de página, desplazamiento de página>

[Error en la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-ZuDXwls6-1641365161594) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Octavo capítulo\Dirección lógica de página de segmento.png)]

Tal método de combinación trae: hay fragmentación interna, pero no hay fragmentación externa

Ejemplo de Intel 386 usando paginación de segmento:

[Error en la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-dOD2mmVS-1641365161595) (E:\Documentos y PPT\Estudio del curso junior\Sistema operativo \Pictures\Eighth Chapter\segment page storage management example.png)]

8.6 Expansión de memoria

Qué hacer si el espacio de memoria no es suficiente:

  • compactación (particionamiento dinámico)
  • tecnología de superposición
  • tecnología de conmutación
  • Tecnología de memoria virtual (introducción detallada en el Capítulo 9)

8.6.1 Tecnología de superposición

Resuelva el problema: el tamaño del programa excede la memoria física total

ejecución del programa

  • Mantenga solo aquellas instrucciones y datos en la memoria que se necesitan en un momento dado

  • Diferentes partes del programa se reemplazan entre sí en la memoria

La estructura superpuesta es declarada por el programador sin soporte especial del sistema operativo

La programación de estructuras superpuestas es compleja

Aplicado a sistemas operativos anteriores

[Error en la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-MhH727m1-1641365161595) (E:\Documents and PPT\Junior Course Study\Operating System \Imágenes\Octavo Capítulo\Tecnología Superpuesta.png)]

8.6.2 Tecnología de conmutación

En un entorno de multiprogramación, por un lado, algunos procesos en la memoria se bloquean porque no ha ocurrido un evento, pero ocupa una gran cantidad de espacio en la memoria, e incluso en ocasiones puede parecer que todos los procesos en la memoria están bloqueados. Situaciones que obligan a la CPU a detenerse y esperar

Por otro lado, hay muchos trabajos esperando en la memoria externa y no pueden ingresar a la memoria para ejecutarse debido a la falta de memoria.

Desperdiciar recursos y reducir el rendimiento del sistema.

Un proceso se puede intercambiar temporalmente (intercambiar) a un área de respaldo fuera de la memoria y luego se puede intercambiar nuevamente a la memoria para continuar con la ejecución.

Área de repuesto: es un disco rápido fijo lo suficientemente grande como para contener copias de todas las imágenes de la memoria del usuario; se debe proporcionar acceso directo a estas imágenes de la memoria

La idea de la tecnología de intercambio: cuando el espacio de la memoria es reducido, algunos procesos se intercambian a la memoria externa y algunos procesos en la memoria externa que están listos para ejecutarse se intercambian a la memoria para ejecutarse.

Supongo que te gusta

Origin blog.csdn.net/weixin_45788387/article/details/122323468
Recomendado
Clasificación