(57)【特許請求の範囲】
【請求項１】
リアルタイムＯＳのタスク又は汎用ＯＳのプロセスが要求する入出力要求がエンキューされる入出力要求キューと、
前記入出力要求キューに、前記入出力要求をエンキューする優先度制御部とを備え、
前記入出力要求は、
タスク（プロセス）識別子、優先度、及び入出力データのアドレス範囲を示す入出力ブロックとを含み、
前記入出力要求キューは、
既にエンキューされている前記入出力要求の中から、前記優先度が最高値である前記入出力要求をデキューし、
前記優先度制御部は、
前記汎用ＯＳのプロセスにより要求された前記入出力要求を、前記入出力要求キューにエンキューする際には、前記入出力要求キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求のうち、前記優先度が最高値である前記優先度を取得し、最高値である前記優先度に基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求の前記入出力ブロックを分割することにより、前記汎用ＯＳのプロセスにより要求された前記入出力要求を分割する
入出力要求の優先度コントローラ。
【請求項２】
前記優先度制御部は、
第１のサブテーブルと、第２のサブテーブルとを含む優先度管理テーブルを更に備え、
前記第１のサブテーブルは、前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度毎に、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定め、
前記第２のサブテーブルは、前記入出力キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求の前記タスク識別子と、前記優先度を管理し、
前記優先度制御部は、前記優先度管理テーブルに基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求を分割する
請求項１に記載の入出力要求の優先度コントローラ。
【請求項３】
前記第１のサブテーブルは、
前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度の大きさと反比例するように、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定める
請求項２に記載の入出力要求の優先度コントローラ。
【請求項４】
前記リアルタイムＯＳのタスクが要求する前記入出力要求の前記優先度は、前記リアルタイムＯＳのタスクの優先度と同一であり、
汎用ＯＳのプロセスが要求する前記入出力要求の前記優先度は、前記汎用ＯＳのプロセスの優先度と同一である
請求項１乃至３のいずれか１項に記載の入出力要求の優先度コントローラ。
【請求項５】
リアルタイムＯＳのタスク又は汎用ＯＳのプロセスが要求する入出力要求がエンキューされる入出力要求キューと、
前記入出力要求キューに、前記入出力要求をエンキューする優先度制御部とを備える入出力要求の優先度コントローラにおいて、ここで、前記入出力要求は、タスク（プロセス）識別子、優先度、及び入出力データのアドレス範囲を示す入出力ブロックとを含み、
前記入出力要求キューが、既にエンキューされている前記入出力要求の中から、前記優先度が最高値である前記入出力要求をデキューするステップと、
前記優先度制御部が、前記汎用ＯＳのプロセスにより要求された前記入出力要求を、前記入出力要求キューにエンキューする際には、前記入出力要求キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求のうち、前記優先度が最高値である前記優先度を取得するステップと、
前記優先度制御部が、最高値である前記優先度に基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求の前記入出力ブロックを分割することにより、前記汎用ＯＳのプロセスにより要求された前記入出力要求を分割するステップと
を含む入出力要求の優先度制御方法。
【請求項６】
前記優先度制御部は、
第１のサブテーブルと、第２のサブテーブルとを含む優先度管理テーブルを更に備え、
前記第１のサブテーブルは、前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度毎に、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定め、
前記第２のサブテーブルは、前記入出力キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求の前記タスク識別子と、前記優先度を管理し、
前記分割するステップは、前記優先度管理テーブルに基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求を分割する
請求項５に記載の入出力要求の優先度制御方法。
【請求項７】
前記第１のサブテーブルは、
前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度の大きさと反比例するように、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定める
請求項６に記載の入出力要求の優先度制御方法。
【請求項８】
前記リアルタイムＯＳのタスクが要求する前記入出力要求の前記優先度は、前記リアルタイムＯＳのタスクの優先度と同一であり、
汎用ＯＳのプロセスが要求する前記入出力要求の前記優先度は、前記汎用ＯＳのプロセスの優先度と同一である
請求項５乃至７のいずれか１項に記載の入出力要求の優先度制御方法。
【請求項９】
リアルタイムＯＳのタスク又は汎用ＯＳのプロセスが要求する入出力要求がエンキューされる入出力要求キューと、
前記入出力要求キューに、前記入出力要求をエンキューする優先度制御部とを備える入出力要求の優先度コントローラにおいて、ここで、前記入出力要求は、タスク（プロセス）識別子、優先度、及び入出力データのアドレス範囲を示す入出力ブロックとを含み、
前記入出力要求キューが、既にエンキューされている前記入出力要求の中から、前記優先度が最高値である前記入出力要求をデキューするステップと、
前記優先度制御部が、前記汎用ＯＳのプロセスにより要求された前記入出力要求を、前記入出力要求キューにエンキューする際には、前記入出力要求キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求のうち、前記優先度が最高値である前記優先度を取得するステップと、
前記優先度制御部が、最高値である前記優先度に基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求の前記入出力ブロックを分割することにより、前記汎用ＯＳのプロセスにより要求された前記入出力要求を分割するステップと
を入出力要求の優先度コントローラに実行させるための入出力要求の優先度制御プログラム。
【請求項１０】
前記優先度制御部は、
第１のサブテーブルと、第２のサブテーブルとを含む優先度管理テーブルを更に備え、
前記第１のサブテーブルは、前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度毎に、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定め、
前記第２のサブテーブルは、前記入出力キューに、既にエンキューされている前記リアルタイムＯＳのタスクが要求した前記入出力要求の前記タスク識別子と、前記優先度を管理し、
前記分割するステップは、前記優先度管理テーブルに基づいて、前記汎用ＯＳのプロセスが要求する前記入出力要求を分割する
請求項９に記載の入出力要求の優先度制御プログラム。
【請求項１１】
前記第１のサブテーブルは、
前記リアルタイムＯＳのタスクにより要求される前記入出力要求の前記優先度の大きさと反比例するように、前記汎用ＯＳのプロセスが要求する前記入出力要求に設定できる前記入出力ブロックの大きさの最大値を定める
請求項１０に記載の入出力要求の優先度制御プログラム。
【請求項１２】
前記リアルタイムＯＳのタスクが要求する前記入出力要求の前記優先度は、前記リアルタイムＯＳのタスクの優先度と同一であり、
汎用ＯＳのプロセスが要求する前記入出力要求の前記優先度は、前記汎用ＯＳのプロセスの優先度と同一である
請求項９乃至１１のいずれか１項に記載の入出力要求の優先度制御方法。
【請求項１３】
請求項１〜４のいずれか１項に記載した入出力要求の優先度コントローラと、
前記優先度コントローラが制御する入出力要求を受け付けるリアルタイムオペレーティングシステム及び汎用オペレーティングシステムに共用される共有記憶装置とを具備する
組み込みシステム。
【請求項１４】
請求項５〜８のいずれか１項に記載した入出力要求の優先度制御方法を使用した組み込みシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力要求の優先度コントローラ、入出力要求の優先度制御方法、及び、入出力要求の優先度制御プログラムに関する。
【背景技術】
【０００２】
ある応答を、ある決められた時間内に行うリアルタイムＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が知られる。リアルタイムＯＳは、カーナビゲーション、デジタルカメラ、情報家電、携帯電話機の組み込みシステムなどで使用されている。特に、組み込みシステムにおいては、近年、リアルタイム処理に加えて、音声データや動画データを扱うマルチメディア処理を行うなど、システムの高機能化が求められている。
【０００３】
高機能化を実現する手法の一つとして、ハイブリッドＯＳが知られる。ハイブリッドＯＳは、リアルタイム処理を行うリアルタイムＯＳと、マルチメディア処理などを行う汎用ＯＳとの２種類のＯＳを擁したＯＳである。ＯＳのハイブリッド化により、リアルタイムＯＳが持つ高リアルタイム性や高信頼性、及び、汎用ＯＳが持つ高スケーラビリティや高スループットなど、二つのＯＳの特長を併せ持つシステムが実現可能となる。
【０００４】
組み込みシステムでＯＳのハイブリッド化を行う場合、省スペースの制約などのため、ＯＳ毎にディスクを設けることが難しい。そのため、ＯＳ間でディスクを共有する必要がある。しかし、共有ディスクを設けた場合、リアルタイムＯＳの入出力処理が、汎用ＯＳの入出力処理によって阻害され、レスポンスが低下することがある。
【０００５】
加えて、汎用ＯＳでは、スループットを重視するため、入出力要求の入出力ブロックサイズが、リアルタイムＯＳの入出力要求の入出力ブロックサイズと比較して大きくなるという傾向が見られる。入出力ブロックサイズが大きいと、入出力要求あたりの入出力処理の実行時間が長くなるため、汎用ＯＳの入出力処理により、リアルタイムＯＳの入出力処理を開始できず、かなりの頻度で遅延が生じてしまう。
【０００６】
特開平１１−３９２４６号公報（特許文献１参照）には、通常優先度のＩ／Ｏブロックを分割可能なディスクアクセス方式の発明が記載されている。このディスクアクセス方式の発明においては、現在処理中のＩ／Ｏ要求よりも高優先度Ｉ／Ｏ要求が発生した場合に、ディスクのＩ／Ｏブロックを分割した単位であるＩ／Ｏサブブロックの切れ目にて、高優先度Ｉ／Ｏ要求を割り込ませて先に処理する。
【０００７】
【特許文献１】特開平１１−３９２４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の課題は、ハイブリッドＯＳにおいて、リアルタイムＯＳのレスポンスが遅延することを回避すると共に、汎用ＯＳのスループットが低下することを抑止するための優先度制御を行うことである。
【課題を解決するための手段】
【０００９】
本発明の一つ目のアスペクトによる入出力要求の優先度コントローラは、優先度管理テーブルと、優先度制御部と、入出力要求キューとを備える。優先度管理テーブルは、リアルタイムオペレーティングシステムに発行される第一の入出力要求の優先度に応じて、汎用オペレーティングシステムに発行される第二の入出力要求に許容する入出力ブロックの大きさを決定するためのテーブルである。優先度制御部は、第一の入出力要求と、第二の入出力要求とを受け取ると共に、優先度管理テーブルに基づいて、第二の入出力要求を分割する。入出力要求キューは、第一の入出力要求と、優先度制御部によって分割された第二の入出力要求とを、優先度順にエンキューする。
【００１０】
本発明の二つ目のアスペクトによる入出力要求の優先度制御方法は、受け取ることと、決定することと、分割することと、エンキューすることとを備える。受け取ることは、リアルタイムオペレーティングシステムに発行される第一の入出力要求を受け取ると共に、汎用オペレーティングシステムに発行される第二の入出力要求を受け取る。決定することは、第一の入出力要求の優先度に応じて、第二の入出力要求に許容する入出力ブロックの大きさを決定する。分割することは、その大きさに基づいて、第二の入出力要求を分割する。エンキューすることは、第一の入出力要求と、分割することによって分割された第二の入出力要求とを、優先度順に入出力要求キューにエンキューする。
【００１１】
本発明の三つ目のアスペクトによる入出力要求の優先度制御プログラムは、受け取る手順と、決定する手順と、分割する手順と、エンキューする手順とをコンピュータに実行させる。受け取る手順は、リアルタイムオペレーティングシステムに発行される第一の入出力要求を受け取ると共に、汎用オペレーティングシステムに発行される第二の入出力要求を受け取る。決定する手順は、第一の入出力要求の優先度に応じて、第二の入出力要求に許容する入出力ブロックの大きさを決定する。分割する手順は、この大きさに基づいて、第二の入出力要求を分割する。エンキューする手順は、第一の入出力要求と、分割することによって分割された第二の入出力要求とを、優先度順に入出力要求キューにエンキューする。
【発明の効果】
【００１２】
本発明によれば、ハイブリッドＯＳにおいて、リアルタイムＯＳのレスポンスが遅延することを回避すると共に、汎用ＯＳのスループットが低下することを抑止するための優先度制御を行うことができる。
【発明を実施するための最良の形態】
【００１３】
本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図１に、一つの実施の形態による入出力要求の優先度コントローラを、組み込みシステムに適用した構成図を示す。図１において、組み込みシステムはハイブリッドＯＳを装備しており、リアルタイムＯＳ  ３と、ＯＳ間通信部４と、汎用ＯＳ  ５とを有している。リアルタイムＯＳ  ３の上ではリアルタイムＯＳ・アプリケーション１が動作し、汎用ＯＳ  ４の上では汎用ＯＳ・アプリケーション２が動作している。これらのソフトウェア１〜５は、組み込みシステムが備えるシングルプロセッサ又はマルチコアプロセッサで実行されている。図中、組み込みシステムは一つのみの共有ディスク６を備え、両ＯＳ  ３，５は同一の共有ディスク６を使用するようになっている。
【００１４】
図１において、リアルタイムＯＳ・アプリケーション１として、二つのタスク１１，１２が動作している。また、汎用ＯＳ・アプリケーション２として、二つのプロセス２１，２２が動作している。タスク１１，１２は、リアルタイムＯＳ  ３の入出力受付部３１に対して、入出力要求を発行する。一方、プロセス２１，２２は、汎用ＯＳ  ５の入出力受付部５１に対して、入出力要求を発行する。リアルタイムＯＳ  ３の入出力受付部３１は、タスク１１，２２から入出力要求を受け取ると、この入出力要求を、入出力要求の優先度コントローラ７０に通知する。汎用ＯＳの入出力受付部５１は、プロセス２１，２２から入出力要求を受け取ると、この入出力要求を、ＯＳ間通信部４を経由して、優先度コントローラ７０に通知する。
【００１５】
優先度コントローラ７０は、入出力受付部３１から、又は、入出力受付部５１から入出力要求を受け取る。そして、一定条件下、入出力要求を分割するなどして、入出力要求の優先度を制御する。入出力処理部３５は、優先度コントローラ７０から、優先度順に従って入出力要求を取り出し、共有ディスク６に対する入出力を実行する。入出力が完了すると、優先度コントローラ７０は、入出力要求元に入出力の完了を通知する。
【００１６】
図２は、入出力要求の優先度コントローラの一例を説明する構成図である。図示するように、優先度コントローラ７０は、優先度制御部７１と、優先度管理テーブル７２と、入出力要求キュー７３とを有している。図２において、優先度制御部７１は、入出力要求を受け取ると共に、受け取った入出力要求を、入出力要求キュー３３に優先度順にエンキューする。このとき、優先度制御部３２は、優先度管理テーブルを参照して、汎用ＯＳ  ５の入出力受付部５１からの入出力要求を、一定条件下、予め決められたアルゴリズムに従って分割する。
【００１７】
図３は、優先度管理テーブルの具体例を示す説明図である。図３に例示する優先度管理テーブル７２は、二つのサブテーブルを備えている。図３において、一つ目のサブテーブルは、二つ目のサブテーブルにおけるタスクの優先度と、汎用ＯＳ  ５の入出力受付部５１からの入出力要求について、入出力ブロックの大きさを制限する部分ブロックサイズとの対応表である。タスクの優先度が高いほど、より小さなサイズの部分ブロックサイズが割り当てられ、タスクの優先度が低いほど、より大きなサイズの部分ブロックサイズが割り当てられている。二つ目のサブテーブルは、入出力要求キュー３３にエンキューされている入出力要求を発行したタスクと、そのタスクの優先度との対応表である。ここでは、入出力要求の優先度は、その入出力要求を発行したタスクの優先度と等価になっていて、同一のタスクから発行される入出力要求は、全て、同じ優先度を割り当てられている。
【００１８】
図４は、入出力要求の説明図である。図示するように、タスク１１，１２及びプロセス２１，２２が発行する入出力要求は、発行元のタスク（又はプロセス）を特定するタスク識別子（又はプロセス識別子）と、そのタスク（又はプロセス）の優先度と、入出力ブロックとに関する情報を含んでいる。入出力ブロックの欄には、例えば、簡便に説明すると、アドレスが＃０から＃９までというような入出力データを特定する情報が含まれている。
【００１９】
図５は、優先度制御部の動作を説明する流れ図である。リアルタイムＯＳ・アプリケーション１のタスク１１，１２、又は、汎用ＯＳ・アプリケーション２のプロセス２１，２２が入出力要求を発行すると、優先度制御部７１は、入出力受付部３１又は入出力受付部５１から、その入出力要求を受け取る（ステップＡ１）。優先度制御部７１は、この入出力要求が、汎用ＯＳ・アプリケーション２のプロセス２１，２２から発行されたものか否かを確認する（ステップＡ２）。
【００２０】
汎用ＯＳ  ５からの入出力要求の場合（ステップＡ２：イエス）、優先度制御部７１は、優先度管理テーブル７２を参照する（ステップＡ３）。ここで、優先度制御部７１は、まず、第二のサブテーブルから、エントリされているタスクの優先度の最高値を取り出す（ステップＡ４）。次に、第一のサブテーブルから、優先度の最高値に対応する部分ブロックサイズを取り出す（ステップＡ５）。優先度制御部７１は、入出力要求における入出力ブロックの欄のサイズが、取り出した部分ブロックサイズよりも大きかった場合には、部分ブロックサイズ以下になるように、汎用ＯＳ  ５からの入出力要求を分割する（ステップＡ６）。そして、分割された入出力要求を、優先度順になるように入出力要求キュー７３にエンキューする（ステップＡ７）。
【００２１】
リアルタイムＯＳ・アプリケーション１のタスク１１，１２が発行した入出力要求の場合（ステップＡ２：ノー）、優先度制御部７１は、入出力要求を分割せずに、優先度順になるように入出力要求キュー７３にエンキューする（ステップＡ７）。このとき、優先度制御部７１は、優先度管理テーブル７２における第二のサブテーブルに、その入出力要求を発行したタスクのタスク識別子と、優先度とを有するエントリを追加する。
【００２２】
優先度制御部の動作と並行して、入出力処理部３５は、入出力要求キュー７３から、優先度が最も高い先頭の入出力要求をデキューし、共有ディスク６に対し入出力を実行する。入出力が完了すると、優先度制御部７１は、その入出力要求に関するエントリを、優先度管理テーブル７２における第二のサブテーブルから削除する。同時に、入出力要求の発行元であるリアルタイムＯＳ・アプリケーション１のタスク１１、タスク１２へ、又は、汎用ＯＳ・アプリケーション２のプロセス２１、プロセス２２へ入出力の完了を通知する。
【００２３】
図５の動作例では、第二のサブテーブルを参照することにより優先度を取得し、これらの優先度の最高位を算出し、その後、第一のサブテーブルを参照した。別の動作例として、第二のサブテーブルを参照することにより優先度を取得し、これらの優先度の全てについて、第一のサブテーブルを参照することによりそれぞれの部分ブロックサイズを取得し、最後に、これらの部分ブロックサイズの最小値を算出するようにしても良い。
【００２４】
このように、本実施の形態では、汎用ＯＳ  ５からの入出力要求を、優先度管理テーブル７２で制限している部分ブロックサイズ以下の入出力ブロックを有する複数の入出力要求に分割している。分割を行えば、入出力要求あたりの入出力の実行時間が短くなるので、リアルタイムＯＳの入出力の開始が遅延しないようになる。
【００２５】
一般的に、リアルタイムＯＳの入出力は、タスクの優先度が高いほど高レスポンス性が必要とされる。本実施の形態では、汎用ＯＳ  ５からの入出力要求における入出力ブロックの大きさを制限する部分ブロックサイズを、リアルタイムＯＳのタスクの優先度により可変としている。従って、リアルタイムＯＳのタスクで、非常に高いレスポンス性を要求するものがある場合には、部分ブロックサイズを小さくすることにより、相応の高レスポンス性を確保することができる。同時に、リアルタイムＯＳのタスクで、高いレスポンス性を必要とするものが無い場合には、部分ブロックサイズを大きくすることにより、汎用ＯＳのスループットの低下を抑止することができる。
【００２６】
以上説明したように、本実施の形態によれば、一定条件下、汎用ＯＳからの入出力要求を分割することにより、入出力要求あたりの入出力の実行時間を短くするようにしているため、リアルタイムＯＳの特長である高レスポンス性を十分に確保することができる。また、分割後における入出力ブロックの最大サイズとなる部分ブロックサイズを、リアルタイムＯＳのタスクの優先度により可変としているので、汎用ＯＳのスループットの低下を抑止することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明を実施するための最良の形態の一つを説明する構成図である。
【図２】図２は、入出力要求の優先度コントローラの一例を説明する構成図である。
【図３】図３は、優先度管理テーブルの具体例を示す説明図である。
【図４】図４は、入出力要求の説明図である。
【図５】図５は、優先度制御部の動作を説明する流れ図である。
【符号の説明】
【００２８】
１，２  アプリケーション
３，５  ＯＳ
４  ＯＳ間通信部
６  共有ディスク
１１，１２  タスク
２１，２２  プロセス
３１，５１  入出力受付部
３５  入出力処理部
７０  入出力要求の優先度コントローラ
７１  優先度制御部
７２  優先度管理テーブル
７３  入出力要求キュー
【図１】
0004984165.tif 000002
【図２】
0004984165.tif 000003
【図３】
0004984165.tif 000004
【図４】
0004984165.tif 000005
【図５】
0004984165.tif 000006