非ブロックシステムコールとモード切り替え

非ブロックシステムコールとモード切り替え

非同期IOシステムコールを呼び出すとします。システムコールが呼び出されると、モードはユーザーモードからカーネルモードに変わります。呼び出し直後は、ユーザーアプリケーションをさらに実行できるように、モードをユーザーモードに戻す必要があります(非ブロックなので)。

モードがユーザーモードに変更された場合、モードがカーネルからユーザーモードに変更されたときにカーネルはIOをどのように処理しますか?カーネルはユーザーモードで非同期IOを実行しますか?

ベストアンサー1

AIOを使用したいプロセスは、io_setup()を介してAIOコンテキスト(kioctx)を生成します。 AIOコンテキストにはリングバッファ(aio_ring_info)があります。このメモリバッファはプロセスのアドレス空間にありますが、カーネルからアクセスできます。

おすすめ記事