Domanda

I stava cercando su come il contorto e node.js quadri lavoro e io sono cercando di capire esattamente come i supporti operativi del sistema di I / O operazioni utilizzando callback.

Capisco che è un bene perché abbiamo bisogno di meno discussioni perché non lo facciamo necessità di avere bloccato thread in attesa per operazioni di I / O. ma qualcosa deve chiamare la richiamata una volta che l'I / O è finito.

Come è implementato dal sistema operativo?

È stato utile?

Soluzione

Un approccio è quello di avere il sistema operativo allegare informazioni su chiunque di attesa per un callback per la struttura di dati rilevanti, come ad esempio l'equivalente in-kernel del file descrittore siete in attesa di notifica di lettura circa. Quando succede qualcosa a quel descrittore di file, il sistema operativo esegue la scansione dei camerieri per vedere se deve essere notificata. Se si deve, poi lo fa. Si può leggere su un'implementazione di questo carta di limone l'introduzione del meccanismo di FreeBSD kqueue . Si veda in particolare la sezione 6, "attuazione", commi 3 e 4, "attività Origine evento" e "consegna".

Altri suggerimenti

Questa è risolto in OS utilizzando "I / O servizi di notifica degli eventi / interfaces", ad esempio, epoll , sondaggio, kqueue o selezionare.

Date un'occhiata al abile , e soprattutto la sua io / evento del ciclo per un esempio concreto di come i 'sistemi di notifica' di cui sopra sono Usato. ( java.nio. channels.Selector è il modo di Java NIO per fornire un'astrazione per questo.)

disclaimer: im un abile committer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top