¿Qué sucede cuando deshabilita las interrupciones y qué haces con las interrupciones? ¿No sabes cómo manejar?

StackOverflow https://stackoverflow.com//questions/10671048

Pregunta

Cuando deshabilita las interrupciones (con la instrucción cli en x86), ¿qué sucede exactamente?

  • ¿Espera la foto para que encienda las interrupciones y encienda la interrupción cuando eso suceda?(Si es así, ¿cuánto tiempo espera, y qué sucede si el tiempo "caduca"?)

  • ¿La interrupción, desde la perspectiva del dispositivo, se envía a un "agujero negro", sin respuesta?

  • ¿La foto de alguna manera le dice al dispositivo que "la CPU está ocupada" o algo así?

  • o hace otra cosa?

    Además, ¿cómo se ocupa de una interrupción que no sabe cómo manejar? ¿Hay alguna forma de decir la foto (o el dispositivo, si no sabe lo que es el dispositivo), "Sí, recibí su mensaje, pero no sé qué hacer con él"?

¿Fue útil?

Solución

La foto 8259A espera la señal INTA de la CPU. La CPU lo envía cuando comienza a manejar la interrupción transferiendo el control a la ISR correspondiente. ¿Qué ISR? La foto proporciona el vector de interrupción a la CPU, que busca el IVT / IDT para la dirección y usted conoce el resto. La foto no suministrará el vector de interrupción hasta que reciba INTA.

La foto 8259A tiene solo una comunicación de una sola vía con dispositivos de E / S. Pueden decirle que tienen una interrupción que necesita servicio.

Entonces, todo está en el aire en la foto si la CPU no responde a las interrupciones. Sin embargo, los dispositivos pueden a su capricho de afirmación y luego referir a las señales de solicitud de interrupción. No sé cuáles hacen. Tampoco sé cuáles tienen requisitos de tiempo para el servicio de interrupción.

Si no está interesado en interrupciones de una fuente específica, puede enmascararla y no obtendrá ninguna. Si toma una interrupción, pero no sé cómo procesarla, solo puede decirle a la foto que lo ha manejado. Esto puede dejar el dispositivo interrumpido en un estado "congelado", esperando indefinidamente para que suceda el servicio. También puede hacer que el dispositivo mantenga su alta señal de solicitud de interrupción, lo que será un problema si está tomando interrupciones en modo activado a nivel, se reducirá continuamente las interrupciones.

Otros consejos

Las interrupciones aún disparan, pero la CPU no está escuchando.Cuando comienza a escuchar otra vez (sti), la señal aún está allí y tendrá efecto en la primera oportunidad.

Una PC PC tiene varios niveles de interrupciones, y creo que puede contener una interrupción activa para cada nivel de prioridad.Mantendrá cada uno de ellos hasta que la CPU le indique que se completa el manejo correspondiente.Tener interrupciones deshabilitadas durante un período prolongado de tiempo probablemente romperá esto, ¡así que simplemente no hagas eso!

El dispositivo responsable de una interrupción no obtendrá ninguna respuesta mientras espera, lo que es una especie de respuesta de todos modos.Si no puede esperar, puede ingresar algún estado de error que la CPU verá cuando finalmente se presente.

Solo obtendrás las interrupciones que ha habilitado explícitamente, por lo que no debería haber sorpresas.El controlador del dispositivo que enciende una interrupción tiene mejor saber cómo manejarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top