En general, ¿cómo funcionan los controladores de eventos?

14

Este es un tema general, ¿Cómo funcionan los controladores de eventos?

Esto significa detrás de escena: lo que sucede cuando se crean.

Tengo una idea aproximada, pero me gustaría tenerla confirmada.

    
pregunta JHarley1 05.01.2011 - 17:42

1 respuesta

14

En un nivel bajo, los controladores de eventos a menudo funcionan al sondear un dispositivo y esperar una interrupción de hardware. Esencialmente, un subproceso en segundo plano se bloquea, mientras se espera que ocurra una interrupción de hardware. Cuando se produce una interrupción, la función de sondeo deja de bloquear. La aplicación puede averiguar qué dispositivo manejó la interrupción y qué tipo de interrupción fue, y luego actuar en consecuencia (por ejemplo, invocando una función de controlador de eventos). Esto generalmente se hace en un hilo separado para que suceda de forma asíncrona.

Por supuesto, la forma en que se implementa esto varía considerablemente según el sistema operativo y el tipo de dispositivo / entrada. En los sistemas UNIX, una de las formas en que se implementan los controladores de eventos para sockets, puertos serie o USB es a través de seleccionar o sondeo llamadas al sistema. Uno o más descriptores de archivo / dispositivo (que están asociados con un dispositivo, como un socket de red, puerto serie / USB, etc.) se transfieren a la llamada al sistema poll , que está disponible para el Programador a través de una API C de bajo nivel. Cuando ocurre un evento en uno de estos dispositivos (como, por ejemplo, algunos datos llegan a un puerto serie), la llamada al sistema de sondeo deja de bloquearse y la aplicación puede determinar qué descriptor del dispositivo causó el evento y qué tipo de evento fue .

En Windows esto se maneja de manera diferente, pero los conceptos son básicamente los mismos.

    
respondido por el Charles Salvia 05.01.2011 - 19:11

Lea otras preguntas en las etiquetas