2008-11-19 15 views
21

Recientemente comencé a bucear en la programación de bajo nivel del sistema operativo. Soy (muy lentamente) que actualmente trabajan a través de dos libros más antiguos, Xinu y construir su propio sistema operativo de 32 bits, así como algunos recursos sugeridos por los finos para que la gente en mi pregunta anterior, How to get started in operating system development.¿Cómo funcionan las interrupciones en máquinas multinúcleo/multicpu?

Podría ser que aún 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 multinúcleo./sistema multiprocesador.

Por ejemplo, dicen que el DMA quiere indicar que un archivo leído operación se ha completado. ¿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?

+0

No sé la respuesta a su pregunta, pero altamente recomiendo echar un vistazo a la Intel® 64 and IA-32 Architectures Software Developer's Manual, volumen 3, capítulo 5. Es grande y detallado, contiene más de lo que siempre quiso saber sobre la arquitectura x86. –

+0

@GiovanniGalbo +1 por mencionar el proyecto XINU. – smwikipedia

Respuesta

6

Al examinar la función IoConnectInterrupt, puede encontrar la ProcessorEnableMask que seleccionará la CPU que permitió ejecutar la rutina InterruptService (ISR).
Sobre la base de esta información puedo suponer que en algún lugar en el nivel bajo (ver Adam's post) es posible especificar dónde encaminar la interrupción.

En la operación de archivo nota lateral no está muy 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.

+0

Gracias. Ojalá hubiera una manera de aceptar respuestas múltiples, pero los ejemplos de la vida real lo aclararon. También gracias por la nota en las lecturas de archivos. –

+0

@IIya El enlace IoConnectInterrupt está roto. – smwikipedia

2

En los viejos días de la interrupción fue 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 usted podría elegir un procesador de dinámica en vez de estática, que no desea enviar la interrupción a cualquier procesador inició la E/S, Te quiero enviarlo a cualquier procesador está menos cargada en el momento presente y puede 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.

+0

¡Gracias por la respuesta! ¿Sabes por casualidad si el x86/x86-64 permite ambos enfoques? –

Cuestiones relacionadas