Cuando escribe un código para escuchar desde un puerto, como 80 por ejemplo, ¿qué sucede debajo del capó? ¿El método que utiliza el sistema operativo para escuchar es pull o push? En otras palabras, ¿el sistema operativo comprueba ese puerto cada x milisegundos, por ejemplo?
Simplemente no entiendo. Cuanto más lo pienso, más me parece que no puede ser otra cosa que tirar.
Quiero decir, incluso si el sistema operativo establece una función de devolución de llamada, todavía algo debería entender que ha llegado nueva información para llamar a esa función de devolución de llamada. Ese algo aún debería usar pull para comprender la llegada de los nuevos datos.
¿Cómo escucha un puerto?
fuente
OK, no soy un ingeniero de hardware de Ethernet, pero creo que puedo responder a tu pregunta. Cuando escribe código para escuchar desde un puerto, sucede lo siguiente:
Entonces, su intuición de que se produce un "tirón" es, en el nivel de hardware más bajo, tal vez correcto ... el circuito Ethernet "tira" de cuál es el nivel de voltaje en ciertos intervalos. (Pero el término "jalar" puede ser francamente incorrecto si se habla al nivel del sistema operativo). Por supuesto, si comienza a hablar sobre los niveles de voltaje y exactamente cómo se desencadenan las cosas, ni la física eléctrica ni la óptica usarán los términos "empuje" "o" pull "para describir campos eléctricos y potenciales, pero supongamos que todos somos programadores, no físicos aquí. :-)
fuente
El código que escucha un puerto solo espera un mensaje de la red.
Cada vez que el chip Ethernet recibe un mensaje, se genera una interrupción. El núcleo maneja esta interrupción y reenvía el mensaje al controlador de red. Ese mensaje pasa por la pila TCP / IP y se filtra o se pasa al código que escucha el puerto.
fuente
El hardware de Ethernet será el que sondeará el cable físico (o inalámbrico). Cuando tiene una razón 'suficientemente buena', interrumpirá el procesador. El procesador calculará nuestro controlador adecuado que manejará la interrupción. El controlador de interrupciones manejará el evento (datos de lectura / escritura). El controlador también le indicará al sistema operativo que active cualquier subproceso en espera.
fuente