5

¿Cuáles son algunas cosas importantes que hacer y qué no hacer dentro de un modo kernel y Rutina ISR? Por ejemplo -Restricciones mientras kernel está ejecutando una rutina ISR

  • es el contexto de conmutación de personas con discapacidad durante la ejecución de un manejador de interrupciones?
  • ¿Puede ocurrir un cambio de contexto cuando un proceso está dentro de una sección crítica de
    ?
  • ¿Qué circunstancias dentro del modo núcleo merecen la desactivación de más interrupciones?

¿Cómo es que un cambio de proceso puede ocurrir en un error de página, donde un proceso obtiene datos del disco, pero no ocurre durante otras ocurrencias de interrupciones. ¿Cómo se clasifica si una ruta ejecutable se puede interrumpir/reprogramar/anular?

¿Cuáles son las otras cosas que uno debe recordar cuando el proceso está en modo kernel o manejando la rutina ISR?

Respuesta

4

En resumen: SIN CONTEXT SWITCH, EVER.

Esto significa:

  • Sin preferencia
  • No hay cerraduras en mutex (cerraduras uso de spin lugar y asegurarse de que sus contrapartes no-ISR a adquirir con spin_lock_irqsave desactivar IRQ)
  • Ninguna llamada a cualquier núcleo función que puede dormir (verifique la documentación de la función, algunas funciones también tienen _variantes de reposo).

Un interruptor de proceso puede ocurrir en un fallo de página, pero sucede después de la correspondiente ISR ha sido procesada. Básicamente, se puede programar una ruta si no es un ISR y si no tiene un spinlock bloqueado. Si tiene un spinlock, debe evitar dormir hasta que se libere.

Dado que los ISR son muy restringidos, el manejo de las IRQ generalmente se divide entre una mitad superior (que se ejecuta en contexto ISR y hace el trabajo crítico) y una mitad inferior (que se ejecuta más tarde como un núcleo y hace lo que sea puede retrasarse) que puede dormir. Consulte esta página para obtener más información:

http://www.makelinux.net/ldd3/chp-10-sect-4

Cuestiones relacionadas