Notas de estudio "Introducción al sistema operativo" (3): virtualización de la CPU (mecanismo)

C PAGS U Virtual Plan Cambio Paquete Incluir Micro Vista Y Macro Vista Dos PC Persona Fideos Micro Vista Capa Fideos Si Real Ahora Entrar Cheng Cortar Cambio De Máquina Control ( metro mi C h un n i s m ) ( p o l i c y ) La virtualización de la CPU incluye aspectos micro y macro. El nivel micro es el mecanismo para implementar la conmutación de procesos, y el nivel macro es la política \\ de programación de procesos.

Los procesos emiten instrucciones de interrupción a través de llamadas al sistema para enviar el control de la CPU, por lo que la interrupción (interrupción) es el mecanismo principal para lograr la conmutación del proceso, y también es el "motor" que impulsa el funcionamiento del sistema operativo. Pero antes de introducir formalmente el mecanismo de interrupción, es necesario presentar los motivos del mecanismo de interrupción y el entorno aplicable.

Modo dual de CPU (modo dual)

Las instrucciones del proceso se ejecutan directamente en la CPU, pero el proceso del proceso inevitablemente solicita los recursos del sistema, como las E / S, del sistema operativo y, a veces, el sistema operativo necesita cambiar los procesos. Todos estos deben operar en el espacio del núcleo. ¿Cómo puede el núcleo del sistema operativo satisfacer las necesidades del proceso y evitar las operaciones peligrosas del proceso (como la modificación no autorizada del núcleo del sistema operativo)?

En primer lugar, podemos dividir por separado un área en el espacio de direcciones para almacenar el contenido clave, como los datos del código del núcleo del sistema y los bloques de control del proceso. El área restante se utiliza para ejecutar programas de usuario, que se denominan espacio del núcleo y espacio de usuario , respectivamente . Luego asigne diferentes niveles a las instrucciones que se ejecutan en el espacio del núcleo y el espacio del usuario. El nivel de instrucción en el espacio del núcleo es alto, llamadas instrucciones privilegiadas , que pueden acceder a toda la memoria y registros, y el nivel de instrucción en el espacio del usuario es bajo, llamadas instrucciones no privilegiadas . Finalmente, de acuerdo con el nivel de instrucción de la operación de la CPU, distinga el modo de operación de la CPU. Cuando la CPU ejecuta instrucciones privilegiadas, la CPU está en modo kernel ; de lo contrario, está en modo usuario .
Inserte la descripción de la imagen aquí
Se accede a los procesadores x86 de Intel a través del nivel Ring. Hay 4 niveles desde Ring0 hasta Ring3. La capa R0 tiene la autoridad más alta y la capa R3 tiene la autoridad más baja. La idea original de Intel era que las aplicaciones funcionan en la capa R3 y solo pueden acceder a los datos en la capa R3; el sistema operativo funciona en la capa R0 y puede acceder a los datos en todas las capas; mientras que otros controladores están en las capas R1 y R2. De hecho, los sistemas operativos Linux y Windows solo seleccionan la capa R0 y la capa R3 para ejecutar las instrucciones del sistema operativo y las instrucciones del programa de aplicación : modo dual (modo dual) .

1.内核模式(kernel mode):操作系统运行程序,可以使用特权指令,访问所有内存和寄存器。
2.用户模式(user mode):应用程序运行程序,只能使用一般指令,访问特定的内存和寄存器。

Inserte la descripción de la imagen aquí
El modo de CPU del sistema x86 está determinado principalmente por el nivel de privilegio de programa actual CPL y la palabra de estado del programa PSW . CPL representa el nivel de privilegio de código ejecutado actualmente, almacenado en los bits 0 y 1 de CS (registro de código) y SS (registro de segmento), y los bits 12 y 13 de la palabra de estado del programa PSW IOPL es el nivel de privilegio de entrada y salida (Los bits representan cuatro niveles del 0 al 3). Cuando CPL> IOPL, puede ejecutar instrucciones privilegiadas como IN y OUT, que es equivalente a la CPU en modo kernel. Conceptualmente, podemos entender simplemente que la CPU tiene un registro de bit de modo (registro de bit de modo) , cuando el bit de modo es 0, la CPU está en modo de usuario, cuando el bit de modo es 1, la CPU está en modo kernel, la modificación del bit de modo Determinado por interrupción.
Inserte la descripción de la imagen aquí

