(57)【要約】【課題】マルチオペレーティングシステムの信頼性、処理能力を向上させること。【解決手段】ＯＳ２０１  からＯＳ２０２  へ切り替えるための切替命令Ａを、ＯＳ２０１  に対応する仮想メモリ空間４０１  の論理アドレスのＮ番地に仮想記憶させ、ＯＳ２０２  に対応する仮想メモリ空間４０２  の論理アドレスのＮ＋１番地以降に各種命令を仮想記憶させておき、ＯＳ２０１  は、所定要因（割り込みの発生）をトリガーとして、切り替え先のＯＳ２０２  にタスクが有る場合に、切替命令Ａにより、ＯＳ２０１  からＯＳ２０２  に切り替え、一方、切り替え先のＯＳ２０２  にタスクが無い場合に切り替えを禁止し、ＯＳ２０２  は、切り替えられた場合、仮想メモリ空間４０２  の論理アドレスのＮ＋１番地以降の各種命令を実行する。【選択図】      図５
2004252761.tif 000002
【特許請求の範囲】
【請求項１】
一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを制御するマルチオペレーティングシステム制御方法であって、
前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替えるための第１の切替命令を、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮに仮想記憶させる第１の仮想記憶工程と、
前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させる第２の仮想記憶工程を含み、
前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記第２のオペレーティングシステムにおけるタスクが有る場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とするマルチオペレーティングシステム制御方法。
【請求項２】
前記第２のオペレーティングシステムにおけるタスクの有無を前記第１のオペレーティングシステムへ通知するタスク有無通知工程を含み、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記タスク有無通知工程で前記タスクが有りと通知された場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無しと通知された場合、該切り替えを禁止することを特徴とする請求項１に記載のマルチオペレーティングシステム制御方法。
【請求項３】
前記第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、前記タスクの有無にかかわらず、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えることを特徴とする請求項１または２に記載のマルチオペレーティングシステム制御方法。
【請求項４】
一つの計算機で稼動する二つのオペレーティングシステムを制御するマルチオペレーティングシステム制御方法であって、
一方のオペレーティングシステムにおけるタスクと、他方のオペレーティングシステムにおけるタスクとに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定する決定工程とを含み、
切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、前記決定工程で決定されたオペレーティングシステムへ切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とするマルチオペレーティングシステム制御方法。
【請求項５】
請求項１〜４のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させるプログラム。
【請求項６】
一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを制御するマルチオペレーティングシステム制御装置であって、
前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替えるための第１の切替命令を、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮに仮想記憶させる第１の仮想記憶手段と、
前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させる第２の仮想記憶手段とを備え、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記第２のオペレーティングシステムにおけるタスクが有る場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とするマルチオペレーティングシステム制御装置。
【請求項７】
前記第２のオペレーティングシステムにおけるタスクの有無を前記第１のオペレーティングシステムへ通知するタスク有無通知手段を備え、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記タスク有無通知手段より前記タスクが有りと通知された場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無しと通知された場合、該切り替えを禁止することを特徴とする請求項６に記載のマルチオペレーティングシステム制御装置。
【請求項８】
前記第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、前記タスクの有無にかかわらず、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えることを特徴とする請求項６または７に記載のマルチオペレーティングシステム制御装置。
【請求項９】
一つの計算機で稼動する二つのオペレーティングシステムを制御するマルチオペレーティングシステム制御装置であって、
一方のオペレーティングシステムにおけるタスクと、他方のオペレーティングシステムにおけるタスクとに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定する決定手段とを備え、
切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、前記決定手段で決定されたオペレーティングシステムへ切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とするマルチオペレーティングシステム制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一台の計算機上で複数のオペレーティングシステムを稼動させるためのマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置に関するものであり、特に、信頼性、処理能力を向上させることができるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置に関するものである。
【０００２】
【従来の技術】
通常の計算機では、１つのオペレーティングシステムが動作し、それが計算機のプロセッサ、メモリ、二次記憶装置等の計算機資源を管理し、計算機が効率良く動作できるように資源スケジュールを実施している。オペレーティングシステムには、様々な種類がある。バッチ処理に優れるものや、ＴＳＳ（Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ）に優れるもの、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）に優れているものなど様々である。
【０００３】
一方で、これら複数あるオペレーティングシステムを１台の計算機で同時に実行したいというニーズがある。例えば、大型計算機においては、実際の業務に伴うオンライン処理を実行するオペレーティングシステムと、開発用のオペレーティングシステムとを一台の計算機で動作させたいという要求がある。あるいは、ＧＵＩの整っているオペレーティングシステムと、実時間性に優れているオペレーティングシステムとを同時に稼働させたい等という要求もある。
【０００４】
しかしながら、個々のオペレーティングシステムは、単独で計算機資源の管理を実施することを前提として設計されている。従って、複数のオペレーティングシステムの共存は、何らかの機構なしには不可能である。
【０００５】
一台の計算機上で複数のオペレーティングシステムを動作させる機構としては、大型計算機で実現されている仮想計算機方式がある。図２３は、上記仮想計算機方式による従来のマルチオペレーティングシステムの構成例１を示すブロック図である。
【０００６】
同図に示したマルチオペレーティングシステムは、ハードウェア１、基盤ＯＳ２、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）モニタ３、仮想ＯＳ（オペレーティングシステム）４１  、仮想ＯＳ４２  および仮想ＯＳ４３  から構成されている。
【０００７】
ハードウェア１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、物理メモリ、入出力機器等である。基盤ＯＳ２およびＶＭモニタ３は、ハードウェア１の全てを制御している。ＶＭモニタ３は、仮想ＯＳ４１  〜４３  のそれぞれのハードウェア１に対するインタフェースをエミュレートする。仮想ＯＳ４１  〜４３  は、基盤ＯＳ２の上で走行する。すなわち、基盤ＯＳ２と仮想ＯＳ４１  〜４３  とは、主従関係にある。
【０００８】
また、一台の計算機で複数のオペレーティングシステムのインタフェースを提供する技術として、マイクロカーネル方式がある。図２４は、マイクロカーネル方式による従来のマルチオペレーティングシステムの構成例２を示すブロック図である。
【０００９】
同図に示したマルチオペレーティングシステムは、ハードウェア５、マイクロカーネル（制御プログラム）６、ＯＳ７１  、ＯＳ７２  およびＯＳ７３  から構成されている。
【００１０】
マイクロカーネル方式では、マイクロカーネル６の上に、ユーザに見せるオペレーティングシステム機能を提供するＯＳ７１  〜７３  が構築されている。ユーザはＯＳ７１  〜７３  を経由してハードウェア５（計算機資源）を利用する。マイクロカーネル６は、ＯＳ７１  〜７３  を制御する。
【００１１】
【特許文献１】
特開２００１−２１６７２号公報
【特許文献２】
特開平１１−１４９３８５号公報
【特許文献３】
特開２０００−２４２５１２号公報
【特許文献４】
特開２００１−３３１３３３号公報
【００１２】
【発明が解決しようとする課題】
ところで、前述したように、図２３に示した従来のマルチオペレーティングシステムにおいては、ハードウェア１を一つの基盤ＯＳ２が制御しているため、基盤ＯＳ２の停止により、システムダウンが生じ、信頼性が低いという問題があった。
【００１３】
また、同マルチオペレーティングシステムにおいては、ＶＭモニタ３により仮想ＯＳ４１  〜４３  のインタフェースをエミュレートしているため、エミュレートに処理時間がかかり、動作不具合や制限事項が多いという処理能力の問題があった。
【００１４】
ここで、基盤ＯＳ２を改造することにより、上記動作不具合や制限事項が少なくなるが、汎用性が低下したり、改造の手間がかかるというデメリットが生じる。
【００１５】
また、図２４に示した従来のマルチオペレーティングシステムにおいては、一つのマイクロカーネル６がＯＳ７１  〜７３  を制御しているため、マイクロカーネル６の停止により、システムダウンが生じ、信頼性が低いという問題があった。
【００１６】
本発明は、上記に鑑みてなされたもので、マルチオペレーティングシステムの信頼性、処理能力を向上させることができるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置を提供することを目的とする。
【００１７】
【課題を解決するための手段】
上記目的を達成するために、本発明は、一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを制御するマルチオペレーティングシステム制御方法であって、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替えるための第１の切替命令を、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮに仮想記憶させる第１の仮想記憶工程と、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させる第２の仮想記憶工程とを含み、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記第２のオペレーティングシステムにおけるタスクが有る場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とする。
【００１８】
この発明によれば、第１の仮想メモリ空間の論理アドレスＮに第１の切替命令を仮想記憶させ、第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させておき、所定要因をトリガーとして、第２のオペレーティングシステムにおけるタスクが有る場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムの信頼性や、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００１９】
また、この発明によれば、従来の共通部分が不要であるため、第１のオペレーティングシステムと第２のオペレーティングシステムとを独立的に動作させることができセキュリティを向上させることができる。
【００２０】
また、本発明は、請求項１に記載のマルチオペレーティングシステム制御方法において、前記第２のオペレーティングシステムにおけるタスクの有無を前記第１のオペレーティングシステムへ通知するタスク有無通知工程を含み、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記タスク有無通知工程で前記タスクが有りと通知された場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無しと通知された場合、該切り替えを禁止することを特徴とする。
【００２１】
この発明によれば、第２のオペレーティングシステムにおけるタスクの有無を第１のオペレーティングシステムへ通知し、所定要因をトリガーとして、タスクが有りと通知された場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無しと通知された場合、該切り替えを禁止することとしたので、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００２２】
また、本発明は、請求項１または２に記載のマルチオペレーティングシステム制御方法において、前記第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、前記タスクの有無にかかわらず、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えることを特徴とする。
【００２３】
この発明によれば、第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、タスクの有無にかかわらず、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えることとしたので、特殊な要因に対応づけて強制的な切り替えを行うことができ、処理能力を向上させることができる。
【００２４】
また、本発明は、一つの計算機で稼動する二つのオペレーティングシステムを制御するマルチオペレーティングシステム制御方法であって、一方のオペレーティングシステムにおけるタスクと、他方のオペレーティングシステムにおけるタスクとに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定する決定工程とを含み、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、前記決定工程で決定されたオペレーティングシステムへ切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とする。
【００２５】
この発明によれば、各タスクに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定し、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、決定工程で決定されたオペレーティングシステムへ切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、優先順位を考慮したシステムにおいてもタスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００２６】
また、本発明は、請求項１〜４のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させるプログラムであり、そのプログラムがコンピュータ読み取り可能となり、これによって、請求項１〜４のいずれか一つに記載された発明の動作をコンピュータによって実行することができる。
【００２７】
また、本発明は、一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを制御するマルチオペレーティングシステム制御装置であって、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替えるための第１の切替命令を、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮに仮想記憶させる第１の仮想記憶手段と、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させる第２の仮想記憶手段とを備え、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記第２のオペレーティングシステムにおけるタスクが有る場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とする。
【００２８】
この発明によれば、第１の仮想メモリ空間の論理アドレスＮに第１の切替命令を仮想記憶させ、第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させておき、所定要因をトリガーとして、第２のオペレーティングシステムにおけるタスクが有る場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムの信頼性や、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００２９】
この発明によれば、従来の共通部分が不要であるため、第１のオペレーティングシステムと第２のオペレーティングシステムとを独立的に動作させることができセキュリティを向上させることができる。
【００３０】
また、本発明は、請求項６に記載のマルチオペレーティングシステム制御装置において、前記第２のオペレーティングシステムにおけるタスクの有無を前記第１のオペレーティングシステムへ通知するタスク有無通知手段を備え、前記第１のオペレーティングシステムは、所定要因をトリガーとして、前記タスク有無通知手段より前記タスクが有りと通知された場合、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、一方、前記タスクが無しと通知された場合、該切り替えを禁止することを特徴とする。
【００３１】
この発明によれば、第２のオペレーティングシステムにおけるタスクの有無を第１のオペレーティングシステムへ通知し、所定要因をトリガーとして、タスクが有りと通知された場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無しと通知された場合、該切り替えを禁止することとしたので、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００３２】
また、本発明は、請求項６または７に記載のマルチオペレーティングシステム制御装置において、前記第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、前記タスクの有無にかかわらず、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えることを特徴とする。
【００３３】
この発明によれば、第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、タスクの有無にかかわらず、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えることとしたので、特殊な要因に対応づけて強制的な切り替えを行うことができ、処理能力を向上させることができる。
【００３４】
また、本発明は、一つの計算機で稼動する二つのオペレーティングシステムを制御するマルチオペレーティングシステム制御装置であって、一方のオペレーティングシステムにおけるタスクと、他方のオペレーティングシステムにおけるタスクとに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定する決定手段とを備え、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、前記決定手段で決定されたオペレーティングシステムへ切り替え、一方、前記タスクが無い場合、該切り替えを禁止することを特徴とする。
【００３５】
この発明によれば、各タスクに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定し、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、決定手段で決定されたオペレーティングシステムへ切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、優先順位を考慮したシステムにおいてもタスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【００３６】
【発明の実施の形態】
以下、図面を参照して本発明にかかるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置の実施の形態１および２について詳細に説明する。
【００３７】
（実施の形態１）
図１は、本発明にかかる実施の形態１の概略構成を示すブロック図である。この図に示したマルチオペレーティングシステムは、ハードウェア１０、ＯＳ２０１  、ＯＳ２０２  およびＡＰ（アプリケーションプログラム）３０１  〜３０４  から構成されている。
【００３８】
同マルチオペレーティングシステムでは、ＯＳ２０１  からＯＳ２０２  へ、またはＯＳ２０２  からＯＳ２０１  への切り替えが割り込み処理ルーチンの中で実行される。割り込みの発生要因としては、タイマ１７ａ（図２参照）を用いたタイマ割り込みによる定期的な切り替え要求や、マウス１７ｂ、キーボード１７ｃまたはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カード１７ｄ（図２参照）からのハードウェア割り込み等が挙げられる。
【００３９】
図２は、実施の形態１の具体的構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。同図において、ハードウェア１０は、計算機資源であり、制御部１１、物理メモリ１２、割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、その他レジスタ１５、プログラムカウンタ１６や、タイマ１７ａ、マウス１７ｂ、キーボード１７ｃ、ＬＡＮカード１７ｄ等から構成されている。
【００４０】
ハードウェア１０には、マルチ構成のＯＳ２０１  およびＯＳ２０２  が存在している。ＯＳ２０１  およびＯＳ２０２  のそれぞれは、ハードウェア１０の計算機資源を管理し、割り込み処理ルーチンの中で切り替えられる。すなわち、ある時間を考えると、ハードウェア１０は、一つのＯＳ（ＯＳ２０１  またはＯＳ２０２  ）により占有される。
【００４１】
ＯＳ２０１  は、割り込み振分処理部２１１  、割り込み処理部２２１  、割り込みベクタテーブル２３１  、ページテーブル２４１  、レジスタ退避領域２５１  、タスク管理テーブル２６１  、スケジューラ２７１  、タイマ管理テーブル２８１  、切り替え禁止フラグ設定部２９１（切り替え禁止フラグＦ１２）等から構成されている。ＡＰ３０１  およびＡＰ３０２  は、ＯＳ２０１  上で走行するアプリケーションプログラムである。
【００４２】
一方、ＯＳ２０２  は、ＯＳ２０１  に併設されており、割り込み振分処理部２１２  、割り込み処理部２２２  、割り込みベクタテーブル２３２  、ページテーブル２４２  、レジスタ退避領域２５２  、タスク管理テーブル２６２  、スケジューラ２７２  、タイマ管理テーブル２８２  、切り替え禁止フラグ設定部２９２（切り替え禁止フラグＦ２１）等から構成されている。ＡＰ３０３  およびＡＰ３０４  は、ＯＳ２０２  上で走行するアプリケーションプログラムである。
【００４３】
ハードウェア１０において、制御部１１は、ＣＰＵ等であり、プログラム実行により各部を制御する。物理メモリ１２は、物理的に実在する大容量の記憶装置であり、図３に示したように、仮想記憶制御方式に用いられ、各種命令やデータ等を実際に記憶する。
【００４４】
すなわち、実施の形態１においては、物理メモリ１２に対応して、仮想メモリ空間４０１  および仮想メモリ空間４０２  が仮想的に構築されている。仮想メモリ空間４０１  は、ＯＳ２０１  側に対応して設けられており、物理メモリ１２のＯＳ用物理メモリ領域１２ａ１  およびＡＰ用物理メモリ領域１２ｂ１  にマッピングされている。
【００４５】
具体的には、ＯＳ用仮想メモリ空間４０ａ１  は、ＯＳ２０１  で利用されるメモリ空間であり、ＯＳ用物理メモリ領域１２ａ１  にマッピングされている。ＡＰ用仮想メモリ空間４０ｂ１  は、ＡＰ３０１  およびＡＰ３０２  で利用されるメモリ空間であり、ＡＰ用物理メモリ領域１２ｂ１  にマッピングされている。
【００４６】
一方、仮想メモリ空間４０２  は、ＯＳ２０２  側に対応して設けられており、物理メモリ１２のＯＳ用物理メモリ領域１２ａ２  およびＡＰ用物理メモリ領域１２ｂ２  にマッピングされている。
【００４７】
具体的には、ＯＳ用仮想メモリ空間４０ａ２  は、ＯＳ２０２  で利用されるメモリ空間であり、ＯＳ用物理メモリ領域１２ａ２  にマッピングされている。ＡＰ用仮想メモリ空間４０ｂ２  は、ＡＰ３０３  およびＡＰ３０４  で利用されるメモリ空間であり、ＡＰ用物理メモリ領域１２ｂ２  にマッピングされている。
【００４８】
物理メモリ１２では、物理的な記憶単位に物理アドレスが付与されている。一方、仮想メモリ空間４０１  および仮想メモリ空間４０２  では、プログラム中で用いられる論理アドレスによって命令やデータが特定される。仮想記憶制御方式では、ページング方式、セグメンテーション方式、ページング／セグメンテーション方式により、論理アドレスを物理アドレスに変換している。
【００４９】
ページング方式では、アドレス変換がページと呼ばれるブロック単位（４キロバイト）で行われる。このため、ＯＳ２０１  においては、仮想メモリ空間４０１  の仮想ページが、物理メモリ１２のどのページに対応しているかを表すページテーブル（変換テーブル）２４１  が設けられている。同様にして、ＯＳ２０２  においても、仮想メモリ空間４０２  のページが、物理メモリ１２のどのページに対応しているかを表すページテーブル（変換テーブル）２４２  が設けられている。
【００５０】
また、図４（ｂ）に示したように、仮想メモリ空間４０１  のＮ番地（論理アドレス）には、ＯＳ２０１  からＯＳ２０２  へ切り替えるための切替命令Ａが記憶されている。一方、仮想メモリ空間４０２  において、仮想メモリ空間４０１  のＮ番地と同一のＮ番地には、ＯＳ２０２  からＯＳ２０１  へ切り替えるための切替命令Ｂが記憶されている。
【００５１】
図２に戻り、割り込みベクタテーブルレジスタ１３は、割り込みに応じた割込番号を格納するレジスタである。この割込番号は、後述する割り込みベクタテーブル２３１  または割り込みベクタテーブル２３２  での割り込み処理ルーチンの論理アドレスに対応している。
【００５２】
ページテーブルレジスタ１４は、後述するページテーブル２４１  またはページテーブル２４２  へのページインデックスを格納するレジスタである。その他レジスタ１５は、汎用レジスタ、フラグレジスタ等である。このその他レジスタ１５には、ＯＳ２０１  におけるタスク（処理）の有無の情報や、ＯＳ２０２  におけるタスクの有無の情報、タイマ処理（図１０および図１１参照）の開始時刻の情報等が格納される。なお、タスクには、プロセス、スレッドも含まれる。プログラムカウンタ１６は、仮想メモリ空間から命令をフェッチする論理アドレスを１インクリメントする。
【００５３】
タイマ１７ａは、ＯＳ２０１  およびＯＳ２０２  で、前述したタイマ割り込み等に用いられる計時手段である。マウス１７ｂおよびキーボード１７ｃは、入力手段である。これらのマウス１７ｂおよびキーボード１７ｃが操作された場合に、前述したハードウェア割り込みによるＯＳ切り替えが実行される。
【００５４】
ＬＡＮカード１７ｄは、通信機能を提供する。このＬＡＮカード１７ｄに通信機能が提供された場合にも、前述したハードウェア割り込みによるＯＳ切り替えが実行される。
【００５５】
ＯＳ２０１  において、割り込み振分処理部２１１  は、割り込み発生時に、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３１  を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分処理部２１１  の処理は、割り込み発生時に制御部１１内部で実行される。
【００５６】
割り込み処理部２２１  は、割り込み処理ルーチン、ＯＳ切り替え処理（ＯＳ２０１  からＯＳ２０２）を実行する。割り込みベクタテーブル２３１  は、上述した割込番号毎の、割り込み処理に対応する論理アドレスを格納している。ページテーブル２４１  は、仮想メモリ空間４０１（図３参照）の各仮想ページと、物理メモリ１２の各物理ページとの対応関係を表すテーブルである。
【００５７】
レジスタ退避領域２５１  は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、その他レジスタ１５）の内容を退避するための領域である。具体的には、ＯＳ２０１  からＯＳ２０２  へ切り替えられる場合、レジスタ退避領域２５１  には、図４（ａ）に示したように、ＯＳ２０１  に対応するレジスタの内容が退避される。
【００５８】
タスク管理テーブル２６１  は、ＯＳ２０１  で実行されるタスクを管理するためのテーブルである。このタスク管理テーブル２６１  には、タスク識別子、実行ファイル場所、タスクステータス、展開アドレス、優先順位、前回実行時刻等の情報が格納されている。
【００５９】
タスク識別子は、タスクを識別するためのものである。実行ファイル場所は、タスクの実行ファイルが格納されている場所を表す。タスクステータスは、当該タスクの状態（実行待ち、実行中、実行済み）を表す。展開アドレスは、実行フィルが展開される領域のアドレスを表す。
【００６０】
優先順位は、タスクの実行優先順位を表す。前回実行時刻は、当該タスクを前回実行した時刻を表す。ここで、タスクが複数ある場合、タスク管理テーブル２６１  において、複数のタスクは、実行待ち行列とされる。
【００６１】
スケジューラ２７１  は、後述するタイマ管理テーブル２８１  に予め設定された設定時刻に起動され、ＯＳをＯＳ２０１  からＯＳ２０２  へ切り替えるためのタイマ割り込みを定期的（または不定期）に発生させる機能を備えている。タイマ管理テーブル２８１  は、上記タイマ割り込みを発生させる設定時刻や、タイマ処理（図１１参照）の開始時刻等に関する情報を格納するテーブルである。
【００６２】
切り替え禁止フラグ設定部２９１  は、切り替え禁止フラグＦ１２を有効または無効に設定する機能を備えている。切り替え禁止フラグＦ１２は、ＯＳをＯＳ２０１  からＯＳ２０２  へのＯＳの切り替えを禁止するためのフラグである。切り替え禁止フラグＦ１２が有効とされている場合には、切り替えが禁止される。一方、切り替え禁止フラグＦ１２が無効とされている場合には、切り替えが実行される。
【００６３】
切り替え禁止の要因としては、ＯＳ切り替えの割り込みが発生した際にＯＳ２０２  でタスクが無い場合等である。ＯＳ２０２  におけるタスクの有無については、その他レジスタ１５を参照することにより、確認される。
【００６４】
ここで、ＯＳ２０２  でタスクが無いにもかかわらず、ＯＳをＯＳ２０１  からＯＳ２０２  へ切り替えると、ＯＳ２０２  は、実行すべきタスクが無いため、ｉｄｌｅ状態（なにも処理をしない状態）とされ、システム全体の処理効率が悪くなるという問題が発生する。
【００６５】
そこで、実施の形態１では、かかる問題を解決するために、ＯＳ切り替えの割り込みが発生した際にＯＳ２０２  でタスクが無い場合、ＯＳ切り替えを禁止し、ＯＳ２０２  でｉｄｌｅ状態となるであろう時間を、ＯＳ２０１  での処理に充て、システム全体の処理効率を向上させるのである。
【００６６】
一方、ＯＳ２０２  において、割り込み振分処理部２１２  は、割り込み発生時に、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３２  を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分処理部２１２  の処理は、割り込み発生時に制御部１１内部で実行される。
【００６７】
割り込み処理部２２２  は、割り込み処理ルーチン、ＯＳ切り替え処理（ＯＳ２０２  からＯＳ２０１）を実行する。割り込みベクタテーブル２３２  は、上述した割込番号毎の、割り込み処理に対応する論理アドレスを格納している。ページテーブル２４２  は、仮想メモリ空間４０２（図３参照）の各仮想ページと、物理メモリ１２の各物理ページとの対応関係を表すテーブルである。
【００６８】
レジスタ退避領域２５２  は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、その他レジスタ１５）の内容を退避するための領域である。具体的には、ＯＳ２０２  からＯＳ２０１  へ切り替えられる場合、レジスタ退避領域２５２  には、図４（ａ）に示したように、ＯＳ２０２  に対応するレジスタの内容が退避される。
【００６９】
タスク管理テーブル２６２  は、ＯＳ２０２  で実行されるタスクを管理するためのテーブルである。このタスク管理テーブル２６２  には、タスク管理テーブル２６１  と同様にして、タスク識別子、実行ファイル場所、タスクステータス、展開アドレス、優先順位、前回実行時刻等の情報が格納されている。
【００７０】
スケジューラ２７２  は、後述するタイマ管理テーブル２８２  に予め設定された設定時刻に起動され、ＯＳをＯＳ２０２  からＯＳ２０１  へ切り替えるためのタイマ割り込みを定期的（または不定期）に発生させる機能を備えている。タイマ管理テーブル２８２  は、上記タイマ割り込みを発生させる設定時刻や、タイマ処理（図１０参照）の開始時刻等に関する情報を格納するテーブルである。
【００７１】
切り替え禁止フラグ設定部２９２  は、切り替え禁止フラグＦ２１を有効または無効に設定する機能を備えている。切り替え禁止フラグＦ２１は、ＯＳをＯＳ２０２  からＯＳ２０１  へのＯＳの切り替えを禁止するためのフラグである。切り替え禁止フラグＦ２１が有効とされている場合には、切り替えが禁止される。一方、切り替え禁止フラグＦ２１が無効とされている場合には、切り替えが実行される。
【００７２】
切り替え禁止の要因としては、ＯＳ切り替えの割り込みが発生した際にＯＳ２０１  でタスクが無い場合等である。ＯＳ２０１  におけるタスクの有無については、その他レジスタ１５を参照することにより、確認される。
【００７３】
ここで、ＯＳ２０１でタスクが無いにもかかわらず、ＯＳをＯＳ２０２  からＯＳ２０１  へ切り替えると、ＯＳ２０１  は、実行すべきタスクが無いため、ｉｄｌｅ状態（なにも処理をしない状態）とされ、システム全体の処理効率が悪くなるという問題が発生する。
【００７４】
そこで、実施の形態１では、かかる問題を解決するために、ＯＳ切り替えの割り込みが発生した際にＯＳ２０１  でタスクが無い場合にも、ＯＳ切り替えを禁止し、ＯＳ２０１  でｉｄｌｅ状態となるであろう時間を、ＯＳ２０２  での処理に充て、システム全体の処理効率を向上させるのである。
【００７５】
つぎに、図５を参照して、実施の形態１の動作原理について説明する。同図の例では、ＯＳ２０１  が動作状態にあり、ＯＳ２０２  が待機状態にあるものとする。この状態で、ＯＳ２０１  側で割り込みが発生すると、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３１  が参照され、仮想メモリ空間４０１  のＬ番地より、割り込み処理ルーチンが実行される。
【００７６】
以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０１  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０１  のＮ番地で切替命令Ａが実行され、ＯＳ２０１  からＯＳ２０２  へ切り替えられる。
【００７７】
つぎに、プログラムカウンタ１６が１インクリメントされ、論理アドレスがＮ＋１番地になると、仮想メモリ空間４０２  のＮ＋１番地の命令が実行される。以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０２  のＳ番地でジャンプ命令が実行され、仮想メモリ空間４０２  のＮ−Ｍ番地へジャンプされる。
【００７８】
以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０２  のＮ番地で切替命令Ｂが実行され、ＯＳ２０２  からＯＳ２０１  へ切り替えられる（切り戻される）。
【００７９】
つぎに、プログラムカウンタ１６が１インクリメントされ、論理アドレスがＮ＋１番地になると、仮想メモリ空間４０１  のＮ＋１番地のＩＲＥＴが実行され、割り込みから復帰される。なお、ＯＳ２０２  側で割り込みが発生した場合も、上述と同様に動作する。
【００８０】
つぎに、図６〜図１１を参照して、実施の形態１の動作例１〜動作例４について説明する。
【００８１】
（動作例１）
図６は、実施の形態１の動作例１を説明する図である。動作例１では、タイマ割り込みにより、図２に示したＯＳ２０１  からＯＳ２０２  へＯＳを切り替える場合について説明する。図６においては、仮想メモリ空間４０１  および仮想メモリ空間４０２  の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【００８２】
ここで、動作例１では、ＯＳ切り替え処理を実行中に、より優先順位が高い割り込みが多重的に入ることを防止するため、ＯＳ切り替え処理の前後に割り込み禁止命令および割り込み許可命令を実行し、排他制御を行うようにしている。
すなわち、同図においては、仮想メモリ空間４０１  におけるＯＳ切り替え処理の前に割り込み禁止命令（Ｌ番地）が、同ＯＳ切り替え処理の後に割り込み許可命令（Ｎ＋５番地）が実行される。仮想メモリ空間４０２  においても同様である。
【００８３】
同図の例では、ＯＳ２０１  が動作状態にあり、ＯＳ２０２  が待機状態にあるものとする。この状態で、ＯＳ２０１  側でタイマ割り込みが発生すると、割り込み振分処理部２１１  は、▲１▼で、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３１  を参照し、当該割り込み処理へジャンプする。
【００８４】
これにより、割り込み処理部２２１  は、▲２▼で、仮想メモリ空間４０１  のＬ番地より、割り込み禁止命令を実行した後、割り込み処理ルーチンを実行する。以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０１  の番地が１つ移行し、当該番地の命令が順次実行される。
【００８５】
すなわち、Ｌ＋１番地では、割り込み処理部２２１  は、切り替え禁止フラグＦ１２が無効であるか否かを判断する。無効である場合には、ＯＳ２０２  におけるタスクが有り、ＯＳ２０１  からＯＳ２０２  への切り替えが実行される。一方、有効である場合には、同切り替えが実行されない。
【００８６】
この場合、切り替え禁止フラグＦ１２が無効であるとすると、Ｌ＋２番地では、割り込み処理部２２１  は、タスク管理テーブル２６１  を参照し、ＯＳ２０１  におけるタスクの有無をチェックする。Ｌ＋３番地では、割り込み処理部２２１  は、タイマ管理テーブル２８１  を参照し、後述するタイマ処理（図１１参照）における開始時刻をチェックする。
【００８７】
Ｌ＋４番地では、割り込み処理部２２１  は、Ｌ＋２番地の処理でチェックしたＯＳ２０１  におけるタスクの有無の情報と、Ｌ＋３番地でチェックしたタイマ処理の開始時刻の情報とをその他レジスタ１５に格納する。同情報は、後にＯＳ２０２  によりチェックされる。
【００８８】
Ｌ＋５番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）を実行し、ＯＳ２０１  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５の内容をレジスタ退避領域２５１  に退避する。
【００８９】
Ｌ＋６番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）を実行し、割り込みベクタテーブルレジスタ１３を、ＯＳ２０１  用からＯＳ２０２  用に切り替える。
【００９０】
Ｎ番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）を実行し、ページテーブルレジスタ１４をＯＳ２０１  用からＯＳ２０２  用に変更する。これにより、ＯＳ２０１  からＯＳ２０２  へ切り替えられる（▲３▼）。
【００９１】
仮想メモリ空間４０２  において、Ｎ＋１番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）を実行し、以前にレジスタ退避領域２５２  に退避されていたＯＳ２０２  用のレジスタの内容を割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５にそれぞれ復帰させる（▲４▼）。
【００９２】
Ｎ＋２番地では、割り込み処理部２２２  は、その他レジスタ１５からＯＳ２０１  におけるタスクの有無の情報と、タイマ処理の開始時刻の情報とを取得する。Ｎ＋３番地では、切り替え禁止フラグ設定部２９２  は、上記情報に基づいて、ＯＳ２０１のタスクが無い場合、切り替え禁止フラグＦ２１を有効に設定し、ＯＳ２０２  からＯＳ２０１  への切り替えを禁止する。
【００９３】
Ｎ＋４番地では、割り込み処理部２２２  は、タイマ処理（図１１参照）の開始時刻を設定する。Ｎ＋５番地では、割り込み処理部２２２  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２２  は、割り込み復帰命令を実行し、前回ＯＳ２０２  で割り込みが発生した箇所へ制御を戻す（▲５▼）。
【００９４】
また、ＯＳ２０２  では、図１１に示したタイマ処理が実行される。すなわち、ステップＳＢ１では、切り替え禁止フラグ設定部２９２  は、タイマ１７ａの計時結果が、仮想メモリ空間４０２  のＮ＋４番地で設定された開始時刻になったか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【００９５】
そして、計時結果が開始時刻になると、切り替え禁止フラグ設定部２９２  は、ステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、切り替え禁止フラグ設定部２９２  は、切り替え禁止フラグＦ２１を無効に設定する。これにより、ＯＳ２０２  からＯＳ２０１  へのＯＳ切り替えが可能となる。
【００９６】
一方、仮想メモリ空間４０１  のＬ＋１番地で、切り替え禁止フラグＦ１２が有効である場合、ＯＳ２０１  からＯＳ２０２  への切り替えを実行せずに、Ｎ＋５番地では、割り込み処理部２２１  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２１  は、割り込み復帰命令を実行し、前回ＯＳ２０１  で割り込みが発生した箇所へ制御を戻す（▲２▼’）。
【００９７】
（動作例２）
図７は、実施の形態１の動作例２を説明する図である。動作例２では、タイマ割り込みにより、図２に示したＯＳ２０２  からＯＳ２０１  へＯＳを切り替える場合について説明する。図７においては、仮想メモリ空間４０１  および仮想メモリ空間４０２  の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【００９８】
同図の例では、ＯＳ２０２  が動作状態にあり、ＯＳ２０１  が待機状態にあるものとする。この状態で、ＯＳ２０２  側でタイマ割り込みが発生すると、割り込み振分処理部２１２  は、▲６▼で、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３２  を参照し、当該割り込み処理へジャンプする。
【００９９】
これにより、割り込み処理部２２２  は、▲７▼で、仮想メモリ空間４０２  のＬ番地より、割り込み禁止命令を実行した後、割り込み処理ルーチンを実行する。以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。
【０１００】
すなわち、Ｌ＋１番地では、割り込み処理部２２２  は、切り替え禁止フラグＦ２１が無効であるか否かを判断する。無効である場合には、ＯＳ２０１  におけるタスクが有り、ＯＳ２０２  からＯＳ２０１  への切り替えが実行される。一方、有効である場合には、同切り替えが実行されない。
【０１０１】
この場合、切り替え禁止フラグＦ２１が無効であるとすると、Ｌ＋２番地では、割り込み処理部２２２  は、タスク管理テーブル２６２  を参照し、ＯＳ２０２  におけるタスクの有無をチェックする。Ｌ＋３番地では、割り込み処理部２２２  は、タイマ管理テーブル２８２  を参照し、後述するタイマ処理（図１０参照）における開始時刻をチェックする。
【０１０２】
Ｌ＋４番地では、割り込み処理部２２２  は、Ｌ＋２番地の処理でチェックしたＯＳ２０２  におけるタスクの有無の情報と、Ｌ＋３番地でチェックしたタイマ処理の開始時刻の情報とをその他レジスタ１５に格納する。同情報は、後にＯＳ２０１  によりチェックされる。
【０１０３】
Ｌ＋５番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）を実行し、ＯＳ２０２  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５の内容をレジスタ退避領域２５２  に退避する。
【０１０４】
Ｌ＋６番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）を実行し、割り込みベクタテーブルレジスタ１３を、ＯＳ２０２  用からＯＳ２０１  用に切り替える。
【０１０５】
Ｎ番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）を実行し、ページテーブルレジスタ１４をＯＳ２０２  用からＯＳ２０１  用に変更する。これにより、ＯＳ２０２  からＯＳ２０１  へ切り替えられる（▲８▼）。
【０１０６】
仮想メモリ空間４０１  において、Ｎ＋１番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）を実行し、以前にレジスタ退避領域２５１  に退避されていたＯＳ２０１  用のレジスタの内容を割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５にそれぞれ復帰させる（▲９▼）。
【０１０７】
Ｎ＋２番地では、割り込み処理部２２１  は、その他レジスタ１５からＯＳ２０２  におけるタスクの有無の情報と、タイマ処理の開始時刻の情報とを取得する。Ｎ＋３番地では、切り替え禁止フラグ設定部２９１  は、上記情報に基づいて、ＯＳ２０２  のタスクが無い場合、切り替え禁止フラグＦ１２を有効に設定し、ＯＳ２０１  からＯＳ２０２  への切り替えを禁止する。
【０１０８】
Ｎ＋４番地では、割り込み処理部２２１  は、タイマ処理（図１１参照）の開始時刻を設定する。Ｎ＋５番地では、割り込み処理部２２１  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２１  は、割り込み復帰命令を実行し、前回ＯＳ２０１  で割り込みが発生した箇所へ制御を戻す（▲９▼’）。
【０１０９】
また、ＯＳ２０２  では、図１０に示したタイマ処理が実行される。すなわち、ステップＳＡ１では、切り替え禁止フラグ設定部２９１  は、タイマ１７ａの計時結果が、仮想メモリ空間４０１  のＮ＋４番地で設定された開始時刻になったか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１１０】
そして、計時結果が開始時刻になると、切り替え禁止フラグ設定部２９１  は、ステップＳＡ１の判断結果を「Ｙｅｓ」とする。ステップＳＡ２では、切り替え禁止フラグ設定部２９１  は、切り替え禁止フラグＦ１２を無効に設定する。これにより、ＯＳ２０１  からＯＳ２０２  へのＯＳ切り替えが可能となる。
【０１１１】
一方、仮想メモリ空間４０２  のＬ＋１番地で、切り替え禁止フラグＦ２１が有効である場合、ＯＳ２０２  からＯＳ２０１  への切り替えを実行せずに、Ｎ＋５番地では、割り込み処理部２２２  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２２  は、割り込み復帰命令を実行し、前回ＯＳ２０２  で割り込みが発生した箇所へ制御を戻す（▲７▼’）。
【０１１２】
（動作例３）
図８は、実施の形態１の動作例３を説明する図である。動作例３では、前述したマウス１７ｂ、キーボード１７ｃまたはＬＡＮカード１７ｄによって発生するハードウェア割り込みにより、図２に示したＯＳ２０１  からＯＳ２０２  へＯＳを切り替える場合について説明する。図８においては、仮想メモリ空間４０１  および仮想メモリ空間４０２  の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【０１１３】
同図の例では、ＯＳ２０１  が動作状態にあり、ＯＳ２０２  が待機状態にあるものとする。この状態で、ＯＳ２０１  側でハードウェア割り込み（例えば、マウス１７ｂの操作）が発生すると、割り込み振分処理部２１１  は、▲１▼で、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３１  を参照し、当該割り込み処理へジャンプする。
【０１１４】
これにより、割り込み処理部２２１  は、▲２▼で、仮想メモリ空間４０１  のＬ番地より、割り込み禁止命令を実行した後、割り込み処理ルーチンを実行する。以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０１  の番地が１つ移行し、当該番地の命令が順次実行される。
【０１１５】
すなわち、Ｌ＋１番地では、切り替え禁止フラグ設定部２９１  は、切り替え禁止フラグＦ１２を無効に設定する。Ｌ＋２番地では、割り込み処理部２２１  は、タスク管理テーブル２６１  を参照し、ＯＳ２０１  におけるタスクの有無をチェックする。Ｌ＋３番地では、割り込み処理部２２１  は、タイマ管理テーブル２８１  を参照し、後述するタイマ処理（図１１参照）における開始時刻をチェックする。
【０１１６】
Ｌ＋４番地では、割り込み処理部２２１  は、Ｌ＋２番地の処理でチェックしたＯＳ２０１  におけるタスクの有無の情報と、Ｌ＋３番地でチェックしたタイマ処理の開始時刻の情報とをその他レジスタ１５に格納する。同情報は、後にＯＳ２０２  によりチェックされる。
【０１１７】
Ｌ＋５番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）を実行し、ＯＳ２０１  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５の内容をレジスタ退避領域２５１  に退避する。
【０１１８】
Ｌ＋６番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）を実行し、割り込みベクタテーブルレジスタ１３を、ＯＳ２０１  用からＯＳ２０２  用に切り替える。
【０１１９】
Ｎ番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）を実行し、ページテーブルレジスタ１４をＯＳ２０１  用からＯＳ２０２  用に変更する。これにより、ＯＳ２０１  からＯＳ２０２  へ切り替えられる（▲３▼）。
【０１２０】
仮想メモリ空間４０２  において、Ｎ＋１番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）を実行し、以前にレジスタ退避領域２５２  に退避されていたＯＳ２０２  用のレジスタの内容を割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５にそれぞれ復帰させる（▲４▼）。
【０１２１】
Ｎ＋２番地では、割り込み処理部２２２  は、その他レジスタ１５からＯＳ２０１  におけるタスクの有無の情報と、タイマ処理の開始時刻の情報と取得する。Ｎ＋３番地では、切り替え禁止フラグ設定部２９２  は、上記情報に基づいて、ＯＳ２０１  のタスクが無い場合、切り替え禁止フラグＦ２１を有効に設定し、ＯＳ２０２  からＯＳ２０１  への切り替えを禁止する。
【０１２２】
Ｎ＋４番地では、割り込み処理部２２２  は、タイマ処理（図１１参照）の開始時刻を設定する。Ｎ＋５番地では、割り込み処理部２２２  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２２  は、割り込み復帰命令を実行し、前回ＯＳ２０２  で割り込みが発生した箇所へ制御を戻す（▲５▼）。
【０１２３】
また、ＯＳ２０２  では、図１１に示したタイマ処理が実行され、ステップＳＢ１の判断結果が「Ｙｅｓ」になると、切り替え禁止フラグ設定部２９１  は、ステップＳＢ２で、切り替え禁止フラグＦ２１を無効に設定する。これにより、ＯＳ２０２  からＯＳ２０１  へのＯＳ切り替えが可能となる。
【０１２４】
（動作例４）
図９は、実施の形態１の動作例４を説明する図である。動作例４では、前述したマウス１７ｂ、キーボード１７ｃまたはＬＡＮカード１７ｄによって発生するハードウェア割り込みにより、図２に示したＯＳ２０２  からＯＳ２０１  へＯＳを切り替える場合について説明する。図９においては、仮想メモリ空間４０１  および仮想メモリ空間４０２  の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【０１２５】
同図の例では、ＯＳ２０２  が動作状態にあり、ＯＳ２０１  が待機状態にあるものとする。この状態で、ＯＳ２０２  側でハードウェア割り込み（例えば、ＬＡＮカード１７ｄの起動）が発生すると、割り込み振分処理部２１２  は、▲６▼で、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２３２  を参照し、当該割り込み処理へジャンプする。
【０１２６】
これにより、割り込み処理部２２２  は、▲７▼で、仮想メモリ空間４０２  のＬ番地より、割り込み禁止命令を実行した後、割り込み処理ルーチンを実行する。以後、プログラムカウンタ１６（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。
【０１２７】
すなわち、Ｌ＋１番地では、切り替え禁止フラグ設定部２９２  は、切り替え禁止フラグＦ２１を無効に設定する。Ｌ＋２番地では、割り込み処理部２２２  は、タスク管理テーブル２６２  を参照し、ＯＳ２０２  におけるタスクの有無をチェックする。Ｌ＋３番地では、割り込み処理部２２２  は、タイマ管理テーブル２８２  を参照し、後述するタイマ処理（図１０参照）における開始時刻をチェックする。
【０１２８】
Ｌ＋４番地では、割り込み処理部２２２  は、Ｌ＋２番地の処理でチェックしたＯＳ２０２  におけるタスクの有無の情報と、Ｌ＋３番地でチェックしたタイマ処理の開始時刻の情報とをその他レジスタ１５に格納する。同情報は、後にＯＳ２０１  によりチェックされる。
【０１２９】
Ｌ＋５番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）を実行し、ＯＳ２０２  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５の内容をレジスタ退避領域２５２  に退避する。
【０１３０】
Ｌ＋６番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）を実行し、割り込みベクタテーブルレジスタ１３を、ＯＳ２０２  用からＯＳ２０１  用に切り替える。
【０１３１】
Ｎ番地では、割り込み処理部２２２  は、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）を実行し、ページテーブルレジスタ１４をＯＳ２０２  用からＯＳ２０１  用に変更する。これにより、ＯＳ２０２  からＯＳ２０１  へ切り替えられる（▲８▼）。
【０１３２】
仮想メモリ空間４０１  において、Ｎ＋１番地では、割り込み処理部２２１  は、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）を実行し、以前にレジスタ退避領域２５１  に退避されていたＯＳ２０１  用のレジスタの内容を割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１５にそれぞれ復帰させる（▲９▼）。
【０１３３】
Ｎ＋２番地では、割り込み処理部２２１  は、その他レジスタ１５からＯＳ２０２  におけるタスクの有無の情報と、タイマ処理の開始時刻の情報と取得する。Ｎ＋３番地では、切り替え禁止フラグ設定部２９１  は、上記情報に基づいて、ＯＳ２０２  のタスクが無い場合、切り替え禁止フラグＦ１２を有効に設定し、ＯＳ２０１  からＯＳ２０２  への切り替えを禁止する。
【０１３４】
Ｎ＋４番地では、割り込み処理部２２１  は、タイマ処理（図１０参照）の開始時刻を設定する。Ｎ＋５番地では、割り込み処理部２２１  は、割り込み許可命令を実行する。Ｎ＋６番地では、割り込み処理部２２１  は、割り込み復帰命令を実行し、前回ＯＳ２０１  で割り込みが発生した箇所へ制御を戻す（▲９▼’）。
【０１３５】
また、ＯＳ２０１  では、図１０に示したタイマ処理が実行され、ステップＳＡ１の判断結果が「Ｙｅｓ」になると、切り替え禁止フラグ設定部２９１  は、ステップＳＡ２で、切り替え禁止フラグＦ１２を無効に設定する。これにより、ＯＳ２０１  からＯＳ２０２  へのＯＳ切り替えが可能となる。
【０１３６】
以上説明したように、実施の形態１によれば、図５に示したように、仮想メモリ空間４０１  のＮ番地に切替命令Ａを仮想記憶させ、仮想メモリ空間４０２  のＮ＋１番地に各種命令を仮想記憶させておき、所定要因（例えば、タイマ割り込み）をトリガーとして、ＯＳ２０２  におけるタスクが有る場合、ＯＳ２０１  からＯＳ２０２  に切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要でＯＳ２０１  およびＯＳ２０２  が共存され、マルチオペレーティングシステムの信頼性や、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【０１３７】
また、実施の形態１によれば、従来の共通部分が不要であるため、ＯＳ２０１とＯＳ２０２  とを独立的に動作させることができセキュリティを向上させることができる。
【０１３８】
また、実施の形態１によれば、動作例３および４で説明したように、ＯＳ２０１  （またはＯＳ２０２  ）が、所定要因のうち特殊な要因（例えば、ハードウェア割り込み）が発生した場合、タスクの有無にかかわらず、ＯＳ２０１  からＯＳ２０２  （またはその逆）へ切り替えることとしたので、特殊な要因に対応づけて強制的な切り替えを行うことができる。
【０１３９】
（実施の形態２）
さて、前述した実施の形態１においては、タスクの有無に応じて切り替え禁止フラグを設定し、タスクが無い場合に当該ＯＳへの切り替えを禁止する構成例について説明したが、複数のＯＳにおいてタスクに優先順位を付与し、優先順位が高いタスクを実行するＯＳに切り替えるというマルチオペレーティングシステムに実施の形態１の概念を適用してもよい。以下では、この場合を実施の形態２として説明する。
【０１４０】
図１２は、本発明にかかる実施の形態２の構成を示すブロック図である。この図に示したマルチオペレーティングシステムは、ＯＳ切り替え制御部１００、ＯＳ２００１  、ＯＳ２００２  およびＡＰ（アプリケーションプログラム）３００１  〜３００４  から構成されている。
【０１４１】
同マルチオペレーティングシステムでは、ＯＳ２００１  からＯＳ２００２  へ、またはＯＳ２００２  からＯＳ２００１  への切り替えが割り込み処理ルーチンの中で実行される。割り込みの発生要因としては、タイマ１１１を用いたタイマ割り込みによる定期的な切り替え要求や、マウス、キーボードまたはＬＡＮカード等のハードウェア（図示略）からのハードウェア割り込み等が挙げられる。
【０１４２】
ＯＳ２００１  およびＯＳ２００２  のそれぞれは、ハードウェア（図示略）の計算機資源を管理し、割り込み処理ルーチンの中で切り替えられる。ＯＳ２００１  は、タスク管理テーブル２０１１  、スケジューラ２０２１  等から構成されている。
【０１４３】
タスク管理テーブル２０１１  は、ＯＳ２００１  で実行されるタスク（同図では、タスクＴ１１、タスクＴ１２およびタスクＴ１３）を管理するためのテーブルである。このタスク管理テーブル２０１１  には、タスク識別子、実行ファイル場所、タスクステータス、展開アドレス、優先順位、前回実行時刻等の情報が格納されている。
【０１４４】
スケジューラ２０２１  は、予め設定された設定時刻に起動され、タスク管理テーブル２０１１  を参照してタスクをチェックする機能、優先順位をＯＳ切り替え制御部１００へ通知する機能、タスク無しの場合、後述する第１のアイドル情報１０９を記憶部１０６に格納する機能等を備えている。
【０１４５】
第１のアイドル情報１０９は、ＯＳ２００１  に実行可能なタスクが存在せず、ＯＳ２００２  がアイドル状態にあることを表す。ＡＰ３００１  およびＡＰ３００２  は、ＯＳ２００１  上で走行するアプリケーションプログラムである。
【０１４６】
一方、ＯＳ２００２  は、タスク管理テーブル２０１２  、スケジューラ２０２２  等から構成されている。
【０１４７】
タスク管理テーブル２０１２  は、ＯＳ２００２  で実行されるタスク（同図では、タスクＴ２１、タスクＴ２２およびタスクＴ２３）を管理するためのテーブルである。このタスク管理テーブル２０１２  には、タスク識別子、実行ファイル場所、タスクステータス、展開アドレス、優先順位、前回実行時刻等の情報が格納されている。
【０１４８】
スケジューラ２０２２  は、予め設定された設定時刻に起動され、タスク管理テーブル２０１２  を参照してタスクをチェックする機能、優先順位をＯＳ切り替え制御部１００へ通知する機能、タスク無しの場合、後述する第２のアイドル情報１１０を記憶部１０６に格納する機能等を備えている。
【０１４９】
第２のアイドル情報１１０は、ＯＳ２００２  に実行可能なタスクが存在せず、ＯＳ２００１  がアイドル状態にあることを表す。ＡＰ３００３  およびＡＰ３００４  は、ＯＳ２００２  上で走行するアプリケーションプログラムである。
【０１５０】
ここで、実施の形態２においては、ＯＳ２００１  とＯＳ２００２  とで独立的にタスクの優先順位が定義されている。例えば、ＯＳ２００１  のタスク管理テーブル２０１１  においては、タスクＴ１１、Ｔ１２およびＴ１３に、優先順位０、７および３１が定義されている。
【０１５１】
一方、ＯＳ２００２  のタスク管理テーブル２０１２  においては、タスクＴ２１、Ｔ２２およびＴ２３に、優先順位０、９９および２５５が定義されている。
【０１５２】
また、ＯＳ２００１  とＯＳ２００２  とでは、異なった優先順位体系（優先順位レベル）を有している。ＯＳ２００１  では、比較的少ない優先順位レベル（０〜３１）を用いて、スループットを向上させる方式を採用する。一方、ＯＳ２００２  では、比較的多くの優先順位レベル（０〜２５５）を有することにより、重要な割込みに対する高速応答性を実現する。
【０１５３】
また、オペレーティングシステムの種類によっては、優先順位の数値が小さい（０に近い）ほど優先順位が高い場合と、優先順位の数値が大きいほど優先順位が高い場合とがある。
【０１５４】
このため、スケジューラ２０２１  から通知されたＯＳ２００１  側のタスクの優先順位と、スケジューラ２０２２  から通知されたＯＳ２００２  側のタスクの優先順位とをそのまま比較しても意味がない。
【０１５５】
そこで、実施の形態２では、二つのオペレーティングシステムにおける優先順位体系の違いを解消するため、第１の優先順位正規化部１０４および第２の優先順位正規化部１０５が設けられている。
【０１５６】
第１の優先順位正規化部１０４は、スケジューラ２０２１  から通知されたＯＳ２００１  側のタスクの優先順位を、両ＯＳで共通の比較基準に基づいて、第１の正規化優先順位情報１０７に変換する。
【０１５７】
同様にして、第２の優先順位正規化部１０５は、スケジューラ２０２２  から通知されたＯＳ２００２  側のタスクの優先順位を、両ＯＳで共通の比較基準に基づいて、第２の正規化優先順位情報１０８に変換する。
【０１５８】
共通割り込みハンドラ１０１は、割り込みが発生した場合に、第１の正規化優先順位情報１０７と第２の正規化優先順位情報１０８とを比較して、優先順位が高いものを選択し、切り替え先ＯＳを決定する。但し、切り替え先のＯＳがアイドル状態の場合、共通割り込みハンドラ１０１は、実施の形態１で説明したように、切り替えが無駄になるため、切り替えを行わない。
【０１５９】
切り替え先ＯＳがＯＳ２００１  である場合、共通割り込みハンドラ１０１は、第１の割り込みハンドラ１０２に制御を渡す。第１の割り込みハンドラ１０２は、ＯＳをＯＳ２００１  から２００２  へ切り替える機能を備えている。
【０１６０】
一方、切り替え先ＯＳがＯＳ２００２  である場合、共通割り込みハンドラ１０１は、第２の割り込みハンドラ１０３に制御を渡す。第２の割り込みハンドラ１０３は、ＯＳをＯＳ２００２  から２００１  へ切り替える機能を備えている。タイマ１１１は、タイマ割り込みのための計時を行う。
【０１６１】
つぎに、実施の形態２の動作について図１３および図１４を参照しつつ説明する。図１３は、図１２に示したスケジューラ２０２１  、スケジューラ２０２２  の動作を説明するフローチャートである。図１４は、図１２に示したＯＳ切り替え制御部１００の動作を説明するフローチャートである。
【０１６２】
図１３に示したステップＳＣ１では、ＯＳ２００１  のスケジューラ２０２１  は、タイマ１１１の計時結果が予め設定された設定時刻であるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１６３】
そして、タイマ１１１の計時結果が設定時刻になると、スケジューラ２０２１  は、ステップＳＣ１の判断結果を「Ｙｅｓ」とする。ステップＳＣ２では、スケジューラ２０２１  は、タスク管理テーブル２０１１  を参照して、タスク待ち行列から次のタスクをチェックする。ステップＳＣ３では、スケジューラ２０２１  は、ステップＳＣ２のチェック結果に基づいて、ＯＳ２００１  側で実行可能タスクがあるか否かを判断する。
【０１６４】
ステップＳＣ３の判断結果が「Ｙｅｓ」である場合、ステップＳＣ４では、スケジューラ２０２１  は、ステップＳＣ２でチェックした当該タスク（例えば、タスクＴ１１）の優先順位（この場合、０）をＯＳ切り替え制御部１００の第１の優先順位正規化部１０４へ通知する。
【０１６５】
これにより、第１の優先順位正規化部１０４は、両ＯＳで共通の比較基準に基づいて、通知された優先順位を第１の正規化優先順位情報１０７に変換する。ステップＳＣ５では、スケジューラ２０２１  は、第１の正規化優先順位情報１０７を記憶部１０６に格納する。
【０１６６】
ステップＳＣ６では、スケジューラ２０２１  は、ＯＳ２００１  に、実行可能なタスクが存在しているため、記憶部１０６に第１のアイドル情報１０９が格納されている場合、これを削除した後、ステップＳＣ１の判断を行う。
【０１６７】
また、ステップＳＣ３の判断結果が「Ｎｏ」である場合、すなわち、ＯＳ２００１  に、実行可能なタスクが存在しない場合、ステップＳＣ７では、スケジューラ２０２１  は、第１のアイドル情報１０９を記憶部１０６に格納する。
【０１６８】
一方、ＯＳ２００２  において、図１３に示したステップＳＣ１では、ＯＳ２００２  のスケジューラ２０２２  は、タイマ１１１の計時結果が予め設定された設定時刻であるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１６９】
そして、タイマ１１１の計時結果が設定時刻になると、スケジューラ２０２２  は、ステップＳＣ１の判断結果を「Ｙｅｓ」とする。ステップＳＣ２では、スケジューラ２０２２  は、タスク管理テーブル２０１２  を参照して、タスク待ち行列から次のタスクをチェックする。ステップＳＣ３では、スケジューラ２０２２  は、ステップＳＣ２のチェック結果に基づいて、ＯＳ２００２  側で実行可能タスクがあるか否かを判断する。
【０１７０】
ステップＳＣ３の判断結果が「Ｙｅｓ」である場合、ステップＳＣ４では、スケジューラ２０２２  は、ステップＳＣ２でチェックした当該タスク（例えば、タスクＴ２２）の優先順位（この場合、９９）をＯＳ切り替え制御部１００の第２の優先順位正規化部１０５へ通知する。
【０１７１】
これにより、第２の優先順位正規化部１０５は、両ＯＳで共通の比較基準に基づいて、通知された優先順位を第２の正規化優先順位情報１０８に変換する。ステップＳＣ５では、スケジューラ２０２２  は、第２の正規化優先順位情報１０８を記憶部１０６に格納する。
【０１７２】
ステップＳＣ６では、スケジューラ２０２２  は、ＯＳ２００２  に、実行可能なタスクが存在しているため、記憶部１０６に第２のアイドル情報１１０が格納されている場合、これを削除した後、ステップＳＣ１の判断を行う。
【０１７３】
また、ステップＳＣ３の判断結果が「Ｎｏ」である場合、すなわち、ＯＳ２００２  に、実行可能なタスクが存在しない場合、ステップＳＣ７では、スケジューラ２０２２  は、第２のアイドル情報１１０を記憶部１０６に格納する。
【０１７４】
また、図１４に示したステップＳＤ１では、ＯＳ切り替え制御部１００の共通割り込みハンドラ１０１は、割り込みが発生したか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
【０１７５】
そして、割り込みが発生すると、共通割り込みハンドラ１０１は、ステップＳＤ１の判断結果を「Ｙｅｓ」とする。ステップＳＤ２では、共通割り込みハンドラ１０１は、切り替え先のＯＳを決定する。
【０１７６】
具体的には、共通割り込みハンドラ１０１は、記憶部１０６に格納された第１の正規化優先順位情報１０７、第２の正規化優先順位情報１０８とに基づいて、切り替え先のＯＳを決定する。
【０１７７】
例えば、第１の正規化優先順位情報１０７が第２の正規化優先順位情報１０８より優先順位が高い場合には、ＯＳ２００１  が切り替え先のＯＳとされる。逆に、第２の正規化優先順位情報１０８が第１の正規化優先順位情報１０７より優先順位が高い場合には、ＯＳ２００２  が切り替え先のＯＳとされる。
【０１７８】
なお、記憶部１０６に第１の正規化優先順位情報１０７のみが格納されている場合には、ＯＳ２００１が切り替え先のＯＳとされる。同様にして、記憶部１０６に第２の正規化優先順位情報１０８のみが格納されている場合には、ＯＳ２００２  が切り替え先のＯＳとされる。
【０１７９】
また、記憶部１０６にいずれの正規化優先順位情報が格納されていない場合には、タイマ割り込みにより、ＯＳ２００１  またはＯＳ２００２  のいずれかが切り替え先のＯＳとされる。
【０１８０】
ステップＳＤ３では、共通割り込みハンドラ１０１は、ステップＳＤ２で決定された切り替え先のＯＳがアイドル状態であるか否かを判断する。具体的には、共通割り込みハンドラ１０１は、記憶部１０６を参照して、第１のアイドル情報１０９または第２のアイドル情報１１０をチェックする。
【０１８１】
例えば、切り替え先のＯＳがＯＳ２００１  であって、第１のアイドル情報１０９が記憶部１０６に格納されている場合には、切り替え先のＯＳ（ＯＳ２００１）がアイドル状態と判断される。逆に、切り替え先のＯＳがＯＳ２００２  であって、第２のアイドル情報１１０が記憶部１０６に格納されている場合には、切り替え先のＯＳ（ＯＳ２００２）がアイドル状態と判断される。
【０１８２】
ステップＳＤ３の判断結果が「Ｎｏ」である場合、すなわち、切り替え先のＯＳがアイドル状態でない場合、ステップＳＤ４では、共通割り込みハンドラ１０１は、切り替え先のＯＳがＯＳ２００１  であるか否かを判断する。
【０１８３】
ステップＳＤ４の判断結果が「Ｙｅｓ」である場合、ステップＳＤ５では、共通割り込みハンドラ１０１は、第１の割り込みハンドラ１０２に制御を移し、ＯＳ２００２  からＯＳ２００１  へ切り替えさせる。ステップＳＤ６では、切り替え先のＯＳ２００１  で当該タスクが実行される。
【０１８４】
一方、ステップＳＤ４の判断結果が「Ｎｏ」である場合、すなわち、切り替え先のＯＳがＯＳ２００２  である場合、ステップＳＤ８では、共通割り込みハンドラ１０１は、第２の割り込みハンドラ１０３に制御を移し、ＯＳ２００１  からＯＳ２００２  へ切り替えさせる。ステップＳＤ６では、切り替え先のＯＳ２００２  で当該タスクが実行される。
【０１８５】
また、ステップＳＤ３の判断結果が「Ｙｅｓ」である場合、ステップＳＤ７では、共通割り込みハンドラ１０１は、切り替えを行わず、復帰し、ステップＳＤ１の判断を行う。
【０１８６】
以上説明したように、実施の形態２によれば、ＯＳ２００１  、ＯＳ２００２  における各タスクに付与された優先順位に基づいて、両ＯＳのうち切り替え先のＯＳを決定し、切り替え先のＯＳにタスクが有る場合、稼働中のＯＳから、切り替え先のＯＳへ切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、優先順位を考慮したシステムにおいてもタスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができる。
【０１８７】
図１５（ａ）〜図１５（ｄ）は、前述した実施の形態１の応用例１〜４を説明する図である。図１５（ａ）に示した応用例１は、新旧ＯＳを共存させ、システム更改時に利用する例である。新ＯＳは、例えば、ＯＳ２０１  に対応している。一方、旧ＯＳは、ＯＳ２０２  に対応している。
【０１８８】
図１５（ｂ）に示した応用例２は、ソース公開ＯＳを活用し、ソース非公開ＯＳのリリースを待たずに、ソース公開ＯＳ側で新機能をスピード開発する例である。ソース非公開ＯＳは、ソースコードが公開されていないオペレーティングシステムであり、例えば、ＯＳ２０１  に対応している。一方、ソース公開ＯＳは、ソースコードが公開されているオペレーティングシステムであり、ＯＳ２０２  に対応している。
【０１８９】
図１５（ｃ）に示した応用例３は、専用ＯＳと汎用ＯＳとを共存させる例である。専用ＯＳは、リアルタイム性等に特化する機能を分担し、例えば、ＯＳ２０１  に対応している。一方、汎用ＯＳは、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）等であり、ＧＵＩ機能を分担し、ＯＳ２０２  に対応している。
【０１９０】
図１５（ｄ）に示した応用例４は、資源を分割する例であり、ＯＳ１とＯＳ２の使用目的により使用方法が異なる例である。ＯＳ１は、例えば、ＯＳ２０１  に対応している。一方、ＯＳ２は、ＯＳ２０２  に対応している。
【０１９１】
図１６は、実施の形態１をシステム移行に適用した場合を説明する図である。同図において、従来の移行作業では、一度に、旧端末に実装されている旧ＯＳの全モジュールを新端末の新ＯＳに移行させる必要があり、安全面で不安が残る。
【０１９２】
これに対して、マルチオペレーティングシステムがあると、旧端末に実装されている旧ＯＳの各モジュールを中間端末の旧ＯＳに安全を確認しながら移行させる。つぎに、中間端末において、旧ＯＳの各モジュールを新ＯＳに安全を確認しながら移行させる。
【０１９３】
つぎに、中間端末の新ＯＳの全モジュールを、新端末の新ＯＳに一度に移行させる。この場合、新ＯＳ間での移行であるため、問題が発生しない。マルチＯＳによる移行は、ある特定のモジュールに急いで新機能をつける場合に有効である。
【０１９４】
図１７は、実施の形態１を高セキュリティゲートウェイに適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣ（ネットワークインタフェースカード）を経由してインターネットに接続されている。このハードウェアは、高セキュリティゲートウェイとして機能する。
【０１９５】
ＯＳ１は、ユーザが使用するＡＰ（アプリケーションプログラム）１を管理するとともに、通信ログをＤＫ（ディスク）１に蓄積する。一方、ＯＳ２は、インターネットからの通信パケットを監視し、監視ログをＤＫ２に蓄積する。
【０１９６】
また、ＯＳ２では、ＮＩＣを直接制御し、通信を行う。このため、ＯＳ２は、ＯＳ１の通信を支援するため、ＮＩＣの対ソフトウェア提供インタフェースを疑似した疑似ＮＩＣ−Ｉ／ＦをＯＳ１に提供している。ＡＰ２は、パケット監視ログ収集用のアプリケーションプログラムであり、ＯＳ２上で動作する。
【０１９７】
また、ＡＰ２は、通信パケットを外から見るだけで、通信パケットに含まれる実行コードを処理しないため、ウイルスに感染しない。ＤＫ２に蓄積される監視ログは、悪意の第三者による改竄がなされないようになっている。従って、攻撃の痕跡を残すことが可能となる。
【０１９８】
ここで、ユーザの環境（ＯＳ１等）に対して、セキュリティの攻撃が行われた場合、ＯＳ１の通信ログが改竄されることが考えられる。しかしながら、実施の形態１では、マルチオペレーティングシステムにより、ＯＳ１とＯＳ２の監視ログが別々に管理されるため、攻撃者の追跡を行うことが可能となる。これにより、当該セキュリティゲートウェイへの攻撃を抑止する効果が期待できる。
【０１９９】
図１８は、実施の形態１をデスクトップＧｒｉｄ端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してインターネットに接続されている。インターネットには、Ｇｒｉｄサーバが接続されている。ハードウェアは、デスクトップＧｒｉｄ端末として機能する。
【０２００】
デスクトップＧｒｉｄ端末は、ユーザが計算機を利用しない間に、大きな計算の一部を割り当てて計算を実現しようとするデスクトップＧｒｉｄ計算を行うための端末である。ここで、ユーザ側から見ると、内容が不明な上記計算が自身の計算機環境に及ぼす悪影響が心配となる。
【０２０１】
そこで、同図では、自身の計算機環境をＯＳ１で管理し、Ｇｒｉｄ計算の処理環境をＯＳ２で管理することにより、上記悪影響を排除できる。つまり、Ｇｒｉｄ計算で利用されるデータやプログラムは、全てＯＳ２の制御下のみで管理され実行される。一方、ＯＳ１の制御下にあるＤＫ１やＭＥＭ（メモリ）１という計算機資源には、アクセスが許可されない。従って、Ｇｒｉｄ計算のプログラムからの悪影響が排除される。
【０２０２】
図１９は、実施の形態１を遠隔管理端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、システム管理者マシンや他のマシンが接続されている。ハードウェアは、遠隔管理端末として機能する。
【０２０３】
同図において、ユーザが管理できる範疇をＯＳ１に制限し、ＯＳ２の管理をネットワークを介してシステム管理者マシンで行うように構成されている。これにより、オフィス環境などで利用するパーソナルコンピュータのデフォルト環境を、システム管理者がＯＳ２の管理下で構築し、一方、ユーザ個人の好みや状況に応じて利用する環境を、ユーザがＯＳ１の管理下で構築することができる。
【０２０４】
したがって、ユーザ個人の環境設定により、システム側で用意した環境が動作不具合になることが防止される。ＯＳ２は、システム管理者マシンでシステム管理者により管理され、システム側で設計された環境を提供する。ユーザは、該環境を利用する場合、ＯＳ２のファイル情報をＯＳ１に読み込んで起動するか、または、ＯＳ２に起動を依頼してクライアント／サーバの形態で実行する。
【０２０５】
図２０は、実施の形態１を高効率ネットサービス提供端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、コンテンツプロバイダサーバや他のマシンが接続されている。ハードウェアは、高効率ネットサービス提供端末として機能する。
【０２０６】
同図においては、高効率ネットサービス提供端末は、遠隔管理端末（図１９参照）と同様にして、一方のＯＳ１をユーザの管理下、他方のＯＳ２をネットサービスの管理下として、例えば、封切り前のコンテンツを事前にＯＳ２の管理下（ＤＫ２）に配信しておき、封切り時刻にＯＳ１の管理下のＤＫ１からのコンテンツの即時利用を実現する端末である。
【０２０７】
コンテンツは、ネットワークを介して、コンテンツプロバイダサーバからＯＳ２の管理下のＤＫ２に配信された後、ユーザの希望により、ＤＫ２からＯＳ１の管理下のＤＫ１へ当該コンテンツが提供され、即時利用が可能となる。このように、コンテンツプロバイダサーバでは、事前配信により、ダウンロードアクセスの集中が防止される。
【０２０８】
図２１は、実施の形態１を高セキュリティＷｅｂサービス提供サーバに適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、Ｗｅｂ閲覧端末が接続されている。ハードウェアは、高セキュリティＷｅｂサービス提供サーバとして機能する。
【０２０９】
同図の高セキュリティＷｅｂサービス提供サーバにおいては、外部からアクセスできる環境がＯＳ２で、ローカルユーザだけがアクセスできる環境がＯＳ１で構築される。
【０２１０】
例えば、Ｗｅｂ公開コンテンツや利用ログは、ＯＳ２の管理下のＤＫ２に格納される。一方、公開したくないデータ等は、ＯＳ１の管理下のＤＫ１に格納される。この場合、設定ミス等により、公開したくない情報を誤ってＷｅｂ上で公開してしまうという事態が回避される。また、外部から悪意の第三者による攻撃をＯＳ２側が受けた場合であっても、ＯＳ１では、ネットワーク機能を除き、動作することが可能となる。
【０２１１】
以上本発明にかかる実施の形態１および２について図面を参照して詳述してきたが、具体的な構成例はこれらの実施の形態１および２に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０２１２】
例えば、前述した実施の形態１および２においては、マルチオペレーティングシステム制御を実現するためのプログラムを図２２に示したコンピュータ読み取り可能な記録媒体５００に記録して、この記録媒体５００に記録されたプログラムを同図に示したコンピュータ４００に読み込ませ、実行することにより各機能を実現してもよい。
【０２１３】
同図に示したコンピュータ４００は、上記プログラムを実行するＣＰＵ４１０と、キーボード、マウス等の入力装置４２０と、各種データを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４３０と、演算パラメータ等を記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４４０と、記録媒体５００からプログラムを読み取る読取装置４５０と、ディスプレイ、プリンタ等の出力装置４６０と、装置各部を接続するバス４７０とから構成されている。
【０２１４】
ＣＰＵ４１０は、読取装置４５０を経由して記録媒体５００に記録されているプログラムを読み込んだ後、プログラムを実行することにより、前述した機能を実現する。なお、記録媒体５００としては、光ディスク、フレキシブルディスク、ハードディスク等が挙げられる。
【０２１５】
また、実施の形態１および２においては、マルチオペレーティングシステムとして、図１に示した二つのＯＳ２０１  、ＯＳ２０２  を有する構成例について説明したが、三つ以上のＯＳを有する構成例も本発明に含まれる。
【０２１６】
例えば、ＯＳ１、ＯＳ２、ＯＳ３、・・・、ＯＳｎというｎ個のＯＳを有する構成の場合には、ＯＳ１走行中に割り込み（１）が発生した場合にＯＳ１からＯＳ２に切り替え、ＯＳ１走行中に割り込み（２）が発生した場合にＯＳ１からＯＳ３に切り替え、以下同様にして、ＯＳ１走行中に割り込み（ｎ−１）が発生した場合にＯＳ１からＯＳｎに切り替えるように制御すればよい。
【０２１７】
【発明の効果】
以上説明したように、本発明によれば、第１の仮想メモリ空間の論理アドレスＮに第１の切替命令を仮想記憶させ、第２の仮想メモリ空間の論理アドレスＮ＋１以降に各種命令を仮想記憶させておき、所定要因をトリガーとして、第２のオペレーティングシステムにおけるタスクが有る場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムの信頼性や、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができるという効果を奏する。
【０２１８】
また、本発明によれば、従来の共通部分が不要であるため、第１のオペレーティングシステムと第２のオペレーティングシステムとを独立的に動作させることができセキュリティを向上させることができるという効果を奏する。
【０２１９】
また、本発明によれば、第２のオペレーティングシステムにおけるタスクの有無を第１のオペレーティングシステムへ通知し、所定要因をトリガーとして、タスクが有りと通知された場合、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、一方、タスクが無しと通知された場合、該切り替えを禁止することとしたので、タスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができるという効果を奏する。
【０２２０】
また、本発明によれば、第１のオペレーティングシステムは、所定要因のうち特殊な要因が発生した場合、タスクの有無にかかわらず、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えることとしたので、特殊な要因に対応づけて強制的な切り替えを行うことができ、処理能力を向上させることができるという効果を奏する。
【０２２１】
また、本発明によれば、各タスクに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定し、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、決定工程で決定されたオペレーティングシステムへ切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、優先順位を考慮したシステムにおいてもタスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができるという効果を奏する。
【０２２２】
また、本発明によれば、各タスクに付与された優先順位に基づいて、両オペレーティングシステムのうち切り替え先のオペレーティングシステムを決定し、切り替え先のオペレーティングシステムにタスクが有る場合、稼働中のオペレーティングシステムから、決定手段で決定されたオペレーティングシステムへ切り替え、一方、タスクが無い場合、該切り替えを禁止することとしたので、優先順位を考慮したシステムにおいてもタスクが無い場合の無駄な切り替えが防止され処理能力を向上させることができるという効果を奏する。
【０２２３】
また、本発明は、請求項１〜４のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させることとしたので、そのプログラムがコンピュータ読み取り可能となり、これによって、請求項１〜４のいずれか一つに記載された発明の動作をコンピュータによって実行することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる実施の形態１の概略構成を示すブロック図である。
【図２】同実施の形態１の具体的構成を示すブロック図である。
【図３】同実施の形態１におけるマルチオペレーティングシステム間のメモリマッピングを説明する図である。
【図４】同実施の形態１の動作原理を説明する図である。
【図５】同実施の形態１の動作原理を説明する図である。
【図６】同実施の形態１の動作例１を説明する図である。
【図７】同実施の形態１の動作例２を説明する図である。
【図８】同実施の形態１の動作例３を説明する図である。
【図９】同実施の形態１の動作例４を説明する図である。
【図１０】図２に示したＯＳ２０１  側で実行されるタイマ処理を説明するフローチャートである。
【図１１】図２に示したＯＳ２０２  側で実行されるタイマ処理を説明するフローチャートである。
【図１２】本発明にかかる実施の形態２の構成を示すブロック図である。
【図１３】図１２に示したスケジューラ２０２１  、２０２２  の動作を説明するフローチャートである。
【図１４】図１２に示したＯＳ切り替え制御部１００の動作を説明するフローチャートである。
【図１５】本発明にかかる実施の形態１の応用例１〜４を説明する図である。
【図１６】同実施の形態１をシステム移行に適用した場合を説明する図である。
【図１７】同実施の形態１を高セキュリティゲートウェイに適用した場合を説明する図である。
【図１８】同実施の形態１をデスクトップＧｒｉｄ端末に適用した場合を説明する図である。
【図１９】同実施の形態１を遠隔管理端末に適用した場合を説明する図である。
【図２０】同実施の形態１を高効率ネットサービス提供端末に適用した場合を説明する図である。
【図２１】同実施の形態１を高セキュリティＷｅｂサービス提供サーバに適用した場合を説明する図である。
【図２２】同実施の形態１および２の変形例の構成を示すブロック図である。
【図２３】従来のマルチオペレーティングシステムの構成例１を示すブロック図である。
【図２４】従来のマルチオペレーティングシステムの構成例２を示すブロック図である。
【符号の説明】
１０  ハードウェア
２０１  ，２０２  ＯＳ
１２  物理メモリ
２１１  ，２１２  割り込み振分処理部
２２１  ，２２２  割り込み処理部
４０１  ，４０２  仮想メモリ空間
２６１  ，２６２  タスク管理テーブル
２７１  ，２７２  スケジューラ
２８１  ，２８２  タイマ管理テーブル
２９１  ，２９２  切り替え禁止フラグ設定部
Ｆ１２，Ｆ２１  切り替え禁止フラグ
２００１  ，２００２  ＯＳ
１００  ＯＳ切り替え制御部
【図１】
2004252761.tif 000003
【図２】
2004252761.tif 000004
【図３】
2004252761.tif 000005
【図４】
2004252761.tif 000006
【図５】
2004252761.tif 000007
【図６】
2004252761.tif 000008
【図７】
2004252761.tif 000009
【図８】
2004252761.tif 000010
【図９】
2004252761.tif 000011
【図１０】
2004252761.tif 000012
【図１１】
2004252761.tif 000013
【図１２】
2004252761.tif 000014
【図１３】
2004252761.tif 000015
【図１４】
2004252761.tif 000016
【図１５】
2004252761.tif 000017
【図１６】
2004252761.tif 000018
【図１７】
2004252761.tif 000019
【図１８】
2004252761.tif 000020
【図１９】
2004252761.tif 000021
【図２０】
2004252761.tif 000022
【図２１】
2004252761.tif 000023
【図２２】
2004252761.tif 000024
【図２３】
2004252761.tif 000025
【図２４】
2004252761.tif 000026