I-27-5. タスク分割による性能向上

リアルタイムソフトウェアを利用したシステムの性能向上、最適化のためのソフトウェア作成方法を解説する。特に適切なタスク分割によるタスクの同期、並行動作の実現など、関連する話題を説明する。

【学習の要点】

* タスク設計の際には、入出力の速度差を解消すること、起動方式によってタスク分割を行うこと、割り込みハンドラとの処理分担を適切に行うことなども指針とされる。

* 入出力ポートの利用は、複数タスクから同時にはできない。そのため、あるタスクがポートを利用している間は、他のタスクからの入出力要求はキューで待機する。

* 並行処理を特定するためのガイドラインでは、「デバイス依存性の特定、イベント依存性の特定、時間依存性の特定(緊急度の度合い)、計算に特化したアクティビティの特定」(出典:Qing Li「リアルタイム組込みOS基礎講座」、翔泳社(2005))などの手順に従う。

図I-27-5. 並列処理を行うべき箇所を特定するガイドライン(出典:Qing Li「リアルタイム組込みOS基礎講座」、翔泳社(2005)に基づき三菱総合研究所が作成)

 

【解説】

1) タスク設計

タスクを適切に分割し、優先度を割り当てることでリアルタイム性を確保することがタスク設計の一つの重要な方針である。

* アウトサイド-インアプローチ

- アプリケーションの分解を行う手法であり、システムの入出力を特定することで、デバイスへのインターフェイスや入出力の関係を矢印で結んだコンテキスト図を記述する。

- コンテキスト図の入出力から潜在的なタスクを図に追加していく。この情報をもとにアプリケーションを分割していく。

- この手法のように、タスク設計の指針として入出力の単位ごとにタスク分割を行うことがしばしば行われる。入出力の速度差をキューによって解消でき効率の良いシステムを作ることができる。

* 並行処理を特定するためのガイドライン

アプリケーション内の処理の並行性を特定するために、定性的なタスク解析手順が存在する。

- デバイス依存性の特定

入出力割り込みの有無、同期非同期かによりタスクの独立性が決定される。

- イベント依存性の特定

イベントを適切に処理するタスク群が必要である。

- 時間依存性の特定(緊急度の度合い)

緊急度の高い順に処理を割り当てることが基本原則となる。

- 計算に特化したアクティビティの特定

入出力処理などCPU時間を多く取る処理がCPUを独占しないように優先度を下げる。

- 機能的な結合の特定

機能的に関係の高い処理を一つのタスクとしてまとめることにより同期と通信のオーバヘッドを避けることができる。

- 特定の目的を提供するタスクの特定

- 逐次的な結合の特定

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。