モダンOSとスレッドと最低応答時間と非対称性マルチCPU

何となく「さくさく動いているような気分」にさせるには、ユーザーの操作に対する最低応答時間を何とか短くすれば結構有効です。コンピュータの処理速度よりも人間はずーっと遅いパーツのくせに処理を優先させなければならないのは、全体のスループットとしては効率が悪いですが、人間側の感覚をごまかすためには仕方ありませんね。
で、最低応答時間を短くするには、OS側のブロッキングしている時間を可能な限り短くする必要があります。このためには、スレッドのコンテキストスイッチの間隔を短くしたりすると結構有効です。あとは、割り込みのハンドラをユーザー優先にするとか。OSは人間だけを相手にしているわけではないので、人間以外からも割り込まれますし、人間以外からの割り込みの方がどちらかというとクリティカルであることが多いです。
にもかかわらず、人間を優先する関係上、最低限よりもだいぶ多いマシンリソースを割いておかないと「さくさく動いているような気分」を実現するのは難しいです。モダンなOSはこの辺の優先順位の付け方がうまくいっているものが多いですが、いかんせん、それでも限界はあるしなぁ。
ユーザーからの入力は完全にアプリケーションCPUだけが解釈してRTOS側はユーザーの都合なんか無視するってのがいいのかなぁ。噂によるとDoCoMoのツインCPUマシンはSH-Mobileを使ってそうなってるらしいんだけど、どの辺のマシンがそうなんだろう?
落ちはありません。


そういや、昔、汎用RTOSでゲームを作ったとき、「レンダリングは必ず0.1s以内で終わらせてください」という無茶な要求があったな(^^;)。10fps出ない3Dのゲームでどうやれと。
あと、別の機会では「かならず1/60s以内に1回サーバー関数を呼んでください」とか。レンダリングが0.1s以上かかるのにどうしろと(^^;)。
いや、システム側がそれを要求している理由は分かるんだけどさ……。