質問

Twistedとnode.jsフレームワークがどのように機能するかを検討していましたが、オペレーティングシステムがコールバックを使用してI/O操作をどのようにサポートしているかを正確に理解しようとしています。

I/O操作を待っているスレッドをブロックする必要がないため、スレッドが必要であるため、良いことを理解しています。しかし、I/Oが終了したら、コールバックを呼び出す必要があります。

これはオペレーティングシステムによってどのように実装されていますか?

役に立ちましたか?

解決

1つのアプローチは、OSに、読み取り通知を待っているファイル記述子に相当する船内など、関連するデータ構造へのコールバックを待っている人に関する情報を添付することです。そのファイル記述子に何かが起こると、OSはウェイターをスキャンして、通知が必要かどうかを確認します。彼らがすべきなら、それはそうします。これの1つの実装について読むことができます FreeBSDを紹介するレモンの論文 kqueue 機構. 。特にセクション6、「実装」、サブセクション3および4、「イベントソースのアクティビティ」および「配信」を参照してください。

他のヒント

これは、「I/Oイベント通知設備/インターフェイス」を使用してOSで解決されます。 epoll, 、世論調査、 kqueue または選択します。

を見てみましょう deft, 、そして特にその」 IO/イベントループ 上記の「通知システム」がどのように使用されるかを具体的な例として。 (java.nio.channels.selector これに抽象化を提供するJava nioの方法です。)

免責事項:巧妙なコミッターです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top