第 4 章 TS-I/O 26
5.2 デッドラインミスが生じる負荷
第5章 実験 50
-40000 -30000 -20000 -10000 0 10000 20000 30000 40000
d1 d2
d3
d4
図5.6: 16ビットでの問題-上位桁と下位桁の逆転 -要がある。
第5章 実験 51 nice 0 nice 5 nice 10 nice 15 nice 20 n=1 音飛びなし pi5 pi4 pi4 pi3
n=10000 音飛びなし pi4 pi4 pi3 pi2
n=192000 pi6 pi4 pi3 pi1
-n=960000 pi3 pi1 - -
-n=1920000 pi1 - - -
-表5.1: read gettbuf()の数と優先度に対する、音飛びする負荷の量 た場合もコマンドniceを使って調べた。優先度とは-20から20までの値 であり、小さければ小さいほど優先される。
表5.1は、録音プログラム中のread gettbufシステムコールを呼ぶ回数 とコマンドniceによる優先度の変更に対して、音飛びが発生するのはソ
フトpi fftcをいくつ同時に実行したときかを表す。表中の「pi数字」の
数字はソフトpi fftcの数を示す。
表5.1をみてわかるように、優先度を下げないと音飛びはほとんど発生 しない。優先度を下げない録音処理では、割り込み遅延はみられず安定 して録音することができた。10秒のデータサイズは1920000である。つ まりn=960000や1920000のように、read gettbufシステムコールを十分 多く呼び出してやっと音飛びする。このことから、現在のマシン性能なら カーネルでの処理での音飛びはほとんど発生しないと言える。
ではなぜ、音飛びが現実に発生するのだろうか。それは、アプリケー ションの処理が問題である。システムコールとシステムコールの間で別 の処理を行っているうちに、その間のI/Oデータを処理できなくなるな ど、アプリケーションレベルでのデッドラインミスが生じることが考えら れる。
現在マルチメディアの発展とマシンの高性能化に伴い、アプリケーショ ンがあらゆる機能を集約的に実行する設計の傾向がある。アプリケーショ ンがさまざまな仕事をこなすにつれて、このようなデッドラインミスの危 険性が増してしまうと考えられる。
52
第 6 章 まとめ
マルチメディアアプリケーションへの要求が高まり、実時間処理を行うリ アルタイムOSが注目されている。リアルタイムOSはもともと組み込み 分野で扱われていたシステムだが、現在ではマルチメディアの発展、パソ コンの普及などから、従来の汎用OSをリアルタイム化したリアルタイム OSが開発されている。
これらのリアルタイムOSは、時間制約の厳しいハードリアルタイム処 理を目的としている。デッドラインミスを制御し、リアルタイムタスクに よるリアルタイム処理を行う。
しかしこれらのリアルタイムOSのようなハードリアルタイム処理を実 現するのは難しく、この実現のためには複雑なシステムを用意しなければ ならない。
そこで我々は、I/Oに限定したリアルタイム化を行い、ストリームデー タのリアルタイム処理を行うシステムTS-I/Oを提案した。タイムスタン プ付ストリームI/O を利用することで、デッドラインミスを検知し、そ の情報をアプリケーションに伝えることが可能である。また、デッドライ ンミスに対するリカバリー処理である無音データの挿入処理を行い、スト リームI/Oの実時間制を保つことができる。
セクション4-5で述べたように、リカバリー処理をアプリケーションが 行なう方法がある。この処理を行なうライブラリの実装が今後の課題で ある。
TS-I/Oと現存するリアルタイムLinuxを比較してみる(表6.1)。TS-I/O のメリットはシステムのシンプルなところである。I/Oのみのリアルタイ ム化なのでOS全体に手を加える必要がなく、ユーザーは従来のLinuxの システムをそのまま使用することができる。
OS システムの複雑さ カーネル保護 実時間性
RT-Linux 複雑 × ハードリアルタイム
ART-Linux 複雑 ○ ハードリアルタイム
TS-I/O シンプル ○ I/Oのみのソフトリアルタイム
表6.1: 現存するリアルタイムLinuxとTS-I/Oの比較
第6章 まとめ 53 しかし、このシステムのシンプルさはデメリットでもある。I/Oに限っ てしかリアルタイム処理が行なえず、提供できる機能には限りがあるとい うことである。機能を追加すればそれだけシステムは複雑となる。現在の システムのシンプルさをできるだき維持しながら、どれだけの機能を追加 できるかが今後考えなければならないことである。
今回は音の録音についてのリアルタイム処理のシステムを提案した。今 後は音の再生についてのリアルタイム処理や、音以外のメディア、例えば 動画のようなI/Oのリアルタイム処理についてTS-I/Oを適応させる研究 を試みるつもりである。
54
参考文献
[1] : FSMLabs Community,http://fsmlabs.com/community/. [2] : ITRON Project Home Page (in Japanese), http://tron.um.
u-tokyo.ac.jp/TRON/ITRON/home-j.html/.
[3] : Lynux Works,http://www.lynuxworks.com/.
[4] : ウインドリバー株式会社,http://www.windriver.co.jp/.
[5] Beck, M., Dziadzka, M., Magnus, R., Kunitz, U., Dirk Verworner 著, 株式会社クイック訳: Linuxカーネルインターナル, 株式会社ピ アソン・エデュケーション(1999).
[6] 今 村 義 幸: ポ ス ト PC 時 代 の キ ー ワ ー ド「 エ ン ベ デッド 」の すべて,http://www.kumikomi.net/article/explanation/2001/
03postpc/.
[7] 森下功: Linuxによるリアルタイム処理の可能性を考える,インター フェース, Vol. 25, No. 11, pp. 68–71 (1999).
[8] 藤倉俊幸: 特集 産業用オペレーティングシステム完璧マスタ, イン ターフェース, Vol. 26, No. 6, pp. 52–58 (2000).
[9] 大浦拓哉: FFTとAGMによる円周率計算プログラム,http://www.
kurims.kyoto-u.ac.jp/~ooura/pi_fft-j.html.
[10] Jeff Tranter著, 山形 浩生訳: Linuxマルチメディアガイド, オライ リージャパン(1997).
[11] 石綿陽一: ART-Linux における実時間処理と Linux kernel 2.2 シリーズ対応版について, http://www.movingeye.co.jp/~you1/
art-linux/rlc200101/text.html.
[12] 石綿陽一: ART-Linuxの誕生の経緯と使い方, インターフェース, Vol. 25, No. 11, pp. 109–118 (1999).