operating-system - puerto - interrupciones en arduino uno pdf
¿Cómo funcionan las interrupciones en máquinas multinúcleo/multicpu? (3)
En los viejos tiempos, la interrupción se aplicaba a todos los procesadores. En los tiempos modernos, un sistema operativo puede programar algunos tipos de hardware para enviar una interrupción a un procesador en particular. Por supuesto, si pudieras elegir un procesador dinámicamente en lugar de estáticamente, no querrías enviar la interrupción a cualquier procesador que iniciara la E / S, querrías enviarlo a cualquier procesador que esté menos cargado en el momento presente y de manera más eficiente, inicie la siguiente operación de E / S y / o el procesador que tenga menos carga en el momento presente y pueda ejecutar de manera más eficiente el hilo que estaba esperando los resultados.
Recientemente comencé a bucear en la programación de bajo nivel del sistema operativo. Estoy (muy lentamente) trabajando actualmente en dos libros más antiguos, XINU y Build Your Own 32 Bit OS, así como algunos recursos sugeridos por la excelente gente de SO en mi pregunta anterior, Cómo comenzar en el desarrollo del sistema operativo .
Simplemente podría ser que todavía no lo he encontrado en ninguno de esos recursos, pero es probable porque la mayoría de estos recursos se escribieron antes que los omnipresentes sistemas multinúcleo, pero lo que me pregunto es cómo funcionan las interrupciones en un sistema multinúcleo / multiprocesador.
Por ejemplo, supongamos que el DMA quiere indicar que se ha completado una operación de lectura de archivos. ¿Qué procesador / núcleo reconoce que se indicó una interrupción? ¿Es el procesador / núcleo el que inició la lectura del archivo? ¿Es el procesador / núcleo el que llega primero?
este artículo http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux explica cómo las interrupciones en las máquinas smp son manejadas por Linux
Al examinar la función IoConnectInterrupt , puede encontrar la ProcessorEnableMask que seleccionará la CPU que permitió ejecutar la rutina InterruptService (ISR).
Basado en esta información, puedo suponer que en algún lugar del nivel bajo (ver la publicación de Adam ) es posible especificar dónde enrutar la interrupción.
En el lado de la operación de archivo de nota no está realmente relacionado con las interrupciones y / o dma directamente. La operación de archivo es un concepto de sistema de archivos que se traduce a un nivel bajo. Depende del sistema de archivos de bus que se encuentre. Puede ser un disco IDE o SATA o incluso un almacenamiento usb. En este caso, la lectura del sector se traducirá a 3 operaciones lógicas sobre el bus USB. será interrumpido por el controlador del controlador de host USB, pero no está realmente relacionado con la operación de lectura del archivo original, que probablemente se haya dividido en transacciones más pequeñas de cualquier manera.