Esto depende del sistema operativo, pero generalmente no se puede adquirir un mutex en un controlador de interrupciones porque los mutex se bloquean cuando se contestan, colocando el proceso en una cola de espera, poniendo el proceso en suspensión y programando un nuevo proceso para que se ejecute. En la mayoría de los sistemas, los manejadores de interrupciones no son procesos. No tienen entidades programables que los respalden. Por lo tanto, no pueden bloquear y no pueden adquirir un mutex.
Además, generalmente no querrá adquirir un mutex en un controlador de interrupciones, incluso si pudiera, ya que el controlador de interrupciones está diseñado para ejecutarse rápidamente. El potencial de un bloqueo de mutex derrotaría ese objetivo muchas veces.
Por estas razones, los sistemas a menudo dividen el procesamiento de interrupción en dos mitades. El controlador de interrupciones es la “mitad superior”, se ejecuta sincrónicamente en respuesta a la interrupción, se espera que sea rápido y no tiene contexto de proceso, por lo que no puede bloquear (a menudo roba el contexto de lo que sea que haya interrumpido). Cualquier trabajo laborioso está programado para más tarde, en la “mitad inferior” del proceso de interrupción. A menudo, la mitad inferior se ejecuta en un hilo del núcleo y, por lo tanto, puede adquirir mutexes.
- Cómo codificar un árbol en un formato de cadena de modo que el árbol pueda reconstruirse a partir de la codificación de la cadena
- ¿Qué distingue a un programador profesional de un aficionado? ¿Hay algo que enseñan en la universidad que alguien descuidaría si hubiera aprendido por su cuenta?
- Cómo encontrar un elemento duplicado en una matriz con una complejidad temporal menor que O (n ^ 2) y una complejidad espacial de O (1)
- Soy estudiante de ECE de primer año. Me voy a preparar mucho para una programación competitiva. ¿Google me considerará y me brindará una oportunidad de entrevista?
- Usando Java, ¿cómo encuentra la longitud de la matriz secundaria más grande donde el primer elemento de esta matriz es mayor o igual que el último elemento de esa matriz secundaria?