1. Manejo de excepciones
Linux usa excepciones para lograr dos propósitos distintos:
· Envíe una señal al proceso para notificar una situación anómala
· Administre los recursos de hardware < Br>
Para el primer caso, por ejemplo, si el proceso realiza una operación de dividir por 0, la CPU generará una excepción de <; error de división " y el controlador de excepciones correspondiente enviará un SIGFPE al proceso actual Señal Después de que el proceso actual recibe esta señal, toma varios pasos necesarios para recuperarse del error o terminar la ejecución (si no hay un controlador de señal correspondiente para esta señal).
Para el segundo caso, el kernel usa dos excepciones para administrar eficientemente los recursos de hardware, y los controladores correspondientes son más complicados. En este caso, la excepción no indica una condición de error:
· use la excepción "Dispositivo no disponible" para diferir la carga de los registros de punto flotante.
· Use " Acerca de la página '; excepción para posponer el nuevo marco de página al proceso.
El kernel tiene una estructura estándar para la llamada del controlador de excepciones, que consta de las siguientes tres partes:
· Guarda el contenido de la mayoría de los registros en la pila del kernel (implementado en lenguaje ensamblador)
· Al llamar al controlador de excepciones escrito por C
· se sale de la excepción a través de la función ret_from_exception ().
El manejo específico de las excepciones en el kernel no se describe en detalle aquí. En el Capítulo 6, Administración de memoria, nos referiremos al controlador de excepciones "pageout". El enfoque de esta sección es el manejo de interrupciones.
2. Manejo de interrupciones
Cuando se produce una interrupción, no todas las operaciones tienen la misma urgencia. De hecho, no es apropiado colocar todas las operaciones en el propio controlador de interrupciones. Las operaciones largas y no críticas que requieren mucho tiempo deberían retrasarse, ya que cuando se está ejecutando un controlador de interrupciones, la señal que se vuelve a emitir en la línea de interrupción de IRQ correspondiente se ignora. Más importante aún, el controlador de interrupciones se ejecuta en nombre del proceso, y el proceso que representa debe estar siempre en el estado TASK_RUNNING. De lo contrario, puede ocurrir un zombie del sistema. Por lo tanto, el controlador de interrupciones no puede realizar ningún proceso de bloqueo, como las operaciones del dispositivo de E /S. Por lo tanto, Linux divide las operaciones a realizar por una interrupción en las siguientes tres categorías:
(1) Crítico (
operaciones como los controladores de interrupción cuando llega una interrupción Confirme, reprograme el controlador de interrupción o el controlador del dispositivo, o modifique la estructura de datos a la que accede tanto el dispositivo como el procesador. Estas operaciones son urgentes y deben realizarse muy rápidamente, es decir, las operaciones de emergencia deben realizarse inmediatamente dentro de un controlador de interrupciones, y la interrupción está deshabilitada.
(2) No crítico (No crítico)
Operaciones como la modificación de estructuras de datos a las que solo puede acceder el procesador (por ejemplo, después de escanear una tecla, lea el código de escaneo). Estas operaciones también se realizan muy rápidamente, por lo que son ejecutadas inmediatamente por el controlador de interrupciones, pero con la interrupción habilitada.
(3) Deferrable no crítico
Esta operación, por ejemplo, copia el contenido de un búfer al espacio de direcciones de algunos procesos (por ejemplo, el búfer de línea del teclado) El contenido se envía al proceso del controlador de terminal). Estas operaciones pueden demorarse por intervalos más largos sin afectar las operaciones del kernel: los procesos interesados esperarán los datos requeridos. Las operaciones retardables que no son de emergencia se realizan mediante una serie de funciones llamadas "mitad inferior" (mitades inferiores). Discutiremos la "parte inferior" en la siguiente sección.
Todos los manejadores de interrupciones realizan cuatro operaciones básicas:
· Guarda el valor de IRQ y el contenido del registro en la pila del núcleo.
· Envía un acuse de recibo al controlador de interrupción conectado a la línea de interrupción IRQ, lo que permitirá que se envíen más solicitudes de interrupción en esta línea de interrupción.
· Ejecute la rutina de servicio de interrupción (ISR) para todos los dispositivos que comparten este IRQ.
· Salta a la dirección de ret_from_intr () y termina.
Git como el sistema de control de versiones distribuido más avanzado del mundo (nadie), probablement
Noticias de Computer Shop: ¿Recuerdas que Steam está listo para salir? Ahora hay nuevas noticias: es
Linux memoria compartida sistema de memoria compartida está fuera de consideración la comunicac
DNS (Sistema de nombres de dominio), una base de datos distribuida en Internet que asigna nombres de
Resumen de aprendizaje de la comunicación entre
Linux cp archivo de directorio directorio copia
Tutorial de fortalecimiento de la seguridad del sistema Linux
Cómo montar la carpeta debajo de windows a linux al configurar el entorno de desarrollo
¿Cómo resolver USB no reconocido bajo Linux?
Git no salió limpiamente (código de salida 128) solución
El sistema de tareas temporizadas del sistema operativo Linux
Elementary OS Beautiful Linux Overview
Estrategia de recuperación de arranque de falla de Linux
PCI RAÍZ HID fallar = 0x5 errores ACPI Linux generalmente se resuelven por carretera
El centro de software de actualización de Ubuntu no puede abrir la solución
El análisis simple de los problemas de disponibilidad del servidor
Cómo usar el archivo de imagen en Win8.1
Razones y soluciones para el fondo gris de la barra de búsqueda de WinXP Explorer
Win8.1 mosaico de agrupación y tamaño
¿La llamada gratuita de la guía telefónica de Wechat es realmente gratuita?
Cómo cambiar la ubicación de almacenamiento de archivos de la cámara Win10 para encontrar
Notas de estudio crontab de ejecución automática de Linux
¿Qué debo hacer si no hay un elemento de atributo en el menú contextual del sistema Win10 10130?
Cómo agregar un icono de acceso directo para la conexión de red en el escritorio de Win7
Visor de eventos incorporado de Windows para resolver fallas del sistema