I-26-8. プログラム資源の管理、複数タスクによる同時利用

プログラム資源の管理、有効活用の方式、実装方法について解説する。また複数タスクの同時利用方法として、処理待ちキュー、タスクの優先順位、入出力装置による待ち時間の勘案といったタスク管理も説明する。

【学習の要点】

* 複数のプログラムから同時に呼ばれるルーチンや、メモリに常駐して何度も繰り返し実行されるプログラムは、リユーザブル(再利用可能)、リエントラント(再入可能)、といった性質を満たす必要がある。

* リユーザブルプログラムとは、一度実行した後に再度プログラムを実行しても正しく処理できるプログラムを指す。

* リエントラントプログラムは、プログラムのあるルーチンの実行中に同じルーチンが呼び出されても正しい結果を返せるプログラムを指す。

図I-26-8. リエントラントプログラム

【解説】

1) プログラム資源の管理

* リユーザブルとリエントラント

- リユーザブル(Reusable, 再利用可能)プログラムは、一度実行した後に、再度実行しても正確な実行を繰り返す性質をもつプログラムである。

- 組み込みシステムの場合、単一リンクモジュールやメモリ常駐ルーチンにおいてリユーザブルであることが求められる。

- リエントラント(Reentrant, 再入)プログラムは、プログラムのあるルーチンの実行中に同じルーチンが実行されても正確な実行を繰り返す性質を持つプログラムである。

* ロールインとロールアウト(スワップ)

- OSにより必要なプログラムをメモリ上に読み込むことをロールインと呼ぶ。

- 読み込む際に、メモリ領域が不足している場合には、不要なメモリ領域の情報を補助記憶に書きだしてメモリ領域を確保する。この書き出しをロールアウトと呼ぶ。

* 動的メモリ管理機能

- プログラムの実行中に動的にメモリの確保・解放を行う仕組み(ガベージコレクション)を提供するプログラミング言語もある(I-26-7参照)。

* ワーキングセット

- ソフトウェアが利用しているメモリのうち、ロールアウトされていない領域をワーキングセットと呼ぶ。

2) 複数タスクの同時使用

* 処理待ちキューの作り方

- 処理依頼の到着順

FIFO と呼ばれる方式である。これは「First In, First Out」の略であり、最初に入ったタスクが最初に処理される方式である。

- タスクの優先順位順

タスクの優先度の高い順に実行を進める、追い越しを許した処理待ちキューである。タイムスライスという一定時間単位を割り当てるタイムスライス方式で、優先度の高い順にタスクを実行するラウンドロビン方式などがある。

- 入出力装置/他のマイコンとの関係の効率順

あるタスクの入出力の結果にほかのタスクが依存している場合など、実行効率を考慮した優先度を動的に割り当てる。

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