Transferencia de control segura

Cambio de proceso El proceso de devolver el control de la CPU al sistema operativo requiere cambiar del modo de usuario al modo de núcleo, y el sistema operativo asigna la CPU al proceso y necesita cambiar del modo de núcleo al modo de usuario. Por lo tanto, después de distinguir el significado del modo de usuario y el modo de núcleo, también debemos comprender cómo implementar de manera segura la conmutación de modo y la transferencia del controlador.

Evento de activación

En la actualidad, hay dos eventos principales para activar el cambio del modo de usuario al modo kernel: excepción e interrupción.

Excepción : la excepción es generada por el proceso de usuario que se está ejecutando actualmente. Las excepciones incluyen desbordamiento aritmético, división por cero, fuera de límites al acceder a direcciones, intentar usar instrucciones privilegiadas o ejecutar "trampas", etc. En este momento, el hardware suspende el proceso de ejecución actual, cambia el modo operativo de la CPU y pasa al manejo de excepciones Programa (controlador de excepciones) o controlador de errores (depurador).

Interrupción (interrupción) : una interrupción es una señal interna de que se produce un evento externo y se comunica con el proceso. Se genera para admitir operaciones paralelas entre la CPU y el dispositivo. Se produce un evento fuera de la CPU. Se genera una instrucción de interrupción int después de que ocurra el evento, lo que hace que la CPU suspenda el proceso en curso y retenga la escena (contexto), vaya al controlador de interrupción (controlador de interrupción) y emita una instrucción de retorno de interrupción de iret para regresar al punto de interrupción después del procesamiento , Continúe ejecutando el proceso interrumpido. Además, las interrupciones entre procesos son otra interrupción común .

Las fuentes de excepciones e interrupciones son diferentes, y el proceso de ocurrencia es similar, por lo tanto, se discuten por conveniencia.

2. Manejo de interrupciones

El mecanismo de interrupción / excepción es uno de los mecanismos centrales del sistema operativo, y requiere hardware y software para cooperar entre sí. El hardware captura la solicitud de interrupción / excepción de la fuente de interrupción a través de la instrucción implícita de interrupción, responde a la interrupción y transfiere el control de la CPU al controlador de interrupción / excepción, y el controlador necesita identificar el tipo de interrupción / excepción y manejarlo en consecuencia.
Inserte la descripción de la imagen aquí
El
Inserte la descripción de la imagen aquí
hardware de captura de interrupciones salva la escena Mientras
consulta la tabla de vectores de interrupciones, la CPU necesita prepararse para que el software maneje la interrupción. En primer lugar, la CPU necesita guardar la palabra de estado del programa PSW y la PC del contador del programa del proceso original en la pila del kernel del sistema para que el proceso de interrupción pueda regresar con precisión al punto de interrupción del proceso original después del procesamiento de interrupción. En segundo lugar, la CPU modifica el registro de bits de modo de acuerdo con las instrucciones de interrupción y cambia la CPU al modo kernel.

程序计数器(Program Counter)是用于存放下一条指令所在单元的地址的地方。
程序状态字(Program Status Word, PSW)又称状态寄存器,主要用于反映处理器的状态及某些计算结果以及控制指令的执行。用一个专门的寄存器来指示处理器状态。

Consultar tabla de interrupción de vectores

中断向量:一个内存单元,存放中断处理程序入口地址PC和程序运行所需的程序状态字PSW。

