linux_aio

どうやってI/Oの完了をうけとっているか(準備編)

だんだん、だれてきましたが、今度はどのようにio_submit()で発行したI/Oが完了したか、どうかを知るための仕組みを追っかけてみます。簡単にこの仕組みを説明すると、まずio_setup()で非同期I/Oを処理するための特別なメモリをとります。io_submit()でリク…

システムコールによる非同期I/O API

このAPIは、カーネル2.6以降にカーネルに追加された機能をつかうためのシステムコールになります。 カーネルは、非同期I/Oをサポートするために、VFS層のファイルオブジェクト(簡単に説明すると、実際のファイルシステムがファイルに対する操作を保持するオ…

なぜ非同期I/OのAPIが存在するのか

Linuxでは、ユーザー空間で使用できる非同期I/Oを使う手段としては、2種類あります。 aio_readなどを使うPOSIX準拠の非同期I/O io_setupなどを使うシステムコールによる非同期I/O しかし、LinuxのI/Oは同期?非同期?で、LinuxのI/Oがたいていの場合、非同…

LinuxのI/Oは同期?非同期?

まず、ここでLinuxのI/Oについて、簡単に説明します。 基本的に、LinuxのI/Oは、非同期で行われます。非同期というのは、I/O要求とディスクアクセスは同期していないということです。ふつうにwrite()を呼んでも、ディスクに書き込み要求がいきません。read()…

Linuxの非同期I/Oについて

最近、LinuxのI/Oまわりについて調べていた延長で、ちょうど一年ぐらい前にlighttpdの1.5が採用して性能があがったといわれた、非同期I/Oまわりについて調べてみたので、これから現状自分がわかっている範囲でのまとめと疑問点を書いてみます。ひとつのエン…

POSIX準拠の非同期I/O

これは、ライブラリ関数として実装されており、以下の関数群を持ちます。 aio_read(),aio_write(),aio_fsync(),aio_error() aio_return(),aio_cancel(),aio_suspend()詳しい使い方は説明しませんが、aio_read(),aio_write()を使い、I/O要求を発行します。I/O…