(57)【要約】【課題】タスク応答性能が高いタスク切替え制御方法、及びコンピュータシステムを提供する。【解決手段】本発明に係るタスク切替え制御方法は、複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法あって、タスクの起床要求を検知する検知ステップＳ１０１と、コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得ステップＳ１０２と、起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である第２資源情報を取得する第２資源取得ステップＳ１０３と、第１資源情報と、第２資源情報とに基づき、起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定ステップＳ１０４と、第１判定ステップＳ１０４において切替え可能であると判定された場合に、起床要求が検知されたタスクに切替える第１切替えステップＳ１０５とを含む。【選択図】図２
2008108075.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法であって、
タスクの起床要求を検知する検知ステップと、
前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得ステップと、
前記検知ステップにおいて起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である第２資源情報を取得する第２資源取得ステップと、
前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定ステップと、
前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたタスクに切替える第１切替えステップとを含む
ことを特徴とするタスク切替え制御方法。
【請求項２】
前記コンピュータシステムは、ＯＳ（Operating System）の制御の下で前記複数のタスクを実行し、
前記複数のタスクは、
前記ＯＳ上で動作し、前記ＯＳのコンピュータ資源の全てを使用する通常タスクと、
前記ＯＳ上で動作し、前記ＯＳのコンピュータ資源のうち一部のみを使用する制限タスクとを含み、
前記検知ステップでは、前記制限タスクの起床要求を検知し、
前記第１資源取得ステップでは、前記ＯＳのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得し、
前記第２資源取得ステップでは、前記検知ステップにおいて起床要求が検知された制限タスクの実行に必要な前記ＯＳのコンピュータ資源の情報である第２資源情報を取得し、
前記第１判定ステップでは、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知された制限タスクに切替え可能であるか否かを判定し、
前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知された制限タスクに切替える
ことを特徴とする請求項１記載のタスク切替え制御方法。
【請求項３】
前記コンピュータシステムは、第１のＯＳと、前記第１のＯＳ上の１以上のタスクとして動作する第２のＯＳとの制御の下で前記複数のタスクを実行し、
前記複数のタスクは、
前記第１のＯＳ上で動作するタスクであるホストＯＳタスクと、
前記第１のＯＳをホストＯＳとして、前記第１のＯＳ上のタスクとして動作する第２のＯＳ上のタスクであるゲストＯＳタスクとを含み、
前記検知ステップでは、前記ゲストＯＳタスクの起床要求を検知し、
前記第１資源取得ステップでは、前記第１のＯＳのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得し、
前記第２資源取得ステップでは、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクの実行に必要な前記第１のＯＳのコンピュータ資源の情報である第２資源情報を取得し、
前記第１判定ステップでは、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定し、
前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替える
ことを特徴とする請求項１記載のタスク切替え制御方法。
【請求項４】
前記第１判定ステップでは、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクが使用するコンピュータ資源の全てが、使用中でない場合に、該ゲストＯＳタスクに切替え可能であると判定する
ことを特徴とする請求項３記載のタスク切替え制御方法。
【請求項５】
前記タスク切替え制御方法は、さらに、
前記第１判定ステップにおいて、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え不可であると判定された場合に、使用中の前記第１のＯＳのコンピュータ資源が解放されたことを検出する第１検出ステップと、
前記第１検出ステップにおいて、使用中の前記第１のＯＳのコンピュータ資源が解放されたと検出された場合に、前記第１のＯＳのコンピュータ資源のうち、使用中の前記第１のＯＳのコンピュータ資源の情報である第１資源情報を再度取得する第１資源再取得ステップと、
前記第１資源再取得ステップにおいて取得した前記第１資源情報と、前記第２資源取得ステップにおいて取得した前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定する再判定ステップとを含む
ことを特徴とする請求項３又は４記載のタスク切替え制御方法。
【請求項６】
前記タスク切替え制御方法は、さらに、
割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の情報である第３資源情報を取得する第３資源取得ステップと、
前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第３資源取得ステップにおいて取得された前記第３資源情報とから、前記割込み処理の実行に必要なコンピュータ資源の少なくとも一部が使用中であるか否かを判定する第２判定ステップと、
前記第２判定ステップにおいて使用中であると判定された場合に、割込み処理を禁止する割込み禁止ステップとを含む
ことを特徴とする請求項３、４又は５記載のタスク切替え制御方法。
【請求項７】
前記タスク切替え制御方法は、さらに、
割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の情報である第３資源情報を取得する第３資源取得ステップと、
前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第３資源取得ステップにおいて取得された前記第３資源情報とから、前記割込み処理の実行に必要なコンピュータ資源の少なくとも一部が使用中であるか否かを判定する第２判定ステップと、
前記第２判定ステップにおいて使用中であると判定された場合に、使用中のコンピュータ資源が解放されたことを検出する第２検出ステップと、
前記第２検出ステップにおいて、使用中の前記第１のＯＳのコンピュータ資源が解放されたと検出された場合に、前記割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の少なくとも一部が使用中であるか否かを再度判定する第２再判定ステップとを含み、
前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定され、かつ前記第２再判定ステップにおいて使用中でないと判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替える
ことを特徴とする請求項３、４又は５記載のタスク切替え制御方法。
【請求項８】
前記タスク切替え制御方法は、さらに、
前記第１判定ステップにおいて、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であると判定された場合に、前記第１のＯＳの環境を保持する環境保持ステップと、
該ゲストＯＳタスクの終了時に、前記環境保持ステップにおいて保持された環境を復帰する環境復帰ステップとを含む
ことを特徴とする請求項３〜７のいずれか１項に記載のタスク切替え制御方法。
【請求項９】
前記タスク切替え制御方法は、さらに、
前記第１切替えステップにおいて切替えられた前記ゲストＯＳタスクの実行中に、前記第１切替えステップにおいてタスクを切替える前に実行されていたホストＯＳタスクの状態の変更要求を取得する変更要求取得ステップと、
前記変更要求取得ステップにおいて取得した変更要求に基づき、前記環境保持ステップにおいて保持された環境を変更するタスク状態変更ステップとを含み、
前記環境復帰ステップでは、前記タスク状態変更ステップにおいて変更された環境を復帰する
ことを特徴とする請求項８記載のタスク切替え制御方法。
【請求項１０】
前記タスク切替え制御方法は、さらに、
前記第１切替えステップにおいて切替えられた前記ゲストＯＳタスクの実行終了の後に、前記ホストＯＳタスクのうちで最後に実行されていたホストＯＳタスクに切替える第２切替えステップを含む
ことを特徴とする請求項３〜９のいずれか１項に記載のタスク切替え制御方法。
【請求項１１】
前記タスク切替え制御方法は、さらに、
前記複数のゲストＯＳタスクのうち１以上が実行可能状態であるか否かを判定するタスク判定ステップと、
前記タスク判定ステップにおいて実行可能な状態でないと判定された場合に、前記ゲストＯＳタスクの実行終了の後に、前記ホストＯＳタスクのうちで最後に動作していたホストＯＳタスクに切替える第２切替えステップとを含む
ことを特徴とする請求項３〜９のいずれか１項に記載のタスク切替え制御方法。
【請求項１２】
前記ホストＯＳタスク及び前記ゲストＯＳタスクは、それぞれタスクの実行順序を決定する優先度を有し、
前記タスク切替え制御方法は、さらに、
前記第１判定ステップにおいて、ゲストＯＳ上のタスクに切替え可能であると判定された場合に、前記第１切替えステップにおいてタスクを切替える前に実行されていたホストＯＳタスクの優先度を、前記ホストＯＳタスクのうちの最も高い優先度に変更する優先度変更ステップを含む
ことを特徴とする請求項３〜９のいずれか１項に記載のタスク切替え制御方法。
【請求項１３】
前記複数のタスクは、複数の前記ゲストＯＳタスクを含み、
前記タスク切替え制御方法は、さらに、
前記第１のＯＳが、前記ホストＯＳタスク及び前記複数のゲストＯＳタスクの全てにタスクを切替え可能な状態であるか否かを判定する第３判定ステップを含み、
前記第１切替えステップでは、前記第３判定ステップにおいて切替え可能な状態であると判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え、
前記第１判定ステップでは、前記第３判定ステップにおいて切替え不可な状態と判定された場合に、前記第１資源取得ステップにおいて取得した前記第１資源情報と、前記第２資源取得ステップにおいて取得した前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定する
ことを特徴とする請求項３〜１２のいずれか１項に記載のタスク切替え制御方法。
【請求項１４】
複数のタスクが動作するコンピュータシステムであって、
タスクの起床要求を検知する検知手段と、
前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得手段と、
前記検知手段により起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である前記第２資源情報を取得する第２資源取得手段と、
前記第１資源取得手段が取得した前記第１資源情報と、前記第２資源取得手段が取得した第２資源情報とに基づき、前記検知手段により起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定手段と、
前記第１判定手段が、切替え可能であると判定した場合に、前記検知手段により起床要求が検知されたタスクに切替える切替え手段とを備える
ことを特徴とするコンピュータシステム。
【請求項１５】
複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法のプログラムであって、
タスクの起床要求を検知する検知ステップと、
前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得ステップと、
前記検知ステップにおいて起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である第２資源情報を取得する第２資源取得ステップと、
前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定ステップと、
前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたタスクに切替える切替えステップとをコンピュータに実行させる
ことを特徴とするプログラム。
【請求項１６】
複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法のプログラムが記録された記録媒体であって、
タスクの起床要求を検知する検知ステップと、
前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得ステップと、
前記検知ステップにおいて起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である第２資源情報を取得する第２資源取得ステップと、
前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定ステップと、
前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたタスクに切替える切替えステップとをコンピュータに実行させる
プログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク切替え制御方法及びコンピュータシステムに関し、特に、複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法に関する。
【背景技術】
【０００２】
ハードウェアの高性能化とソフトウェアの規模増大とに伴い、従来、シンプルで軽量なリアルタイムＯＳ（Operating System）が使用されてきた組込み市場においても、より高機能な汎用ＯＳへの移行が進んでいる。一般にリアルタイムＯＳと汎用ＯＳとはＡＰＩ（Application Program Interface）が異なるため、リアルタイムＯＳ上に構築されたソフトウェアをそのまま汎用ＯＳ上で動作させることはできない。さらに、ＡＰＩの置換えをした場合においても、汎用ＯＳは相対的にリアルタイム性能が低い。よって、対象システムにリアルタイム動作が求められる場合においては、資産ソフトウェアの設計の見直しが必要になる可能性が高い。その結果、リアルタイムＯＳから汎用ＯＳへの移行には、多大な開発コストが必要となる。
【０００３】
そこで、リアルタイムＯＳと汎用ＯＳとを組み合わせたハイブリッドＯＳが考案されている。ハイブリッドＯＳでは、資産ソフトウェアを流用し、且つ、汎用ＯＳの機能を利用することにより、高付加価値な大規模システムを少ない開発コストで構築することが可能となる。
【０００４】
ハイブリッドＯＳの形態は、大きく分類して、異なるＣＰＵ上でそれぞれ汎用ＯＳとリアルタイムＯＳとを動作させる形態のハイブリッドＯＳと、１つ以上のＣＰＵ上で動作するＯＳ（ホストＯＳ）上で１つ以上のタスクとして別のＯＳ（ゲストＯＳ）が動作する形態のハイブリッドＯＳが存在する。後者のハイブリッドＯＳでは、例えば、ホストＯＳとして汎用ＯＳが動作し、ゲストＯＳとしてリアルタイムＯＳが動作する。
【０００５】
前者のハイブリッドＯＳは、汎用ＯＳとリアルタイムＯＳとの結合度が低く、かつ汎用ＯＳとリアルタイムＯＳとにＣＰＵ等のハードウェア資源が独立に割当てられるため、ＯＳ及びアプリケーションソフトをそのまま動作させることができる。これにより、前者のハイブリッドＯＳは、システムのリアルタイム性の保証が容易である。一方で、前者のハイブリッドＯＳは、ハードウェアのコストが増加する短所が存在する。
【０００６】
後者のハイブリッドＯＳは、少なくともゲストＯＳの改造が必要であるが、アプリケーションソフトは基本的に変更せずに動作させることが可能である。後者のハイブリッドＯＳは、ホストＯＳとゲストＯＳとがハードウェア資源を排他制御しながら協調動作するため、ハードウェアのコストを低減できる。一方で、後者のハイブリッドＯＳは、ホストＯＳ又はゲストＯＳのそれぞれがＣＰＵ等のハードウェア資源を占有できないため、実時間処理システムを構築するための工夫が必要になる。
【０００７】
ゲストＯＳがホストＯＳ上の１つ以上のタスクとして動作する構成のハイブリッドＯＳでは、ホストＯＳとゲストＯＳとの切替え処理にホストＯＳのスケジューラが介在するため、一般にゲストＯＳの割込み性能及びタスク切替え性能はホストＯＳの性能に依存する。具体的には、ホストＯＳが動作中に、割込みによってゲストＯＳタスクを起床する要求が発生した場合、ホストＯＳのスケジューラが動作可能なタイミングでのみ、ゲストＯＳタスクへタスク切替えが可能である。例えば、ホストＯＳがカーネルプリエンプト不可能なＯＳであり、カーネル処理中に割込みによって高優先度タスクへ起床要求を受付けた場合、現在のカーネル処理が完了するまでは、高優先度タスクへタスク切替えは行えない。よって、高優先度タスクへのタスク切替えが遅延する。ホストＯＳがカーネルプリエンプトを許すＯＳの場合でも、各種資源の排他制御のためにプリエンプト禁止区間が存在する。これにより、プリエンプト禁止区間内においては高優先度タスクへのタスク切替えが遅延する。そのため、ゲストＯＳの割込み性能やタスク切替え性能の低下を防ぐために、スケジューリング及び割込み制御等の最小限の機能のみを持たせたマイクロカーネル（マイクロカーネル方式）、又は割込み性能やタスク切替え性能の優れたリアルタイムＯＳをホストＯＳとして利用（ハイブリッド方式）することが多い。
【０００８】
このように、汎用ＯＳをホストＯＳに利用するハイブリッドＯＳは、割込み性能及びタスク切替え性能が汎用ＯＳの性能に依存する。このため、汎用ＯＳをホストＯＳに利用するハイブリッドＯＳは、厳密な実時間動作を必要としないシステム、又は、論理的デバッグ用途のシミュレータに利用されてきた。
【０００９】
一方、汎用ＯＳ上でリアルタイムＯＳが動作する構成のハイブリッドＯＳにおいて、汎用ＯＳに影響されない割込み性能を実現する方法が知られている（例えば、特許文献１参照）。汎用ＯＳ上にリアルタイムＯＳを構築することの利点としては、例えば、リアルタイムＯＳから汎用ＯＳの高度なメモリ保護機構を利用可能なことが挙げられる。
【００１０】
以下、従来の汎用ＯＳ上でリアルタイムＯＳが動作する構成のハイブリッドＯＳにおけるタスク切替え制御を説明する。
【００１１】
図１３は、従来の汎用ＯＳ上でリアルタイムＯＳが動作する構成のハイブリッドＯＳにおけるタスク切替え処理の流れを示すフローチャートである。
【００１２】
図１３示すように、まず、タスクの起床要求が検知される（Ｓ１００１）。タスクの起床要求が検知された場合には（Ｓ１００１でＹｅｓ）、タスク切替えが可能であるか否かが判定される（Ｓ１００２）。例えば、使用中の資源に応じて、ＯＳ上で切替え可能状態であるか否かが規定されており、切替え可能状態の場合に、タスク切替え可能と判定される。具体的には、特定のタスク（例えば、汎用ＯＳ上で動作するリアルタイムＯＳのタスク）の全てに安定して切替えを行うために複数の資源が指定されており、指定されている全ての資源が使用中でない場合には切替え可能と判定される。また、割込み処理を実行中には、切替え不可と判定される。タスク切替え可能と判定された場合は（Ｓ１００２でＹｅｓ）、タスク切替えが行われる（Ｓ１００３）。タスク切替え不可と判定された場合は（Ｓ１００２でＮｏ）、タスク切替えは行われない。
【００１３】
なお、図１３を用いて汎用ＯＳ上でリアルタイムＯＳが動作する構成のハイブリッドＯＳにおけるタスク切替え処理について説明したが、図１３に示す処理の流れは、単一のＯＳ上の優先度の高い特定のタスクに対する切替え処理においても同様である。
【特許文献１】特開２００６−１４６７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、タスク切替え処理においては、より高いタスク応答性能が要求されている。上述した従来のタスク切替え方法では、特定のタスクへのタスク切替えは、コンピュータシステム（ＯＳ）が安定して切替えを行える全ての資源が使用中でない場合に行われる。よって、コンピュータシステム（ＯＳ）が安定して切替えを行える資源のうち一部が使用中の場合には、タスク切替えは行われずタスク応答性能は、十分でない。
【００１５】
そこで、本発明は、タスク応答性能が高いタスク切替え制御方法、及びコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明に係るタスク切替え制御方法は、複数のタスクが動作するコンピュータシステムにおけるタスク切替え制御方法あって、タスクの起床要求を検知する検知ステップと、前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得ステップと、前記検知ステップにおいて起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である第２資源情報を取得する第２資源取得ステップと、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定ステップと、前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたタスクに切替える第１切替えステップとを含む。
【００１７】
これによれば、現在使用中のコンピュータ資源と、起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。よって、実行されるタスクに最小限必要なコンピュータ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明は、タスク応答性能が高いタスク切替え制御方法を実現することができる。
【００１８】
また、前記コンピュータシステムは、ＯＳ（Operating System）の制御の下で前記複数のタスクを実行し、前記複数のタスクは、前記ＯＳ上で動作し、前記ＯＳのコンピュータ資源の全てを使用する通常タスクと、前記ＯＳ上で動作し、前記ＯＳのコンピュータ資源のうち一部のみを使用する制限タスクとを含み、前記検知ステップでは、前記制限タスクの起床要求を検知し、前記第１資源取得ステップでは、前記ＯＳのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得し、前記第２資源取得ステップでは、前記検知ステップにおいて起床要求が検知された制限タスクの実行に必要な前記ＯＳのコンピュータ資源の情報である第２資源情報を取得し、前記第１判定ステップでは、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知された制限タスクに切替え可能であるか否かを判定し、前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知された制限タスクに切替えてもよい。
【００１９】
これによれば、現在使用中のＯＳのコンピュータ資源と、起床要求が検知された制限タスクの実行に必要なＯＳのコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。よって、実行される制限タスクに最小限必要なＯＳのコンピュータ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明は、タスク応答性能が高いタスク切替え制御方法を実現することができる。
【００２０】
また、前記コンピュータシステムは、第１のＯＳと、前記第１のＯＳ上の１以上のタスクとして動作する第２のＯＳとの制御の下で前記複数のタスクを実行し、前記複数のタスクは、前記第１のＯＳ上で動作するタスクであるホストＯＳタスクと、前記第１のＯＳをホストＯＳとして、前記第１のＯＳ上のタスクとして動作する第２のＯＳ上のタスクであるゲストＯＳタスクとを含み、前記検知ステップでは、前記ゲストＯＳタスクの起床要求を検知し、前記第１資源取得ステップでは、前記第１のＯＳのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得し、前記第２資源取得ステップでは、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクの実行に必要な前記第１のＯＳのコンピュータ資源の情報である第２資源情報を取得し、前記第１判定ステップでは、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第２資源取得ステップにおいて取得された前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定し、前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替えてもよい。
【００２１】
これによれば、現在使用中の第１のＯＳのコンピュータ資源と、起床要求が検知されたゲストＯＳタスクの実行に必要な第１のＯＳのコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。よって、実行されるゲストＯＳタスクに最小限必要な第１のＯＳのコンピュータ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。これにより、ホストＯＳのタスク応答時間への依存度を最小化し、タスク応答性の低いホストＯＳ上にタスク応答性の高いゲストＯＳを構築することができる。よって、本発明は、タスク応答性能が高いタスク切替え制御方法を実現することができる。
【００２２】
また、前記第１判定ステップでは、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクが使用するコンピュータ資源の全てが、使用中でない場合に、該ゲストＯＳタスクに切替え可能であると判定してもよい。
【００２３】
これによれば、実行されるゲストＯＳタスクに最小限必要な第１のＯＳのコンピュータ資源が使用中でない場合に、タスク切替えを行う。これにより、タスク応答性を向上させることができる。
【００２４】
また、前記タスク切替え制御方法は、さらに、前記第１判定ステップにおいて、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え不可であると判定された場合に、使用中の前記第１のＯＳのコンピュータ資源が解放されたことを検出する第１検出ステップと、前記第１検出ステップにおいて、使用中の前記第１のＯＳのコンピュータ資源が解放されたと検出された場合に、前記第１のＯＳのコンピュータ資源のうち、使用中の前記第１のＯＳのコンピュータ資源の情報である第１資源情報を再度取得する第１資源再取得ステップと、前記第１資源再取得ステップにおいて取得した前記第１資源情報と、前記第２資源取得ステップにおいて取得した前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定する再判定ステップとを含んでもよい。
【００２５】
これによれば、ゲストＯＳタスクの実行に必要な第１のＯＳのコンピュータ資源が使用中であり、タスク切替えが不可の場合には、第１のＯＳのコンピュータ資源の使用状況を監視し、ゲストＯＳタスクの実行に必要な第１のＯＳのコンピュータ資源が解放された時点で、タスク切替えを行うことができる。よって、ゲストＯＳタスクの実行に必要なコンピュータ資源が使用中であり、タスク切替えが不可の場合のタスク応答性を向上させることができる。
【００２６】
また、前記タスク切替え制御方法は、さらに、割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の情報である第３資源情報を取得する第３資源取得ステップと、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第３資源取得ステップにおいて取得された前記第３資源情報とから、前記割込み処理の実行に必要なコンピュータ資源の少なくとも一部が使用中であるか否かを判定する第２判定ステップと、前記第２判定ステップにおいて使用中であると判定された場合に、割込み処理を禁止する割込み禁止ステップとを含んでもよい。
【００２７】
これによれば、割込み処理の実行に必要な第１のＯＳのコンピュータ資源が使用中の場合には、ゲストＯＳタスクの実行中の割込みを禁止する。これにより、ゲストＯＳタスクの実行中に割込みが発生した場合の、割込みによる誤動作の発生等を防止することができる。
【００２８】
また、前記タスク切替え制御方法は、さらに、割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の情報である第３資源情報を取得する第３資源取得ステップと、前記第１資源取得ステップにおいて取得された前記第１資源情報と、前記第３資源取得ステップにおいて取得された前記第３資源情報とから、前記割込み処理の実行に必要なコンピュータ資源の少なくとも一部が使用中であるか否かを判定する第２判定ステップと、前記第２判定ステップにおいて使用中であると判定された場合に、使用中のコンピュータ資源が解放されたことを検出する第２検出ステップと、前記第２検出ステップにおいて、使用中の前記第１のＯＳのコンピュータ資源が解放されたと検出された場合に、前記割込み処理の実行に必要な前記第１のＯＳのコンピュータ資源の少なくとも一部が使用中であるか否かを再度判定する第２再判定ステップとを含み、前記第１切替えステップでは、前記第１判定ステップにおいて切替え可能であると判定され、かつ前記第２再判定ステップにおいて使用中でないと判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替えてもよい。
【００２９】
これによれば、割込み処理の実行に必要な第１のＯＳのコンピュータ資源が使用中であり、ゲストＯＳタスク実行中に、割込み処理の実行が不可の場合には、第１のＯＳのコンピュータ資源の使用状況を監視し、割込み処理の実行に必要な第１のＯＳのコンピュータ資源が解放された時点で、タスク切替えを行うことができる。よって、割込み処理の実行に必要なコンピュータ資源が使用中であり、タスク切替えが不可の場合のタスク応答性を向上させることができる。また、ゲストＯＳタスクの実行中に割込みが発生した場合の、割込みによる誤動作の発生等を防止することができる。
【００３０】
また、前記タスク切替え制御方法は、さらに、前記第１判定ステップにおいて、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であると判定された場合に、前記第１のＯＳの環境を保持する環境保持ステップと、該ゲストＯＳタスクの終了時に、前記環境保持ステップにおいて保持された環境を復帰する環境復帰ステップとを含んでもよい。
【００３１】
これによれば、ホストＯＳタスクの実行中にゲストＯＳタスクに切替え、ゲストＯＳタスク終了後にホストＯＳタスクを復帰させた場合に、ゲストＯＳタスクに切替える前のＯＳの環境を復帰させることができる。よって、ゲストＯＳタスクの実行の前後におけるＯＳ環境の整合性を確保することができる。
【００３２】
また、前記タスク切替え制御方法は、さらに、前記第１切替えステップにおいて切替えられた前記ゲストＯＳタスクの実行中に、前記第１切替えステップにおいてタスクを切替える前に実行されていたホストＯＳタスクの状態の変更要求を取得する変更要求取得ステップと、前記変更要求取得ステップにおいて取得した変更要求に基づき、前記環境保持ステップにおいて保持された環境を変更するタスク状態変更ステップとを含み、前記環境復帰ステップでは、前記タスク状態変更ステップにおいて変更された環境を復帰してもよい。
【００３３】
これによれば、ゲストＯＳタスクの実行中に、タスク切替え前に実行されていたホストＯＳタスクに対する状態（優先度及び実行状態）の変更要求が発生した場合に、環境保持ステップにおいて保持したＯＳの環境を変更する。これにより、復帰後のホストＯＳタスクの状態を変更することができ、コンピュータシステムの整合性を維持することができる。
【００３４】
また、前記タスク切替え制御方法は、さらに、前記第１切替えステップにおいて切替えられた前記ゲストＯＳタスクの実行終了の後に、前記ホストＯＳタスクのうちで最後に実行されていたホストＯＳタスクに切替える第２切替えステップを含んでもよい。
【００３５】
これによれば、ゲストＯＳタスクの終了後に、ゲストＯＳタスクに切替える前に実行されていたホストＯＳタスクを復帰させることができる。よって、ゲストＯＳタスクの終了後に、ゲストＯＳタスクに切替える前に実行されていたホストＯＳタスクを引き続き実行することができる。
【００３６】
また、前記タスク切替え制御方法は、さらに、前記複数のゲストＯＳタスクのうち１以上が実行可能状態であるか否かを判定するタスク判定ステップと、前記タスク判定ステップにおいて実行可能な状態でないと判定された場合に、前記ゲストＯＳタスクの実行終了の後に、前記ホストＯＳタスクのうちで最後に動作していたホストＯＳタスクに切替える第２切替えステップとを含んでもよい。
【００３７】
これによれば、実行可能なゲストＯＳタスクを全て実行した後に、ゲストＯＳタスクにタスクを切替える前に実行していたホストＯＳタスクを復帰させることができる。よって、実行可能な全てのゲストＯＳタスクの終了後に、ゲストＯＳタスクに切替える前に実行されていたホストＯＳタスクを引き続き実行することができる。
【００３８】
また、前記ホストＯＳタスク及び前記ゲストＯＳタスクは、それぞれタスクの実行順序を決定する優先度を有し、前記タスク切替え制御方法は、さらに、前記第１判定ステップにおいて、ゲストＯＳ上のタスクに切替え可能であると判定された場合に、前記第１切替えステップにおいてタスクを切替える前に実行されていたホストＯＳタスクの優先度を、前記ホストＯＳタスクのうちの最も高い優先度に変更する優先度変更ステップを含んでもよい。
【００３９】
これによれば、ゲストＯＳタスクにタスクを切替える前に実行していたホストＯＳタスクの優先度を、ホストＯＳタスクの優先度のうちの最高の優先度とすることで、実行可能なゲストＯＳタスクを全て実行した後に、ゲストＯＳタスクにタスクを切替える前に実行していたホストＯＳタスクを復帰させることができる。よって、実行可能な全てのゲストＯＳタスクの終了後に、ゲストＯＳタスクに切替える前に実行されていたホストＯＳタスクを引き続き実行することができる。さらに、既存のＯＳの機能を改良（例えば、スケジューラの改良）することなく、自動的にタスク切替え前に実行されていたホストＯＳタスクを実行することができる。
【００４０】
また、前記複数のタスクは、複数の前記ゲストＯＳタスクを含み、前記タスク切替え制御方法は、さらに、前記第１のＯＳが、前記ホストＯＳタスク及び前記複数のゲストＯＳタスクの全てにタスクを切替え可能な状態であるか否かを判定する第３判定ステップを含み、前記第１切替えステップでは、前記第３判定ステップにおいて切替え可能な状態であると判定された場合に、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え、前記第１判定ステップでは、前記第３判定ステップにおいて切替え不可な状態と判定された場合に、前記第１資源取得ステップにおいて取得した前記第１資源情報と、前記第２資源取得ステップにおいて取得した前記第２資源情報とに基づき、前記検知ステップにおいて起床要求が検知されたゲストＯＳタスクに切替え可能であるか否かを判定してもよい。
【００４１】
これによれば、第１のＯＳがタスク切替え可能な状態にある場合には、第１資源取得ステップ、第２資源取得ステップ及び第１判定ステップを実施せずに、タスクの切替えを行う。よって、第１のＯＳがタスク切替え可能な状態の場合の、処理量を低減することができる。
【００４２】
また、本発明に係るコンピュータシステムは、複数のタスクが動作するコンピュータシステムであって、タスクの起床要求を検知する検知手段と、前記コンピュータシステムのコンピュータ資源のうち、使用中のコンピュータ資源の情報である第１資源情報を取得する第１資源取得手段と、前記検知手段により起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報である前記第２資源情報を取得する第２資源取得手段と、前記第１資源取得手段が取得した前記第１資源情報と、前記第２資源取得手段が取得した第２資源情報とに基づき、前記検知手段により起床要求が検知されたタスクに切替え可能であるか否かを判定する第１判定手段と、前記第１判定手段が、切替え可能であると判定した場合に、前記検知手段により起床要求が検知されたタスクに切替える切替え手段とを備える。
【００４３】
この構成によれば、現在使用中のコンピュータ資源と、起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。よって、実行されるタスクに最小限必要なコンピュータ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明は、タスク応答性能が高いコンピュータシステムを実現することができる。
【００４４】
なお、本発明は、このようなタスク切替え制御方法として実現することができるだけでなく、タスク切替え制御方法に含まれる特徴的なステップを手段とするコンピュータシステムとして実現したり、タスク切替え制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【発明の効果】
【００４５】
本発明は、タスク応答性能が高いタスク切替え制御方法、及びコンピュータシステムを提供することができる。
【発明を実施するための最良の形態】
【００４６】
以下、本発明に係るタスク切替え制御方法を用いたコンピュータシステムの実施の形態について、図面を参照しながら詳細に説明する。
【００４７】
（実施の形態１）
本発明の実施の形態１に係るコンピュータシステムは、使用中のコンピュータ資源と、起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。これにより、タスク応答性能が高いコンピュータシステムを実現することができる。
【００４８】
まず、本発明の実施の形態１に係るコンピュータシステムの構成を説明する。
図１は、本発明の実施の形態１に係るコンピュータシステムの構成を示す図である。図１に示すコンピュータシステム１００は、複数のタスク１４０、１４１及び１４２が動作するコンピュータシステムである。コンピュータシステム１００は、ハードウェア資源であるＣＰＵ１１０と、ＣＰＵ１１０上で動作するソフトウェア資源であるタスク切替え部１２０とを備える。ここでタスクとは、ＣＰＵ上での処理の実行単位を表す。また、仮想メモリ管理機能を備えたＯＳでは、複数のタスクがアドレス空間を共有することが可能であり、これらのタスクの集まりをタスク群と呼ぶ。
【００４９】
タスク切替え部１２０は、複数のタスク１４０、１４１及び１４２の切替えを行う。タスク切替え部１２０は、第１コンピュータ資源取得部１２１と、第２コンピュータ資源取得部１２２と、タスク切替え判定部１２３と、ディスパッチャ１２４と、タスク起床要求検知部１２５とを備える。
【００５０】
タスク起床要求検知部１２５は、タスク１４０、１４１及び１４２の起床要求を検知する。
【００５１】
第１コンピュータ資源取得部１２１は、コンピュータシステム１００のコンピュータ資源のうち、使用中のコンピュータ資源の情報を取得する。第２コンピュータ資源取得部１２２は、タスク起床要求検知部１２５により起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報を取得する。ここで、コンピュータ資源とは、メモリ管理構造体及びランキュー等である。
【００５２】
タスク切替え判定部１２３は、第１コンピュータ資源取得部１２１が取得した使用中のコンピュータ資源の情報と、第２コンピュータ資源取得部１２２が取得した起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報とに基づき、起床要求が検知されたタスクへのタスク切替えが可能であるか否かを判定する。
【００５３】
ディスパッチャ１２４は、タスク切替え判定部１２３がタスク切替え可能と判定した場合に、タスク起床要求検知部１２５により起床要求が検知されたタスクへのタスク切替えを行う。
【００５４】
次に、コンピュータシステム１００の動作を説明する。
図２は、コンピュータシステム１００のタスク切替え処理の流れを示すフローチャートである。
【００５５】
図２に示すように、まず、タスク起床要求検知部１２５は、タスクの起床要求を検知する（Ｓ１０１）。以下、タスク１４０の起床要求が検知された場合を例に説明する。タスク起床要求検知部１２５がタスク１４０の起床要求を検知した場合（Ｓ１０１でＹｅｓ）、第１コンピュータ資源取得部１２１は、コンピュータシステム１００が現在、使用中のコンピュータ資源の情報を取得する（Ｓ１０２）。次に、第２コンピュータ資源取得部１２２は、タスク１４０の実行に必要なコンピュータ資源の情報を取得する（Ｓ１０３）。
【００５６】
次に、タスク切替え判定部１２３は、第１コンピュータ資源取得部１２１が取得した使用中のコンピュータ資源の情報と、第２コンピュータ資源取得部１２２が取得したタスク１４０の実行に必要なコンピュータ資源の情報とに基づき、起床要求が検知されたタスク１４０へのタスク切替えが可能であるか否かを判定する（Ｓ１０４）。タスク切替え判定部１２３は、起床要求が検知されたタスク１４０の実行に必要なコンピュータ資源の全てが使用中でない場合に、起床要求が検知されたタスク１４０へのタスク切替えが可能であると判定する（Ｓ１０４でＹｅｓ）。また、タスク切替え判定部１２３は、起床要求が検知されたタスク１４０の実行に必要なコンピュータ資源のうちいずれか１以上が使用中の場合、タスク切替えが不可であると判定する（Ｓ１０４でＮｏ）。タスク切替えが可能であると判定された場合（Ｓ１０４でＹｅｓ）、ディスパッチャ１２４は、ステップＳ１０１で起床要求が検知されたタスク１４０にタスクを切替える（Ｓ１０５）。一方、タスク切替え判定部１２３によりタスク切替えが不可であると判定された場合（Ｓ１０４でＮｏ）、ディスパッチャ１２４は、タスク切替えを行わない。
【００５７】
以上より、本発明の実施の形態１に係るコンピュータシステム１００は、現在使用中のコンピュータ資源と、起床要求が検知されたタスクの実行に必要なコンピュータ資源の情報とに基づき、タスクの切替えが可能であるか否かを判定する。よって、実行されるタスクに最小限必要なコンピュータ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明の実施の形態１に係るコンピュータシステム１００は、タスク応答性能が高いコンピュータシステムを実現することができる。
【００５８】
なお、上記説明において、使用中の資源の取得（Ｓ１０２）の後に、タスクに必要な資源の取得（Ｓ１０３）が行われているが、タスクに必要な資源の取得（Ｓ１０３）の後に、使用中の資源の取得（Ｓ１０２）を行ってもよい。また、使用中の資源の取得（Ｓ１０２）とタスクに必要な資源の取得（Ｓ１０３）とに含まれる全ての処理又は一部の処理を同時に行ってもよい。
【００５９】
（実施の形態２）
本発明の実施の形態２は、本発明を単一のＯＳ上で動作する制限タスクのタスク切替えに適用した実施例について説明する。
【００６０】
まず、本発明の実施の形態２に係るコンピュータシステムの構成を説明する。
図３は、本発明の実施の形態２に係るコンピュータシステムの構成を示す図である。
【００６１】
図３に示すコンピュータシステム２００は、通常タスク群２４０と、制限タスク群２５０とが動作するコンピュータシステムである。コンピュータシステム２００は、ハードウェア資源であるＣＰＵ２１０と、ＣＰＵ２１０上で動作するソフトウェア資源であるＯＳ２２０及びＯＳ拡張部２３０とを備える。コンピュータシステム２００は、ＯＳ２２０の制御の下で通常タスク群２４０及び制限タスク群２５０に含まれる複数のタスクを実行する。
【００６２】
通常タスク群２４０は、複数の通常タスク２４１及び２４２を含む。制限タスク群２５０は、複数の制限タスク２５１及び２５２を含む。通常タスク２４１及び２４２は、ＯＳ２２０上で動作し、ＯＳ２２０のコンピュータ資源（以下、「ＯＳ資源」と記す。）の全てを使用するタスクである。制限タスク２５１及び２５２は、ＯＳ２２０上で動作し、ＯＳ２２０の資源のうち一部のみを使用するタスクである。
【００６３】
ＯＳ２２０は、ディスパッチャ２２１と、タスク起床要求検知部２２２とを備える。ＯＳ拡張部２３０は、第１ＯＳ資源取得部２３１と、第２ＯＳ資源取得部２３２と、タスク切替え判定部２３３と、複数の制限タスク資源表２３４とを備える。
【００６４】
複数の制限タスク資源表２３４は、複数の制限タスク２５１及び２５２に一対一に対応する。制限タスク資源表２３４は、対応する制限タスク２５１及び２５２の実行に必要なＯＳ資源の情報が記載されている。
【００６５】
タスク起床要求検知部２２２は、制限タスク２５１及び２５２の起床要求を検知する。
第１ＯＳ資源取得部２３１は、ＯＳ２２０のコンピュータ資源のうち、使用中のＯＳ資源の情報を取得する。第２ＯＳ資源取得部２３２は、タスク起床要求検知部２２２により起床要求が検知された制限タスクに対応する制限タスク資源表２３４を参照し、起床要求が検知された制限タスクの実行に必要なＯＳ資源の情報を取得する。ここで、ＯＳ資源とは、メモリ管理構造体及びランキュー等である。
【００６６】
タスク切替え判定部２３３は、第１ＯＳ資源取得部２３１が取得した使用中のＯＳ資源の情報と、第２ＯＳ資源取得部２３２が取得した起床要求が検知された制限タスクの実行に必要なＯＳ資源の情報とに基づき、起床要求が検知された制限タスクへのタスク切替えが可能であるか否かを判定する。
【００６７】
ディスパッチャ２２１は、タスク切替え判定部２３３がタスク切替え可能と判定した場合に、タスク起床要求検知部２２２により起床要求が検知された制限タスクへのタスク切替えを行う。
【００６８】
次に、コンピュータシステム２００の動作を説明する。
図４は、コンピュータシステム２００のタスク切替え処理の流れを示すフローチャートである。
【００６９】
図４に示すように、まず、タスク起床要求検知部２２２は、制限タスクの起床要求を検知する（Ｓ２０１）。以下、制限タスク２５１の起床要求が検知された場合を例に説明する。タスク起床要求検知部２２２が制限タスク２５１の起床要求を検知した場合（Ｓ２０１でＹｅｓ）、タスク起床要求検知部２２２は、検知したタスクが制限タスクであるか否かを判定する（Ｓ２０２）。検知したタスクは、制限タスクなので（Ｓ２０２でＹｅｓ）、次に、第１ＯＳ資源取得部２３１は、ＯＳ２２０が現在、使用中のＯＳ資源の情報を取得する（Ｓ２０３）。次に、第２ＯＳ資源取得部２３２は、制限タスク２５１に対応する制限タスク資源表２３４を参照し、制限タスク２５１の実行に必要なＯＳ資源の情報を取得する（Ｓ２０４）。
【００７０】
次に、タスク切替え判定部２３３は、第１ＯＳ資源取得部２３１が取得した使用中のＯＳ資源の情報と、第２ＯＳ資源取得部２３２が取得した制限タスク２５１の実行に必要なＯＳ資源の情報とに基づき、起床要求が検知された制限タスク２５１へのタスク切替えが可能であるか否かを判定する（Ｓ２０５）。タスク切替え判定部２３３は、起床要求が検知された制限タスク２５１の実行に必要なＯＳ資源の全てが使用中でない場合に、起床要求が検知された制限タスク２５１へのタスク切替えが可能であると判定する（Ｓ２０５でＹｅｓ）。また、タスク切替え判定部２３３は、起床要求が検知された制限タスク２５１の実行に必要なＯＳ資源のうちいずれか１以上が使用中の場合、タスク切替えが不可であると判定する（Ｓ２０５でＮｏ）。タスク切替えが可能であると判定された場合（Ｓ２０５でＹｅｓ）、ディスパッチャ２２１は、ステップＳ２０１で起床要求が検知された制限タスク２５１にタスクを切替える（Ｓ２０６）。一方、タスク切替え判定部２３３によりタスク切替えが不可であると判定された場合（Ｓ２０５でＮｏ）、ディスパッチャ２２１は、タスク切替えを行わない。
【００７１】
次に、通常タスク２４１の起床要求が検知された場合を例に説明する。
タスク起床要求検知部２２２が通常タスク２４１の起床要求を検知した場合（Ｓ２０１でＹｅｓ）、検知したタスクは、通常タスクなので（Ｓ２０２でＮｏ）、次に、タスク切替え判定部２３３は、通常タスク２４１に切替え可能であるか否かを判定する（Ｓ２０７）。例えば、使用中の資源に応じて、ＯＳ上で切替え可能状態であるか否かが規定されており、切替え可能状態の場合に、タスク切替え判定部２３３は、タスク切替え可能と判定する。具体的には、タスクの全てに安定して切替えを行うために複数の資源が指定されており、指定されている全ての資源が使用中でない場合には切替え可能と判定される。また、割込み処理を実行中には、切替え不可と判定される。
【００７２】
タスク切替え判定部２３３がタスク切替え可能と判定した場合には（Ｓ２０７でＹｅｓ）、通常タスク２４１にタスクが切替えられる（Ｓ２０８）。また、タスク切替え判定部２３３がタスク切替え不可と判定した場合には（Ｓ２０７でＮｏ）、タスク切替えは行われない。
【００７３】
以上より、本発明の実施の形態２に係るコンピュータシステム２００は、現在使用中のＯＳ資源と、起床要求が検知された制限タスクの実行に必要なＯＳ資源の情報とに基づき、制限タスクへのタスクの切替えが可能であるか否かを判定する。よって、実行される制限タスクに最小限必要なＯＳ資源が使用中でない場合に、タスク切替えを行うことができる。よって、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明の実施の形態２に係るコンピュータシステム２００は、タスク応答性能が高いコンピュータシステムを実現することができる。
【００７４】
なお、上記説明において、使用中の資源の取得（Ｓ２０３）の後に、タスクに必要な資源の取得（Ｓ２０４）が行われているが、タスクに必要な資源の取得（Ｓ２０４）の後に、使用中の資源の取得（Ｓ２０３）を行ってもよい。また、使用中の資源の取得（Ｓ２０３）に含まれる全て又は一部の処理と、タスクに必要な資源の取得（Ｓ２０４）に含まれる全ての処理又は一部の処理とを同時に行ってもよい。
【００７５】
また、起床要求が検知されたタスクが制限タスクの場合（Ｓ２０２でＹｅｓ）に、ステップＳ２０７と同様の切替え可能判定を行ってもよい。この場合、切替え可能と判定された場合には、ステップＳ２０３、Ｓ２０４及びＳ２０５の処理を行わずタスク切替え（Ｓ２０６）を実行し、切替え不可と判定された場合に、ステップＳ２０３以降の処理を行えばよい。これにより、ステップＳ２０７と同様の切替え判定で切替え可能と判定された場合の処理量を低減することができる。さらに、ステップＳ２０７と同様の切替え判定は、制限タスクであるか否かの判定（Ｓ２０２）の前に行ってもよい。
【００７６】
（実施の形態３）
本発明の実施の形態３では、本発明をホストＯＳ上で動作するゲストＯＳタスクのタスク切替えに適用した実施例について説明する。
【００７７】
まず、本発明の実施の形態３に係るコンピュータシステムの構成を説明する。
図５は、本発明の実施の形態３に係るコンピュータシステムの構成を示す図である。
【００７８】
図５に示すコンピュータシステム３００は、ホストＯＳタスク群３６０と、ゲストＯＳタスク群３７０とが動作するコンピュータシステムである。コンピュータシステム３００は、ハードウェア資源であるＣＰＵ３１０と、ＣＰＵ３１０上で動作するソフトウェア資源であるホストＯＳ３２０、ホストＯＳ拡張部３３０及びゲストＯＳ３５０とを備える。ホストＯＳは、例えば、汎用ＯＳである。ゲストＯＳ３５０は、ホストＯＳ３２０上の１以上のタスクとして動作するＯＳであり、例えば、リアルタイムＯＳである。コンピュータシステム３００は、ホストＯＳ３２０とゲストＯＳ３５０との制御の下でホストＯＳタスク群３６０及びゲストＯＳタスク群３７０に含まれる複数のタスクを実行する。
【００７９】
ホストＯＳタスク群３６０は、複数のホストＯＳタスク３６１、３６２及び３６３を含む。ホストＯＳタスク３６１、３６２及び３６３は、ホストＯＳ３２０上で動作するタスクである。ゲストＯＳタスク群３７０は、複数の特権ゲストＯＳタスク３７１と、複数の非特権ゲストＯＳタスク３７２とを含む。特権ゲストＯＳタスク３７１及び非特権ゲストＯＳタスク３７２は、ホストＯＳ３２０上のタスクとして動作するゲストＯＳ３５０上のタスクである。また、特権ゲストＯＳタスク３７１は、非特権ゲストＯＳタスク３７２より高い優先度で実行されるタスクである。
【００８０】
ホストＯＳ３２０は、ディスパッチャ３２１と、タスク起床要求検知部３２２と、ホストＯＳ環境３２３と、割込み資源表３２４とを備える。ホストＯＳ拡張部３３０は、第１ホストＯＳ資源取得部３３１と、第２ホストＯＳ資源取得部３３２と、タスク切替え判定部３３３と、ホストＯＳ環境退避部３３４と、ホストＯＳ環境保持部３３５と、ホストＯＳ環境復帰部３３６と、変更要求取得部３３７と、ホストＯＳ環境変更部３３８と、第３ホストＯＳ資源取得部３３９と、割込み禁止部３４０と、優先度制御部３４１とを備える。ゲストＯＳ３５０は、複数のゲストＯＳタスク資源表３５１を備える。
【００８１】
複数のゲストＯＳタスク資源表３５１は、複数の特権ゲストＯＳタスク３７１に一対一に対応する。ゲストＯＳタスク資源表３５１は、対応する特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の情報が記載されている。
【００８２】
割込み資源表３２４は、ホストＯＳ３２０の割込みハンドラ（割込み処理）の実行に必要なＯＳ資源の情報が記載されている。
【００８３】
タスク起床要求検知部３２２は、特権ゲストＯＳタスク３７１の起床要求を検知する。
第１ホストＯＳ資源取得部３３１は、ホストＯＳ３２０のコンピュータ資源のうち、使用中のＯＳ資源の情報を取得する。また、第１ホストＯＳ資源取得部３３１は、後述するタスク切替え判定部３３３により、起床要求が検知された特権ゲストＯＳタスクに切替え不可であると判定された場合に、使用中のＯＳ資源が解放されたことを検出する。さらに、第１ホストＯＳ資源取得部３３１は、使用中のＯＳ資源が解放されたと検出された場合に、ＯＳのコンピュータ資源のうち、ホストＯＳ３２０のコンピュータ資源のうち、使用中のＯＳ資源の情報を再度取得する。
【００８４】
第２ホストＯＳ資源取得部３３２は、タスク起床要求検知部３２２により起床要求が検知された特権ゲストＯＳタスクに対応するゲストＯＳタスク資源表３５１を参照し、起床要求が検知された特権ゲストＯＳタスクの実行に必要なＯＳ資源の情報を取得する。
【００８５】
第３ホストＯＳ資源取得部３３９は、割込み資源表３２４を参照し、ホストＯＳ３２０の割込みハンドラの実行に必要なＯＳ資源の情報を取得する。ここで、ＯＳ資源とは、メモリ管理構造体及びランキュー等である。
【００８６】
タスク切替え判定部３３３は、第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、第２ホストＯＳ資源取得部３３２が取得した起床要求が検知された特権ゲストＯＳタスクの実行に必要なＯＳ資源の情報とに基づき、起床要求が検知された特権ゲストＯＳタスクへのタスク切替えが可能であるか否かを判定する。具体的には、タスク切替え判定部３３３は、タスク起床要求検知部３２２により起床要求を検知された特権ゲストＯＳタスクが使用するＯＳ資源の全てが、使用中でない場合に、特権ゲストＯＳタスクに切替え可能であると判定する。
【００８７】
また、タスク切替え判定部３３３は、第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、第３ホストＯＳ資源取得部３３９が取得した割込みハンドラの実行に必要なＯＳ資源の情報とから、起床要求が検知された特権ゲストＯＳタスクの実行中に、割込みハンドラの実行が可能であるか否かを判定する。具体的には、タスク切替え判定部３３３は、第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、第３ホストＯＳ資源取得部３３９が取得した割込みハンドラの実行に必要なＯＳ資源の情報とから、割込みハンドラの実行に必要なＯＳ資源の少なくとも一部が使用中であるか否かを判定する。タスク切替え判定部３３３は、割込みハンドラの実行に必要なＯＳ資源の少なくとも一部が使用中である場合に、特権ゲストＯＳタスクの実行中の割込みハンドラの実行が不可であると判定する。タスク切替え判定部３３３は、割込みハンドラの実行に必要なＯＳ資源の全てが使用中でない場合に、特権ゲストＯＳタスクの実行中の割込みハンドラの実行が可能であると判定する。
【００８８】
ディスパッチャ３２１は、タスク切替え判定部３３３がタスク切替え可能と判定した場合に、起床要求が検知された特権ゲストＯＳタスクへのタスク切替えを行う。
【００８９】
ホストＯＳ環境３２３は、ホストＯＳの環境の情報であり、例えば、ディスパッチャ３２１が特権ゲストＯＳタスクにタスクを切替える前に実行されていたホストＯＳタスクの優先度、実行されていたホストＯＳタスクの実行状態（Ｒｕｎｎｉｎｇ又はＷａｉｔ）、及びスケジューリングポリシー等である。ここで、スケジューリングポリシーとは、タスクの実行順序を決定するルールであり、例えば、優先度の高いタスクから実行する、又は、所定の時間毎に決められた順序でタスクを実行する等である。
【００９０】
ホストＯＳ環境退避部３３４は、タスク切替え判定部３３３が、起床要求が検知された特権ゲストＯＳタスクに切替え可能であると判定し、ディスパッチャ３２１が特権ゲストＯＳタスクにタスク切替える際に、ホストＯＳ環境３２３を取得する。ホストＯＳ環境保持部３３５は、ホストＯＳ環境退避部３３４が取得したホストＯＳ環境３２３を保持する。
【００９１】
ホストＯＳ環境復帰部３３６は、特権ゲストＯＳタスクが終了後の、特権ゲストＯＳタスクにタスクを切替える前に実行されていたホストＯＳタスクに復帰する際に、ホストＯＳ環境保持部３３５が保持するホストＯＳ環境をホストＯＳ３２０に復帰させる。
【００９２】
変更要求取得部３３７は、特権ゲストＯＳタスクの実行中に、特権ゲストＯＳタスクにタスクを切替える前に実行されていたホストＯＳタスクの状態（優先度及び実行状態）を変更する要求を取得する。ホストＯＳ環境変更部３３８は、変更要求取得部３３７が取得した変更要求に基づき、ホストＯＳ環境保持部３３５が保持するホストＯＳ環境（ホストＯＳタスクの状態）を変更する。
【００９３】
割込み禁止部３４０は、タスク切替え判定部３３３により、起床要求が検知された特権ゲストＯＳタスクの実行中に、割込みハンドラの実行が不可と判定された場合に、割込みを禁止する。
【００９４】
優先度制御部３４１は、ディスパッチャ３２１が特権ゲストＯＳタスクにタスク切替えする際に、タスクを切替える前に実行されていたホストＯＳタスクの優先度を、複数のホストＯＳタスクのうちの最も高い優先度に変更する。ここで、優先度とは、タスクの実行順序を決定する値である。
【００９５】
次に、コンピュータシステム３００の動作を説明する。
図６は、コンピュータシステム３００のタスク切替え処理の流れを示すフローチャートである。
【００９６】
図６に示すように、まず、タスク起床要求検知部３２２は、特権ゲストＯＳタスクの起床要求を検知する（Ｓ３０１）。以下、特権ゲストＯＳタスク３７１の起床要求が検知された場合を例に説明する。また、特権ゲストＯＳタスク３７１の起床要求が検知された際に、ホストＯＳタスク３６１が実行されているとする。タスク起床要求検知部３２２が特権ゲストＯＳタスク３７１の起床要求を検知した場合（Ｓ３０１でＹｅｓ）、タスク起床要求検知部３２２は、検知したタスクが特権ゲストＯＳタスクであるか否かを判定する（Ｓ３０２）。検知したタスクは、特権ゲストＯＳタスクなので（Ｓ３０２でＹｅｓ）、次に、タスク切替え判定部３３３は、タスク切替え可能であるか否かを判定する（Ｓ３０３）。例えば、使用中の資源に応じて、ＯＳ上で切替え可能状態であるか否かが規定されており、切替え可能状態の場合に、タスク切替え判定部３３３は、タスク切替え可能と判定する。具体的には、タスクの全てに安定して切替えを行うために複数の資源が指定されており、指定されている全ての資源が使用中でない場合には切替え可能と判定される。また、割込み処理を実行中には、切替え不可と判定される。
【００９７】
タスク切替え判定部３３３がタスク切替え不可と判定した場合には（Ｓ３０３でＮｏ）、次に、第１ホストＯＳ資源取得部３３１は、ホストＯＳ３２０が現在、使用中のＯＳ資源の情報を取得する（Ｓ３０４）。次に、第２ホストＯＳ資源取得部３３２は、特権ゲストＯＳタスク３７１に対応するゲストＯＳタスク資源表３５１を参照し、特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の情報を取得する（Ｓ３０５）。
【００９８】
次に、タスク切替え判定部３３３は、第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、第２ホストＯＳ資源取得部３３２が取得した特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の情報とに基づき、起床要求が検知された特権ゲストＯＳタスク３７１へのタスク切替えが可能であるか否かを判定する（Ｓ３０６）。タスク切替え判定部３３３は、起床要求が検知された特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の全てが使用中でない場合に、起床要求が検知された特権ゲストＯＳタスク３７１へのタスク切替えが可能であると判定する（Ｓ３０６でＹｅｓ）。また、タスク切替え判定部３３３は、起床要求が検知された特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源のうちいずれか１以上が使用中の場合、タスク切替えが不可であると判定する（Ｓ３０６でＮｏ）。
【００９９】
ステップＳ３０６においてタスク切替えが不可であると判定された場合（Ｓ３０６でＮｏ）、第１ホストＯＳ資源取得部３３１は、使用されているＯＳ資源が変更されたか否かを監視する（Ｓ３０７）。使用されているＯＳ資源が変更された場合（Ｓ３０７でＹｅｓ）、第１ホストＯＳ資源取得部３３１は、変更後の使用されているＯＳ資源の情報を取得する（Ｓ３０８）。タスク切替え判定部３３３は、ステップＳ３０８で第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、ステップＳ３０５で第２ホストＯＳ資源取得部３３２が取得した特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の情報とに基づき、特権ゲストＯＳタスク３７１へのタスク切替えが可能であるか否かを判定する（Ｓ３０６）。タスク切替えが不可であると判定された場合（Ｓ３０６でＮｏ）、再度、ステップＳ３０７、Ｓ３０８及びＳ３０６が行われ、ステップＳ３０６でタスク切替えが可能であると判定されるまで、ステップＳ３０７、Ｓ３０８及びＳ３０６の処理が繰り返される。すなわち、第１ホストＯＳ資源取得部３３１は、ステップＳ３０６において特権ゲストＯＳタスクに切替え不可であると判定された場合（Ｓ３０６でＮｏ）に、使用中のＯＳ資源が解放されたことを検出し、使用中のＯＳ資源が解放されたと検出された場合に、使用中のＯＳ資源の情報を再度取得する。タスク切替え判定部３３３は、ステップＳ３０８において取得した使用中のＯＳ資源の情報と、ステップＳ３０５において第２ホストＯＳ資源取得部３３２が取得した特権ゲストＯＳタスク３７１の実行に必要なＯＳ資源の情報とに基づき、特権ゲストＯＳタスク３７１へのタスク切替えが可能であるか否かを再度判定する。
【０１００】
このように、本発明の実施の形態３に係るコンピュータシステムは、特権ゲストＯＳタスクの実行に必要なＯＳ資源が使用中であり、タスク切替えが不可の場合には、ＯＳ資源の使用状況を監視し、特権ゲストＯＳタスクの実行に必要なＯＳ資源が解放された時点で、タスク切替えを行う。よって、特権ゲストＯＳタスクの実行に必要なＯＳ資源が使用中であり、タスク切替えが不可の場合のタスク応答性を向上させることができる。
【０１０１】
ステップＳ３０６においてタスク切替えが可能であると判定された場合（Ｓ３０６でＹｅｓ）、第３ホストＯＳ資源取得部３３９は、割込み資源表３２４を参照し、ホストＯＳの割込みハンドラが使用するＯＳ資源の情報を取得する（Ｓ３０９）。次に、タスク切替え判定部３３３は、第３ホストＯＳ資源取得部３３９が取得した割込みハンドラが使用するＯＳ資源の情報と、第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報とから、特権ゲストＯＳタスク実行中に、割込みハンドラの実行が可能であるか否かを判定する（Ｓ３１０）。具体的には、タスク切替え判定部３３３は、割込みハンドラの実行に必要なＯＳ資源の全てが使用中でない場合に、割込みハンドラの実行が可能であると判定する（Ｓ３１０でＹｅｓ）。また、タスク切替え判定部３３３は、割込みハンドラの実行に必要なＯＳ資源のうちいずれか１以上が使用中の場合、割込みハンドラの実行が不可であると判定する（Ｓ３１０でＮｏ）。割込みハンドラの実行が不可の場合（Ｓ３１０でＮｏ）、割込み禁止部３４０は、特権ゲストＯＳタスク３７１の実行中の割込みを禁止する（Ｓ３１１）。例えば、割込み禁止部３４０は、ホストＯＳの割込みマスクのレベルを引き上げることで、特権ゲストＯＳタスク３７１の実行中の割込みを禁止する。
【０１０２】
このように、本発明の実施の形態３に係るコンピュータシステム３００は、割込みハンドラに使用されるＯＳ資源が使用中の場合には、特権ゲストＯＳタスク３７１の実行中の割込みを禁止する。これにより、特権ゲストＯＳタスク３７１の実行中に割込みが発生した場合の、割込みによる誤動作の発生等を防止することができる。
【０１０３】
ステップＳ３１０において割込みハンドラの実行が可能と判定された場合（Ｓ３１０でＹｅｓ）、及び割込み禁止処理（Ｓ３１１）の後、ホストＯＳ環境退避部３３４は、現在のホストＯＳ３２０のホストＯＳ環境３２３を取得し、ホストＯＳ環境保持部３３５に保持する（Ｓ３１２）。
【０１０４】
次に、ディスパッチャ３２１は、ステップＳ３０１で起床要求が検知された特権ゲストＯＳタスク３７１にタスクを切替える（Ｓ３１３）。次に、優先度制御部３４１は、実行されていたタスクであるホストＯＳタスク３６１の優先度を変更する（Ｓ３１４）。
【０１０５】
図７は、ホストＯＳタスク３６１、３６２、３６３、特権ゲストＯＳタスク３７１及び非特権ゲストＯＳタスク３７２の優先度の関係を模式的に示す図である。
図７に示すように、複数の特権ゲストＯＳタスク３７１の優先度が最も高く、次に、複数の非特権ゲストＯＳタスク３７２の優先度が高く、複数のホストＯＳタスク３６１、３６２及び３６３の優先度が最も低い。また、複数の特権ゲストＯＳタスク３７１の優先度と、複数の非特権ゲストＯＳタスク３７２の優先度との間に、予約優先度３８０が設けられる。
【０１０６】
図８は、優先度制御部３４１によるタスク切替え前に実行されていたホストＯＳタスクの優先度の変更例を示す図である。図８に示すように、優先度制御部３４１は、ステップＳ３１４において、ホストＯＳタスク３６１の優先度を、予約優先度３８０に引き上げる。
【０１０７】
このように、本発明の実施の形態３に係るコンピュータシステム３００は、特権ゲストＯＳタスク３７１へのタスク切替えの際に、タスク切替え前に実行されていたホストＯＳタスク３６１（又は、非特権ゲストＯＳタスク）の優先度を、特権ゲストＯＳタスク以外のタスク（ホストＯＳタスク及び非特権ゲストＯＳタスク）の中で最も高い優先度に変更する。これにより、特権ゲストＯＳタスク３７１の終了後には、特権ゲストＯＳタスク以外のタスク（ホストＯＳタスク及び非特権ゲストＯＳタスク）の中で最後に実行されていたタスクに自動的にタスクが切替えられる。すなわち、優先度を変更することで、既存のホストＯＳの機能を改良（例えば、スケジューラの改良）することなく、自動的にタスク切替え前に実行されていたホストＯＳタスク３６１を実行することができる。また、ホストＯＳ環境退避部３３４が、ホストＯＳ３２０のホストＯＳ環境３２３を退避後、ホスト優先度制御部３４１は、タスク切替え前に実行されていたホストＯＳタスク３６１の実行状態が待機中（Ｗａｉｔ）の場合には、実行状態を実行中（Ｒｕｎｎｉｎｇ）に変更する。これにより、特権ゲストＯＳタスク３７１へのタスク切替え時のホストＯＳタスク３６１の実行状態が待機中の場合の、特権ゲストＯＳタスク３７１のタスク実行完了後にホストＯＳタスク３６１の実行が再開されないという誤動作の発生を防止することができる。
【０１０８】
優先度制御部３４１による優先度変更（Ｓ３１４）の後、特権ゲストＯＳタスク３７１が実行される（Ｓ３１５）。特権ゲストＯＳタスク３７１の終了後、ディスパッチャ３２１は、タスク切替え前に実行されていたホストＯＳタスク３６１にタスクを切替える。次に、ホストＯＳ環境復帰部３３６は、ホストＯＳ環境保持部３３５が保持しているホストＯＳ環境を復帰させる（Ｓ３１６）。このように、ホストＯＳタスク３６１の実行中に特権ゲストＯＳタスク３７１に切替え、ゲストＯＳタスク終了後にホストＯＳタスクを復帰させる場合に、特権ゲストＯＳタスク３７１に切替える前のホストＯＳ環境を復帰させる。よって、特権ゲストＯＳタスク３７１の実行の前後におけるホストＯＳ環境の整合性を確保することができる。
【０１０９】
また、図８に示すように、優先度制御部３４１は、ホストＯＳタスク３６１にタスク切替えが行われる際に、ホストＯＳ環境保持部３３５に保持されているホストＯＳタスク３６１の元の優先度を参照し、ホストＯＳタスク３６１の優先度を予約優先度３８０から元の優先度に変更する。
【０１１０】
一方、ステップＳ３０３において、タスク切替えが可能であると判定された場合（Ｓ３０３でＹｅｓ）、上述したＳ３０４〜Ｓ３１６の処理は行われず、特権ゲストＯＳタスク３７１にタスク切替えが行われる（Ｓ３１８）。このように、ホストＯＳ３２０がタスク切替え可能な状態にある場合には、上述したＳ３０４〜Ｓ３１６の処理を行わないことで、ホストＯＳ３２０がタスク切替え可能な状態の場合の、処理量を低減することができる。
【０１１１】
次に、ホストＯＳタスク３６３の起床要求が検知された場合を例に説明する。
タスク起床要求検知部３２２がホストＯＳタスク３６３の起床要求を検知した場合（Ｓ３０１でＹｅｓ）、検知したタスクは、通常タスクなので（Ｓ３０２でＮｏ）、次に、タスク切替え判定部３３３は、ホストＯＳタスク３６３に切替え可能であるか否かを判定する（Ｓ３１７）。例えば、使用中の資源に応じて、ＯＳ上で切替え可能状態であるか否かが規定されており、切替え可能状態の場合に、タスク切替え判定部３３３は、タスク切替え可能と判定する。具体的には、タスクの全てに安定して切替えを行うために複数の資源が指定されており、指定されている全ての資源が使用中でない場合には切替え可能と判定される。また、割込み処理を実行中には、切替え不可と判定される。
【０１１２】
タスク切替え判定部３３３がタスク切替え可能と判定した場合には（Ｓ３１７でＹｅｓ）、ホストＯＳタスク３６３にタスクが切替えられる（Ｓ３１８）。また、タスク切替え判定部３３３がタスク切替え不可と判定した場合には（Ｓ３１７でＮｏ）、タスク切替は行われない。なお、非特権ゲストＯＳタスク３７２の起床要求が検知された場合の処理は、ホストＯＳタスク３６３の起床要求が検知された場合の処理と同様である。
【０１１３】
次に、図６のステップＳ３１５中に、特権ゲストＯＳタスク３７１にタスク切替え前に実行されていたホストＯＳタスク３６１の状態変更を行う動作を説明する。
【０１１４】
図９は、特権ゲストＯＳタスク３７１の実行中における、コンピュータシステム３００のホストＯＳタスク３６１の状態変更の処理の流れを示すフローチャートである。図９に示すように、変更要求取得部３３７は、ステップＳ３１３において切替えられた特権ゲストＯＳタスク３７１の実行中に、タスク切替え前に実行されていたホストＯＳタスク３６１の状態変更の要求を監視する（Ｓ４０１）。変更要求取得部３３７が変更要求を取得した場合（Ｓ４０１でＹｅｓ）、ホストＯＳ環境変更部３３８は、変更要求取得部３３７が取得した変更要求に基づき、ホストＯＳ環境保持部３３５が保持しているホストＯＳ環境を変更する（Ｓ４０２）。変更したホストＯＳ環境は、上述したステップＳ３１６において、ホストＯＳ環境復帰部３３６により復帰される。ここで、変更要求取得部３３７が取得する変更要求は、特権ゲストＯＳタスク３７１から発生するホストＯＳタスク３６１の実行状態変更要求及び優先度変更要求、又は、特権ゲストＯＳタスク３７１の動作中の割込みにより発生するホストＯＳタスク３６１の実行状態変更要求及び優先度変更要求等である。
【０１１５】
このように、本発明の実施の形態３に係るコンピュータシステム３００は、特権ゲストＯＳタスク３７１の実行中に、タスク切替え前に実行されていたホストＯＳタスク３６１に対する状態（優先度及び実行状態等）の変更要求が発生した場合に、ホストＯＳ環境保持部３３５が保持しているホストＯＳ環境を変更する。これにより、復帰後のホストＯＳタスク３６１の状態を変更することができ、コンピュータシステム３００の整合性を維持することができる。
【０１１６】
以上より、本発明の実施の形態３に係るコンピュータシステム３００は、現在使用中のＯＳ資源と、起床要求が検知された特権ゲストＯＳタスクの実行に必要なＯＳ資源の情報とに基づき、特権ゲストＯＳタスクの切替えが可能であるか否かを判定する。よって、実行される特権ゲストＯＳタスクに最小限必要なＯＳ資源が使用中でない場合に、タスク切替えを行うことができる。これにより、コンピュータシステムが安定して切替えを行える全ての資源が使用中でない場合にのみタスク切替えを行う従来のコンピュータシステムに比べて、より多くの状況でタスク切替えを行うことができる。よって、本発明の実施の形態３に係るコンピュータシステム３００は、タスク応答性能が高いコンピュータシステムを実現することができる。
【０１１７】
なお、上記説明において、ステップＳ３１０で割込みハンドラの実行が不可の場合（Ｓ３１０でＮｏ）、割込み禁止部３４０は、特権ゲストＯＳタスク３７１の実行中の割込みを禁止する（Ｓ３１１）としたが、割込みハンドラの実行が不可の場合（Ｓ３１０でＮｏ）に、割込みハンドラに必要なＯＳ資源が解放された時点で、タスク切替え判定部３３３は、タスク切替え可能と判定してもよい。以下、本発明の実施の形態３に係るコンピュータシステム３００の変形例であり、割込みハンドラに必要なＯＳ資源が解放された時点でタスク切替え可能と判定するコンピュータシステムの動作について説明する。
【０１１８】
図１０は、本発明の実施の形態３に係るコンピュータシステム３００のタスク切替え処理の変形例の流れを示すフローチャートである。図１０に示すように、割込みハンドラの実行が不可と判定された場合（Ｓ３１０でＮｏ）、第１ホストＯＳ資源取得部３３１は、使用されているＯＳ資源が変更されたか否かを監視する（Ｓ３１９）。使用されているＯＳ資源が変更された場合（Ｓ３１９でＹｅｓ）、第１ホストＯＳ資源取得部３３１は、変更後の使用されているＯＳ資源の情報を取得する（Ｓ３２０）。タスク切替え判定部３３３は、ステップＳ３２０で第１ホストＯＳ資源取得部３３１が取得した使用中のＯＳ資源の情報と、ステップＳ３０９で第３ホストＯＳ資源取得部３３９が取得した割込みハンドラの実行に必要なＯＳ資源の情報とに基づき、特権ゲストＯＳタスク実行中に、割込みハンドラの実行が可能であるか否かを判定する（Ｓ３１０）。割込みハンドラの実行が不可である判定された場合（Ｓ３１０でＮｏ）、再度、ステップＳ３１９、Ｓ３２０及びＳ３１０が行われ、ステップＳ３１０で割込みハンドラの実行が可能であると判定されるまで、ステップＳ３１９、Ｓ３２０及びＳ３１０の処理が繰り返される。すなわち、第１ホストＯＳ資源取得部３３１は、ステップＳ３１０において割込みハンドラの実行が不可であると判定された場合（Ｓ３１０でＮｏ）に、使用中のＯＳ資源が解放されたことを検出し、使用中のＯＳ資源が解放されたと検出された場合に、使用中のＯＳ資源の情報を再度取得する。タスク切替え判定部３３３は、ステップＳ３２０において取得した使用中のＯＳ資源の情報と、ステップＳ３０９において第３ホストＯＳ資源取得部３３９が取得した割込みハンドラの実行に必要なＯＳ資源の情報とに基づき、特権ゲストＯＳタスク３７１の実行中の割込みハンドラの実行が可能であるか否かを再度判定する。ディスパッチャ３２１は、ステップＳ３０３において切替え可能であると判定され、かつステップＳ３１０において割込みハンドラの実行が可能であると判定された場合に、特権ゲストＯＳタスク３７１にタスクを切替える。
【０１１９】
ここで、図６に示すように、特権ゲストＯＳタスクの実行中に割込みハンドラの実行が不可の場合に、割込みを禁止することで、特権ゲストＯＳタスクに対するタスク応答性を向上させることができる。一方、図１０に示すように、特権ゲストＯＳタスクの実行中に割込みハンドラの実行が不可の場合に、割込みハンドラの実行に必要なＯＳ資源が解放された時点で、特権ゲストＯＳタスクへの切替えを行うことで、割込みに対する応答性を向上させることができる。
【０１２０】
また、上記説明において、ステップＳ３１４で、実行されていたタスクであるホストＯＳタスク３６１の優先度を変更することで、特権ゲストＯＳタスクの終了後に、自動的にホストＯＳタスク３６１を実行するとしたが、以下の処理を行ってもよい。
【０１２１】
図１１は、本発明の実施の形態３に係るコンピュータシステムの変形例の構成を示す図である。図１１に示すコンピュータシステム４００は、図５に示すコンピュータシステム３００に対して、ホストＯＳ拡張部３３０が優先度制御部３４１の代わりに、タスク検知部４０１を備える点が異なる。なお、図５と同様の要素には同一の符号を付しており、詳細な説明は省略する。タスク検知部４０１は、特権ゲストＯＳタスクの終了時に、実行可能な特権ゲストＯＳタスクが存在するか否かを検知する。すなわち、タスク検知部４０１は、複数の特権ゲストＯＳタスク３７１のうち１以上が実行可能状態であるか否かを判定する。
【０１２２】
図１２は、コンピュータシステム４００のタスク切替え処理の流れを示すフローチャートである。図１２に示すように、特権ゲストＯＳタスク３７１へのタスク切替え（Ｓ３１３）の後、優先度変更（Ｓ３１４）を行わず特権ゲストＯＳタスクが実行される（Ｓ３１５）。特権ゲストＯＳタスク３７１の終了後（ステップＳ３１５の後）、タスク検知部４０１は、実行可能な特権ゲストＯＳタスクが存在するか否かを検知する（Ｓ４１０）。実行可能な特権ゲストＯＳタスクが検知された場合（Ｓ４１０でＹｅｓ）、ディスパッチャ３２１は、検知された特権ゲストＯＳタスクにタスクを切替え、検知された特権ゲストＯＳタスクが実行される（Ｓ４１１）。検知された特権ゲストＯＳタスクの終了後、タスク検知部４０１は、実行可能な特権ゲストＯＳタスクが存在するか否かを検知する（Ｓ４１０）。実行可能な特権ゲストＯＳタスクが検知されなかった場合（Ｓ４１０でＮｏ）、ホストＯＳ環境復帰部３３６は、ホストＯＳ環境保持部３３５に保持されているホストＯＳ環境を復帰させる（Ｓ３１６）。ホストＯＳ環境の復帰後、ディスパッチャ３２１は、強制的にタスク切替え前に実行されていたホストＯＳタスク３６１にタスクを切替える。以上の処理により、特権ゲストＯＳタスクの終了後に、タスク切替え前に実行されていたホストＯＳタスク３６１を実行することができる。なお、図１２に示す処理を行うためには、タスク検知部４０１を設ける必要がある。タスク検知部４０１による処理は、例えば、スケジューラを改良することで行うことができる。よって、上述した図６に示す優先度変更処理を行う場合には、スケジューラ等の改良を行わずに実施することができ、実施が容易であるという利点がある。一方、図１２に示す処理では、スケジューラ等の改良は必要であるが、処理を単純化でき制御が容易になるという利点がある。
【０１２３】
また、上記説明において、使用中の資源の取得（Ｓ３０４）の後に、タスクに必要な資源の取得（Ｓ３０５）が行われているが、タスクに必要な資源の取得（Ｓ３０５）の後に、使用中の資源の取得（Ｓ３０４）を行ってもよい。また、使用中の資源の取得（Ｓ３０４）に含まれる全て又は一部の処理と、タスクに必要な資源の取得（Ｓ３０５）に含まれる全ての処理又は一部の処理とを同時に行ってもよい。
【０１２４】
また、ステップＳ３０３及びＳ３１７の切替え判定は、特権ゲストＯＳタスクであるか否かの判定（Ｓ３０２）の前に行ってもよい。
【０１２５】
また、上記説明において、ステップＳ３０５〜Ｓ３０８の処理（特権ゲストＯＳタスクに必要なＯＳ資源が使用中であるか否かの判定処理）の後に、ステップＳ３０９〜Ｓ３１１の処理（割込みハンドラの実行に必要なＯＳ資源が使用中であるか否かの判定処理）を行っているが、ステップＳ３０９〜Ｓ３１１の処理の後に、ステップＳ３０５〜Ｓ３０８の処理を行ってもよい。また、ステップＳ３０５〜Ｓ３０８の処理に含まれる全て又は一部の処理と、ステップＳ３０９〜３１１の処理に含まれる全て又は一部の処理とを同時に行ってもよい。
【産業上の利用可能性】
【０１２６】
本発明は、複数のタスクが動作するコンピュータシステム、及びコンピュータシステムにおけるタスク切替え制御方法に適用でき、特に汎用ＯＳ上で１つ以上のタスクとしてリアルタイムＯＳが動作するハイブリッドＯＳ等、及びハイブリッドＯＳにおけるタスク切替え制御方法に適用できる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施の形態１に係るコンピュータシステムの構成を示す図である。
【図２】本発明の実施の形態１に係るコンピュータシステムのタスク切替え処理の流れを示すフローチャートである。
【図３】本発明の実施の形態２に係るコンピュータシステムの構成を示す図である。
【図４】本発明の実施の形態２に係るコンピュータシステムのタスク切替え処理の流れを示すフローチャートである。
【図５】本発明の実施の形態３に係るコンピュータシステムの構成を示す図である。
【図６】本発明の実施の形態３に係るコンピュータシステムのタスク切替え処理の流れを示すフローチャートである。
【図７】本発明の実施の形態３に係るコンピュータシステムのタスクの優先度の構成を示す図である。
【図８】本発明の実施の形態３に係るコンピュータシステムのタスクの優先度変更の一例を示す図である。
【図９】本発明の実施の形態３に係るコンピュータシステムの特権ゲストＯＳタスクの実行中における、ホストＯＳタスクの状態変更の処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態３に係るコンピュータシステムのタスク切替え処理の変形例の流れを示すフローチャートである。
【図１１】本発明の実施の形態３に係るコンピュータシステムの変形例の構成を示す図である。
【図１２】本発明の実施の形態３に係るコンピュータシステムのタスク切替え処理の変形例の流れを示すフローチャートである。
【図１３】従来のコンピュータシステムのタスク切替え処理の流れを示すフローチャートである。
【符号の説明】
【０１２８】
１００、２００、３００、４００  コンピュータシステム
１１０、２１０、３１０  ＣＰＵ
１２０  タスク切替え部
１２１  第１コンピュータ資源取得部
１２２  第２コンピュータ資源取得部
１２３、２３３、３３３  タスク切替え判定部
１２４、２２１、３２１  ディスパッチャ
１２５、２２２、３２２  タスク起床要求検知部
１４０、１４１、１４２  タスク
２２０  ＯＳ
２３０  ＯＳ拡張部
２３１  第１ＯＳ資源取得部
２３２  第２ＯＳ資源取得部
２３４  制限タスク資源表
２４０  通常タスク群
２４１、２４２  通常タスク
２５０  制限タスク群
２５１、２５２  制限タスク
３２０  ホストＯＳ
３２３  ホストＯＳ環境
３２４  割込み資源表
３３０  ホストＯＳ拡張部
３３１  第１ホストＯＳ資源取得部
３３２  第２ホストＯＳ資源取得部
３３４  ホストＯＳ環境退避部
３３５  ホストＯＳ環境保持部
３３６  ホストＯＳ環境復帰部
３３７  変更要求取得部
３３８  ホストＯＳ環境変更部
３３９  第３ホストＯＳ資源取得部
３４０  割込み禁止部
３４１  優先度制御部
３５０  ゲストＯＳ
３５１  ゲストＯＳタスク資源表
３６０  ホストＯＳタスク群
３６１、３６２、３６３  ホストＯＳタスク
３７０  ゲストＯＳタスク群
３７１  特権ゲストＯＳタスク
３７２  非特権ゲストＯＳタスク
３８０  予約優先度
４０１  タスク検知部
【図１】
2008108075.tif 000003
【図２】
2008108075.tif 000004
【図３】
2008108075.tif 000005
【図４】
2008108075.tif 000006
【図５】
2008108075.tif 000007
【図６】
2008108075.tif 000008
【図７】
2008108075.tif 000009
【図８】
2008108075.tif 000010
【図９】
2008108075.tif 000011
【図１０】
2008108075.tif 000012
【図１１】
2008108075.tif 000013
【図１２】
2008108075.tif 000014
【図１３】
2008108075.tif 000015