(57)【要約】【課題】複数のオペレーションシステムの実行中に、一方のオペレーティングシステムに実行させたくない処理を回避すること。【解決手段】一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、動作中のオペレーティングシステム（ＯＳ−Ａ１００）の所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、同時に動作している他のオペレーティングシステム（ＯＳ−Ｂ１１０）への切替え処理をおこなう。そして、他のオペレーティングシステム（ＯＳ−Ｂ１１０）で特定の命令群に対する代替え処理をおこなう。【選択図】      図２
2004295261.tif 000002
【特許請求の範囲】
【請求項１】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、
動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定工程と、
前記命令群判定工程が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理工程と、
を含んだことを特徴とするオペレーティングシステム制御方法。
【請求項２】
前記命令群判定工程は、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことを特徴とする請求項１に記載のオペレーティングシステム制御方法。
【請求項３】
前記命令群判定工程は、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して前記判定をおこなうことを特徴とする請求項１または２に記載のオペレーティングシステム制御方法。
【請求項４】
前記命令群判定工程は、前記特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることを特徴とする請求項１〜３のいずれか一つに記載のオペレーティングシステム制御方法。
【請求項５】
前記命令群判定工程は、前記特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことを特徴とする請求項１〜４のいずれか一つに記載のオペレーティングシステム制御方法。
【請求項６】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、
動作中の一のオペレーティングシステムの処理として次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなった結果、前記一のオペレーティングシステムにおいて前記特定の命令群に属する命令であると判定されて、自己のオペレーティングシステムに切替えられた場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理工程と、
を含んだことを特徴とするオペレーティングシステム制御方法。
【請求項７】
前記代替処理工程は、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることを特徴とする請求項６に記載のオペレーティングシステム制御方法。
【請求項８】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、
動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなうとともに前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理工程、
を含んだことを特徴とするオペレーティングシステム制御方法。
【請求項９】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、
動作中の一のオペレーティングシステムの所定の処理が実行される際に、自己のオペレーティングシステムに切替えられた場合に、前記一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定工程と、
前記命令群判定工程が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理工程と、
を含んだことを特徴とするオペレーティングシステム制御方法。
【請求項１０】
前記命令群判定工程は、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことを特徴とする請求項９に記載のオペレーティングシステム制御方法。
【請求項１１】
前記命令群判定工程は、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して前記判定をおこなうことを特徴とする請求項９または１０に記載のオペレーティングシステム制御方法。
【請求項１２】
前記命令群判定工程は、前記特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることを特徴とする請求項９〜１１のいずれか一つに記載のオペレーティングシステム制御方法。
【請求項１３】
前記命令群判定工程は、前記特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことを特徴とする請求項９〜１２のいずれか一つに記載のオペレーティングシステム制御方法。
【請求項１４】
前記代替処理工程は、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることを特徴とする請求項９〜１３のいずれか一つに記載のオペレーティングシステム制御方法。
【請求項１５】
請求項１〜１４のいずれか一つに記載されたオペレーティングシステム制御方法をコンピュータに実行させるプログラム。
【請求項１６】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムを制御するオペレーティングシステム制御装置であって、
動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定手段と、
前記命令群判定手段が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理手段と、
切り替えられた前記他のオペレーティングシステムで、前記特定の命令群に対する代替え処理をおこなう代替え処理手段と、
を備えたことを特徴とするオペレーティングシステム制御装置。
【請求項１７】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムを制御するオペレーティングシステム制御装置であって、
動作中の一のオペレーティングシステムの所定の処理が実行される場合に、他のオペレーティングシステムへの切替え処理をおこなう切替え処理手段と、
切り替えられた前記他のオペレーティングシステムで、前記一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定手段と、
切り替えられた前記他のオペレーティングシステムで、前記命令群判定手段が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理手段と、
を備えたことを特徴とするオペレーティングシステム制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置に関する。
【０００２】
【従来の技術】
通常のコンピュータでは、一つのオペレーティングシステムがプロセッサ、メモリ、二次記憶装置などのコンピュータ資源を管理し、コンピュータが効率良く動作できるように資源スケジュールを実施している。しかし、オペレーティングシステムには、バッチ処理に優れているもの、ＴＳＳ（Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ）に優れているもの、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）に優れているものなど様々な種類があることから、各ＯＳの特徴を活かして複数のＯＳを同時に利用したいという要求がある。
【０００３】
たとえば、大型計算機においては、実際の業務に伴うオンライン処理を実行するオペレーティングシステムと、開発用のオペレーティングシステムとを一台のコンピュータで動作させたいという要求がある。あるいは、ＧＵＩの整っているオペレーティングシステムと、実時間性に優れているオペレーティングシステムとを同時に稼動させたいという要求もある。
【０００４】
しかしながら、個々のオペレーティングシステムは、単独でコンピュータ資源の管理を実施することを前提として設計されていることから、複数のオペレーティングシステムを共存させるためには、個々のオペレーティングシステムに対して何らかの改造が必要となる。
【０００５】
特に、あるオペレーティングシステムを起動した後で他のオペレーティングシステムを起動するためには、先に起動したオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを起動する必要がある。したがって、他のオペレーティングシステムを物理メモリへロードする場合に、先に起動したオペレーティングシステムがロードされている物理メモリ領域が上書きされることや、コンピュータに接続された入出力装置の初期化が繰り返しおこなわれることなどを防ぐ必要がある。
【０００６】
そこで、先に起動したオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを起動する技術が開発されている（たとえば、特許文献１、２および３参照。）。
【０００７】
また、先に起動したオペレーティングシステムの走行環境を破壊しないように他のオペレーティングシステムを起動する場合に利用可能な技術として、プログラムの内容を変更する技術が開発されている（たとえば、特許文献４〜７参照。）。
【０００８】
【特許文献１】
特開平１１−１４９３８５号公報
【特許文献２】
特開２００１−２１６１７２号公報
【特許文献３】
特開平８−２１２０８９号公報
【特許文献４】
特開２０００−１８１７２５号公報
【特許文献５】
特開２０００−３０５７６８号公報
【特許文献６】
特開平１１−６５８５４号公報
【特許文献７】
特開平６−３３２７５１号公報
【０００９】
【発明が解決しようとする課題】
しかしながら、かかる従来技術では、オペレーティングシステムの起動の際に他のオペレーティングシステムの走行環境を破壊しないように防止する技術であり、既に実行中の複数のオペレーティングシステムに対するものではない。また、走行環境を破壊しない処理であっても、同時に複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理が存在する場合もある。
【００１０】
また、かかる従来技術では、後から起動するオペレーティングシステムを改造する必要があるか、あるいは、改造する必要がない場合にも、特別なハードウェアが必要であるなどの問題がある。
【００１１】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、複数のオペレーションシステムの実行中に、一方のオペレーティングシステムに実行させたくない処理を回避することができるオペレーティングシステム制御方法およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置を提供することを目的とする。また、この発明の別の目的は、複数のオペレーションシステムの実行中に、一方のオペレーティングシステムに実行させたくない処理を回避するとともに、オペレーティングシステムの改造を不要とし、もって開発期間の短縮および開発コストの低減を図ることができるオペレーティングシステム制御方法およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置を提供することである。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定工程と、前記命令群判定工程が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理工程と、を含んだことを特徴とする。
【００１３】
この請求項１の発明によれば、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、前定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。また、本発明によれば、特定命令の判定によって代替え処理をおこなわずにすむ場合には、オペレーティングシステムの切替えをする必要がないので、命令判定から代替え処理の速度を向上させることができる。
【００１４】
また、請求項２にかかる発明は、請求項１に記載のオペレーティングシステム制御方法において、前記命令群判定工程は、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことを特徴とする。
【００１５】
この請求項２の発明によれば、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことで、実行中のオペレーティングシステムの処理から自動的に制御を受け取って代替え処理をおこなうことができる。
【００１６】
また、請求項３にかかる発明は、請求項１または２に記載のオペレーティングシステム制御方法において、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して前記判定をおこなうことを特徴とする。
【００１７】
この請求項３の発明によれば、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して判定をおこなうことで、次に実行される命令の判定を確実におこなうことができる。
【００１８】
また、請求項４にかかる発明は、請求項１〜３のいずれか一つに記載のオペレーティングシステム制御方法において、前記命令群判定工程は、前記特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることを特徴とする請求項１〜３のいずれか一つに記載のオペレーティングシステム制御方法。
【００１９】
この請求項４の発明によれば、特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることで、特定の命令群が連続している場合にも代替処理をおこなうことができる。
【００２０】
また、請求項５にかかる発明は、請求項１〜４のいずれか一つに記載のオペレーティングシステム制御方法において、前記命令群判定工程は、前記特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことを特徴とする。
【００２１】
この請求項５の発明によれば、特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて判定をおこなうことで、特定の命令群であるか否かを効率良く判定することができる。
【００２２】
また、請求項６にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、動作中の一のオペレーティングシステムの処理として次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなった結果、前記一のオペレーティングシステムにおいて前記特定の命令群に属する命令であると判定されて、自己のオペレーティングシステムに切替えられた場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理工程と、を含んだことを特徴とする。
【００２３】
この請求項６の発明によれば、動作中の一のオペレーティングシステムの処理として次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなった結果、一のオペレーティングシステムにおいて特定の命令群に属する命令であると判定されて、自己のオペレーティングシステムに切替えられた場合に、特定の命令群に対する代替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。
【００２４】
また、請求項７にかかる発明は、請求項６に記載のオペレーティングシステム制御方法において、前記代替処理工程は、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることを特徴とする。
【００２５】
この請求項７の発明によれば、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることで、実行不要な命令群をスキップして処理の効率化を図ることができる。
【００２６】
また、請求項８にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなうとともに前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理工程、を含んだことを特徴とする。
【００２７】
この請求項８の発明によれば、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなうとともに前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。また、切り替えた他のオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができる。
【００２８】
また、請求項９にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムの動作を制御するオペレーティングシステム制御方法であって、動作中の一のオペレーティングシステムの所定の処理が実行される際に、自己のオペレーティングシステムに切替えられた場合に、前記一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定工程と、前記命令群判定工程が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理工程と、を含んだことを特徴とする。
【００２９】
この請求項９の発明によれば、動作中の一のオペレーティングシステムの所定の処理が実行される際に、自己のオペレーティングシステムに切替えられた場合に、一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、特定の命令群に対する代替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。また、切り替えたオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができる。
【００３０】
また、請求項１０にかかる発明は、請求項９に記載のオペレーティングシステム制御方法において、前記命令群判定工程は、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことを特徴とする。
【００３１】
この請求項１０の発明によれば、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことで、実行中のオペレーティングシステムの処理から自動的に制御を受け取って代替え処理をおこなうことができる。
【００３２】
また、請求項１１にかかる発明は、請求項９または１０に記載のオペレーティングシステム制御方法において、前記命令群判定工程は、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して前記判定をおこなうことを特徴とする。
【００３３】
この請求項１１の発明によれば、割込みが発生した際に中央演算装置がスタックに積んだ次命令アドレスを用いて次に実行される命令を取り出し、該取り出した命令に対して判定をおこなうことで、次に実行される命令の判定を確実におこなうことができる。
【００３４】
また、請求項１２にかかる発明は、請求項９〜１１のいずれか一つに記載のオペレーティングシステム制御方法において、前記命令群判定工程は、前記特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることを特徴とする。
【００３５】
この請求項１２の発明によれば、特定の命令群が連続している場合に、該連続する特定の命令群の最後の命令に続く命令のアドレスに中央演算装置がスタックに積んだ次命令アドレスを書き換えることで、特定の命令群が連続している場合にも代替処理をおこなうことができる。
【００３６】
また、請求項１３にかかる発明は、請求項９〜１２のいずれか一つに記載のオペレーティングシステム制御方法において、前記命令群判定工程は、前記特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことを特徴とする。
【００３７】
この請求項１３の発明によれば、特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことで、特定の命令群であるか否かを効率良く判定することができる。
【００３８】
また、請求項１４にかかる発明は、請求項９〜１３のいずれか一つに記載のオペレーティングシステム制御方法において、前記代替処理工程は、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることを特徴とする。
【００３９】
この請求項１４の発明によれば、いくつかの特定の命令群に対しては代替処理をおこなうことなくスキップすることで、実行不要な命令群をスキップして処理の効率化を図ることができる。
【００４０】
また、請求項１５にかかる発明は、請求項１〜１４のいずれか一つに記載された方法をコンピュータに実行させるプログラムであるので、請求項１〜１４のいずれか一つの動作をコンピュータによって実行することができる。
【００４１】
また、請求項１６にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムを制御するオペレーティングシステム制御装置であって、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定手段と、前記命令群判定手段が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなう切替え処理手段と、切り替えられた前記他のオペレーティングシステムで、前記特定の命令群に対する代替え処理をおこなう代替え処理手段と、を備えたことを特徴とする。
【００４２】
この請求項１６の発明によれば、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、特定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこない、切替えられた他のオペレーティングシステムで、特定の命令群に対する代替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。また、本発明によれば、特定命令の判定によって代替え処理をおこなわずにすむ場合には、オペレーティングシステムの切替えをする必要がないので、命令判定から代替え処理の速度を向上させることができる。
【００４３】
また、請求項１７にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムを制御するオペレーティングシステム制御装置であって、動作中の一のオペレーティングシステムの所定の処理が実行される場合に、他のオペレーティングシステムへの切替え処理をおこなう切替え処理手段と、切り替えられた前記他のオペレーティングシステムで、前記一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこなう命令群判定手段と、切り替えられた前記他のオペレーティングシステムで、前記命令群判定手段が特定の命令群に属する命令であると判定をおこなった場合に、前記特定の命令群に対する代替え処理をおこなう代替え処理手段と、を備えたことを特徴とする。
【００４４】
この請求項１７の発明によれば、動作中の一のオペレーティングシステムの所定の処理が実行される場合に、他のオペレーティングシステムへの切替え処理をおこない、切り替えられた他のオペレーティングシステムで、一のオペレーティングシステムにおいて次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、切り替えられた他のオペレーティングシステムで、特定の命令群に属する命令であると判定をおこなった場合に、特定の命令群に対する代替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができる。また、切り替えたオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができる。
【００４５】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置の好適な実施の形態を詳細に説明する。
【００４６】
なお、本実施の形態では、ＣＰＵ（中央演算装置：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）として、Ｉｎｔｅｌ（Ｒ）社のＰｅｎｔｉｕｍ（Ｒ）（ＩＡ−３２アーキテクチャ）を採用した例をもとに説明する。以下説明で用いる用語をＩＡ−３２アーキテクチャでは、割り込みベクタテーブルは割り込みディスクリプタテーブルと、割り込みベクタテーブルレジスタは割り込みディスクリプタテーブルレジスタ（ＩＤＴＲ）と、ページテーブルレジスタはコントロール３レジスタ（ＣＲ３）と、プログラムカウンタ（ＰＣ）はインストラクションポインタ（ＥＩＰ）と、トレースモードはデバッグモード（シングル・ステップ・モード）と、トレース例外はデバッグ例外と呼ぶ。
【００４７】
（実施の形態１）
図１は、この発明の実施の形態１であるマルチオペレーティングシステムおよびオペレーティングシステム制御装置の機能的構成を示すブロック図である。本実施の形態のオペレーティングシステム制御装置は、図１に示すように、ハードウェア１２０と、ＯＳ−Ａ１００と、ＯＳ−Ｂ１１０と、ＡＰ（アプリケーションプログラム）１３０，１４０から構成されている。
【００４８】
同マルチオペレーティングシステムでは、ＯＳ−Ａ１００からＯＳ−Ｂ１１０へ、またはＯＳ−Ｂ１１０からＯＳ−Ａ１００への切り替えが割り込み処理ルーチンの中で実行される。割り込みの発生要因としては、後述するトレース例外処理の中の次命令の特定命令判定処理によって次命令が特定命令群であると判定された場合に、ＯＳ−Ａ１００からＯＳ−Ｂ１１０へ切り替えられるようになっている。この他の割り込み要因としては、タイマ割り込みによる定期的な切り替え要求や、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カードからのハードウェア割り込み等が挙げられる。
【００４９】
図１において、ハードウェア１２０は、計算機資源であり、制御部１２５と、物理メモリ１２６と、割り込みベクタテーブルレジスタ１２１と、ページテーブルレジスタ１２２と、その他のレジスタ１２３と、プログラムカウンタ１２４や、図示しないキーボード、ディスプレイ等から構成されている。
【００５０】
ハードウェア１２０には、マルチ構成のＯＳ−Ａ１００およびＯＳ−Ｂ１１０が存在している。ＯＳ−Ａ１００およびＯＳ−Ｂ１１０のそれぞれは、ハードウェア１２０の計算機資源を管理し、割り込み処理ルーチンの中で切り替えられる。すなわち、ある時間を考えると、ハードウェア１２０は、一つのＯＳ（ＯＳ−Ａ１００およびＯＳ−Ｂ１１０）により占有される。
【００５１】
ＯＳ−Ａ１００は、割り込み振分け処理部１０１と、ＯＳ切替え処理部１０２と、トレース例外処理部１０３と、割り込みベクタテーブル１０５と、ページテーブル１０６と、レジスタ退避領域１０７等から構成されている。また、トレース例外処理部１０３は、特定命令判定処理部１０４を備えている。ＡＰ１３０は、ＯＳ−Ａ１００上で走行するアプリケーションプログラムである。
【００５２】
一方、ＯＳ−Ｂ１１０は、ＯＳ−Ａ１００に併設されており、割り込み振分け処理部１１１と、ＯＳ切替え処理部１１２と、代替え処理部１１３と、割り込みベクタテーブル１１４と、ページテーブル１１５と、レジスタ退避領域１１６等から構成されている。ＡＰ１４０は、ＯＳ−Ｂ１１０上で走行するアプリケーションプログラムである。
【００５３】
ハードウェア１２０において、制御部１２５は、ＣＰＵ等であり、プログラム実行により各部を制御する。物理メモリ１２６は、物理的に実在する大容量の記憶装置であり、仮想記憶制御方式に用いられ、各種命令やデータ等を実際に記憶する。
【００５４】
割り込みベクタテーブルレジスタ１２１は、割り込みに応じた割込番号を格納するレジスタである。この割込番号は、後述する割り込みベクタテーブル１０５または割り込みベクタテーブル１１４での割り込み処理ルーチンの論理アドレスに対応している。
【００５５】
ページテーブルレジスタ１２２は、後述するページテーブル１０６またはページテーブル１１５へのページインデックスを格納するレジスタである。その他レジスタ１２３は、汎用レジスタ、フラグレジスタ等である。プログラムカウンタ（ＰＣ）１２４は、仮想メモリ空間から命令をフェッチする論理アドレスを１インクリメントする。
【００５６】
ＯＳ−Ａ１００において、割り込み振分け処理部１０１は、割り込み発生時に、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１０５を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分け処理部１０１の処理は、割り込み発生時に制御部１２５内部で実行される。
【００５７】
ＯＳ切替え処理部１０２は、ＯＳ−Ａ１００からＯＳ−Ｂ１１０への切替えの際のレジスタなどの待避、トレース例外時のスタックの未使用レジスタへの格納および切替え処理をおこなうものである。
【００５８】
トレース例外処理部１０３は、ＣＰＵの走行モードをトレースモード（ＩＡ−３２アーキテクチャでは、デバッグモードと呼ぶ。さらに詳しく言うと、１命令実行毎にトレース例外が発生するモードを、シングル・ステップ・モードと呼ぶ。）に設定し、一つの命令を実行するごとにトレース例外（ｉｎｔ  ０ｘ０１）が発生した場合にに実行されるものである。このトレース例外処理部１０３は、１命令実行毎にトレース例外が発生したときに実行されるように、割り込みベクタテーブルレジスタ（ＩＤＴＲ）１２１で指定されるＯＳ−Ａ１００の割り込みベクタテーブル１０５に登録されている。そして、このトレース例外処理部１０３には、特定命令判定処理部１０４を有し、特定命令判定処理部１０４は、トレース例外発生時にＣＰＵがスタックに積んだプログラムカウンタで指定される次命令を読み出し、読み出した命令がＯＳ−Ａの走行環境を破壊するような命令群の先頭の命令であるか否かを調べるものである。なお、トレースモードの設定は、フラグレジスタ（ＥＦＬＡＧＳ）の所定のビットをセットすることによっておこなう。
【００５９】
ページテーブル１０６は、仮想メモリ空間の各仮想ページと、物理メモリ１２の各物理ページとの対応関係を表すテーブルである。
【００６０】
レジスタ退避領域１０７は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２、その他レジスタ１２３）の内容を退避するための領域である。具体的には、ＯＳ−Ａ１００からＯＳ−Ｂ１１０へ切り替えられる場合、レジスタ退避領域１０７には、ＯＳ−Ａ１００に対応するレジスタの内容が退避される。
【００６１】
ＯＳ−Ｂ１１０において、割り込み振分け処理部１１１は、割り込み発生時に、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１１４を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分け処理部１１１の処理は、割り込み発生時に制御部１２５内部で実行される。
【００６２】
ＯＳ切替え処理部１１２は、ＯＳ−Ｂ１１０からＯＳ−Ａ１００への切替えの際のレジスタなどの待避、トレース例外時のスタックの未使用レジスタへの格納および切替え処理をおこなうものである。
【００６３】
代替え処理部１１３は、ＯＳ−Ａ１００の特定命令判定処理部１０４による判定結果が特定命令群である場合に、その特定命令に対する代替え処理をおこなうものである。
【００６４】
ページテーブル１１５は、仮想メモリ空間の各仮想ページと、物理メモリ１２６の各物理ページとの対応関係を表すテーブルである。
【００６５】
レジスタ退避領域１１６は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２、その他レジスタ１２３）の内容を退避するための領域である。具体的には、ＯＳ−Ｂ１１０からＯＳ−Ａ１００へ切り替えられる場合、レジスタ退避領域１０７には、ＯＳ−Ｂ１１０に対応するレジスタの内容が退避される。
【００６６】
次に、以上のように構成された本実施の形態のマルチオペレーティングシステムおよびオペレーティングシステム制御装置によるオペレーティングシステムの制御処理について説明する。
【００６７】
まず、本実施の形態に係るオペレーティングシステム制御方法による命令群代替処理の概念について説明する。図２は、本実施の形態に係るオペレーティングシステム制御方法による命令群代替処理の概念を説明するための説明図である。
【００６８】
図２には、オペレーティングシステムＯＳ−Ｂ１１０を物理メモリの高アドレス領域にロードして実行し、他のオペレーティングシステムＯＳ−Ａ１００を物理メモリの低アドレス領域にロードして実行している状態を示している。ここでは、ＯＳ−Ｂ１１０を物理メモリの高アドレス領域にＯＳ−Ａ１００を低アドレス領域にロードすることで説明するが、この高低が逆でもよい。
【００６９】
図２に示した状態で、ＯＳ−Ａ１００は、所定の処理をおこなう場合、ＣＰＵの走行モードをトレースモード（ＩＡ−３２アーキテクチャでは、デバッグモードと呼ぶ。さらに詳しく言うと、１命令実行毎にデバッグ例外が発生するモードを、シングル・ステップ・モードと呼ぶ。）に設定する。なお、トレースモードの設定は、フラグレジスタ（ＥＦＬＡＧＳ）の所定のビットをセットすることによっておこなう。
【００７０】
ここで、ＯＳ−Ａ１００が行う所定の処理は、任意に定めることが可能である。このような所定の処理としては、ＯＳ−Ａ１００とＯＳ−Ｂ１１０とが同時に稼働する場合に、ＯＳ−Ａ１００に実行させたくない処理や互いのＯＳの走行環境に影響を与えるような処理が該当する。このような処理としては、たとえば、ＯＳ−Ｂ１１０がＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）による通信をおこなっている場合におけるＯＳ−Ａ１００によるＬＡＮ通信処理がある。このような場合、ＯＳ−Ａ１００によるＬＡＮ通信処理を代替え処理する。
【００７１】
また、ＯＳ−Ｂ１１０がマウス割り込みやキーボード割り込みを検出したとき、すなわち、ユーザがコンピュータを操作しているとにおけるフレキシブルディスクドライブ装置（ＦＤＤ）に対するアクセスを禁止してＯＳ−Ｂ１１０で代替え処理を行うことによって、ＦＤＤからの不正プログラムの侵入やデータ等へのＦＤへの不正コピー防止による機密漏洩を防止することができる。
【００７２】
さらに、ＯＳ−Ａ１００であるデータベースへのアクセスが認証されていない場合、このデータベースへのアクセス処理をＯＳ−Ｂ１１０で監視したり代替え処理をおこなうことによって、ＯＳ−Ａ１００による認証が成功した場合に監視をやめて、ＯＳ−Ａ１００からのデータベースアクセスを許容することが可能である。
【００７３】
ＣＰＵの走行モードをトレースモードに設定した場合、ＯＳ−Ａ１００では、一つの命令を実行するごとにトレース例外（ｉｎｔ  ０ｘ０１）が発生し、割込みベクタテーブルレジスタ（ＩＤＴＲ）１２１で指定されるＯＳ−Ａ１００の割込みベクタタテーブル１０５に登録されているトレース例外処理部１０３が起動される。
【００７４】
そして、起動されたトレース例外処理部１０３による処理の中で、前記トレース例外発生時にＣＰＵがスタックに積んだプログラムカウンタ（ＰＣ）１２５で指定される次命令を読み出し、読み出した命令がある特定の命令群の先頭の命令であるか否かを調べる。
【００７５】
ここで、スタックは、割込み発生時のオペレーティングシステムの走行状態を保存するためにレジスタなどの値を一時的に保存する記憶部である。このスタックに積まれるレジスタには、ＣＰＵによって自動的に値が積まれるレジスタとトレース例外処理部１０３によって値が積まれるレジスタとがある。
【００７６】
その結果、読み出した命令が当該ある特定の命令群の先頭の命令である場合には、ＯＳ切替え処理部１０２を起動してＯＳ−Ａ１００からＯＳ−Ｂ１１０への切替え処理をおこなう。そして、切替えられたＯＳ−Ｂ１１０の代替え処理部１１３によってその特定の命令群に対して代替え処理をおこなう。あるいは、いくつかの命令群に対しては代替え処理が必要ない場合もあり、そのような場合には、読み出した命令以下の命令群の実行をスキップする。
【００７７】
次に、ＯＳ−Ａ１００のトレース例外処理部１０３の処理手順について説明する。図３は、ＯＳ−Ａ１００のトレース例外処理部１０３の処理手順を示すフローチャートである。
【００７８】
ＯＳ−Ａ１００のトレース例外処理部１０３は、割り込み振分け処理部１０１によって起動されると、割り込みを禁止し（ステップＳ３０１）、走行状態を保存するために必要なレジスタのうちＣＰＵが保存していないレジスタや引数などをスタックに積む（ステップＳ３０２）。
【００７９】
そして、ＣＰＵがスタックに格納したプログラムカウンタ（ＰＣ）の値を取り出す（ステップＳ３０３）。ここで、プログラムカウンタ（ＰＣ）の値の取り出しは、スタックに対してＰＯＰ命令を実行しておこなうが、ＰＯＰ命令と同じ回数分、かつＰＯＰ命令で取り出した順番と逆の順番でＰＵＳＨ命令を実行することで、ステップＳ３０３実行前の状態に、スタックを戻すことができる。
【００８０】
そして、スタックから取り出したプログラムカウンタ（ＰＣ）の値を用いてＣＰＵが次に実行する命令を取得し（ステップＳ３０４）、取得した命令が特定の命令群の先頭の命令であるか否かを調べる（ステップＳ３０５）。
【００８１】
ここで、先頭の命令だけでは特定の命令群の先頭であるか否かが判定できない場合には、順次、次の命令を調べることによって特定の命令群であるか否かを判定する。すなわち、このトレース例外処理部１０３は、代替え処理が必要な特定の命令群を保持し、ＣＰＵが実行しようとする命令群とのマッチングをとることによって特定の命令群であるか否かの判定をおこなう。
【００８２】
そして、特定の命令群である場合には、ＯＳ切替え処理部１０２にジャンプする（ステップＳ３０６）。これにより、ＯＳ−Ａ１００からＯＳ−Ｂ１１０への切替え処理がおこなわれ、切替わったＯＳ−Ｂ１１０の代替え処理部１１３によって、その特定の命令群に対応する代替え処理がおこなわれることになる。
【００８３】
一方、取得した命令が特定の命令群の先頭の命令でない場合には、スタックに積んだレジスタの値を元に戻すなどの復帰処理をおこない（ステップＳ３０７）、割込み禁止を解除する（ステップＳ３０８）。
【００８４】
次に、本実施の形態によるＯＳ切り替え処理および命令の代替え処理について説明する。図４は、本実施の形態のＯＳ切り替え処理および命令の代替え処理の流れを示す説明図である。本実施の形態では、仮想メモリ空間４００および仮想メモリ空間４１０の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【００８５】
図４の例では、ＯＳ−Ａ１００が動作状態にあり、ＯＳ−Ｂ１１０が待機状態にあるものとする。この状態で、ＯＳ−Ａ１００側でトレース例外が発生すると、割り込み振分け処理部１０１は、▲１▼で、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１０５を参照し、ＯＳ切替え処理へジャンプする。
【００８６】
これにより、ＯＳ切り替え処理部１０２は、▲２▼で、仮想メモリ空間４００のＬ番地より実行される。以後、プログラムカウンタ１２４が１インクリメントされる毎に、仮想メモリ空間４００の番地が１つ移行し、当該番地の命令が以下のように順次実行される。
【００８７】
ＯＳ切替え中により優先度の高い割り込みが多重で入ってくることを防止するために、割り込み禁止命令を実行する。そして、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、仮想メモリ空間４００のＹ番地で、ＯＳ−Ａ１００に対応する割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３の内容がレジスタ退避領域１０７に退避される。
【００８８】
次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタに格納）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタに格納し、ＯＳ−Ｂ１１０に受け渡す。なお、本実施の形態では未使用レジスタまたは使用頻度の低いレジスタを利用してＯＳ−Ｂ１１０へのスタックの内容の受け渡しをおこなっているが、この他、たとえば共有メモリを介してスタックの内容をＯＳ−Ｂ１１０に受け渡すことも可能である。
【００８９】
次のＯＳ切替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１２１が、ＯＳ−Ａ１００用からＯＳ−Ｂ１１０用に切り替えられる。次のＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４００のＮ番地で、ページテーブルレジスタ１２２がＯＳ−Ａ１００用からＯＳ−Ｂ１１０用に変更される。これにより、ＯＳ−Ａ１００からＯＳ−Ｂ１１０へ切り替えられる（▲３▼）。
【００９０】
仮想メモリ空間４１０のＮ＋１番地でにおいて、まずＣＰＵのトレースモードを解除する。そして、次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタから取得）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタを介してＯＳ−Ａ１００から取得する。
【００９１】
次のＯＳ切替え処理（レジスタ退避領域からレジスタを復帰）では、以前にレジスタ退避領域１１６に退避されていたＯＳ−Ｂ１１０用のレジスタの内容が割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３にそれぞれ復帰される（▲４▼）。
【００９２】
次に、代替え処理部１１３によって、ＯＳ−Ａ１００で特定の命令と判定された命令群に対する代替え処理を実行する。そして、割り込み許可命令を実行し、仮想メモリ空間４１０のＳ番地でＩＲＥＴ命令が実行され（割り込み復帰命令）、前回ＯＳ−Ｂ１１０で割り込みが発生した箇所に復帰する（▲５▼）。
【００９３】
ＯＳ切替えの割り込みが発生したら、割り込み振分け処理部１１１は、▲１▼で、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１１４を参照し、ＯＳ切替え処理へジャンプする（▲６▼）。
【００９４】
次に、ＯＳ切替え中により優先度の高い割り込みが多重で入ってくることを防止するために、割り込み禁止命令を実行する。そして、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、ＯＳ−Ｂ１１０に対応する割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３の内容がレジスタ退避領域１１６に退避される（▲７▼）。
【００９５】
次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタに格納）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタに格納し、ＯＳ−Ａ１００に受け渡す。
【００９６】
次のＯＳ切り替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１２１が、ＯＳ−Ｂ１１０用からＯＳ−Ａ１００用に切り替えられる。次のＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４１０のＮ番地で、ページテーブルレジスタ１２２がＯＳ−Ｂ１１０用からＯＳ−Ａ１００用に変更される。これにより、ＯＳ−Ｂ１１０からＯＳ−Ａ１００へ切り替えられる（▲８▼）。
【００９７】
仮想メモリ空間４００Ｎ＋１番地で、ＯＳ切替え処理（トレース例外時のスタックを未使用レジスタから取得）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタを介してＯＳ−Ｂ１００から取得する（▲９▼）。そして、次のＯＳ切替え処理（トレース例外時のスタックの内容の書き込み）では、取得した値をスタックに書き込む。
【００９８】
次のＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）では、先にレジスタ退避領域１０７に退避されていたＯＳ−Ａ１００用のレジスタの内容が割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３にそれぞれ復帰される。
【００９９】
次に、割り込み許可命令を実行する。そして、仮想メモリ空間４００のＸ番地でＩＲＥＴ（割り込み復帰命令）が実行され、トレース例外発生時の次の命令または命令をとばして次に実行させてもよい命令に復帰する（丸付き１０）。
【０１００】
次に、本実施の形態に係るオペレーティングシステムを実行するコンピュータについて説明する。図５は、本実施の形態に係るオペレーティングシステムを実行するコンピュータを示す図である。
【０１０１】
図５に示すように、このコンピュータ５００は、オペレーティングシステムなどのプログラムを実行するＣＰＵ５１０と、キーボードやマウスなどの入力装置５２０と、各種データを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５３０と、実行するプログラムや演算の一時結果などを記憶する物理メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２６と、記録媒体５００からプログラムを読み取る読取装置５５０と、ディスプレイやプリンタなどの出力装置５６０と、装置各部を接続するバス５７０とから構成される。
【０１０２】
また、ＣＰＵ５１０は、読取装置５５０を経由して記録媒体５００に記録されているオペレーティングシステムなどのプログラムを物理メモリ１２６に読み込んで実行する。なお、記録媒体５００としては、光ディスク、フレキシブルディスク、ハードディスクなどが挙げられる。
【０１０３】
このように実施の形態１では、動作中のＯＳ−Ａ１００の中で特定の実行させたくない処理が実行される際に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、特定の命令群に対する代替え処理をおこなうＯＳ−Ｂ１１０への切替え処理をおこない、ＯＳ−Ｂ１１０側で、特定の命令群に対する代替え処理をおこなっているので、ＯＳ−Ａ１００とＯＳ−Ｂ１１０が同時に動作している場合に、ＯＳ−Ａ１００に実行させたくない処理を代替え処理によって回避することができる。
【０１０４】
また、本実施の形態では、特定命令の判定によって代替え処理をおこなわずにすむ場合には、ＯＳ−Ａ１００からＯＳ−Ｂ１１０への切替えをおこなう必要がなくなるので、命令判定から代替え処理の速度を向上させることができる。
【０１０５】
（実施の形態２）
実施の形態１のマルチオペレーティングシステムおよびオペレーティングシステム制御装置は、ＯＳ−Ａ１００の命令の判定処理をＯＳ−Ａ１００側でおこない、ＯＳ−Ｂ１１０側で特定命令の代替え処理をおこなっていたが、この実施の形態２のマルチオペレーティングシステムおよびオペレーティングシステム制御装置では、ＯＳ−Ａの命令の判定および代替え処理をＯＳ−Ｂ側でおこなうものである。
【０１０６】
図６は、実施の形態２のマルチオペレーティングシステムおよびオペレーティングシステム制御装置の機能的構成を示すブロック図である。本実施の形態のオペレーティングシステム制御装置は、図６に示すように、ハードウェア１２０と、ＯＳ−Ａ６００と、ＯＳ−Ｂ６１０と、ＡＰ（アプリケーションプログラム）１３０，１４０から構成されている。
【０１０７】
同マルチオペレーティングシステムでも、ＯＳ−Ａ６００からＯＳ−Ｂ６１０へ、またはＯＳ−Ｂ６１０からＯＳ−Ａ６００への切り替えが割り込み処理ルーチンの中で実行される。割り込みの発生要因としては、後述するトレース例外処理の中の次命令の特定命令判定処理によって次命令が特定命令群であると判定された場合に、ＯＳ−Ａ１００からＯＳ−Ｂ１１０へ切り替えられるようになっている。この他の割り込み要因としては、タイマ割り込みによる定期的な切り替え要求や、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カードからのハードウェア割り込み等が挙げられる。
【０１０８】
図６において、ハードウェア１２０は、計算機資源であり、その構成は実施の形態１と同様であるので説明を省略する。
【０１０９】
ＯＳ−Ａ６００は、割り込み振分け処理部１０１と、ＯＳ切替え処理部１０２と、割り込みベクタテーブル１０５と  、ページテーブル１０６と、レジスタ退避領域１０７等から構成されている。これら各部の構成は実施の形態１と同様であるため説明を省略する。
【０１１０】
一方、ＯＳ−Ｂ６１０は、ＯＳ−Ａ６００に併設されており、割り込み振分け処理部１１１と、ＯＳ切替え処理部１１２と、トレース例外処理部６１３と  、割り込みベクタテーブル１１４と  、ページテーブル１１５と、レジスタ退避領域１１６等から構成されている。ＡＰ１４０は、ＯＳ−Ｂ１１０上で走行するアプリケーションプログラムである。割り込み振分け処理部１１１、ＯＳ切替え処理部１１２、割り込みベクタテーブル１１４と  、ページテーブル１１５、レジスタ退避領域１１６の構成は実施の形態１と同様であるため説明を省略する。
【０１１１】
実施の形態２では、ＯＳ−Ｂ６１０にトレース例外処理部６１３を備えている点が実施の形態１と異なっている。トレース例外処理部６１３は、特定命令判定処理部６１４と代替え処理部６１５を備えている。ＡＰ１３０は、ＯＳ−Ａ１００上で走行するアプリケーションプログラムである。
【０１１２】
ＯＳ−Ｂ６１０において、トレース例外処理部６１３は、ＣＰＵの走行モードをトレースモードに設定し、ＯＳ−Ａ６００の一つの命令を実行するごとにトレース例外（ｉｎｔ  ０ｘ０１）が発生した場合にに実行されるものである。このトレース例外処理部６１３は、１命令実行毎にトレース例外が発生したときに実行されるように、割り込みベクタテーブルレジスタ（ＩＤＴＲ）１２１で指定されるＯＳ−Ｂ６１０の割り込みベクタテーブル１０５に登録されている。そして、このトレース例外処理部６１３には、特定命令判定処理部６１４を有し、特定命令判定処理部６１４は、トレース例外発生時にＣＰＵがスタックに積んだプログラムカウンタで指定される次命令を読み出し、読み出した命令が特定の命令群の先頭の命令であるか否かを調べるものである。なお、トレースモードの設定は、フラグレジスタ（ＥＦＬＡＧＳ）の所定のビットをセットすることによっておこなう。また、代替え処理部６１５は、ＯＳ−Ａ特定命令判定処理部６１４による判定結果が特定命令群である場合に、その特定命令に対する代替え処理をおこなうものである。
【０１１３】
次に、本実施の形態によるオペレーティングシステムの制御処理について説明する。まず、本実施の形態に係るオペレーティングシステム制御方法による命令群代替処理の概念について説明する。図７は、本実施の形態に係るオペレーティングシステム制御方法による命令群代替処理の概念を説明するための説明図である。
【０１１４】
図７には、オペレーティングシステムＯＳ−Ｂ１１０を物理メモリの高アドレス領域にロードして実行し、他のオペレーティングシステムＯＳ−Ａ１００を物理メモリの低アドレス領域にロードして実行している状態を示している。ここでは、ＯＳ−Ｂ１１０を物理メモリの高アドレス領域にＯＳ−Ａ１００を低アドレス領域にロードすることで説明するが、この高低が逆でもよい。
【０１１５】
図７に示した状態で、ＯＳ−Ａ６００は、ある特定の処理をおこなう場合、ＣＰＵの走行モードをトレースモードに設定する。なお、トレースモードの設定は、フラグレジスタ（ＥＦＬＡＧＳ）の所定のビットをセットすることによっておこなう。そして、ＯＳ切替え処理部１０２を起動してＯＳ−Ａ１００からＯＳ−Ｂ１１０への切替え処理をおこなう。
【０１１６】
すると、ＯＳ−Ａ６００では、一つの命令を実行するごとにトレース例外（ｉｎｔ  ０ｘ０１）が発生する。このとき、割込みベクタテーブルレジスタ（ＩＤＴＲ）１２１で指定されるＯＳ−Ｂ６１０の割込みベクタタテーブル１１４に登録されているトレース例外処理部６１３が起動される。
【０１１７】
そして、起動されたトレース例外処理部６１３による処理の中で、前記トレース例外発生時にＣＰＵがスタックに積んだプログラムカウンタ（ＰＣ）１２５で指定される次命令を読み出し、読み出した命令がある特定の命令群の先頭の命令であるか否かを調べる。
【０１１８】
その結果、読み出した命令が当該ある特定の命令群の先頭の命令である場合には、代替え処理部６１５によってその特定の命令群に対して代替え処理をおこなう。あるいは、いくつかの命令群に対しては代替え処理が必要ない場合もあり、そのような場合には、読み出した命令以下の命令群の実行をスキップする。
【０１１９】
図８は、本実施の形態のＯＳ切り替え処理および特定命令の判定および代替え処理の流れを示す説明図である。本実施の形態では、仮想メモリ空間４００および仮想メモリ空間４１０の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【０１２０】
図８の例では、ＯＳ−Ａ６００が動作状態にあり、ＯＳ−Ｂ６１０が待機状態にあるものとする。この状態で、ＯＳ−Ａ６００側である特定の処理をおこなうと、割り込み振分け処理部１０１は、▲１▼で、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１０５を参照し、ＯＳ切替え処理へジャンプする。
【０１２１】
これにより、ＯＳ切り替え処理部１０２は、▲２▼で、仮想メモリ空間４００のＬ番地より実行される。以後、プログラムカウンタ１２４が１インクリメントされる毎に、仮想メモリ空間４００の番地が１つ移行し、当該番地の命令が以下のように順次実行される。
【０１２２】
ＯＳ切替え中により優先度の高い割り込みが多重で入ってくることを防止するために、割り込み禁止命令を実行する。そして、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、仮想メモリ空間４００のＹ番地で、ＯＳ−Ａ６００に対応する割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３の内容がレジスタ退避領域１０７に退避される。
【０１２３】
次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタに格納）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタに格納し、ＯＳ−Ｂ６１０に受け渡す。なお、本実施の形態では未使用レジスタまたは使用頻度の低いレジスタを利用してＯＳ−Ｂ１１０へのスタックの内容の受け渡しをおこなっているが、この他、たとえば共有メモリを介してスタックの内容をＯＳ−Ｂ１１０に受け渡すことも可能である。
【０１２４】
次のＯＳ切替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１２１が、ＯＳ−Ａ６００用からＯＳ−Ｂ６１０用に切り替えられる。次のＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４００のＮ番地で、ページテーブルレジスタ１２２がＯＳ−Ａ６００用からＯＳ−Ｂ６１０用に変更される。これにより、ＯＳ−Ａ６００からＯＳ−Ｂ６１０へ切り替えられる（▲３▼）。
【０１２５】
仮想メモリ空間４１０のＮ＋１番地でにおいて、まずＣＰＵのトレースモードを解除する。そして、次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタから取得）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタを介してＯＳ−Ａ６００から取得する。
【０１２６】
次のＯＳ切替え処理（レジスタ退避領域からレジスタを復帰）では、以前にレジスタ退避領域１１６に退避されていたＯＳ−Ｂ６１０用のレジスタの内容が割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３にそれぞれ復帰される（▲４▼）。
【０１２７】
次に、特定命令判定処理部６１４によって、ＯＳ−Ａ６００の命令または命令群が特定命令か否かの判定処理をおこなう。そして特定命令である場合には、代替え処理部６１５によって、ＯＳ−Ａ６００で特定の命令と判定された命令群に対する代替え処理を実行する（▲５▼）。そして、割り込み許可命令を実行し、仮想メモリ空間４１０のＳ番地でＩＲＥＴ命令が実行され（割り込み復帰命令）、前回ＯＳ−Ｂ１１０で割り込みが発生した箇所に復帰する（▲６▼）。
【０１２８】
ＯＳ切替えの割り込みが発生したら、割り込み振分け処理部１１１は、▲１▼で、割り込みベクタテーブルレジスタ１２１の割込番号に基づいて、割り込みベクタテーブル１１４を参照し、ＯＳ切替え処理へジャンプする（▲７▼）。
【０１２９】
次に、ＯＳ切替え中により優先度の高い割り込みが多重で入ってくることを防止するために、割り込み禁止命令を実行する。そして、ＣＰＵをトレースモードに設定する。次にＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、ＯＳ−Ｂ６１０に対応する割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３の内容がレジスタ退避領域１１６に退避される（▲８▼）。
【０１３０】
次のＯＳ切替え処理（トレース例外時のスタックを未使用レジスタに格納）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタに格納し、ＯＳ−Ａ６００に受け渡す。
【０１３１】
次のＯＳ切り替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１２１が、ＯＳ−Ｂ６１０用からＯＳ−Ａ６００用に切り替えられる。次のＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４１０のＮ番地で、ページテーブルレジスタ１２２がＯＳ−Ｂ６１０用からＯＳ−Ａ６００用に変更される。これにより、ＯＳ−Ｂ６１０からＯＳ−Ａ６００へ切り替えられる（▲９▼）。
【０１３２】
仮想メモリ空間４００Ｎ＋１番地で、ＯＳ切替え処理（トレース例外時のスタックを未使用レジスタから取得）では、トレース例外時のスタックの内容、たとえばプログラムカウンタ（ＰＣ）の値等を未使用のレジスタまたは使用頻度の低いレジスタを介してＯＳ−Ｂ１００から取得する（丸付き１０）。そして、次のＯＳ切替え処理（トレース例外時のスタックの内容の書き込み）では、取得した値をスタックに書き込む。
【０１３３】
次のＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）では、先にレジスタ退避領域１０７に退避されていたＯＳ−Ａ１００用のレジスタの内容が割り込みベクタテーブルレジスタ１２１、ページテーブルレジスタ１２２およびその他レジスタ１２３にそれぞれ復帰される。
【０１３４】
次に、割り込み許可命令を実行する。そして、仮想メモリ空間４００のＸ番地でＩＲＥＴ（割り込み復帰命令）が実行され、トレース例外発生時の次の命令または命令をとばして次に実行させてもよい命令に復帰する。
【０１３５】
次に、ＯＳ−Ｂ６１０でおこなわれる特定命令判定処理および代替え処理について説明する。図９は、ＯＳ−Ｂ６１０のトレース例外処理部６１３の処理手順を示すフローチャートである。
【０１３６】
ＯＳ−Ｂ６１０のトレース例外処理部６１３は、割り込み振分け処理部１１１によって起動されると、割り込みを禁止し（ステップＳ９０１）、走行状態を保存するために必要なレジスタのうちＣＰＵが保存していないレジスタや引数などをスタックに積む（ステップＳ９０２）。
【０１３７】
そして、ＣＰＵがスタックに格納したプログラムカウンタ（ＰＣ）の値を取り出す（ステップＳ９０３）。ここで、プログラムカウンタ（ＰＣ）の値の取り出しは、スタックに対してＰＯＰ命令を実行しておこなうが、ＰＯＰ命令と同じ回数分、かつＰＯＰ命令で取り出した順番と逆の順番でＰＵＳＨ命令を実行することで、ステップＳ３０３実行前の状態に、スタックを戻すことができる。
【０１３８】
そして、スタックから取り出したプログラムカウンタ（ＰＣ）の値を用いてＣＰＵが次に実行する命令を取得し（ステップＳ９０４）、取得した命令が特定の命令群の先頭の命令であるか否かを調べる（ステップＳ９０５）。
【０１３９】
ここで、先頭の命令だけでは特定の命令群の先頭であるか否かが判定できない場合には、順次、次の命令を調べることによって特定の命令群であるか否かを判定する。すなわち、このトレース例外処理部６１３の特定命令判定処理部６１４は、代替え処理が必要な特定の命令群を保持し、ＣＰＵが実行しようとする命令群とのマッチングをとることによって特定の命令群であるか否かの判定をおこなう。
【０１４０】
そして、特定の命令群である場合には、その特定の命令群に対応する代替処理をおこなう（ステップＳ９０６）。ここで、代替処理としては、おこなうべき処理が何もない場合もある。そして、代替え処理した特定の命令群をスキップし（ステップＳ９０７）、ステップＳ９０４に戻って次の命令を取得し、取得した命令が新たな特定の命令群の始まりであるか否かを調べる。
【０１４１】
一方、取得した命令が特定の命令群の先頭の命令でない場合には、スタックに積んだレジスタの値を元に戻すなどの復帰処理をおこない（ステップＳ９０８）、割込み禁止を解除する（ステップＳ９０９）。
【０１４２】
このように実施の形態２では、動作中のＯＳ−Ａ６００の中で特定の実行させたくない処理が実行される際に、ＯＳ−Ａ６００からＯＳ−Ｂ６１０へ切替え処理をおこない、ＯＳ−Ｂ６１０側で、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、特定の命令群に対する代替え処理をおこなっているので、ＯＳ−Ａ１００とＯＳ−Ｂ１１０が同時に動作している場合に、ＯＳ−Ａ１００に実行させたくない処理を代替え処理によって回避することができる。
【０１４３】
また、実施の形態２では、切り替えたＯＳ−Ｂ６１０側で特定命令群の判定処理および代替え処理をおこなっているので、切替え元のＯＳ−Ａ６００の改造が不要になり、開発期間の短縮化を図ることができる。
【０１４４】
なお、実施の形態１および２では、ＯＳ−ＡとＯＳ−Ｂの二つのオペレーティングシステムを同時に稼働させる場合を例にあげて説明したが、３つ以上のオペレーティングシステムを稼働させる場合にも本発明を適用することが可能である。
【０１４５】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、動作中のオペレーティングシステムの所定の処理が実行される場合に、次に実行される命令が特定の命令群に属する命令であるか否かの判定をおこない、特定の命令群に属する命令であると判定をおこなった場合に、前定の命令群に対する代替え処理をおこなう他のオペレーティングシステムへの切替え処理をおこなうことで、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。また、本発明によれば、特定命令の判定によって代替え処理をおこなわずにすむ場合には、オペレーティングシステムの切替えをする必要がないので、命令判定から代替え処理の速度を向上させることができるという効果を奏する。
【０１４６】
また、請求項２にかかる発明によれば、コンピュータを構成する中央演算装置のトレースモードにおいて各命令が実行される際に発生する割込みの処理の中で前記判定をおこなうことで、実行中のオペレーティングシステムの処理から自動的に制御を受け取って代替え処理をおこなうことができるという効果を奏する。
【０１４７】
また、請求項３にかかる発明によれば、次に実行される命令の判定を確実におこなうことができるという効果を奏する。
【０１４８】
また、請求項４にかかる発明によれば、特定の命令群が連続している場合にも代替処理をおこなうことができるという効果を奏する。
【０１４９】
また、請求項５にかかる発明によれば、特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて判定をおこなうことで、特定の命令群であるか否かを効率良く判定することができるという効果を奏する。
【０１５０】
また、請求項６にかかる発明によれば、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。
【０１５１】
また、請求項７にかかる発明によれば、実行不要な命令群をスキップして処理の効率化を図ることができるという効果を奏する。
【０１５２】
また、請求項８にかかる発明によれば、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。また、本発明によれば、切り替えた他のオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができるという効果を奏する。
【０１５３】
また、請求項９にかかる発明によれば、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。また、切り替えたオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができるという効果を奏する。
【０１５４】
また、請求項１０にかかる発明によれば、実行中のオペレーティングシステムの処理から自動的に制御を受け取って代替え処理をおこなうことができるという効果を奏する。
【０１５５】
また、請求項１１にかかる発明によれば、次に実行される命令の判定を確実におこなうことができるという効果を奏する。
【０１５６】
また、請求項１２にかかる発明によれば、特定の命令群が連続している場合にも代替処理をおこなうことができるという効果を奏する。
【０１５７】
また、請求項１３にかかる発明によれば、特定の命令群の最初のいくつかの命令または最後のいくつかの命令を用いて前記判定をおこなうことで、特定の命令群であるか否かを効率良く判定することができるという効果を奏する。
【０１５８】
また、請求項１４にかかる発明によれば、実行不要な命令群をスキップして処理の効率化を図ることができるという効果を奏する。
【０１５９】
また、請求項１５にかかる発明は、請求項１〜１４のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【０１６０】
また、請求項１６にかかる発明によれば、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。また、本発明によれば、特定命令の判定によって代替え処理をおこなわずにすむ場合には、オペレーティングシステムの切替えをする必要がないので、命令判定から代替え処理の速度を向上させることができるという効果を奏する。
【０１６１】
また、請求項１７にかかる発明によれば、複数のオペレーティングシステムが同時に動作している場合に、一方のオペレーティングシステムに実行させたくない処理を代替え処理によって回避することができるという効果を奏する。また、切り替えたオペレーティングシステムで特定命令群の判定処理および代替え処理をおこなうので、切替え元のオペレーティングシステムの改造が不要になり、開発期間の短縮化を図ることができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１のマルチオペレーティングシステムおよびオペレーティングシステム制御装置の機能的構成を示すブロック図である。
【図２】実施の形態１のオペレーティングシステム制御方法による命令群代替処理の概念を説明するための説明図である。
【図３】実施の形態１のＯＳ−Ａのトレース例外処理部の処理手順を示すフローチャートである。
【図４】実施の形態１のＯＳ切り替え処理および命令の代替え処理の流れを示す説明図である。
【図５】実施の形態１のオペレーティングシステムを実行するコンピュータを示す図である。
【図６】実施の形態２のマルチオペレーティングシステムおよびオペレーティングシステム制御装置の機能的構成を示すブロック図である。
【図７】実施の形態２のオペレーティングシステム制御方法による命令群代替処理の概念を説明するための説明図である。
【図８】実施の形態２のＯＳ切り替え処理および特定命令の判定および代替え処理の流れを示す説明図である。
【図９】実施の形態２のＯＳ−Ａのトレース例外処理部の処理手順を示すフローチャートである。
【符号の説明】
１００，６００  ＯＳ−Ａ
１０１，１１１  割り込み振分け処理部
１０２，１１２  ＯＳ切替え処理部
１０３，６１３  トレース例外処理部
１０４，６１４  特定命令判定処理部
１０５，１１４  割り込みベクタタテーブル
１０６，１１５  ページテーブル
１０７，１１６  レジスタ退避領域
１１３，６１５  代替え処理部
１２０  ハードウェア
１２１  割り込みベクタテーブルレジスタ
１２２  ページテーブルレジスタ
１２３  その他レジスタ
１２４  プログラムカウンタ
１２５  制御部
１２６  物理メモリ
４００，４１０  仮想メモリ空間
５００  コンピュータ
５００  記録媒体
５２０  入力装置
５５０  読取装置
５６０  出力装置
５７０  バス
【図１】
2004295261.tif 000003
【図２】
2004295261.tif 000004
【図３】
2004295261.tif 000005
【図４】
2004295261.tif 000006
【図５】
2004295261.tif 000007
【図６】
2004295261.tif 000008
【図７】
2004295261.tif 000009
【図８】
2004295261.tif 000010
【図９】
2004295261.tif 000011