(57)【特許請求の範囲】
【請求項１】
リアルタイムＯＳと汎用ＯＳとからなるハイブリッドＯＳがインストールされたコンピュータシステムであって、
前記リアルタイムＯＳと前記汎用ＯＳとに共有される共有デバイスと、
前記汎用ＯＳに対して発行された第１入出力要求を、前記第１入出力要求によって入出力が要求された入出力ブロックを複数の部分ブロックに分割して入出力するように要求する複数の第２入出力要求に分割する入出力要求分割手段と、
前記複数の第２入出力要求と前記リアルタイムＯＳに対して発行された第３入出力要求を、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて異なる優先度を有する複数の入出力要求キューのいずれかにエンキューする優先度制御手段と、
前記複数の第２入出力要求と前記第３入出力要求に応答して前記共有デバイスへの入出力処理を行う入出力処理手段
とを具備し、
前記入出力処理手段は、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて、前記共有デバイスへの前記入出力処理の優先度制御を行い、
前記入出力処理手段は、高い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理を、低い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理よりも優先して行い、
前記発行元がリアルタイムクラスである前記第３入出力要求は、前記複数の入出力要求キューのうち優先度が最も高い第１入出力要求キューにエンキューされ、
対応する前記第１入出力要求の前記発行元がリアルタイムクラスである前記複数の第２入出力要求は、前記第１入出力要求キューよりも優先度が低い第２入出力要求キューにグループ分けされ、
前記発行元がタイムシェアクラスである前記第３入出力要求、及び対応する前記第１入出力要求の前記発行元がタイムシェアクラスである前記複数の第２入出力要求は、前記第２入出力要求キューよりも優先度が低い第３入出力要求キューにグループ分けされる
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムであって、
前記入出力要求分割手段は、前記複数の部分ブロックのサイズを、前記リアルタイムＯＳに対して前記第３入出力要求を発行したタスクの優先度に応じて調節する
コンピュータシステム。
【請求項３】
請求項２に記載のコンピュータシステムであって、
更に、
前記リアルタイムＯＳに対して前記第３入出力要求が発行されると、前記第３入出力要求を発行した前記タスクとその優先度をテーブルに登録する登録手段と、
前記共有デバイスに対する前記入出力処理が行われた前記第３入出力要求を発行した前記タスクとその優先度を前記テーブルから削除する削除手段
とを具備し、
前記複数の部分ブロックのサイズは、前記テーブルに登録された前記タスクのうち優先度が最も高いタスクである最高優先タスクの優先度に応じて調節される
コンピュータシステム。
【請求項４】
請求項３に記載のコンピュータシステムであって、
前記複数の部分ブロックのサイズは、前記最高優先タスクの優先度が高いほど前記複数の部分ブロックのサイズが小さくなるように調節される
コンピュータシステム。
【請求項５】
リアルタイムＯＳと汎用ＯＳとからなるハイブリッドＯＳがインストールされ、共有デバイスが前記リアルタイムＯＳと前記汎用ＯＳとに共有されるコンピュータシステムにおける入出力優先度制御方法であって、
前記汎用ＯＳに対して発行された第１入出力要求を、前記第１入出力要求によって入出力が要求された入出力ブロックを複数の部分ブロックに分割して入出力するように要求する複数の第２入出力要求に分割するステップと、
前記複数の第２入出力要求と前記リアルタイムＯＳに対して発行された第３入出力要求を、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて異なる優先度を有する複数の入出力要求キューのいずれかにエンキューするステップと、
前記複数の第２入出力要求と前記第３入出力要求に応答して前記共有デバイスへの入出力処理を行うステップ
とを具備し、
前記共有デバイスへの前記入出力処理を行うステップは、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて、前記入出力処理の優先度制御を行うステップを備えており、
前記共有デバイスへの前記入出力処理では、高い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理が、低い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理よりも優先して行われ、
前記発行元がリアルタイムクラスである前記第３入出力要求は、前記複数の入出力要求キューのうち優先度が最も高い第１入出力要求キューにエンキューされ、
対応する前記第１入出力要求の前記発行元がリアルタイムクラスである前記複数の第２入出力要求は、前記第１入出力要求キューよりも優先度が低い第２入出力要求キューにグループ分けされ、
前記発行元がタイムシェアクラスである前記第３入出力要求、及び対応する前記第１入出力要求の前記発行元がタイムシェアクラスである前記複数の第２入出力要求は、前記第２入出力要求キューよりも優先度が低い第３入出力要求キューにグループ分けされる
入出力優先度制御方法。
【請求項６】
リアルタイムＯＳと汎用ＯＳとからなるハイブリッドＯＳがインストールされ、共有デバイスが前記リアルタイムＯＳと前記汎用ＯＳとに共有されるコンピュータシステムに、
前記汎用ＯＳに対して発行された第１入出力要求を、前記第１入出力要求によって入出力が要求された入出力ブロックを複数の部分ブロックに分割して入出力するように要求する複数の第２入出力要求に分割するステップと、
前記複数の第２入出力要求と前記リアルタイムＯＳに対して発行された第３入出力要求を、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて異なる優先度を有する複数の入出力要求キューのいずれかにエンキューするステップと、
前記複数の第２入出力要求と前記第３入出力要求に応答して前記共有デバイスへの入出力処理を行うステップ
と実行させるプログラムであって
前記共有デバイスへの前記入出力処理を行うステップでは、前記共有デバイスへの前記入出力処理の優先度制御が、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて行われ、
前記共有デバイスへの前記入出力処理では、高い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理が、低い優先度が与えられた前記入出力要求キューにエンキューされた入出力要求に応答した入出力処理よりも優先して行われ、
前記発行元がリアルタイムクラスである前記第３入出力要求は、前記複数の入出力要求キューのうち優先度が最も高い第１入出力要求キューにエンキューされ、
対応する前記第１入出力要求の前記発行元がリアルタイムクラスである前記複数の第２入出力要求は、前記第１入出力要求キューよりも優先度が低い第２入出力要求キューにグループ分けされ、
前記発行元がタイムシェアクラスである前記第３入出力要求、及び対応する前記第１入出力要求の前記発行元がタイムシェアクラスである前記複数の第２入出力要求は、前記第２入出力要求キューよりも優先度が低い第３入出力要求キューにグループ分けされる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、入出力優先度制御方法、及びプログラムに関し、特に、リアルタイムＯＳと汎用ＯＳとが組み込まれたハイブリッドＯＳにおける入出力処理の競合制御に関する。
【背景技術】
【０００２】
カーナビゲーション、デジタルカメラ、情報家電、携帯電話機その他の組み込みシステムでは、従来行われているようなリアルタイム処理に加えて音声データや動画データを扱うマルチメディア処理を行うなど、システムの高機能化が求められている。
【０００３】
高機能化を実現する一つの手法は、リアルタイム処理を行うリアルタイムＯＳ（operating system）と、マルチメディア処理などを行う汎用ＯＳとの２種類のＯＳを搭載したハイブリッドＯＳを使用することである（例えば、特開２００５−２３４６５８号公報参照）。このようなハイブリッドＯＳを採用することにより、リアルタイムＯＳが持つ高リアルタイム性や高信頼性、及び、汎用ＯＳが持つ高スケーラビリティや高スループットなど、二つのＯＳの特長を併せ持つシステムが実現可能となる。
【０００４】
組み込みシステムでＯＳのハイブリッド化を行う場合、ＯＳ間でディスクを共有することが一般的である。これは、省スペースの制約などのため、ＯＳ毎にディスクを設けることが難しいためである。
【０００５】
しかし、共有ディスクを設けた場合、リアルタイムＯＳの入出力処理が汎用ＯＳの入出力処理によって阻害され、リアルタイムＯＳのレスポンスが低下することがある。リアルタイムＯＳのレスポンスの低下の一つの要因は、汎用ＯＳでは、スループットを向上するために、入出力要求の入出力ブロックサイズが大きい傾向にあることである。汎用ＯＳの入出力要求の入出力ブロックサイズが大きいと、一の入出力要求あたりの入出力処理の実行時間が長くなり、リアルタイムＯＳから要求される入出力処理が開始できずに遅延してしまう。
【０００６】
その一方で、リアルタイムＯＳのリスポンスの向上のみを指向した入出力処理は、好ましくない場合がある。例えば、リアルタイムＯＳにおいてリアルタイム性を必要としないタスクが実行され、汎用ＯＳにおいてある程度のリアルタイム性が求められるプロセスが実行されている場合がある。このような場合、汎用ＯＳにおいて実行されるプロセスが、リアルタイムＯＳの入出力処理によって遅延されることは好ましくない。
【０００７】
このような背景から、リアルタイムＯＳの入出力処理が汎用ＯＳの入出力処理によって阻害されてリアルタイムＯＳのレスポンスが低下するという問題に対処しながら、システム全体としての入出力処理の競合制御を最適に行うための技術の提供が求められている。
【０００８】
関連して、特開平１１−３９２４６号公報は、入出力処理の競合制御について開示している。より具体的には、この公報は、ディスクドライバに通常プライオリティＩ／Ｏ要求キューと高プライオリティＩ／Ｏ要求キューとを設けることを開示している。通常プライオリティで要求されたＩ／Ｏ要求については、Ｉ／Ｏブロックを分割したＩ／Ｏサブブロック単位でディスクに入出力処理が行われる。高プライオリティのＩ／Ｏ要求が発生した場合は、当該Ｉ／Ｏ要求への入出力処理は、Ｉ／Ｏサブブロックの切れ目で割り込んで先に処理される。
【０００９】
また、特開平１０−４９３８８号公報も、コンピュータの入出力処理の競合制御について開示している。この公報は、プロセスの優先度、入出力装置の転送データサイズおよびプロセスが要求する入出力データサイズを基に、ロック設定中の入出力処理で転送するロック時データ合計サイズを決定すること、及び優先度の高いプロセスには大きなロック時データ合計サイズを割り当てることを開示している。
【００１０】
しかしながら、これらの公報には、リアルタイムＯＳと汎用ＯＳとが組み込まれたハイブリッドＯＳにおける共有ディスクへの入出力処理の制御については何らの示唆もない。
【特許文献１】特開２００５−２３４６５８号公報
【特許文献２】特開平１１−３９２４６号公報
【特許文献３】特開平１０−４９３８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、リアルタイムＯＳの入出力処理が汎用ＯＳの入出力処理によって阻害されてリアルタイムＯＳのレスポンスが低下するという問題に対処しながら、システム全体としての入出力処理の競合制御を最適に行うための技術を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一の観点においては、リアルタイムＯＳと汎用ＯＳとからなるハイブリッドＯＳがインストールされたコンピュータシステムが、前記リアルタイムＯＳと前記汎用ＯＳとに共有される共有デバイスと、前記汎用ＯＳに対して発行された第１入出力要求を、前記第１入出力要求によって入出力が要求された入出力ブロックを複数の部分ブロックに分割して入出力するように要求する複数の第２入出力要求に分割する入出力要求分割手段と、前記複数の第２入出力要求と前記リアルタイムＯＳに対して発行された第３入出力要求に応答して前記共有デバイスへの入出力処理を行う入出力処理手段とを具備している。前記入出力処理手段は、前記複数の第２入出力要求に対応する前記第１入出力要求の発行元と前記第３入出力要求の発行元の性質に応じて、前記共有デバイスへの前記入出力処理の優先度制御を行う。
【発明の効果】
【００１３】
本発明によれば、リアルタイムＯＳの入出力処理が汎用ＯＳの入出力処理によって阻害されてリアルタイムＯＳのレスポンスが低下するという問題に対処しながら、システム全体としての入出力処理の競合制御を最適に行うための技術が提供される。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明のコンピュータシステムの一実施形態である組み込みシステム１０のシステム構成図を示す。当該組み込みシステム１０には、リアルタイムＯＳ３と汎用ＯＳ５からなるハイブリッドＯＳと、リアルタイムＯＳ３と汎用ＯＳ５との間のＯＳ間通信を行うＯＳ間通信ドライバ４とがインストールされている。リアルタイムＯＳ３、ＯＳ間通信ドライバ４、及び汎用ＯＳ５は、いずれも、組み込みシステム１０上で動作するソフトウェアプログラムであり、組み込みシステム１０のハードウェア資源（演算装置、入出力装置、記憶装置等）を用いて実行される。組み込みシステム１０は、共有ディスク６を備えており、この共有ディスク６は、リアルタイムＯＳ３と汎用ＯＳ５の間で共有される。
【００１５】
当該組み込みシステム１０には、更に、リアルタイムＯＳ３の上で動作するアプリケーション１と、汎用ＯＳ５の上で動作するアプリケーション２とがインストールされている。リアルタイムＯＳ３上で動作するアプリケーション１は、様々なタスクを実行しており、同様に、汎用ＯＳ５上で動作するアプリケーション２は、様々なプロセスを実行している。図１では、アプリケーション１によって実行されるタスクは符号１１、１２によって示されており、アプリケーション２によって実行されるプロセスは符号２１、２２によって示されている。
【００１６】
汎用ＯＳ５は、入出力受付インターフェース５１を備えており、この入出力受付インターフェース５１により、プロセス２１、２２によって汎用ＯＳ５に対して発行された入出力要求を受け付ける。図２Ａは、汎用ＯＳ５に対して発行される入出力要求のフォーマットを示す概念図である。汎用ＯＳ５に対して発行される入出力要求は、ヘッダ６１と入出力ブロック情報６２とを備えている。ヘッダ６１は、その発行元のプロセスを識別するプロセス識別子６３と、発行元のプロセスのクラスを示す発行元プロセス情報６４とを含んでいる。本実施形態では、アプリケーション２によって実行されるプロセスには、リアルタイムクラス、タイムシェアクラスの２つのクラスが許容されている。発行元プロセス情報６４には、当該入出力要求の発行元のプロセスがリアルタイムクラス、タイムシェアクラスのいずれであるかが記述されている。ここで、リアルタイムクラスとは、リアルタイム処理をすべきクラスであり、タイムシェアクラスとは、リアルタイム処理が不要なクラスである。汎用ＯＳ５に対して発行された入出力要求は、ＯＳ間通信ドライバ４によってリアルタイムＯＳ３に引き渡される。入出力ブロック情報６２とは、入出力が要求される入出力ブロックを特定するための情報であり、例えば、入出力ブロックのアドレスが記述されている。
【００１７】
リアルタイムＯＳ３は、入出力受付インターフェース３１を備えており、この入出力受付インターフェース３１により、タスク１１、１２によってリアルタイムＯＳ３に対して発行された入出力要求を受け付ける。図２Ｂは、リアルタイムＯＳ３に対して発行される入出力要求のフォーマットを示す概念図である。リアルタイムＯＳ３に対して発行される入出力要求は、ヘッダ７１と入出力ブロック情報７２とを備えている。ヘッダ６１は、その発行元のタスクを識別するタスク識別子７３と、発行元のタスクの優先度を示す優先度情報と、発行元のタスクのクラスを示す発行元タスク情報７５とを含んでいる。アプリケーション２によって実行されるプロセスと同様に、アプリケーション１によって実行されるタスクには、リアルタイムクラス、タイムシェアクラスの２つのクラスが許容されている。発行元タスク情報７５には発行元のタスクがリアルタイムクラス、タイムシェアクラスのいずれであるかが記述されている。入出力ブロック情報７２とは、入出力が要求される入出力ブロックを特定するための情報であり、例えば、入出力ブロックのアドレスが記述されている。
【００１８】
共有ディスク６に対する入出力処理は、優先度コントローラ３２と入出力処理インターフェース３６とによって行われる。
【００１９】
優先度コントローラ３２は、下記の３つの機能を有している：第１に、優先度コントローラ３２は、汎用ＯＳ５に対して発行された入出力要求を、複数の入出力要求に分割する機能を有している。詳細には、優先度コントローラ３２は、汎用ＯＳ５に対して発行されたある入出力要求が、ある入出力ブロックの入出力を要求している場合、当該入出力ブロックを複数の部分ブロックに分割して入出力するように要求する複数の入出力要求を生成する。
【００２０】
第２に、優先度コントローラ３２は、汎用ＯＳ５に対して発行された入出力要求を複数の入出力要求に分割する際に、部分ブロックのサイズをリアルタイムＯＳ３に対して入出力要求を発行したタスクの優先度に応答して調節する機能を有している。部分ブロックのサイズの調整においては、優先度管理テーブル３３と部分ブロックサイズ指定テーブル３４とが参照される。ここで優先度管理テーブル３３とは、図３Ａに示されているように、リアルタイムＯＳ３に対して入出力要求を発行したタスクのタスク識別子と、当該タスクの優先度とが登録されているテーブルである。優先度管理テーブル３３に登録される優先度とは、リアルタイムＯＳ３に対して発行された入出力要求の優先度情報７４に記述されている優先度であることに留意されたい。一方、部分ブロックサイズ指定テーブル３４とは、図３Ｂに示されているように、リアルタイムＯＳ３に対して入出力要求を発行したタスクの優先度と、部分ブロックサイズとの対応関係を示すテーブルである。
【００２１】
第３に、優先度コントローラ３２は、入出力要求のそれぞれを、発行元のタスク又はプロセスの性質に応じて入出力要求キュー＃１〜＃３のいずれかにエンキューする機能を有している。入出力要求キュー＃１は、最も高い優先度が与えられたキューであり、優先度グループ＃１に対応付けられている。同様に、入出力要求キュー＃２は、次に高い優先度が与えられたキューであり、優先度グループ＃２に対応付けられている。入出力要求キュー＃３は、最も低い優先度が与えられたキューであり、優先度グループ＃３に対応付けられている。
【００２２】
エンキューすべき入出力要求キューの選択は、優先度グループ管理テーブル３５を参照して行われる。図４に示されているように、優先度グループ管理テーブル３５は、各優先度グループに属する発行元のタスク又はプロセスの性質を記述している。本実施形態では、リアルタイムＯＳ３上で実行されるタスクのうち、リアルタイムクラスに属するものが、優先度グループ＃１に分類され、汎用ＯＳ５上で実行されるプロセスのうち、リアルタイムクラスに属するものが、優先度グループ＃２に分類される。また、リアルタイムＯＳ３上で実行されるタスク及び汎用ＯＳ５上で実行されるプロセスのうち、タイムシェアクラスに属するタスク又はプロセスは、リアルタイムＯＳ３、汎用ＯＳ５のいずれの上で実行されるかに関わらず、優先度グループ＃３にグループ分けされる。ある入出力要求は、その発行元のタスク又はプロセスが優先度グループ＃１に属する場合、入出力要求キュー＃１にエンキューされる。また、その発行元のタスク又はプロセスが優先度グループ＃２に属する場合、当該入出力要求は、入出力要求キュー＃２にエンキューされ、優先度グループ＃３に属する場合、当該入出力要求は、入出力要求キュー＃３にエンキューされる。
【００２３】
入出力処理部３８は、入出力要求キュー＃１〜＃３にエンキューされた入出力要求に応答して共有ディスク６への入出力処理を行う。入出力処理は、高い優先度が与えられた入出力要求キューから順に行われる。即ち、入出力要求キュー＃１にエンキューされた入出力要求についての入出力処理が最先に行われ、入出力要求キュー＃２にエンキューされた入出力要求についての入出力処理が次に行われ、入出力要求キュー＃３にエンキューされた入出力要求についての入出力処理がその次に行われる。同一の入出力要求キューにエンキューされた入出力要求のうちでは、当該入出力要求キューに先にエンキューされた入出力要求から順に入出力処理が行われる。入出力処理部３８は、各入出力要求に応答した入出力処理が完了すると、入出力要求の発行元のタスク又はプロセスに、入出力処理の完了を通知する。
【００２４】
続いて、本実施形態における組み込みシステム１０の動作の説明を行う。図５は、本実施形態における組み込みシステム１０の動作のうち、入出力要求の発行から、当該入出力要求のエンキューまでの手順を示すフローチャートである。
【００２５】
アプリケーション１のタスク１１、１２又はアプリケーション２のプロセス２１、２２から入出力要求が発行されると、発行された入出力要求は、リアルタイムＯＳ３の入出力受付インターフェース３１又は汎用ＯＳ５の入出力受付インターフェース５１によって受け取られる（ステップＡ１）。入出力受付インターフェース５１によって入出力要求が受け取られた場合、当該入出力要求は、ＯＳ間通信によってリアルタイムＯＳ３に引き渡される。ステップＡ１で受け取られた入出力要求は、以後、対象入出力要求と記載する。
【００２６】
優先度コントローラ３２は、対象入出力要求が、リアルタイムＯＳ３に対して発行された入出力要求か、汎用ＯＳ５に対して発行された入出力要求かを確認する（ステップＡ２）。対象入出力要求が、リアルタイムＯＳ３に対して発行された入出力要求である場合、優先度コントローラ３２は、当該入出力要求のヘッダ７１からタスク識別子７３と優先度情報７４を参照し、発行元のタスクと、そのタスクの優先度を優先度管理テーブル３３に登録する（ステップＡ８）。タスクと優先度の登録後、処理はステップＡ７に移る。対象入出力要求がリアルタイムＯＳ３に対して発行された入出力要求である場合、当該対象入出力要求は分割されない。
【００２７】
一方、対象入出力要求が汎用ＯＳ５に対して発行された入出力要求である場合、優先度コントローラ３２は、優先度管理テーブル３３を参照し（ステップＡ３）、登録された優先度の最高値を取得する（ステップＡ４）。言い換えれば、優先度コントローラ３２は、優先度管理テーブル３３に登録されたタスクのうち、優先度が最も高いタスクの優先度を取得する。更に、優先度コントローラ３２は、部分ブロックサイズ指定テーブル３４を参照して、優先度の最高値に対応する部分ブロックサイズを取得し（ステップＡ５）、取得した部分ブロックサイズを用いて対象入出力要求を分割する（ステップＡ６）。汎用ＯＳ５に対して発行された入出力要求を複数の入出力要求に分割することにより、一の入出力要求あたりの入出力処理の実行時間が短くなり、リアルタイムＯＳ３の入出力処理の開始の遅延を低減することができる。
【００２８】
詳細には、優先度コントローラ３２は、対象入出力要求がある入出力ブロックの入出力を要求している場合、当該入出力ブロックを、ステップＡ５で取得された部分ブロックサイズを有する複数の部分ブロックに分割して入出力するように要求する複数の入出力要求を生成する。汎用ＯＳ５に対して発行された入出力要求の内容は、入出力ブロック情報６２の内容以外は、ステップＡ６の分割によって生成された複数の入出力要求に引き継がれる。即ち、ステップＡ６の分割によって生成された複数の入出力要求は、入出力ブロック情報６２の内容以外は、図２Ａに示された汎用ＯＳ５に対して発行された入出力要求と同一の内容を有している。一方、入出力ブロック情報６２の内容は、各部分ブロックを特定するための情報に書き換えられる。
【００２９】
対象入出力要求の分割に使用される部分ブロックサイズは、優先度管理テーブル３３に登録されたタスクのうち優先度が最も高いタスクの優先度が高いほど大きくなるように決定される。このような制御によれば、リアルタイムＯＳ３に高速なレスポンスを必要とするタスクがない場合に部分ブロックサイズが大きくされるので、汎用ＯＳ５上で実行されるプロセスのスループットの低下を抑止することができる。
【００３０】
対象入出力要求の分割の後、処理はステップＡ７に移る。
【００３１】
ステップＡ７では、優先度コントローラ３２は、対象入出力要求又は当該対象入出力要求が分割されて生成された入出力要求を、入出力要求キュー＃１〜＃３のいずれかにエンキューする。エンキューすべき入出力要求キューの選択は、入出力要求のヘッダ６１又は７１に記述されている発行元プロセス情報６４又は発行元タスク情報７５を優先度グループ管理テーブル３５と照合することによって行われる。各入出力要求（対象入出力要求又は当該対象入出力要求が分割されて生成された入出力要求）は、その発行元が優先度グループ＃１に属する場合、即ち、発行元がリアルタイムＯＳ３上で実行されるタスクであり、当該タスクがリアルタイムクラスに属する場合、入出力要求キュー＃１にエンキューされる。また、入出力要求の発行元が優先度グループ＃２に属する場合、即ち、発行元が汎用ＯＳ５上で実行されるプロセスであり、且つ、当該プロセスがリアルタイムクラスに属する場合、当該入出力要求は、入出力要求キュー＃２にエンキューされる。また、入出力要求の発行元が優先度グループ＃３に属する場合、即ち、発行元のタスク又はプロセスがリアルタイムクラスに属する場合、発行元のタスク又はプロセスがリアルタイムＯＳ３、汎用ＯＳ５のいずれの上で実行されるかに関わらず、当該入出力要求は入出力要求キュー＃３にエンキューされる。入出力要求キュー＃１〜＃３にエンキューされた入出力要求は、順次にデキューされ、デキューされた入出力要求に応答して共有ディスク６に対する入出力処理が行われる。
【００３２】
入出力要求の発行元の性質に応じて優先度制御を行う、即ち、当該入出力要求をエンキューすべき入出力要求キューの選択を行うことにより、組み込みシステム１０全体としての入出力処理の競合制御が最適に行われる。
【００３３】
図６は、入出力要求キュー＃１〜＃３にエンキューされた入出力要求に応答して共有ディスク６への入出力処理を行う手順を示すフローチャートである。入出力処理インターフェース３６は、入出力要求キュー＃１が空であるか否かを調べる（ステップＢ１）。空でない場合、入出力処理インターフェース３６は、先頭の入出力要求（最先にエンキューされた入出力要求）を入出力要求キュー＃１からデキューし（ステップＢ４）、デキューされた入出力要求に応じた入出力処理を行う（ステップＢ７）。
【００３４】
入出力要求キュー＃１が空である場合、入出力処理インターフェース３６は、入出力要求キュー＃２が空であるか否かを調べる（ステップＢ２）。空でない場合、入出力処理インターフェース３６は、先頭の入出力要求（最先にエンキューされた入出力要求）を入出力要求キュー＃２からデキューし（ステップＢ５）、デキューされた入出力要求に応じた入出力処理を行う（ステップＢ７）。
【００３５】
また、入出力要求キュー＃１、＃２がいずれも空である場合、入出力処理インターフェース３６は、入出力要求キュー＃３が空であるか否かを調べる（ステップＢ３）。空でない場合、入出力処理インターフェース３６は、先頭の入出力要求（最先にエンキューされた入出力要求）を入出力要求キュー＃３からデキューし（ステップＢ６）、デキューされた入出力要求に応じた入出力処理を行う（ステップＢ７）。
【００３６】
入出力処理が完了すると、入出力要求の発行元（リアルタイムＯＳ３上で実行されるタスク又は汎用ＯＳ５上で実行されるプロセス）に入出力処理の完了を通知する（ステップＢ８）。加えて、入出力処理が完了した入出力要求の発行元が、リアルタイムＯＳ３上で実行されるタスクである場合、入出力処理インターフェース３６は、その旨を優先度コントローラ３２に通知する。優先度コントローラ３２は、当該タスク及びその優先度を、優先度管理テーブル３３から削除する（ステップＢ９）。以上の手順により、共有ディスク６への入出力処理が完了する。
【００３７】
本実施形態の組み込みシステム１０によれば、汎用ＯＳ５に対して発行された入出力要求が複数の入出力要求に分割され、これにより、一の入出力要求あたりの入出力処理の実行時間が短くなる。したがって、本実施形態の組み込みシステム１０は、リアルタイムＯＳ３の入出力処理の開始の遅延を低減することができる。また、本実施形態の組み込みシステム１０では、リアルタイムＯＳ３で実行されるタスクが発行する入出力要求が無条件で優先的に処理されるのではなく、入出力要求の発行元の性質に応じて優先度制御が行われる。これにより、組み込みシステム１０全体としての入出力処理の競合制御が最適に行われる。加えて、本実施形態の組み込みシステム１０では、入出力要求の分割に使用される部分ブロックサイズが、リアルタイムＯＳ３上で実行されるタスクの優先度に応じて調節される。このような制御によれば、リアルタイムＯＳ３に高速なレスポンスを必要とするタスクがない場合に部分ブロックサイズを大きくし、汎用ＯＳ５上で実行されるプロセスのスループットの低下を抑止することができる。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明の一実施形態の組み込みシステムの構成を示すブロック図である。
【図２Ａ】図２Ａは、汎用ＯＳで実行されるプロセスによって発行される入出力要求のフォーマットを示す概念図である。
【図２Ｂ】図２Ｂは、汎用ＯＳで実行されるプロセスによって発行される入出力要求のフォーマットを示す概念図である。
【図３Ａ】図３Ａは、優先度管理テーブルの内容を示す概念図である。
【図３Ｂ】図３Ｂは、部分ブロックサイズ指定テーブルの内容を示す概念図である。
【図４】図４は、優先度グループ管理テーブルの内容を示す概念図である。
【図５】図５は、本実施形態における、入出力要求の発行から、当該入出力要求のエンキューまでの手順を示すフローチャートである。
【図６】図６は、入出力要求キューにエンキューされた入出力要求に応答して共有ディスクへの入出力処理を行う手順を示すフローチャートである。
【符号の説明】
【００３９】
１０：組み込みシステム
１、２：アプリケーション
３：リアルタイムＯＳ
４：ＯＳ間通信ドライバ
５：汎用ＯＳ
６：共有ディスク
１１、１２：タスク
２１、２２：プロセス
３１：入出力受付インターフェース
３２：優先度コントローラ
３３：優先度管理テーブル
３４：部分ブロックサイズ指定テーブル
３５：優先度グループ管理テーブル
３６：入出力処理インターフェース
５１：入出力受付インターフェース
６１：ヘッダ
６２：入出力ブロック情報
６３：プロセス識別子
６４：発行元プロセス情報
７１：ヘッダ
７２：入出力ブロック情報
７３：タスク識別子
７４：優先度情報
７５：発行元タスク情報
【図１】
0004888731.tif 000002
【図２Ａ】
0004888731.tif 000003
【図２Ｂ】
0004888731.tif 000004
【図３Ａ】
0004888731.tif 000005
【図３Ｂ】
0004888731.tif 000006
【図４】
0004888731.tif 000007
【図５】
0004888731.tif 000008
【図６】
0004888731.tif 000009