(57)【要約】【課題】優先順位の高いＯＳと優先順位の低いＯＳがハードウェア資源を共有する場合に、割り込み処理に関して、優先順位の高いＯＳの負荷を低減可能な情報処理装置及び割り込み制御方法を提供すること。【解決手段】本発明に係る情報処理装置は、優先順位の高い第１のＯＳ１１と、第１のＯＳ１１とハードウェア資源を共有する優先順位の低い第２のＯＳ１２を備え、ハードウェア資源より第１のＯＳ１１が割り込み通知を受けた場合に第１のＯＳ１１が処理する割り込みでないときに第２のＯＳ１２に対して割込み通知の転送処理を実行する。第１のＯＳ１１の負荷制御部７０は、第１のＯＳ１１の転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定する。第２のＯＳ１２の遅延処理部４２等は、負荷が大きいと判定した場合に、第２のＯＳ１２の処理を遅延させる。【選択図】図２
2010146065.tif 000002
【特許請求の範囲】
【請求項１】
優先順位の高い第１のＯＳと、当該第１のＯＳとハードウェア資源を共有する優先順位の低い第２のＯＳを備え、当該ハードウェア資源より第１のＯＳが割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する情報処理装置であって、
前記第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定する負荷制御手段と、
前記負荷制御手段が負荷が大きいと判定した場合に、前記ハードウェア資源による割り込み処理を発生させる、前記第２のＯＳの処理を遅延させる遅延制御手段とを備えた情報処理装置。
【請求項２】
前記負荷制御手段は、前記第２のＯＳによる割込み処理に関する平均割込み頻度、又は、当該割込み処理に要した平均タスク待ち時間、又は当該平均割込み頻度及び平均タスク時間の双方に基づいて当該負荷の状態を判定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記負荷制御手段は、当該平均割込み頻度又は平均タスク時間が閾値を超える場合に、負荷が高いと判定することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記遅延制御手段は、前記負荷制御手段が当該負荷が高いと判定した場合に、遅延時間の値が大きくなるよう更新し、前記負荷制御手段が当該負荷が低いと判定した場合に、遅延時間の値が小さくなるよう更新する請求項１〜３いずれか１項に記載の情報処理装置。
【請求項５】
前記遅延制御手段は、実行スレッドをディスパッチキューにつなげる処理について遅延制御を実行することを特徴とする請求項１〜４いずれか１項に記載の情報処理装置。
【請求項６】
前記負荷制御手段を前記第１のＯＳに設け、前記遅延制御手段を前記第２のＯＳに設けたことを特徴とする請求項１〜５いずれか１項に記載の情報処理装置。
【請求項７】
前記負荷制御手段を前記第１のＯＳに設け、前記遅延制御手段を前記第２のＯＳに設けた場合に、
前記遅延制御手段は、前記ハードウェア資源への割り込み処理を行うときに、前記第１のＯＳに設けられた負荷制御手段に対して割り込み通知を行い、
当該負荷制御手段は、かかる割り込み通知に応じて第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定して、負荷が低いときに許可通知を、負荷が高いときに不許可通知を前記遅延制御手段に送り、
前記遅延制御手段は、許可通知を受けた場合には前記割り込み処理を実行し、不許可通知を受けた場合には所定時間待機後に再び前記負荷制御手段に対して割り込み通知を実行することを特徴とする請求項１〜５いずれか１項に記載の情報処理装置。
【請求項８】
前記負荷制御手段を前記第１のＯＳに設け、前記遅延制御手段を前記第２のＯＳに設けた場合に、
当該負荷制御手段は、判定した負荷の状態を示す割り込み許可フラグを共有メモリに設定し、
前記遅延制御手段は、前記ハードウェア資源への割り込み処理を行うときに、前記共有メモリに設定された割り込み許可フラグを参照し、割り込みが許可されている場合には前記割り込み処理を実行し、割り込みが許可されていない場合には所定時間待機後に再び割り込み許可フラグを参照することを特徴とする請求項１〜５いずれか１項に記載の情報処理装置。
【請求項９】
前記情報処理装置が優先順位の低いＯＳを複数有する場合に、前記負荷制御手段は、当該優先順位の低いＯＳのそれぞれに設けられた遅延制御手段に対して、個別の負荷状況に応じた負荷通知を行うことを特徴とする請求項１〜８いずれか１項に記載の情報処理装置。
【請求項１０】
優先順位の低い第２のＯＳとハードウェア資源を共有し、優先順位の高い第１のＯＳに対して当該ハードウェア資源からの割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する割り込み制御方法であって、
前記第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定する負荷状態判定ステップと、
前記負荷が大きいと判定した場合に、前記ハードウェア資源による割り込み処理を発生させる、前記第２のＯＳの処理を遅延させる遅延制御ステップとを備えた割り込み制御方法。
【請求項１１】
前記負荷状態判定ステップでは、前記第２のＯＳによる割込み処理に関する平均割込み頻度、又は、当該割込み処理に要した平均タスク待ち時間、又は当該平均割込み頻度及び平均タスク時間の双方に基づいて当該負荷の状態を判定することを特徴とする請求項１０記載の割り込み制御方法。
【請求項１２】
前記負荷状態判定ステップでは、当該平均割込み頻度又は平均タスク時間が閾値を超える場合に、負荷が高いと判定することを特徴とする請求項１１記載の割り込み制御方法。
【請求項１３】
遅延制御ステップでは、前記負荷状態判定ステップにおいて当該負荷が高いと判定した場合に、遅延時間の値が大きくなるよう更新し、前記負荷制御手段が当該負荷が低いと判定した場合に、遅延時間の値が小さくなるよう更新する請求項１０〜１２いずれか１項に記載の割り込み制御方法。
【請求項１４】
前記遅延制御ステップでは、実行スレッドをディスパッチキューにつなげる処理について遅延制御を実行することを特徴とする請求項１０〜１３いずれか１項に記載の割り込み制御方法。
【請求項１５】
前記負荷状態判定ステップを前記第１のＯＳが実行し、前記遅延制御ステップを前記第２のＯＳが実行することを特徴とする請求項１０〜１４いずれか１項に記載の割り込み制御方法。
【請求項１６】
優先順位の低い第２のＯＳとハードウェア資源を共有し、優先順位の高い第１のＯＳに対して当該ハードウェア資源からの割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する割り込み制御方法であって、
前記第２のＯＳは、前記ハードウェア資源への割り込み処理を行うときに、前記第１のＯＳに対して割り込み通知を実行するステップと、
前記第１のＯＳは、かかる割り込み通知に応じて第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定して、負荷が低いときに許可通知を、負荷が高いときに不許可通知を前記第２のＯＳに送るステップ、
前記第２のＯＳは、許可通知を受けた場合には前記割り込み処理を実行し、不許可通知を受けた場合には所定時間待機後に再び前記第１のＯＳに対して割り込み通知を実行するステップとを備えた割り込み制御方法。
【請求項１７】
優先順位の低い第２のＯＳとハードウェア資源を共有し、優先順位の高い第１のＯＳに対して当該ハードウェア資源からの割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する割り込み制御方法であって、
前記第１のＯＳが、第１のＯＳの転送処理に伴う負荷の状態を示す割り込み許可フラグを設定するステップと、
前記第２のＯＳが、前記ハードウェア資源への割り込み処理を行うときに、前記割り込み許可フラグを参照し、割り込みが許可されている場合には前記割り込み処理を実行し、割り込みが許可されていない場合には所定時間待機後に再び割り込み許可フラグを参照するステップとを備えた割り込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び割り込み制御方法に関し、特に、ハードウェア共有環境におけるオペレーティングシステム間の割込みを制御する情報処理装置及び割り込み制御方法に関する。
【背景技術】
【０００２】
１つの計算機上に複数のオペレーティングシステム（以下、ＯＳと称する。）を備え、これら複数のＯＳがハードウェア資源を共有するシステムが開発されている。例えば、１つの計算機上にリアルタイムＯＳと汎用ＯＳという２種類のＯＳが混在し、ハードウェア資源のうち、中央処理演算装置（以下、ＣＰＵと称する。）とメモリを静的に分割して、各ＯＳのそれぞれが占有して使用するシステムがある。ここで、このようなシステムでは、入出力装置（以下、ＩＯデバイスと称する。）などの他のハードウェア資源については、全てのＯＳが共有して使用するものと、各ＯＳが占有して使用するものがある。
【０００３】
また、関連する技術として、例えば特許文献１に記載の情報処理装置がある。特許文献１に記載の情報処理装置は、主ＯＳと副ＯＳが動作するシステムであり、主ＯＳがすべての割り込み要求を受け取り、副ＯＳが割り込み可能かつ実行可能な状態のときに必要な割り込みを配送する。かかるシステムは、主ＯＳの判断に従って副ＯＳを制御することを目的としたものであるが、例えば、それぞれ独立して動作する主ＯＳと副ＯＳが一部のハードウェア資源を共有している場合に、主ＯＳの負荷を低減させる制御に適用することは困難である。
【０００４】
さらにまた、他の関連する技術として、例えば特許文献２に記載の情報伝送装置がある。特許文献２に記載の情報伝送装置は、一定時間内に発生する割込回数を監視し、その回数に基づきチャネル異常を検出し、また、割込発生元のチャネルを一定時間停止する。かかる情報伝送装置は、複数のＯＳが混在するシステムを対象とするものではない。
【０００５】
また、他の関連する技術として、例えば特許文献３に記載の計算機システムがある。特許文献３に記載の計算機システムは、ＩＯデバイスを共用するものである。
【特許文献１】特開２００６−０９９３３１号公報
【特許文献２】特開平０１−２５８１６２号公報
【特許文献２】特開２００７−１４８６２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複数のＯＳがＩＯデバイスなどのハードウェア資源を共有して使用する場合に、共有しているＩＯデバイスなどから発生した割り込みは、リアルタイムＯＳに対して最初に通知される。これは、汎用ＯＳに比べてより優先順位の高いリアルタイムＯＳは、ＩＯデバイスに関係する処理においてリアルタイム性が要求され、優先的に割り込みを受け取る必要があるためである。そして、割り込みを受け取ったリアルタイムＯＳは、受け取った割り込みがどのＯＳ向けの割り込みであったかを判別し、汎用ＯＳ向けの割り込みであった場合には、受取った割込みを汎用ＯＳへと転送する。割込みを受取った汎用ＯＳは、割り込みを発生するＩＯ処理を実行する。
【０００７】
ここで、割り込みがリアルタイムＯＳを経由して汎用ＯＳに通知される場合には、このような割り込みはリアルタイムＯＳ上の処理とは関係がないにも関わらず、汎用ＯＳ上の処理によってリアルタイムＯＳは影響を受けてしまう。すなわち、優先順位が低い汎用ＯＳによって割り込みが大量に発生した場合には、優先順位が高いリアルタイムＯＳへの割り込みが大量に通知されることになるため、リアルタイムＯＳにおいては、割り込みを転送するための負荷が高まり、その性能の低下要因となる。例えば、汎用ＯＳにより割り込みを発生させるＩＯ処理を大量に実行した場合には、リアルタイムＯＳに対して大量の割り込みが通知され、その結果、リアルタイムＯＳ上の処理が阻害されるという問題があった。
【０００８】
従って、本発明の目的は、優先順位の高いＯＳと優先順位の低いＯＳがハードウェア資源を共有する場合に、割り込み処理に関して、優先順位の高いＯＳの負荷を低減可能な情報処理装置及び割り込み制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の態様に係る情報処理装置は、優先順位の高い第１のＯＳと、当該第１のＯＳとハードウェア資源を共有する優先順位の低い第２のＯＳを備え、当該ハードウェア資源より第１のＯＳが割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する情報処理装置であって、前記第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定する負荷制御手段と、前記負荷制御手段が負荷が大きいと判定した場合に、前記ハードウェア資源による割り込み処理を発生させる、前記第２のＯＳの処理を遅延させる遅延制御手段とを備えたものである。
【００１０】
本発明の第２の態様に係る割込み制御方法は、優先順位の低い第２のＯＳとハードウェア資源を共有し、優先順位の高い第１のＯＳに対して当該ハードウェア資源からの割り込み通知を受けた場合に当該第１のＯＳが処理する割り込みでないときに前記第２のＯＳに対して割込み通知の転送処理を実行する割り込み制御方法であって、前記第１のＯＳの転送処理に伴う負荷を検出し、当該転送処理に伴う負荷の状態を判定する負荷状態判定ステップと、前記負荷が大きいと判定した場合に、前記ハードウェア資源による割り込み処理を発生させる、前記第２のＯＳの処理を遅延させる遅延制御ステップとを備えたものである。
【発明の効果】
【００１１】
本発明によれば、優先順位の高いＯＳと優先順位の低いＯＳがハードウェア資源を共有する場合に、割り込み処理に関して、優先順位の高いＯＳの負荷を低減可能な情報処理装置及び割り込み制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡潔化がなされている。各図面において同一の構成又は機能を有する構成要素及び相当部分には、同一の符号を付し、その説明を省略する。
【００１３】
実施の形態１．
図１は、本実施の形態１に係る情報処理装置の全体構成を示す図である。図１に示すように、情報処理装置１は、複数のＯＳ（ＯＳ（１）１１及びＯＳ（２）１２）と、ディスク１３と、イーサネット（登録商標）１４と、バスコントローラ（Ｂｕｓ  Ｃｏｎｔｒｏｌｌｅｒ）１５と、複数のＣＰＵ（ＣＰＵ（１）１６、ＣＰＵ（２）１７、ＣＰＵ（３）１８、ＣＰＵ（４）１９）とを備えるシステムである。
【００１４】
ＯＳ（１）１１及びＯＳ（２）１２は、ハードウェア資源のうち、ＣＰＵ１６〜１９とメモリ（不図示）については、それぞれ静的に分割して使用する。すなわち、ＯＳ（１）１１はＣＰＵ（１）１６とＣＰＵ（２）１７を使用し、ＯＳ（２）１２はＣＰＵ（３）１８とＣＰＵ（４）１９を使用する。また、メモリ（不図示）は、複数の領域に分割され、ＯＳ（１）１１及びＯＳ（２）１２は、それぞれ対応する領域を使用する。ＣＰＵ及びメモリを除く他のハードウェア資源については、ＯＳ（１）１１及びＯＳ（２）１２は、いずれかのＯＳが占有して使用する、或いは、２つのＯＳにより共有して使用する。このようにシステムを必要最低限のハードウェア資源により構成し、ハードウェア資源を共有して使用することで、各ＯＳ用にハードウェア資源を用意せずに済み、コストを抑制することができる。以下では、ディスク１３とイーサネット（登録商標）１４が、共有するハードウェア資源であるものとして説明する。
【００１５】
本実施の形態では、ＯＳ（１）１１及びＯＳ（２）１２に対して、優先順位が設定されている。優先順位が高いＯＳ上では、高いリアルタイム性が要求されるような、システムとして優先すべきプログラムが実行される。以下では、ＯＳ（２）１２は汎用ＯＳであり、ＯＳ（１）１１は汎用ＯＳよりも優先順位の高いリアルタイムＯＳであるものとして説明する。
【００１６】
バスコントローラ１５は、共有しているハードウェア資源の割り込みを管理しており、割込みが発生した場合には、優先順位の高いＯＳ（１）１１に対して割込みを通知する。これは、システムは、どのＯＳにより割り込みを発生させる操作が行われたのかが不明であるため、バスコントローラ１５を経由して、優先順位の高いＯＳ（１）１１へと割込みを最初に通知するためである。そして、割込みを受取ったＯＳ（１）１１は、割り込みが自身により処理すべき割り込みであるか否かを確認し、自身により処理すべき割り込みでない場合には、より優先順位の低いＯＳ（２）１２へと割り込みを転送する。
【００１７】
ＯＳ（２）１２がハードウェア資源を操作することで割り込みを発生させた場合には、バスコントローラ１５を介して、ＯＳ（１）１１に対して割り込みが最初に通知される。ＯＳ（２）１２の動作に伴いＯＳ（１）１１における処理が発生するが、この処理の際にＯＳ（１）１１に対して掛かる負荷が、システム設計時の見積もり範囲内に収まる場合であれば問題はない。しかし、ＯＳ（２）１２による割り込みの発生回数が、見積もり範囲を大幅に超過した場合には、ＯＳ（１）１１における処理の負荷が増大してしまい、ＯＳ（１）１１の本来の処理が阻害されるという問題がある。ここで、通知される割り込みがどのＯＳに対するものであるかは不明であるため、ＯＳ（１）１１により、割り込みの処理や転送の実行を停止することはできない。そこで、本実施の形態１に係る情報処理装置１は、優先順位の低いＯＳ（２）１２により発生した割り込みが、優先順位の高いＯＳ（１）１１の動作を妨げないように、ＯＳ（１）１１とＯＳ（２）１２が協調し、ＯＳ（１）１１の割り込みによる負荷が高くなった場合には、ＯＳ（２）１２に負荷の情報を通知してＯＳ（２）１２における割り込みの発生要因となる処理の頻度を制御することで、ＯＳ（２）１２による割り込みがＯＳ（１）１１に与える影響を抑制するものである。
【００１８】
次に、図２を参照して、本実施の形態１に係る情報処理装置１の構成について、より詳細に説明する。図に示すように、情報処理装置１は、ＯＳ（１）１１と、ＯＳ（２）１２と、デバイス６０を備える。
【００１９】
ＯＳ（２）１２は、スレッド３１と、ドライバ４０と、遅延時間管理部５０を備えている。ドライバ４０は、入口処理部４１と、遅延処理部４２と、ＩＯ発行処理部４３と、出口処理部４４を備えている。遅延時間管理部５０は、遅延時間データ５１を保持している。
【００２０】
遅延時間管理部５０は、ＯＳ（１）１１の負荷制御部７０から負荷通知を受けて、遅延時間データ５１を設定する。ドライバ４０は、ＩＯ発行処理部４３による処理に先立ち遅延処理部４２による遅延処理を実行する。遅延処理部４２は、遅延時間管理部５０に設定された遅延時間データ５１を参照して遅延が必要かどうかを判断し、遅延が必要な場合には遅延処理を実行する。他方で、遅延が終了した場合、或いは、遅延が必要でないと判断した場合には遅延処理を終了する。遅延処理部４２による遅延処理が終了した場合には、ＩＯ発行処理部４３は、ＩＯを発行することでデバイス６０を操作する。デバイス６０は、命令された処理を実行し、処理が終了した場合には、ＯＳ（１）１１に対して割り込みを通知する。
【００２１】
ＯＳ（１）１１は、負荷制御部７０を備えている。負荷制御部７０は、平均割り込み頻度データ７１と、平均タスク待ち時間データ７２を保持している。ＯＳ（１）１１は、割り込みが自分宛のものであるか否かを判断し、自分宛の割り込みでない場合には、ＯＳ（２）１２に対して割り込みを転送すると共に、割り込みによる負荷の統計情報を負荷制御部７０により取得する。ここでは、負荷の統計情報として、平均割り込み頻度データ７０と平均タスク待ち時間データ７２を取得する。負荷制御部７０は、取得した負荷の統計情報を予め定めた閾値と比較して、割り込みによる負荷が高いと判断した場合には、ＯＳ（２）１２に対して負荷を通知する。負荷の通知を受けたＯＳ（２）１２は、割り込みを処理した後、遅延時間管理部５０により遅延時間データ５１を更新する。なお、本例では、平均割り込み頻度データ７１と平均タスク待ち時間データ７２の双方を用いて負荷の状態を判定しているが、いずれか一方のデータを用いて判定してもよい。
【００２２】
次に、図３乃至図５に示すフローチャートを参照して、情報処理装置１の動作処理について詳細に説明する。ここでは、図２に示した情報処理装置１において、プログラムの実行単位であるスレッド３１が、デバイス６０を操作するためにドライバ４０を呼び出した場合の動作処理について説明する。
【００２３】
スレッド３１から呼び出されたドライバ４０は、図３に示すように、遅延処理が必要な場合には、ＩＯ発行処理部４３によるＩＯ発行処理に先立ち、遅延処理部４２による遅延処理を実行する。すなわち、図３に示すように、遅延処理部４２は、遅延時間管理部５０の遅延時間データ５１を参照して、遅延処理を実行するか否かを判断する（ステップＳ１０１）。図３に示す例では、遅延時間が０よりも大きな場合には、遅延処理を実行し、遅延時間が０の場合には、遅延処理を実行せずに、遅延処理を終了する。そして、遅延処理を実行する場合には、遅延処理部４２は、遅延時間の間だけ処理を待機することで、遅延処理を実行する（ステップＳ１０２）。ＩＯ発行処理部４３は、遅延処理部４２による遅延処理が実行された場合には、遅延処理に続いて、ＩＯ発行処理を行い、遅延処理が実行されなかった場合には、ステップＳ１０１における判定処理に続いて、ＩＯ発行処理を実行する。すなわち、ＩＯ発行処理部４３は、ＩＯ発行処理を行い、デバイス６０にアクセスする。そして、デバイス６０は命令された処理が終了した場合には、新たに割り込みを発生して、発生した割り込みをＯＳ（１）１１に対して通知する。
【００２４】
デバイス６０から割り込みを通知されたＯＳ（１）１１は、発生した割り込みが誰宛のものであるかを確認し、割り込みがＯＳ（２）１２宛ての割り込みである場合には、割込みをＯＳ（２）１２に対して転送する。また、ＯＳ（１）１１は、図４に示す負荷制御部７０による負荷制御処理を実行する。すなわち、図４に示すように、負荷制御部７０は、まず、割り込みによる負荷の統計情報としての平均割り込み頻度と、この割り込みのために掛かったタスクの待ち時間を更新する（ステップＳ２０１）。そして、負荷制御部７０は、平均割込み頻度が予め定めた閾値を超えたか否かを判定する（ステップＳ２０２）。平均割込み頻度が閾値を超えていない場合には、負荷制御部７０は、さらに、平均タスクの待ち時間が予め定めた閾値を超えたか否かを判定する（ステップＳ２０３）。ステップＳ２０２における判定の結果、平均割込み頻度が閾値を超えた場合、又は、ステップＳ２０３における判定の結果、平均タスク待ち時間が閾値を超えた場合には、負荷制御部７０は、ＯＳ（２）１２に対して、ＯＳ（１）１１において割り込みの負荷が上昇したことを示す負荷通知を行い、負荷制御処理を終了する。一方で、ステップＳ２０３における判定の結果、平均タスク待ち時間が閾値を超えていない場合には、負荷制御部７０は、負荷制御処理を終了する。
【００２５】
ＯＳ（１）１１から割り込み通知されたＯＳ（２）１２は、割り込みを発生したデバイス６０に関する処理を実行する。また、ＯＳ（２）１２は、図５に示す遅延時間管理部５０による遅延時間管理処理を実行する。すなわち、図５に示すように、遅延時間管理部５０は、まず、ＯＳ１（１）１１から通知された負荷通知により特定される負荷の値が定めた所定の閾値よりも高いか低いかを確認する（ステップＳ３０１）。
【００２６】
Ｓ３０１における判定の結果、負荷の値が閾値よりも高い場合には、遅延時間管理部５０は、さらに、遅延時間データ５１により特定される現在の遅延時間が予め定めた上限値（以下、ＭＡＸ値と称する。）よりも小さいか否かを判定する（ステップＳ３０２）。遅延時間管理部５０は、遅延時間がＭＡＸ値よりも小さくない、すなわち、遅延時間が既にＭＡＸ値と等しいと判定した場合には、さらに遅延時間を増加させることはできないため、遅延時間管理処理を終了する。一方で、遅延時間管理部５０は、遅延時間がＭＡＸ値より小さい、すなわち、遅延時間を増加させることができる余地がある場合には、遅延時間の値を大きくする（ステップＳ３０３）。
【００２７】
Ｓ３０１における判定の結果、負荷通知が閾値よりも低い場合には、遅延時間管理部５０は、さらに、遅延時間データ５１により特定される現在の遅延時間が予め定めた下限値よりも大きいか否かを判定する（Ｓ３０４）。図３に示す例では、下限値は０である。遅延時間管理部５０は、遅延時間が０よりも大きな場合には、さらに、遅延時間を小さくすることができるため、遅延時間の値を小さくする（ステップＳ３０５）。一方で、遅延時間が０である場合には、遅延時間をさらに小さくすることができないため、遅延時間管理部５０は、遅延時間管理処理を終了する。
【００２８】
以下、図３乃至図５に示した各動作処理に関して、ＯＳ（１）１１をリアルタイムＯＳ、ＯＳ（２）１２を汎用ＯＳとして、これら２つのＯＳが、デバイス６０としてのイーサネット（登録商標）１４を共有する場合について具体的に説明する。
【００２９】
まず、図２に示したように、汎用ＯＳ上のスレッド３１が、ドライバ４０に指示を与えることでイーサネット（登録商標）１４を使用する。指示を受けたドライバ４０は、遅延処理部４２により、遅延時間管理部５０の遅延時間データ５１を参照して、遅延処理を実行する必要があるか否かを判断する。遅延処理を実行する必要がある場合には、遅延処理部４２は、遅延処理を実行する。そして、ドライバ４０のＩＯ発行処理部４３は、イーサネット（登録商標）１４に対してＩＯ命令を発行する。ＩＯ発行命令を受けたイーサネット（登録商標）１４は処理を行い、処理が完了した場合には、イーサネット（登録商標）１４から割り込みが発生する。発生した割り込みは、リアルタイムＯＳに通知される。
【００３０】
次いで、割込みが通知されたリアルタイムＯＳは、通知された割り込みの要因を調べて、自分宛の割り込みか否かを判別する。自分宛の割り込みでないものと判断した場合には、リアルタイムＯＳは、割込みを汎用ＯＳに対して転送する。また、図３に示したように、リアルタイムＯＳの負荷制御部７０は、割り込みの平均頻度や、この割り込みのために掛かったタスクの待ち時間などの統計情報を計測し、負荷が掛かりすぎていないかを予め定めた閾値を用いて判定する。判定の結果、負荷が高い場合には、汎用ＯＳに対して負荷通知を行う。そして、リアルタイムＯＳから割込みが転送された汎用ＯＳは、転送された割り込みを処理する。
【００３１】
ここで、汎用ＯＳによりイーサネット（登録商標）１４が大量に使用された場合には、リアルタイムＯＳは、負荷が掛かっているものと判断して、汎用ＯＳ上の遅延時間管理部５０に対して、負荷制御部７０により負荷通知を行う。図５に示したように、汎用ＯＳは、高い負荷を示す負荷通知を受けた場合には、遅延時間データ５１を増加させる。
【００３２】
そして、スレッド３１がドライバ４０に指示を与えてイーサネット（登録商標）１４を操作しようとする場合には、図４に示したように、ドライバ４０は、遅延処理部４２により遅延時間管理部５０の遅延時間データ５１を参照して、遅延処理を実行する必要があるか否かを判断する。遅延処理を実行する必要がある場合には、遅延処理部４２は、遅延処理を実行する。そして、ドライバ４０のＩＯ発行処理部４３は、イーサネット（登録商標）１４に対してＩＯ命令を発行してイーサネット（登録商標）１４を操作する。
【００３３】
これにより、ＩＯ発行処理部４３によるＩＯ発行処理が、遅延処理部４２による遅延時間だけ遅延されることなるため、リアルタイムＯＳに通知される割り込みの頻度が低下し、そのために発生していた負荷も低下することになる。そして、リアルタイムＯＳに通知される割り込みの頻度が十分に低下することで、リアルタイムＯＳは、汎用ＯＳの遅延時間管理部５０に対して割り込みの負荷が低下したことを通知する。この負荷通知を受けた汎用ＯＳは、遅延時間管理部５０により遅延時間の値を小さくする。
【００３４】
このように、優先順位が高いリアルタイムＯＳにおいて、より優先順位が低い汎用ＯＳに対して割り込みを転送する処理に掛かった負荷の統計情報を取得し、取得した統計情報が予め定めた閾値を超えた場合には、リアルタイムＯＳから汎用ＯＳに対して割り込みを減らすように通知を行う。そして、通知を受けた汎用ＯＳにおいて、割り込みが発生するＩＯ発行処理の実行を遅延させ、単位時間当たりのＩＯ発行処理の回数を減少させることで、汎用ＯＳが発生させた割り込みによるリアルタイムＯＳに対する影響を抑制することができる。
【００３５】
実施の形態２．
続いて、本発明の実施の形態２に係る情報処理装置について説明する。実施の形態２に係る情報処理装置では、ＩＯ発行処理を実行するスレッドについて、スレッドをディスパッチキューにつなげる処理に先立って遅延処理を実行するものである。
【００３６】
図６は、本実施の形態２に係る情報処理装置１の構成を示す図である。図に示すように、情報処理装置１は、ＯＳ（１）１１と、ＯＳ（２）１２と、デバイス６０を備える。ＯＳ（２）１２は、スケジューラ８０と、遅延時間管理部５０を備えている。スケジューラ８０は、実行可能なスレッドをディスパッチキューにつなげるための処理を行う処理部８１（以下、ディスパッチキュー接続処理部８１と称する。）と、遅延処理部８２と、実行処理部８３を備えている。遅延時間管理部５０は、遅延時間データ５１を備えている。ＯＳ（１）１１は、負荷制御部７０を備えている。負荷制御部７０は、平均割り込み頻度データ７１と、平均タスク待ち時間データ７２を保持している。
【００３７】
図７は、ディスパッチキュー接続処理部８１による動作処理を示すフローチャートである。図７に示すように、ディスパッチキュー接続処理部８１は、遅延時間管理部５０の遅延時間データ５１を参照して、遅延処理を実行するか否かを判断する（ステップＳ４０１）。図７に示す例では、遅延時間が０よりも大きな場合には、さらに、ディスパッチキュー接続処理部８１は、スレッドがＩＯ発行処理を実行しているか否かを調べる（ステップＳ４０２）。ステップＳ４０１における判断の結果、遅延時間が０である場合、又は、ステップＳ４０２における調査の結果、スレッドがＩＯ発行処理を実行していない場合には、ディスパッチキュー接続処理部８１は、実行可能なスレッドをディスパッチキューにつなげるための処理を行う（ステップＳ４０３）。一方で、ステップＳ４０２における調査の結果、スレッドがＩＯ発行処理を実行している場合には、ディスパッチキュー接続処理部８１は、遅延時間管理部５０の遅延時間データ５１をタイマーとして設定し、設定した遅延時間の経過後に、実行可能なスレッドをディスパッチキューにつなげるための処理を行う（ステップＳ４０４）。
【００３８】
このように、本実施の形態２に係る情報処理装置１では、実行可能なスレッドをディスパッチキューにつなぐ処理に先立ち、スレッドがＩＯ発行処理を実行するスレッドであるか否かを調べる。そして、ＩＯ発行処理を実行するスレッドであった場合には、遅延時間管理部５０にアクセスして遅延処理が必要であるか否かを調べ、遅延処理が必要である場合には、ディスパッチキューにつなぐ処理に先立ち、設定する遅延時間の間、待機してから、ディスパッチキューにスレッドをつなぐ。これにより、汎用ＯＳが発生させた割り込みによるリアルタイムＯＳに対する影響を抑制することができる。
【００３９】
実施の形態３．
続いて、本発明の実施の形態３に係る情報処理装置について説明する。実施の形態３に係る情報処理装置では、汎用ＯＳからリアルタイムＯＳに対して割込み処理の実行の許可を求め、リアルタイムＯＳによって許可された場合に割込み処理を実行するものである。
【００４０】
図８は、本実施の形態３に係る情報処理装置１の構成を示す図である。図に示すように、情報処理装置１は、ＯＳ（１）１１と、ＯＳ（２）１２と、デバイス６０を備える。ＯＳ（２）１２は、スレッド３１と、ドライバ４０と、割り込み制御部５０を備えている。ドライバ４０は、入口処理部４１と、割り込み確認呼び出し処理部４８と、ＩＯ発行処理部４３と、出口処理部４４を備えている。割り込み制御部５０は、割り込み確認処理部５２を備えている。ＯＳ（１）１１は、負荷制御部７０を備えている。負荷制御部７０は、平均割り込み頻度データ７１と、平均タスク待ち時間データ７２を保持している。
【００４１】
次に、本実施の形態３に係る情報処理装置１の処理について説明する。本実施の形態３では、割り込み遅延を行うかどうかを判断する処理につき特徴を有するため、かかる処理を中心に説明する。
【００４２】
割り込み確認呼び出し処理部４８は、ドライバ４０内で割り込みが発生する操作を行う前に、割り込み制御部５０の割り込み確認処理部５２に対して、割り込み制御を使用し、ＯＳ１（１１）の負荷制御部７０に対して割り込みが発生する処理を行ってよいか許可を求める処理を要求する。
【００４３】
割り込み制御部５０の割り込み確認処理部５２は、かかる要求に応じて、ＯＳ（１）１１の負荷制御部７０に対して、割り込み通知を発行することにより、ＯＳ（１）１１の負荷制御部７０に対して割り込みが発生する処理を行ってよいか許可を求める。負荷制御部７０は、平均割り込み頻度データ７１や平均タスク待ち時間データ７２等のデータに基づいて、割り込みの平均頻度や、この割り込みのために掛かったタスクの待ち時間などの統計情報を計測し、負荷が掛かりすぎていないかを予め定めた閾値を用いて判定する。
【００４４】
負荷制御部７０は、判定の結果、負荷が低いと判定した場合には、ＯＳ（２）１２の割り込み制御部５０（割り込み確認処理部５２）に対して、割り込みを許可する許可通知を行う。また、負荷制御部７０は、判定の結果、負荷が高いと判定した場合には、ＯＳ（２）１２の割り込み制御部５０（割り込み確認処理部５２）に対して、割り込みを許可しない不許可通知を行う。
【００４５】
ＯＳ（２）１２の割り込み確認処理部５２は、負荷制御部７０から許可通知を受けた場合には、割込み確認呼び出し処理部４８に対して、割込み許可を示す許可通知を出力する。そして、ドライバ４０の割込み確認呼び出し処理部４８は、許可通知に従って、割込み処理を実行する。
【００４６】
また、当該割り込み確認処理部５２は、負荷制御部７０から不許可通知を受けた場合には、割込み確認呼び出し処理部４８に対して、割込み不許可を示す不許可通知を出力する。そして、ドライバ４０の割り込み確認呼び出し処理部４８は、不許可通知に応じて、予め定められた時間、待機処理を行う。その後、割り込み確認呼び出し処理部４８は、予め定められた時間の経過後に、再度、割り込み制御部５０の割り込み確認処理部５２に対して、割り込み制御を使用し、ＯＳ１（１１）の負荷制御部７０に対して割り込みが発生する処理を行ってよいか許可を求める処理を要求する。以降は、同様の処理となり、割り込み確認呼び出し処理部４８は、負荷制御部７０の許可を取得するまで、割込み処理を行わず、負荷制御部７０の許可を取得して初めて割り込み処理を実行する。
【００４７】
このように、本実施の形態３にかかる情報処理装置では、リアルタイムＯＳの許可を得るまで割込み処理を遅延させるため、発明の実施の形態１にかかる情報処理装置と同様に、汎用ＯＳが発生させた割り込みによるリアルタイムＯＳに対する影響を抑制することができる。
【００４８】
実施の形態４．
続いて、本発明の実施の形態４に係る情報処理装置について説明する。実施の形態４に係る情報処理装置では、共有メモリを用意し、リアルタイムＯＳはこの共有メモリに汎用ＯＳの割り込み発生処理を許可するか否かのフラグを書き込み、汎用ＯＳは共有メモリを参照して許可が下りているかを判断するものである。その他の構成については、発明の実施の形態３と同等である。
【００４９】
図９は、本実施の形態４に係る情報処理装置１の構成を示す図である。図に示すように、情報処理装置１は、ＯＳ（１）１１と、ＯＳ（２）１２と、デバイス６０と、共有メモリ９０を備える。ＯＳ（２）１２は、スレッド３１と、ドライバ４０と、割り込み制御部５０を備えている。ドライバ４０は、入口処理部４１と、割り込み確認呼び出し処理部４８と、ＩＯ発行処理部４３と、出口処理部４４を備えている。割り込み制御部５０は、割り込み確認処理部５３を備えている。ＯＳ（１）１１は、負荷制御部７０を備えている。負荷制御部７０は、平均割り込み頻度データ７１と、平均タスク待ち時間データ７２を保持している。共有メモリ９０は、割込み許可フラグ９１を保持している。
【００５０】
次に、本実施の形態４に係る情報処理装置１の処理について説明する。本実施の形態４では、割り込み遅延を行うかどうかを判断する処理につき特徴を有するため、かかる処理を中心に説明する。
【００５１】
割り込み確認呼び出し処理部４８は、ドライバ４０内で割り込みが発生する操作を行う前に、割り込み制御部５０の割り込み確認処理部５３に対して、割込み確認処理を要求する。
【００５２】
割り込み制御部５０の割り込み確認処理部５３は、かかる要求に応じて、共有メモリ９０の割り込み許可フラグ９１を参照する。ここで、共有メモリ９０の割り込み許可フラグ９１は、ＯＳ（１）１１の負荷制御部７０によって設定される。具体的には、負荷制御部７０は、平均割り込み頻度データ７１や平均タスク待ち時間データ７２等のデータに基づいて、割り込みの平均頻度や、この割り込みのために掛かったタスクの待ち時間などの統計情報を計測し、負荷が掛かりすぎていないかを予め定めた閾値を用いて判定する。負荷制御部７０は、判定の結果、負荷が低いと判定した場合には、共有メモリ９０に割込み許可を示す割り込み許可フラグ９１を設定する。また、負荷制御部７０は、判定の結果、負荷が高いと判定した場合には、共有メモリ９０に割込み許可フラグ９１を設定しない。
【００５３】
ＯＳ（２）１２の割り込み確認処理部５３は、共有メモリ９０の割り込み許可フラグを参照した結果、割込み許可フラグ９１が設定されている場合には、割込み確認呼び出し処理部４８に対して、割込み許可を示す許可通知を出力する。そして、ドライバ４０の割込み確認呼び出し処理部４８は、許可通知に従って、割込み処理を実行する。
【００５４】
また、当該割り込み確認処理部５３は、共有メモリ９０の割り込み許可フラグ９１を参照した結果、割込み許可フラグ９１が設定されていない場合には、割込み確認呼び出し処理部４８に対して、割込み不許可を示す不許可通知を出力する。そして、ドライバ４０の割り込み確認呼び出し処理部４８は、不許可通知に応じて、予め定められた時間、待機処理を行う。その後、割り込み確認呼び出し処理部４８は、予め定められた時間の経過後に、再度、割り込み制御部５０の割り込み確認処理部５３に対して、割込み確認処理を要求する。以降は、同様の処理となる。割り込み確認呼び出し処理部４８は、負荷制御部７０の許可に応じて共有メモリ９０に割込み許可フラグ９１が設定されるまで、割込み処理を行わず、負荷制御部７０による許可が下り、共有メモリ９０に割込み許可フラグ９１が設定されて初めて割り込み処理を実行する。
【００５５】
このように、本実施の形態４にかかる情報処理装置では、リアルタイムＯＳの許可を得るまで割込み処理を遅延させるため、発明の実施の形態１にかかる情報処理装置と同様に、汎用ＯＳが発生させた割り込みによるリアルタイムＯＳに対する影響を抑制することができる。
【００５６】
実施の形態５．
続いて、本発明の実施の形態５に係る情報処理装置について説明する。実施の形態５に係る情報処理装置では、優先順位が相対的に高い一つのＯＳと、優先順位が相対的に低い二つのＯＳを備えている。
【００５７】
図１０は、本実施の形態５に係る情報処理装置１の構成を示す図である。図に示すように、情報処理装置１は、ＯＳ（１）１１と、ＯＳ（２）１２と、ＯＳ（３）２１と、デバイス６０を備える。ＯＳ（２）１２とＯＳ（３）２１は、共に、スレッドと、ドライバと、遅延時間管理部を備えており、それらの構成及び機能は、発明の実施の形態１と同様である。ＯＳ（１）１１は、負荷制御部７０を備えている。負荷制御部７０は、ＯＳ（２）１２の平均割り込み頻度データと、ＯＳ（３）２１の平均割り込み頻度データと、平均タスク待ち時間データを保持している。
【００５８】
次に、本実施の形態５に係る情報処理装置１の処理について説明する。ＯＳ（１）１１は、デバイス６０から割り込み通知を受け取ると、発明の実施の形態１と同様にどのＯＳが通知された割り込みを処理するのかを調査する。そして、ＯＳ（１）１１は、割り込みを処理すべきＯＳが、ＯＳ（２）１２かＯＳ（３）２１の場合には、そのＯＳに割り込みを転送する。かかる転送処理の際に、ＯＳ（１）１１は、転送する割り込みのために発生したタスクの待ち時間と各ＯＳへの割り込みの発生頻度とを計測する。取得した情報はＯＳごとに記録し、各ＯＳによる負荷が閾値を超えていないか確認し、超えていたら負荷情報をそのＯＳごとに通知する。なお、遅延処理の方法については、前述の発明の実施の形態１〜４のいずれかを用いる。
【００５９】
このように本実施の形態５に係る情報処理装置においても、発明の実施の形態１にかかる情報処理装置と同様に、汎用ＯＳが発生させた割り込みによるリアルタイムＯＳに対する影響を抑制することができる。
【００６０】
尚、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【産業上の利用可能性】
【００６１】
本発明は、例えば、１つの計算機上において２つ以上の異なるＯＳによりハードウェアを共有しており、一方のＯＳに割り込みが通知される環境において、割り込みが直接通知されないＯＳによるＩＯ処理によって割り込みが直接通知されるＯＳの負荷が高くなる場合に、割り込みによる負荷を軽減する用途に適用可能である。
【図面の簡単な説明】
【００６２】
【図１】発明の実施の形態１にかかる情報処理装置の概略構成を示すブロック図である。
【図２】発明の実施の形態１にかかる情報処理装置の構成を示すブロック図である。
【図３】発明の実施の形態１にかかる情報処理装置の処理を示すフローチャートである。
【図４】発明の実施の形態１にかかる情報処理装置の処理を示すフローチャートである。
【図５】発明の実施の形態１にかかる情報処理装置の処理を示すフローチャートである。
【図６】発明の実施の形態２にかかる情報処理装置の構成を示すブロック図である。
【図７】発明の実施の形態２にかかる情報処理装置の処理を示すフローチャートである。
【図８】発明の実施の形態３にかかる情報処理装置の構成を示すブロック図である。
【図９】発明の実施の形態４にかかる情報処理装置の構成を示すブロック図である。
【図１０】発明の実施の形態５にかかる情報処理装置の構成を示すブロック図である。
【符号の説明】
【００６３】
１  情報処理装置、１１  ＯＳ（１）、１２  ＯＳ（２）、１３  ディスク、
１４  イーサネット（登録商標）、１５  バスコントローラ、１６〜１９  ＣＰＵ、
２１  ＯＳ（３）、３１  スレッド、４０  ドライバ、５０  遅延時間管理部、
６０  デバイス、７０  負荷制御部、８０  スケジューラ、９０  共有メモリ
【図１】
2010146065.tif 000003
【図２】
2010146065.tif 000004
【図３】
2010146065.tif 000005
【図４】
2010146065.tif 000006
【図５】
2010146065.tif 000007
【図６】
2010146065.tif 000008
【図７】
2010146065.tif 000009
【図８】
2010146065.tif 000010
【図９】
2010146065.tif 000011
【図１０】
2010146065.tif 000012