Como activar/desactivar IRQs

Iniciado por robertito_prado, 29 Junio 2014, 02:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

robertito_prado

Hola!

Según leo en la wikipedia, una IRQ :

Citar
En el contexto de la informática, una interrupción (del inglés Interrupt Request, también conocida como petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.

Pero leyendo esto me quedan muchas dudas... ¿Una IRQ la genera el sistema de forma automática o es tarea del administrador generarla en un momento dado?
Es que si en teoría interrumpe la ejecución actual y ejecuta un código específico...Supongo que ese código se podrá modificar , es decir, lo puede editar el administrador, ¿no?

Gracias de antemano.

Saludos!
Mira a tu alrrededor y llora, dime que cojones se valora

Slava_TZD

No las 'genera' el sistema de forma automática, las maneja el kernel de forma automática, cuando presionas una tecla o haces una llamda al sistema por ejemplo...Sobre lo del código, no se entiende que es lo que quieres decir y que deseas modificar.


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

robertito_prado

Gracias!

Con lo del código me refiero a esta parte que pone en la wikipedia:
Citar
...  es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.

¿A que se refiere con código específico ?
¿Ese código también lo genera el kernel o no ?

Saludos.
Mira a tu alrrededor y llora, dime que cojones se valora

kub0x

Piensa que el hardware necesita ser accedido por la parte lógica del sistema, para ello los OS utilizan drivers (controladores de dispositivos), los cuales completan una interfaz de comunicación para el envio o recibimiento de datos. Obviamente el Kernel se ocupa de gestionar dichos accesos.

No te voy a liar simplemente cuando una IRQ sucede se cambia de modo usuario a supervisor (Kernel) y se busca la función de interrupción correspondiente a la IRQ. Si pulsas una tecla, se genera una IRQ y se llama a la rutina X que pertenece al driver Y.

Todas esas rutinas se generan al cargar el Kernel del sistema, todas ellas en la IDT (Interrupt Descriptor Table).

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


robertito_prado

CitarSi pulsas una tecla, se genera una IRQ y se llama a la rutina X que pertenece al driver Y.

Entonces se ejecutaría el código (rutina X) del driver Y no?

Gracias!
Mira a tu alrrededor y llora, dime que cojones se valora

kub0x

El proceso es el siguiente:

1. Se genera una IRQ en un proceso que responde a un evento (ej: pulsación de una tecla).
2. Al haberse generado una interrupción sucede un cambio de contexto (cambio de modo Usuario a Kernel).

3. La IRQ es procesada por el OS. Se busca la función que maneja la pulsación de la tecla en una tabla de rutinas (IDT) de interrupción.
En la IDT no solo residen rutinas para manejar Interrupciones Hardware (IRQ) si no también Interrupciones Software.

4. Se ejecuta dicha rutina en modo Kernel para procesar la IRQ.
5. Al finalizar se devuelve el control al contexto que generó la IRQ.

Obviamente el código que reside en esas rutinas se puede alterar, interceptar etc es lo que hacen los rootkit, pero necesitas estar en ring0.

Si te interesa lee un poquillo sobre el tema, aquí te dejo + info -> http://wiki.osdev.org/Interrupts

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


robertito_prado

Muchas gracias!

Pero eso de que se puede alterar e interceptar...¿Que es ring0?
Mira a tu alrrededor y llora, dime que cojones se valora