Interrupciones y excepciones de Linux Conceptos básicos

  

P1. ¿Qué es una interrupción? ¿Qué es una excepción? ¿Cuál es la diferencia entre los dos?

A:

1) El control de interrupción se genera para superar la ineficiencia del procesador causada por el uso de los servicios de control de consulta de programas en la interfaz de E /S. Su principal ventaja es que solo La respuesta del procesador se obtiene cuando la interfaz de E /S necesita servicio y el procesador no necesita realizar consultas continuas; por lo tanto, la interrupción inicial es toda para el dispositivo externo, llamada interrupción externa (o interrupción de hardware); Br>

2) Una excepción también se denomina interrupción interna. Se genera para resolver algunos eventos aleatorios y conveniencias de programación cuando la máquina se está ejecutando.

3) Hay 256 tipos de interrupciones disponibles externamente. La interrupción enmascarada (INTR) y la interrupción no enmascarable externa (NMI), las solicitudes de interrupción (IRQ) generadas por todos los dispositivos de E /S causan interrupciones enmascarables, y los fallos causados ​​por eventos de emergencia (como fallas de hardware) generan interrupciones no enmascarables; Br>

4) Las excepciones se dividen en fallas y trampas. Su característica común es que ni el controlador de interrupción ni la máscara se utilizan (la excepción es en realidad la señal del terminal enviada por la CPU).


Q2. ¿Qué es un vector de interrupción? ¿Cómo distribuye Linux los vectores de interrupción?

A:

1) Para que el procesador identifique fácilmente cada fuente de interrupción, las interrupciones de 256 vectores están numeradas de 0 a 255, es decir, se asigna un código de tipo de interrupción n. Llame a este vector entero sin signo de 8 bits un vector, el vector de interrupción;

2) Linux asigna 256 vectores de interrupción de la siguiente manera:

A. Los vectores numerados de 0 a 31 corresponden a Interrupciones anormales y no enmascarables;

B. Los vectores numerados 32 ~ 47 (es decir, interrupciones causadas por dispositivos de E /S) se asignan a interrupciones enmascarables;

C. Restante, numeración Los vectores de 48 a 255 se utilizan para identificar interrupciones suaves; Linux usa solo uno de ellos (es decir, 128 o vectores 0x80) para implementar llamadas al sistema.


Q3. ¿Qué es la tabla del descriptor de interrupciones? ¿Qué es un descriptor de puerta?

A:

1) En el modo de dirección real, la CPU utiliza 1 KB de espacio a partir de 0 como una tabla de vectores de interrupción, y cada entrada en la tabla ocupa 4 bytes. Sin embargo, en el modo de protección, la tabla de vectores de interrupción que consta de 4 bytes de entradas no puede satisfacer el requisito, por lo tanto, en el modo de protección, las entradas en la tabla de vectores de interrupción se componen de 8 bytes, y la tabla de vectores de interrupción también se denomina descripción de interrupción. Tablas (IDT);

2) Cada entrada en el IDT se denomina descriptor de puerta.


P4. ¿Qué tipos de descriptores de puerta hay? ¿Cuál es la diferencia entre ellos?

A: El código de tipo en el descriptor de la puerta ocupa 3 bits, lo que indica el tipo del descriptor de la puerta, que se divide principalmente en las siguientes categorías:

1) Puerta de interrupción: su código de tipo Is 110, contiene el selector y el desplazamiento del segmento del segmento donde se encuentra el controlador de interrupciones o excepciones;

2) Puerta de captura: su código de tipo es 111;

3) Puerta del sistema: está especialmente establecida por el kernel de Linux para permitir que los procesos en modo de usuario accedan a trampillas.

Copyright © Conocimiento de Windows All Rights Reserved