Pregunta

Me estaba mirando cómo el retorcido y Node.js marcos de trabajo y estoy tratando de entender exactamente cómo los soportes del sistema operativo de E / S operaciones usando devoluciones de llamada.

Yo entiendo que es bueno porque necesitamos menos hilos porque no hacemos necesidad de haber bloqueado subprocesos en espera para las operaciones de E / S. Pero algo tiene que llamar a la devolución de llamada una vez que la E / S está terminado.

¿Cómo se esta implementado por el sistema operativo?

¿Fue útil?

Solución

Uno de los enfoques es que los unen OS información sobre cualquiera de espera para una devolución de llamada a la estructura de datos relevantes, tales como el equivalente en el núcleo del archivo descriptor de que usted está esperando una notificación de lectura acerca. Cuando algo le sucede a ese descriptor de archivo, el sistema operativo explora los camareros para ver si alguno debe ser notificado. Si lo que deberían, a continuación, lo hace. Usted puede leer acerca de una implementación de este href="http://people.freebsd.org/~jlemon/papers/kqueue.pdf" rel="noreferrer"> papel en kqueue . Véase en particular la sección 6, "Aplicación", apartados 3 y 4, "La actividad en Origen del suceso" y "entrega".

Otros consejos

Esto se resuelve en OS mediante el uso de "I / O instalaciones de notificación de eventos / interfaces", por ejemplo epoll , encuesta, kqueue o seleccionar.

Tome un vistazo a hábil , y especialmente su io / evento bucle para un ejemplo concreto de cómo los 'sistemas de notificación' mencionados anteriormente son usado. ( java.nio. channels.Selector es la forma java nio para proporcionar una abstracción para esto.)

descargo de responsabilidad: im un hábil committer

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