Inserte la descripción de la imagen aquí
La CPU consulta la tabla de vectores de interrupción de acuerdo con el código de interrupción, obtiene la dirección de entrada del controlador de interrupción correspondiente y establece la PC en esta dirección. Comienza un nuevo ciclo de instrucciones y el control de la CPU se transfiere al controlador de interrupción.
Inserte la descripción de la imagen aquí

Manejo de interrupciones

中断处理程序(interrupt handler):响应一个特定中断后,操作系统会执行的特定函数。Linux系统的中断处理程序是按照特定类型声明的C函数。

Inserte la descripción de la imagen aquí
Primero, el controlador de interrupciones guarda la información de registro restante del proceso original en la pila del kernel; luego analiza la causa de la interrupción / excepción y ejecuta la función correspondiente. Por ejemplo, la interrupción causada por el cambio de proceso, el nuevo proceso a ejecutar se selecciona de acuerdo con la estrategia de programación del proceso, y la PC se configura como la dirección del nuevo proceso. Finalmente, después de ejecutar la interrupción, se emite una instrucción de retorno de interrupción, y la CPU detecta la instrucción y luego ejecuta el proceso original o el nuevo proceso.

Cambiar entre procesos

Existen dos métodos principales para la conmutación de procesos: uno es esperar a que el proceso en curso utilice la llamada del sistema para emitir un método de cooperación de interrupción, y el segundo es configurar un temporizador para forzar un método de interrupción no cooperativo. Los siguientes dos métodos se utilizan como ejemplos para resumir el proceso de procesamiento de interrupciones.
Inserte la descripción de la imagen aquí

1. Enfoque cooperativo: Esperando llamadas al sistema (Un enfoque cooperativo: Esperando llamadas al sistema)

Inicio del sistema operativo Al
inicio, la CPU está en modo kernel para ejecutar el sistema operativo. El sistema inicializa la tabla de vectores de trampa (tabla de trampa) e informa al hardware de la dirección del controlador de interrupciones en la tabla.
Inserte la descripción de la imagen aquí
Ejecutar llamada al sistema

  1. La llamada al sistema es la única interfaz que el sistema operativo proporciona al proceso del usuario. Este método establecerá una llamada al sistema que se muestra al final de cada proceso, y la función de la llamada al sistema emitirá una instrucción de interrupción;
  2. El hardware captura la instrucción de interrupción, guarda el contenido del registro en la pila del núcleo, modifica el bit de modo para hacer que la CPU cambie al modo de núcleo y dirige el controlador de interrupción de acuerdo con la tabla de búsqueda de códigos de interrupción;
  3. El controlador de interrupciones utiliza la estrategia de programación de procesos para seleccionar el proceso a ejecutar, y ejecuta la instrucción de retorno de interrupciones return-from-trappara volver al modo de usuario después de la ejecución .
    Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

Además, cuando el proceso hace algo ilegal, generará una instrucción anormal para privar forzosamente el proceso de control de la CPU.

Pero si el proceso en ejecución contiene un bucle sin fin, entonces el método de colaboración fallará y el sistema operativo debe obtener el control de la CPU.

2. Enfoque no cooperativo: el sistema operativo toma el control

El método no cooperativo es implementar un temporizador para contar el tiempo de ejecución del proceso actual. Cuando el tiempo de ejecución excede un cierto límite (por ejemplo, Xms), el temporizador emitirá activamente una instrucción de interrupción para detener con fuerza la ejecución del proceso actual y entregar el control de la CPU al sistema operativo. .
Inserte la descripción de la imagen aquí

Referencias

"Sistema operativo: tres piezas fáciles"
"Sistemas operativos: principios y práctica" Principios
del sistema
operativo "Conceptos del sistema operativo " Universidad de Pekín Chen Xiangqun

Publicado 21 artículos originales · elogiado 8 · visitas 1495

Supongo que te gusta

Origin blog.csdn.net/K_Xin/article/details/104866638
Recomendado
Clasificación