Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

同期入出力と非同期入出力の違い

データ転送は、同期または非同期のどちらかで行われます。この決定要因は、転送をスケジュールするエントリポイントがただちに戻るか、または入出力が完了するまで待つかのどちらであるかです。

read(9E) エントリポイントと write(9E) エントリポイントは、同期エントリポイントです。転送は、入出力が完了するまで復帰してはいけません。ルーチンから復帰すると、プロセスは、転送が成功したかどうかを認識できます。

aread (9E) エントリポイントと awrite (9E) エントリポイントは、非同期エントリポイントです。非同期エントリポイントは入出力をスケジュールし、ただちに戻ります。復帰すると、要求を発行したプロセスは、入出力がスケジュールされたこと、およびあとで入出力のステータスを判定する必要があることを認識できます。その間に、プロセスはほかの操作を実行できます。

カーネルへの非同期入出力要求では、その入出力が進行している間、プロセスは待機する必要がありません。プロセスは複数の入出力要求を実行することができ、カーネルでデータ転送の詳細を処理できます。非同期入出力要求を使用すると、トランザクション処理などのアプリケーションは、並行プログラミングの方法を使用してパフォーマンスや応答時間を向上させることができます。ただし、非同期入出力を使用するアプリケーションのパフォーマンス向上はすべて、プログラミングの複雑さの増加を犠牲にして得られます。