Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's Companion Volume I/11-6

← 5 節に戻る ↑11 章トップへ 7 節に進む →


11-6 マイクロカーネル

 
Palm OS は基本的なタスク管理を行うプリエンプティブなマルチタスクカーネルを有しています。

ほとんどのアプリケーションはマイクロカーネルのサービスを必要としません。なぜなら、システムが自動的に処理するからです。この機能は主にシステムソフトウェアの内部での使用や特殊目的のアプリケーションのために用意されています。

このバージョンの Palm OS では、同時に動作できる UI アプリケーションは1つだけです。ユーザーインターフェースアプリケーションシェル( UIAS )が稼働中のユーザーインターフェースアプリケーションを管理します。UIAS はユーザーインターフェースアプリケーションをサブルーチンとして起動し、そのアプリケーションが終了するまでは制御を戻しません。UIAS に制御が戻ると、UIAS はただちに次のアプリケーションを別のサブルーチンとして起動します。詳細については“電源管理の関数”を参照して下さい。

通常、UIAS は動作している唯一のタスクになります。しかし、場合によってはアプリケーションが通常処理の一部として別のタスクを起動する場合があります。その1つの例が同期アプリケーションで、デスクトップとのシリアル通信を処理するための2つ目のタスクを起動します。同期アプリケーションはシリアル通信に専念するタスクを作成し、メインのユーザーインタフェイスタスクよりも低い優先度を設定します。結果として、シリアルポートの処理は UI 操作に対する応答による遅延のない最適なパフォーマンスとなります。

通常、同期中はユーザー操作が発生しないので、シリアル通信タスクはプロセッサ時間の全てを利用できます。しかし、ユーザーが(例えば同期をキャンセルするために)スクリーンをタップした場合、ユーザーインタフェイスタスクはより高い優先度を持っているため、ただちにタップを処理します。一方、同期アプリケーションを単一のタスクとして実装した場合、シリアル通信中に定期的にユーザー入力をポーリングしなければならず、パフォーマンスもユーザーインタフェイスの応答時間の両方に遅延が発生してしまいます。

NOTE
別のタスクを起動できるのはシステムソフトウェアだけです。マルチタスク関連の API は開発者によるアプリケーションからは利用できません。

 


← 5 節に戻る ↑11 章トップへ 7 節に進む →