Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/11-6
11-6 マイクロカーネル
Palm OS は基本的なタスク管理を行うプリエンプティブなマルチタスクカーネルを有しています。
ほとんどのアプリケーションはマイクロカーネルのサービスを必要としません。なぜなら、システムが自動的に処理するからです。この機能は主にシステムソフトウェアの内部での使用や特殊目的のアプリケーションのために用意されています。
このバージョンの Palm OS では、同時に動作できる UI アプリケーションは1つだけです。ユーザーインターフェースアプリケーションシェル( UIAS )が稼働中のユーザーインターフェースアプリケーションを管理します。UIAS はユーザーインターフェースアプリケーションをサブルーチンとして起動し、そのアプリケーションが終了するまでは制御を戻しません。UIAS に制御が戻ると、UIAS はただちに次のアプリケーションを別のサブルーチンとして起動します。詳細については“電源管理の関数”を参照して下さい。
通常、UIAS は動作している唯一のタスクになります。しかし、場合によってはアプリケーションが通常処理の一部として別のタスクを起動する場合があります。その1つの例が同期アプリケーションで、デスクトップとのシリアル通信を処理するための2つ目のタスクを起動します。同期アプリケーションはシリアル通信に専念するタスクを作成し、メインのユーザーインタフェイスタスクよりも低い優先度を設定します。結果として、シリアルポートの処理は UI 操作に対する応答による遅延のない最適なパフォーマンスとなります。
通常、同期中はユーザー操作が発生しないので、シリアル通信タスクはプロセッサ時間の全てを利用できます。しかし、ユーザーが(例えば同期をキャンセルするために)スクリーンをタップした場合、ユーザーインタフェイスタスクはより高い優先度を持っているため、ただちにタップを処理します。一方、同期アプリケーションを単一のタスクとして実装した場合、シリアル通信中に定期的にユーザー入力をポーリングしなければならず、パフォーマンスもユーザーインタフェイスの応答時間の両方に遅延が発生してしまいます。
- NOTE
- 別のタスクを起動できるのはシステムソフトウェアだけです。マルチタスク関連の API は開発者によるアプリケーションからは利用できません。