(57)【特許請求の範囲】
【請求項１】
複数個のオペレーティングシステムと、
前記複数個のオペレーティングシステムを切替える切替手段と、
外部に接続されるデバイスを特定する固有情報及び前記デバイスの構成制御を行うオペレーティングシステムを記憶する管理テーブルとを有し、
少なくとも１つの前記オペレーティングシステムは、前記管理テーブルに基づいて構成制御を行うオペレーティングシステムを選び、該選ばれたオペレーティングシステムが該当するデバイスの構成制御を行い、前記デバイスが複数のオペレーションシステムに共有される場合、前記デバイスを共有する前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行わないオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行う計算機システム。
【請求項２】
複数個のオペレーティングシステムと、
前記複数個のオペレーティングシステムを切替える切替手段と、
外部に接続されるデバイスを特定する固有情報及び前記デバイスに割り当てられた割込みレベルを記憶する管理テーブルと、
前記割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルとを有し、
少なくとも１つのオペレーティングシステムは、前記管理テーブルに基づいて割込みレベルを決定し、決定された前記割込みレベルと前記割込みテーブルに基づいて、構成制御を行うべきオペレーティングシステムを選び、該選ばれたオペレーティングシステムが該当するデバイスの構成制御を行い、前記デバイスが複数のオペレーティングシステムに共有される場合、前記デバイスを共有する前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行う計算機システム。
【請求項３】
複数のオペレーティングシステムを切替手段によって切替えて実行する計算機システムにおけるデバイスの構成制御方法であって、
切替手段によって切替えられたオペレーティングシステムは、予め登録された外部に接続されるデバイスを特定する固有情報及び前記デバイスの構成制御を行うオペレーティングシステムとを記憶する管理テーブルから構成制御を行うオペレーティングシステムを選び、
前記選ばれたオペレーティングシステムに当該切替えられたオペレーティングシステムが存在する場合、該切替えられたオペレーティングシステムが該当するデバイスの構成制御を行い、前記デバイスが複数のオペレーティングシステムに共有される場合、前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行わないオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行うデバイスの構成制御方法。
【請求項４】
請求項３において、
前記デバイス管理テーブルを参照したオペレーティングシステムが再起動処理中の場合には、前記デバイス管理テーブルを参照したオペレーティングシステムがデバイスの構成制御を中止するデバイスの構成制御方法。
【請求項５】
複数のオペレーティングシステムを切替手段によって切替えて実行する計算機システムにおけるデバイスの構成制御方法であって、
切替手段によって切替えられたオペレーティングシステムは、予め登録された外部に接続されるデバイスを特定する固有情報及び前記デバイスに割り当てられた割込みレベルを記憶する管理テーブルに基づいて割込みレベルを決定し、
予め登録された前記割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルと前記決定された割込みレベルから構成制御を行うべきオペレーティングシステムを選び、前記デバイスが複数のオペレーティングシステムに共有される場合、前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行わないオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行い、
該選ばれたオペレーティングシステムに当該切替えられたオペレーティングシステムが存在する場合、当該オペレーティングシステムが該当するデバイスの構成制御を行うデバ
イスの構成制御方法。
【請求項６】
請求項５において、
前記デバイス管理テーブルを参照したオペレーティングシステムが再起動処理中の場合には、前記デバイス管理テーブルを参照したオペレーティングシステムがデバイスの構成制御を中止するデバイスの構成制御方法。
【請求項７】
複数のオペレーティングシステムを切替手段によって切替えて実行する計算機システムにおけるデバイスの構成制御方法であって、
予め登録された外部に接続されるデバイスを特定する固有情報及び前記デバイスの構成制御を行うオペレーティングシステムとを記憶する管理テーブルから前記計算機システムにデバイスが接続されているか判定する第１のステップと、
前記デバイスが接続されている場合に、前記管理テーブルから構成制御を行うオペレーティングシステムを選ぶ第２のステップと、
前記選ばれたオペレーティングシステムに前記第１，第２のステップを実行したオペレーティングシステムが存在する場合、当該選ばれたオペレーティングシステムが該当するデバイスの構成制御を行い、前記デバイスが複数のオペレーティングシステムに共有される場合、前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行わないオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行うデバイスの構成制御方法。
【請求項８】
複数のオペレーティングシステムを切替手段によって切替えて実行する計算機システムにおけるデバイスの構成制御方法であって、
予め登録された外部に接続されるデバイスを特定する固有情報及び前記デバイスに割り当てられた割込みレベルを記憶する管理テーブルに基づいて前記計算機システムにデバイスが接続されているか判定する第１のステップと、
前記デバイスが接続されていると判定された場合に前記管理テーブルに基づいて割込みレベルを決定する第２のステップと、
予め登録された前記割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルと前記決定された割込みレベルから構成制御を行うべきオペレーティングシステムを選ぶ第３のステップと、
前記デバイスが複数のオペレーティングシステムに共有される場合、前記デバイスの構成制御を行うオペレーティングシステム以外のオペレーティングシステムは構成制御を行わないようにし、当該デバイスを共有する前記デバイスの構成制御を行わないオペレーティングシステムについて前記共有するデバイスを使用する登録処理を行い、
該選ばれたオペレーティングシステムに前記第３のステップを実行したオペレーティングシステムが存在する場合、当該オペレーティングシステムが該当するデバイスの構成制御を行うデバイスの構成制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数個のオペレーティングシステムを切替えて動作させる計算機システムに関し、特に同一の周辺デバイスを複数個のオペレーティングシステムで共有する高可用計算機およびその構成制御方式に関する。
【０００２】
【従来の技術】
一つの計算機システムで複数のオペレーティングシステムを動作させる技術として、従来から大型計算機において仮想計算機方式が実現されている（以下公知例１と称する）。この仮想計算機方式では、計算機システム内で平行して動作する複数個の仮想計算機それぞれで複数のユーザタスク（以降、プロセスおよびスレッドをまとめてタスクと称する）を切替えて処理を実行する。また仮想計算機方式では、仮想計算機制御プログラムが全ハードウェアを占有して管理し、それらを仮想化して仮想計算機を構成する。仮想計算機を構成する制御部は、物理メモリ，入出力機器装置，磁気ディスク装置，外部割込み等を仮想化する。
【０００３】
仮想計算機は、大型計算機内の一つのプロセスとして通常実現される。しかし仮想計算機とユーザタスクの関係を考慮すると、仮想計算機は一つのオペレーティングシステムであるとみなすことも可能である。従来の大型計算機では、いわば複数個のオペレーティングシステムを実行することが可能な計算機システムということができる。
【０００４】
一方、マイクロプロセッサの性能向上と、オペレーティングシステムの機能向上に伴い、複数個のオペレーティングシステムを一つの計算機システム上で同時動作させ、これらを必要に応じて動的に切替えて処理を行うニーズが高まっている。
【０００５】
一般に、工場やプラントなどの機械制御，車載ナビゲーションシステムといった分野では、外部環境変化に対して一定時間以内に応答することを保証するリアルタイム性や、長時間連続稼動を可能とする信頼性や高可用性が重要視される。このため割込み応答性が高くなおかつ低メモリ容量でモジュール構成を有するリアルタイム用オペレーティングシステム（リアルタイムＯＳ）が用いられることが多い。しかし一般的にリアルタイムＯＳは、リアルタイム制御や信頼性に重点をおいているため、対人間とのインターフェースに関して難点が多い。一方、汎用のパーソナルコンピュータ（ＰＣ）に用いられている事務処理用オペレーティングシステム（事務処理ＯＳ）は、画像を用いて計算機システムの操作を行えるようにするなど、対人間とのインターフェースに優れている。しかし事務処理ＯＳは人間との対話や科学計算，画像描画を主な目的としているため、割込み応答性能よりも処理のスループットに重点をおいている。また低メモリ容量モジュールで構成されるリアルタイムＯＳに比べ、２４時間連続運転といった信頼性を保証することは難しい。
【０００６】
このような複数個のオペレーティングシステムを切替えて動作させ計算機システムの可用性を高める技術として、特開平11−24943 号公報に開示された計算機再起動方法および計算機停止方法がある（以下公知例２と称する）。この従来技術は、オペレーティングシステムを有する計算機がソフトウェア障害を検出した際にカーネルを再起動するために、オペレーティングシステムのカーネルを再ロードする場合に、無停止モジュールが処理する外部割込みに対する割込み処理ハンドラの登録内容を主記憶に保持し、再ロード対象から外してカーネルを再ロード後再実行するものである。オペレーティングシステムを事務処理ＯＳ，無停止モジュールをリアルタイムＯＳにそれぞれ相当すると考えることで、前述の複数個のオペレーティングシステムを切替えて動作させるニーズを満たすことが可能となる。またこの従来技術は、事務処理ＯＳを再起動している期間でも、リアルタイムＯＳは停止することなく割込み処理を継続実行可能であることを示している。さらにこの従来技術では、無停止モジュールに係わるハードウェア資源と再初期化処理を無停止モジュール管理データ領域に登録し、カーネル再起動時にハードウェアに対する再初期化処理を実行する。
【０００７】
【発明が解決しようとする課題】
前述の複数個のオペレーティングシステムに切替えて動作させる計算機システムにおいて、複数個のオペレーティングシステム間で同一の周辺デバイスを共有して使用するために、特に周辺デバイスの構成制御処理において解決しなくてはならない課題が存在する。
【０００８】
すなわち公知例１において、大型計算機上で実行される複数個の仮想計算機はみな同一種であり、それらは同一の割込み処理体系や同一のプログラミング・インターフェースを用いて仮想計算機制御部に周辺デバイス処理を発行する。そのため単一の計算機システム上で複数個の相異なるオペレーティングシステムを実行する場合、それぞれ相異なるプログラミング・インターフェースを有するため、周辺デバイスを含むハードウェア資源を仮想化し、統一的に構成制御する仮想計算機制御部を用意することは困難である。
【０００９】
また公知例２において、無停止モジュールとオペレーティングシステムで共有されている同一周辺デバイスの構成制御はオペレーティングシステムから実行され、再構成制御は無停止モジュールに係わるデバイスドライバのアドレスをオペレーティングシステム上で設定することを必要としている。すなわち、無停止モジュールのみから処理されるデバイスまでオペレーティングシステムが構成制御や再構成制御を実行することとなる。そのため無停止モジュールがオペレーティングシステムとは独立したリアルタイムＯＳの場合、プログラミング・インターフェースやロードモジュールの管理体系が異なるため、全てのハードウェア資源を一方のオペレーティングシステムで構成制御するのは困難である。
【００１０】
本発明の目的は、複数個のオペレーティングシステムを切替えて動作する計算機システムにおいて、該複数個のオペレーティングシステムが同一の周辺デバイスを共有するために、あるいは排他的に使用するために必要な構成制御方法を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的は、本発明の計算機システムによれば、複数個のオペレーティングシステムと、複数個のオペレーティングシステムを切替える切替手段と、外部に接続されるデバイスを特定する固有情報及びデバイスの構成制御を行うオペレーティングシステムとを記憶する管理テーブルとを有し、少なくとも１つのオペレーティングシステムは、管理テーブルに基づいて構成制御を行うオペレーティングシステムを選び、選ばれたオペレーティングシステムが該当するデバイスの構成制御を行うことで達成することができる。
【００１２】
また上記目的は、本発明の計算機システムによれば、複数個のオペレーティングシステムと、複数個のオペレーティングシステムを切替える切替手段と、外部に接続されるデバイスを特定する固有情報及びデバイスに割り当てられた割込みレベルを記憶する管理テーブルと、割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルとを有し、少なくとも１つのオペレーティングシステムは、管理テーブルに基づいて割込みレベルを決定し、決定された割込みレベルと割込みテーブルに基づいて、構成制御を行うべきオペレーティングシステムを選び、選ばれたオペレーティングシステムが該当するデバイスの構成制御を行うことにより達成される。
【００１３】
また上記目的は、本発明の構成制御方法によれば、切替手段によって切替えられたオペレーティングシステムは、予め登録された外部に接続されるデバイスを特定する固有情報及びデバイスの構成制御を行うオペレーティングシステムとを記憶する管理テーブルから構成制御を行うオペレーティングシステムを選び、選ばれたオペレーティングシステムに当該切替えられたオペレーティングシステムが存在する場合、該切替えられたオペレーティングシステムが該当するデバイスの構成制御を行うことにより達成される。
【００１４】
また上記目的は、本発明の構成制御方法によれば、切替手段によって切替えられたオペレーティングシステムは、予め登録された外部に接続されるデバイスを特定する固有情報及びデバイスに割り当てられた割込みレベルを記憶する管理テーブルに基づいて割込みレベルを決定し、予め登録された割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルと決定された割込みレベルから構成制御を行うべきオペレーティングシステムを選び、選ばれたオペレーティングシステムに当該切替えられたオペレーティングシステムが存在する場合、当該オペレーティングシステムが該当するデバイスの構成制御を行うことにより達成される。
【００１５】
また上記目的は、本発明の構成制御方法によれば、予め登録された外部に接続されるデバイスを特定する固有情報及びデバイスの構成制御を行うオペレーティングシステムとを記憶する管理テーブルから計算機システムにデバイスが接続されているか判定する第１のステップと、デバイスが接続されている場合に、管理テーブルから構成制御を行うオペレーティングシステムを選ぶ第２のステップと、選ばれたオペレーティングシステムに第１，第２のステップを実行したオペレーティングシステムが存在する場合、当該選ばれたオペレーティングシステムが該当するデバイスの構成制御を行うことにより達成される。
【００１６】
また上記目的は、本発明の構成制御方法によれば、予め登録された外部に接続されるデバイスを特定する固有情報及びデバイスに割り当てられた割込みレベルを記憶する管理テーブルに基づいて計算機システムにデバイスが接続されているか判定する第１のステップと、デバイスが接続されていると判定された場合に管理テーブルに基づいて割込みレベルを決定する第２のステップと、予め登録された割込みレベルごとに起動するオペレーティングシステムを記憶する割込みテーブルと決定された割込みレベルから構成制御を行うべきオペレーティングシステムを選ぶ第３のステップと、該選ばれたオペレーティングシステムに第３のステップを実行したオペレーティングシステムが存在する場合、当該オペレーティングシステムが該当するデバイスの構成制御を行うことにより達成される。
【００１７】
【発明の実施の形態】
本発明による実施例について図面を用いて以下に説明する。
【００１８】
図１は本発明の第１の実施例による全体構成を示したものである。通常、計算機システムはプロセッサ１００，メモリ１０１，入出力制御装置１０２，ディスプレイ１０４，スイッチ１０５，センサ１０６などから構成される。プロセッサ１００，メモリ１０１，入出力制御装置１０２はプロセッサバス１０３を介して接続される。プロセッサ１００は複数個のオペレーティングシステムを動作させるためのマイクロプロセッサである。メモリ１０１は、オペレーティングシステム１１６，１１７，各オペレーティングシステムで使用する周辺デバイスを構成制御するためのデバイス初期化機能５１０，５１１，デバイス情報データベース５１２，５１３，ＯＳ間制御機能１２４を保持する。これらのプログラムはプロセッサ１００に読み出されて実行される。
【００１９】
入出力制御装置１０２は、画面表示用デバイスであるディスプレイ１０４，ユーザからの指示や周囲環境の変化を通知するスイッチ１０５とセンサ１０６，各プログラムやオペレーティングシステムを格納する二次記憶装置等を接続する。また、工場／プラント制御用、あるいは、組込み向け計算機システムを実現する場合、入出力制御装置１０２にはネットワーク１０９が接続されることがある。ネットワーク１０９には、通信機器などの入出力機器が接続される。なお、入出力制御装置１０２に接続されるディスプレイ１０４，スイッチ１０５，センサ１０６のうち、いずれかまたは全ては、システム構成によって省略されることもあり、さらに多様な入出力装置が接続されることもある。入出力制御装置１０２を含み入出力制御装置１０２に接続するこれらの装置を本実施例では以降周辺デバイスと称する。入出力制御装置１０２は、割込み信号線１０８によってプロセッサ１００と接続され、入出力動作完了などを通知する。図１では説明のため割込み信号線１０８とプロセッサバス１０３が別の装置であるように記載しているが、実際には、割込み信号線１０８はプロセッサバス１０３の一部である。プロセッサ１００の内部にはタイマ装置１０７が設けられており、一定周期毎に内部割込みを発生させる。タイマ装置１０７からの割込みは、オペレーティングシステムの計時などに使用される。
【００２０】
本実施例では、計算機システム内に二つのオペレーティングシステムが存在する場合を説明する。二つのオペレーティングシステムは各々に割り当てられたメモリおよびプロセッサ資源を用いて、各々のオペレーティングシステム上のタスクを実行する。本実施例ではオペレーティングシステム１１６が事務処理ＯＳ，オペレーティングシステム１１７がリアルタイムＯＳであると仮定するが、実際に各オペレーティングシステムがいかなる種類であっても、本発明で述べる技術は適用可能である。
【００２１】
事務処理ＯＳ１１６及びリアルタイムＯＳ１１７を一つのプロセッサ上で連携しながら動作させるため、ＯＳ間制御機能１２４を備える。ＯＳ間制御機能124は、事務処理ＯＳ１１６とリアルタイムＯＳ１１７の実行環境を切替えるＯＳコンテクスト切換１２７を備える。ＯＳコンテクスト切換１２７は、割込み要求やＯＳ間制御機能の呼び出しによりオペレーティングシステムの切替えが必要と判断されたときコンテクストを切替える。
【００２２】
なお本実施例における「構成制御」とは、周辺デバイスに実装されるハードウェア資源（レジスタ，該デバイスに割り当てられた割込信号等）を初期化あるいは再設定することを意味する。
【００２３】
各オペレーティングシステム１１６，１１７内には、デバイス初期化機能モジュール５１０，５１１が存在する。デバイス初期化機能モジュール５１０，511は、電源投入リセット時とオペレーティングシステム再起動時の両方でそれぞれのオペレーティングシステムにおいて実行されるモジュールであり、それぞれのオペレーティングシステムで構成制御する必要のあるデバイス情報をＯＳ間制御機能１２４に対して要求する。
【００２４】
デバイス初期化機能モジュール５１０，５１１は、自身が有するデバイス情報データベース５１２，５１３に登録されている構成制御すべき周辺デバイスのハードウェア固有情報を検索し、ハードウェア固有情報を鍵（キー）としてＯＳ間制御機能１２４に該当デバイス存在有無の確認要求を発行する。すなわち、計算機システムが電源断等により停止している最中に周辺デバイスの構成が変更されている場合、オペレーティングシステムはデバイスドライバを組み込むためにデバイスドライバに対応する周辺デバイスが存在しているか確認する必要がある。その後ＯＳ間制御機能１２４により周辺デバイスの有無通知を受けると、デバイス初期化機能モジュール５１０，５１１は周辺デバイスの有無に応じて対応するデバイスドライバの処理を実行する。ここで周辺デバイスが存在するが構成制御すべきでない場合、すなわち確認要求を発行したオペレーティングシステムではなくもう一方のオペレーティングシステムが構成制御すべき周辺デバイスである場合には、確認要求を発行したオペレーティングシステムはその旨が通知される。そこで周辺デバイスがオペレーティングシステム１１６，１１７の両方で共有されるデバイスであれば、通知を受けたオペレーティングシステムでは周辺デバイスに対する構成制御は行わず、ドライバや割込ベクタの登録等、所定の処理を行う。また周辺デバイスがもう一方のオペレーティングシステムで専有されるデバイスであれば、周辺デバイスに対する処理を行わず、次の周辺デバイスに処理を移す。
【００２５】
なお必ずしも両方のオペレーティングシステムが周辺デバイス存在確認を発行する必要はない。例えば一方のオペレーティングシステムが全ての構成制御を行う場合を考える。この時もう一方のオペレーティングシステムは、デバイスの存在確認を発行してデバイスの存在を確認すると構成制御不要との通知を受けるので、共有するデバイスに関する構成制御以外の処理のみ行えばよい。
【００２６】
またデバイス情報データベース５１２，５１３に登録されていない周辺デバイスが前回計算機システム実行時から新規に追加されていると、デバイス初期化機能モジュール５１０，５１１はＯＳ間制御機能１２４より、まだ構成制御すべき周辺デバイスが存在する旨が通知される。デバイス初期化機能モジュール５１０，５１１は通知を受け、対応するデバイスドライバを各々、あるいは一方のオペレーティングシステムに組み込むための所定の処理を行う。
【００２７】
周辺デバイスの存在確認を行うタイミングは、デバイスドライバによって様々である。例えばオペレーティングシステムが格納されている二次記憶装置に対するデバイスドライバは、オペレーティングシステムのロード前にプロセッサ100から利用可能でなければならない。またディスプレイ１０４に対するデバイスドライバは、オペレーティングシステムの起動中から利用できれば問題ない。一般に周辺デバイスの存在確認を行うタイミングは、周辺デバイスが提供するサービスの内容により異なり、オペレーティングシステムの起動前，起動中，起動後のいずれかに発行される。オペレーティングシステムの起動前に発行される存在確認は、計算機システムが正常に動作するために最低限必要な周辺デバイスに関するデバイスドライバの初期化ルーチンから発行され、特にそれらのデバイスドライバはＢＩＯＳ（Basic Input／Output System）と呼ばれ、不揮発性メモリに格納されているプログラムとして存在する。オペレーティングシステムの起動中に発行される存在確認は、オペレーティングシステムに密接に関係するデバイスドライバの初期化ルーチンから発行される場合が有る。またオペレーティングシステムの起動後に発行される存在確認は、例えばユーザアプリケーションから直接起動されるデバイスドライバの初期化ルーチンから発行される場合が有る。
【００２８】
ＯＳ間制御機能１２４は、オペレーティングシステム１１６，１１７からのデバイス存在確認要求を受け付け、応答を返すデバイス検出機能モジュール５０１と、周辺デバイスがいずれのオペレーティングシステムに属するかを示すテーブルであるデバイス管理テーブル５００と、デバイス管理テーブル５００を更新する機能を提供するテーブル更新機能モジュール５０２を有する。デバイス検出機能モジュール５０１は、オペレーティングシステム１１６，１１７からの周辺デバイス存在有無の確認要求に対し、デバイス管理テーブル５００を参照して応答を返す機能を有する。デバイス管理テーブル５００は、計算機システム内に存在する全ての周辺デバイスの「ハードウェア固有情報」と、それぞれの周辺デバイスがいずれのオペレーティングシステムに属して構成制御が行われるかを示す「属性フラグ」を有する。デバイス管理テーブル５００は、計算機システムが電源投入された時に、活線挿抜等の技術により計算機システム動作中に周辺デバイスが追加や削除された時等に、登録内容に対して更新や追加，削除が行われる。テーブル更新機能モジュール５０２は、デバイス管理テーブル５００の登録内容を各々のオペレーティングシステム、あるいはＯＳ間制御機能１２４自身から更新するための機能を提供する。
【００２９】
以上の構成により、複数個のオペレーティングシステムを切替えて動作する計算機システムにおいて、複数個のオペレーティングシステムが同一の周辺デバイスを共有するために、あるいは排他的に使用するために必要な構成制御を行うことが可能となる。そして共有している周辺デバイスについて、一方のオペレーティングシステムが稼動中にもう一方のオペレーティングシステムを再起動した場合でも、再起動の前後で稼働中のオペレーティングシステムは周辺デバイスを連続的に使用することが可能となる。
【００３０】
以下、本実施例の構成について詳細に説明する。
【００３１】
図２（ａ）に周辺デバイスとバスに注目した計算機システムの構成を示す。バスブリッジ５５０，５５１は、プロセッサバス１０３とＰＣＩ（Peripheral    Component Interconnect) バス５５２，５５８との間で、バスプロトコル変換を行うバスブリッジである。バスブリッジ５５５は、ＰＣＩバス５５２とＩＳＡ（Industry Standard Architecture）バス５５６との間でバスプロトコル変換を行うバスブリッジである。プロセッサ１００とバスブリッジ５５０，５５１はプロセッサバス１０３を介して接続する。バスブリッジ５５０，５５５とネットワークデバイス５５３，ディスプレイデバイス５５４はＰＣＩバス５５２を介して接続し、バスブリッジ５５１とセンサー５５９はＰＣＩバス５５８を介して接続する。またバスブリッジ５５５とスイッチ５５７はＩＳＡバス５５６を介して接続する。図２（ａ）中、ＰＣＩバスは２本存在し、これらを区別するためにバス番号と呼ぶ計算機システム内で一意に決まる番号を割り当てる。本実施例では以下のように定める。
【００３２】
ＰＣＩバス５５２：バス番号＝０
ＰＣＩバス５５８：バス番号＝１
また構成制御を行う際にデバイスを特定するために、ＰＣＩバス５５２，558に接続されるデバイスに対して各バスにおいて一意に決定されるデバイス番号と呼ばれる番号を割り当てる。ＩＳＡバス５５６に接続されるデバイスに対して各バスにおいて一意に決定されるＩ／Ｏアドレスが割り当てられるが、本実施例ではＩ／Ｏアドレスのことも便宜的にデバイス番号と呼ぶことにする。また各デバイスには、デバイス自身のメーカ，デバイス種，特性や機能を表すＩＤが、各デバイス製造時に割り当てられている。プロセッサは存在有無を確認しようとするデバイスのＩＤを読み取ることにより、デバイスが意図しているデバイスであるか、もしくは作業員によって置き換えられた等により別のデバイスになっているかを知ることが可能である。本実施例ではＩＤを一括してデバイス名称と呼ぶことにする。
【００３３】
以上の様にバスとデバイスに番号を割り当てることにより、全ての周辺デバイスはプロセッサ１００から見てバス種別とバス番号，デバイス番号、さらにデバイス名称にて特定することが可能になる。例えばディスプレイ５５４は、「バス種別＝ＰＣＩ，バス番号＝０に接続される、デバイス番号＝０の“DISPLAY"というデバイス」であり、スイッチ５５７は、「バス種別＝ＩＳＡ，バス番号＝０に接続される、デバイス番号（Ｉ／Ｏアドレス）＝０ｘ３３０の“ＳＷＩＴＣＨ”というデバイス」と識別することが可能である。なお“０ｘ”という接頭詞は続く数字が１６進数であることを示す。また存在しないバス種別やバス番号，デバイス番号に対してプロセッサ１００が存在確認のためにアクセスを行った場合、所定の手続きによりプロセッサに該当デバイスが存在しない旨が通知される。一般的にはプロセッサ１００と対象バスとの間に介在するバスブリッジにより、該当デバイスが存在しない旨のステータスがバスブリッジ内の所定レジスタに記録される。
【００３４】
図２（ｂ）にＯＳ間制御機能１２４におけるデバイス管理テーブル５００の構成を示す。デバイス管理テーブル５００は、デバイス各々に対応するハードウェア固有情報５２０と属性フラグ５２５の組で１レコードが構成される。ハードウェア固有情報５２０は、バス種別５２１，バス番号５２２，デバイス番号５２３，デバイス名称５２４から構成される。属性フラグ５２５は対応するデバイスが、いずれのオペレーティングシステムに属して構成制御されるかを示すものであり、事務処理ＯＳに構成制御されるデバイスは“事務”、リアルタイムＯＳに構成制御されるデバイスは“リアルタイム”、そして両方のオペレーティングシステムに利用されるデバイスは“事務（共有）”あるいは“リアルタイム(共有)”と示される。ここで“（共有）”と示されるデバイスは、構成制御を行うオペレーティングシステムはいずれか一方であるが、デバイスを利用するのは両方のオペレーティングシステムである場合を示している。バス種別５２１と属性フラグ５２５に関して、一般的にはそれぞれのバス種別や属性を示す整数値を割り当ててそれぞれ格納するのが適当である。
【００３５】
以上ではＰＣＩバスとＩＳＡバスに接続されたデバイスを特定する方法について述べたが、本発明はこれらのバスに限定や拘束されるものではなく、デバイスを特定する手段に応じて、ハードウェア固有情報５２０を構成することにより、任意のバスアーキテクチャを有する計算機システムに対して適用可能である。
【００３６】
図３にＯＳ間制御機能１２４におけるデバイス検出機能モジュール５０１の処理フローを示す。デバイス初期化機能モジュール５１０，５１１はオペレーティナグシステムを起動，再起動する際に、自身が有するデバイス情報データベース５１２，５１３に登録されている構成制御すべき周辺デバイスのハードウェア固有情報を検索し、ハードウェア固有情報を鍵（キー）としてデバイス検出機能５０１に該当デバイス存在有無の確認要求を発行する。デバイス検出機能モジュール５０１は、デバイス初期化機能モジュールより受け取ったハードウェア固有情報をキーとして、デバイス管理テーブル５００を検索すると共に、計算機システム内に実デバイスが存在するかＢＩＯＳ命令等により探索する(処理６００)。その結果、要求のあったデバイスが実デバイスとして計算機システムに存在するか検査する（処理６０１）。該当デバイスが存在しない場合、デバイス検出機能モジュール５０１は要求元に該当デバイスが存在しない旨を通知する（処理607)。該当デバイスが存在する場合、引き続きデバイス管理テーブル５００上のハードウェア固有情報５２０がキーと一致するか検査する（処理６０２）。ここで不一致の場合は、該当デバイスが割り当てられている位置に別のデバイスが存在する、あるいはデバイス管理テーブル５００に該当デバイスが登録されていないことを意味し、デバイス検出機能モジュール５０１はデバイス存在確認要求元に対して該当デバイスとは違うデバイスが存在する旨を通知する（処理６０８）。デバイス管理テーブル５００上のハードウェア固有情報５２０とキーが完全に一致した場合、引き続き該当デバイスの属性フラグ５２５が、要求元オペレーティングシステムと一致するか検査する（処理６０３）。そこで一致した場合、該当デバイスは存在し、かつ要求元オペレーティングシステムにより構成制御なされるべきデバイス（専有されるデバイス）として、要求元に通知する(処理６０５)。一方属性フラグ５２５が不一致であった場合、さらに該当デバイスが共有デバイスであるか検査する（処理６０４）。処理６０４で該当デバイスが共有と判断された場合、要求元に対し該当デバイスは共有デバイスであると通知すると共に、構成制御を行うべきオペレーティングシステムを合わせて通知する(処理６０６)。処理６０４で該当デバイスが共有ではない場合、すなわち要求元オペレーティングシステムとは違うオペレーティングシステムが専有するデバイスである場合、要求元オペレーティングシステムに対しては、該当デバイスは存在しないと通知する（処理６０７）。
【００３７】
またデバイスに対する存在確認要求が有ったことをデバイス検出機能５０１にて保持することにより、存在確認要求にもれたデバイスが生じた場合に、該デバイスが属するオペレーティングシステムに対して該デバイスを構成制御するように通知することが可能となる。
【００３８】
図４にデバイスに対する存在確認要求が有ったことを示すリンクトリスト620の構成例を示す。デバイス検出機能５０１は、リンクトリスト６２０の先頭アドレスを既知とする。また要求元オペレーティングシステムと対応して、リンクトリスト６２０をそれぞれ用意するものとする。リストの要求はハードウェア固有情報とポインタからなり、ハードウェア固有情報６２１，６２３，６２５は存在確認要求の有ったハードウェア固有情報を格納し、ポインタ６２２，６２４はそれぞれ次のリスト要素の先頭アドレスを格納する。最後のリスト要素中のポインタ６２６は、それ以上リスト要素が無いことを表す特殊なコードが格納され、一般にはアドレス０ｘ０（＝Ｎｕｌｌ）をコードとする。
【００３９】
デバイス検出機能５０１は、処理６０５，６０６によってデバイスに対する存在確認要求の有ったことを検知し、それぞれの処理と合わせてリンクトリストを構築していく。すなわち、処理６０５，６０６と同時に、確認要求を受けた周辺デバイス順にリスト要素のハードウェア固有情報をリンクトリストに追加する。デバイス検出機能５０１は、処理６０５，６０６を実行すると共に新たなリスト要素を作成し、ハードウェア固有情報として該当デバイスのハードウェア固有情報を格納し、最終リスト要素のポインタを新たなリスト要素のアドレスに書き換える。
【００４０】
デバイス検出機能５０１は、オペレーティングシステムからのデバイス存在確認要求が全て終了したことを検知すると、オペレーティングシステムに対応するリンクトリスト６２０のハードウェア固有情報とデバイス管理テーブル５００のハードウェア固有情報を比較する。デバイス管理テーブル５００上に（本来オペレーティングシステムから存在確認要求がくるべきであるのに）存在確認要求が来ていないデバイスが存在する場合、デバイス検出機能５０１は対応するオペレーティングシステムに該当デバイスを通知する。
【００４１】
なお図４に示されるリンクトリスト６２０と、デバイス存在確認要求の“もれ”を検出する機能は、デバイス検出機能５０１に無くてもよく、オペレーティングシステム１１６，１１７にそれぞれ持ってもよい。その場合、デバイス検出機能５０１はデバイス管理テーブル５００を参照するための手段を提供する必要がある。
【００４２】
さらに図３に示されるデバイス存在確認の機能もデバイス検出機能５０１に無くてもよく、各々のオペレーティングシステム１１６，１１７に有ればよい。その場合、デバイス検出機能５０１は同様にデバイス管理テーブル５００を参照するための手段を提供する必要が有る。
【００４３】
以上によりデバイス管理テーブル５００において、バス種別５２１，バス番号５２２，デバイス番号５２３，デバイス名称５２４、そしてデバイス存在確認の要求を発行したオペレーティングシステムが特定できれば、該デバイス存在確認に対する応答を決定することが可能である。すなわち、該当デバイスがデバイス存在確認と一致して存在し、かつデバイス存在確認を発行したオペレーティングシステムと属性フラグが一致した場合のみ、該オペレーティングシステムに対して要求デバイスが存在する旨を返答する。それ以外の場合には該デバイスが存在しない旨を返答する。以上により、例えば一方のオペレーティングシステムが使用中の共有デバイスに関して、構成制御すべきでないオペレーティングシステムが再起動し、発行したデバイス存在確認の要求に対して、「デバイスは存在するが構成制御不要」と返答することにより再起動中のオペレーティングデバイスはデバイスの構成制御をせずに該デバイスのデバイスドライバ組込みを実行する。そして再起動が完了した該オペレーティングシステムは共有デバイスを利用することが可能となる。
【００４４】
図５にテーブル更新機能モジュール５０２における処理フローを示す。テーブル更新機能モジュール５０２はデバイス管理テーブル５００の内容を追加や削除，変更をするための機能である。デバイス管理テーブル５００は、双方のオペレーティングシステムからアクセスされる可能性が有る。一般にはオペレーティングシステム１１６，１１７がそれぞれ独立しているため、双方から統一してデバイス管理テーブル５００をアクセスする手段を提供する。
【００４５】
テーブル更新機能モジュール５０２は、オペレーティングシステム１１６，１１７いずれかよりテーブル更新要求が発行される。ここでテーブル更新機能モジュール５０２はオペレーティングシステム１１６，１１７の双方から呼び出されるため、該モジュール呼び出し方法はどちらかのオペレーティングシステムに存在した方法ではなく、例えばプロセッサ１００の汎用レジスタにより引数を受け渡し、直接物理メモリ上のテーブル更新機能モジュール５０２を呼び出す方法が好適である。ここでテーブル更新機能モジュール５０２に引き渡す引数として、以下のパラメータがある。
【００４６】
（１）バス種別，バス番号，デバイス番号といったデバイス指定情報
（２）デバイス名称，属性フラグ
（３）該当レコードに対する処理（削除，追加／更新）
テーブル管理テーブル更新要求を受けたテーブル更新機能モジュール５０２は、上記（１）で指定された情報を元にデバイス管理テーブル５００から該当するデバイスが存在するか検索する（処理６４０）。次に上記（３）の処理内容が削除要求か判定する（処理６４１）。処理６４１で削除要求の場合、処理６４０で検索した結果、デバイスが存在して、かつ上記（２）で指定したデバイス名称までがデバイス管理テーブル５００の登録内容と一致した場合、テーブル更新機能モジュール５０２は、該当デバイスに関するデータレコードをデバイス管理テーブル５００より削除し（処理６４４）、処理６４２，６４３いずれかで不一致が生じた場合にはエラーとして要求元に通知する（処理６４５）。処理６４１が更新要求であった場合、処理６４０で検索した結果デバイスが存在していたかを判定する（処理６４６）。処理６４６で該当するデバイスが存在する場合、デバイス管理テーブル５００の該当データレコードのデバイス名称と、属性フラグを更新する（処理６４７）。処理６４６で該当するデバイスが存在しない場合、デバイス管理テーブル５００に要求デバイスのレコードを追加する（処理６４８）。
以上によりテーブル更新機能モジュール５０２はデータ管理テーブル５００を更新する。以上ではオペレーティングシステム１１６，１１７がデバイス更新要求を発行するとしたが、デバイス更新要求を発行するのはそれらに限定されない。例えばＯＳ間制御機能１２４が直接ＢＩＯＳ命令等により周辺デバイスのハード固有情報を収集して、テーブル更新機能モジュール５０２を用いて存在しないデバイスを削除するといったデバイス管理テーブル５００の更新をしてもよい。それぞれのオペレーティングシステムは、テーブル更新機能モジュール５０２を用いて一度だけ、デバイス管理テーブル５００の構築を行えばよい。デバイス管理テーブル５００は不揮発性メモリあるいは二次記憶装置等に格納され、次回以降の計算機システム立上げ時にはそれらのデバイスからメモリ内のＯＳ間制御機能にロードされる。
【００４７】
図６に、それぞれのオペレーティングシステム１１６，１１７におけるデバイス初期化機能モジュール５１０，５１１の処理フローを示す。以下の説明では特にデバイス初期化機能モジュール５１０に注目して説明するが、デバイス初期化機能モジュール５１０，５１１は同一の処理フローであり、それぞれ対応する構成要素とおきかえられる。
【００４８】
オペレーティングシステム１１６が電源投入や再起動により、構成制御処理を開始した場合について説明する。デバイス初期化機能モジュール５１０は、オペレーティングシステム１１６が有するデバイス情報データベース５１２から自身が構成制御すべきデバイスが存在するか判断する（処理６６０）。構成制御すべきデバイスが存在しない場合、そのまま構成制御処理を終了する。構成制御すべきデバイスが存在する場合、デバイス情報データベース５１２よりデバイスのハードウェア固有情報を抽出し、合わせてＯＳ間制御機能１２４にデバイス存在有無の確認要求を発行する（処理６６１）。その後、処理６６１の応答タイプを判定し次の通り分岐する（処理６６２）。
【００４９】
・「デバイスが存在しない」と通知された場合…これは電源断中に該当デバイスが撤去されるか、該当デバイスが故障等により正常に応答できない場合に起こりうる。デバイス初期化機能モジュール５１０は該当デバイスに関するデータレコードをデバイス情報データベース５１２より削除する（処理６６３）。
【００５０】
・「専有デバイス」と通知された場合…これは該当デバイスがオペレーティングシステム１１６によってのみ使用されるデバイスを意味する。ゆえにもう一方のオペレーティングシステムに使用されていることはないため、デバイス初期化機能モジュール５１０は該当デバイスに対し、構成制御を実行し（処理６６４）、引き続きデバイスドライバの組込み処理を行う（処理６６５）。
【００５１】
・「共有デバイス」と通知された場合…これは該当デバイスがもう一方のオペレーティングシステムに使われている可能性があることを意味する。この時共有デバイス通知と共に、構成制御すべきオペレーティングシステムも合わせて通知される。そこで自オペレーティングシステムが構成制御をすべきか否か判定する
（処理６６６）。構成制御すべきと判定した場合、さらに現在のデバイス初期化機能モジュール５１０が、電源投入後の処理をしているか、再起動中の処理をしているか判定する（処理６６７）。すなわち、再起動中であればもう一方のオペレーティングシステムが該当デバイスを使用している可能性がある。電源投入後の処理中であれば、デバイスは構成制御する必要が有るため、専有デバイス通知をされた時と同様に処理６６４，６６５を実行する。それ以外の場合、すなわち自オペレーティングシステムが構成制御すべきでない、あるいは再起動処理中である場合、該当デバイスのドライバ組込み処理を行う（処理６６８）。
【００５２】
以上の処理６６４，６６５，６６８において、デバイス初期化機能モジュール５１０はそれぞれの処理を実行するドライバをデバイス情報データベース５１２から参照し、実行するものである。
【００５３】
なおドライバ組込みのための処理６６５，６６８として、該当デバイスに対する割込ハンドラの設定や、デバイスドライバのロード処理，エントリアドレスをオペレーティングシステムに登録する等の処理を行うことが挙げられる。また処理６６４と処理６６５をまとめて一つのドライバとし、処理６６８で実行するドライバと分けて用意しても問題ない。またデバイスの特性上可能であるならば、処理６６５と処理６６８で実行するドライバを兼用とし、処理６６４で実行するドライバを別に用意してもよい。
【００５４】
図７にデバイス情報データベース５１２の構成例を示す。以下においてはデバイス情報データベース５１２について説明するが、デバイス情報データベース５１３についても同じ説明が当てはまる。
【００５５】
デバイス情報データベース５１２はハードウェア固有情報６８０と対応するドライバ６８５から構成される。ハードウェア固有情報６８０は、対象となる周辺デバイスを必要十分に識別することができる位置情報を含み、バス種別６８１，バス番号６８２，デバイス番号６８３，デバイス名称６８４からなる。これらの用語は、図２(ｂ)において説明した用語と同じ意味をなす。またドライバ６８５は、電源投入（Power ON）時に適用されるＰＯＮ時ドライバ６８６と、再起動時に適用される再起動時ドライバ６８７からなる。ＰＯＮ時ドライバ６８６は、該デバイス情報データベース５１２に登録されているデバイス全てに用意される。一方再起動時ドライバ６８７は、対象デバイスが共有デバイスの場合に用意される場合が有る。ドライバ６８６，６８７の登録情報については、ドライバが格納されているデバイス（二次記憶装置等）における位置が定まればよく、一般的にはファイル形式で格納されたドライバを表現するパス形式（／usr／bin／driverあるいは／system／driver等）で格納する。本実施例では、ＰＯＮ時ドライバ６８６は、図６における処理６６４，６６５をまとめたドライバであり、再起動時ドライバ６８７は図６における処理６６８を実行するドライバであり、これらのドライバを登録するデバイス情報データベース５１２の例を示している。ここで図６における処理６６４，６６５，６６８全てを独立に処理するドライバを用意する場合には、ドライバ６８５に登録するドライバ種を３つとし、それぞれ構成制御用ドライバ，専有処理（処理６６５）用ドライバ，共有処理(処理６６８)用ドライバを用意して登録すればよい。
【００５６】
本発明による第２の実施例を図８に示す。図８には、図１中の特にメモリ101に関する構成例を示したものであり、その他の構成要素は特に断らない限り図１中の構成要素と同一である。本実施例では、ＯＳ間制御機能１２４が第一の実施例と異なる。本実施例の特徴は、構成制御すべきオペレーティングシステムの決定を、デバイス割込管理テーブル５０３と優先割込みテーブル１５６を用いて行うことに有る。ここで優先割込みテーブル１５６とは、オペレーティングシステムの定常動作時に利用するテーブルであり、デバイスに割り当てられた割込みレベル毎に割込処理を依頼するオペレーティングシステムと該デバイスの共有を示すフラグから構成されるテーブルである。本実施例ではデバイスの割込み処理を行うオペレーティングシステムが該デバイスの構成制御を行うため、割込処理を行わないもう一方のオペレーティングシステムは構成制御による影響を受けないことが特徴として挙げられる。また通常動作時のテーブルと構成制御時に必要なテーブルを部分的に共通化することにより、テーブルを予盾無く管理することも特徴として挙げられる。
【００５７】
ＯＳ間制御機能１２４は、オペレーティングシステム１１６，１１７からのデバイス情報要求を受け付け、応答を返すデバイス検出機能モジュール５０４と、周辺デバイスがいずれの割込みレベルが割り振られているかを示すテーブルであるデバイス割込管理テーブル５０３と、デバイス割込管理テーブル５０３を更新する機能を提供するテーブル更新機能モジュール５０５を有する。また割込み管理テーブル１２９は割込みレベルに応じたオペレーティングシステム毎の割込みベクタにより構成される割込みアドレステーブル１５５と、割込みレベル毎に必要な割込み処理をいずれのオペレーティングシステムに対して依頼するかを示す優先割込みテーブル１５６からなる。
【００５８】
デバイス検出機能モジュール５０４は、オペレーティングシステム１１６，１１７からの周辺デバイス存在有無の確認要求に対し、デバイス割込管理テーブル５０３と割込み管理テーブル１２９を参照して応答を返す機能を有する。デバイス割込管理テーブル５０３は、計算機システム内に存在する全ての周辺デバイスの「ハードウェア固有情報」と、それぞれの周辺デバイスがいずれの割込みレベルが割り振られているかを示す「割込番号」を有する。デバイス割込管理テーブル５０３は、計算機システムが電源投入された時と、活線挿抜等の技術により計算機システム動作中に周辺デバイスが追加や削除された時等に、登録内容に対して更新や追加，削除が行われる。テーブル更新機能モジュール５０５は、デバイス割込管理テーブル５０３の登録内容を各々のオペレーティングシステム、あるいはＯＳ間制御機能１２４自身から更新するための機能を提供する。
【００５９】
デバイス検出機能モジュール５０４はオペレーティングシステム１１６，117よりデバイス存在確認要求を受けると、オペレーティングシステム１１６，117より受け取ったハードウェア固有情報を元にデバイス割込管理テーブル５０３から該当デバイスが存在するか否か検査し、もし存在するならば該当デバイスの割込みレベルを抽出する。その後、抽出された割込みレベルを用いて、優先割込みテーブル１５６より該当デバイスの担当オペレーティングシステムと共有されるか否かを検査し、デバイス検出機能モジュール５０４は要求元に対して該当デバイスの存在有無と担当オペレーティングシステムを通知する。
【００６０】
その後ＯＳ間制御機能１２４により該周辺デバイスの有無通知を受けると、デバイス初期化機能モジュール５１０，５１１は該周辺デバイスの有無に応じて対応するデバイスドライバの処理を実行する。ここで該周辺デバイスが存在するが構成制御すべきでない場合、すなわち確認要求を発行したオペレーティングシステムではなくもう一方のオペレーティングシステムが構成制御すべき周辺デバイスである場合には、確認要求を発行したオペレーティングシステムはその旨を通知される。そこで該周辺デバイスがオペレーティングシステム１１６，１１７の両方で共有されるデバイスであれば、上記通知を受けたオペレーティングシステムでは該周辺デバイスに対する構成制御を行わず、ドライバや割込ベクタの登録等、所定の処理を行う。また該周辺デバイスがもう一方のオペレーティングシステムで専有されるデバイスであれば、該周辺デバイスに対する処理を行わず、次の周辺デバイスに処理を移す。
【００６１】
以上の構成により、複数個のオペレーティングシステムを切替えて動作する計算機システムにおいて、該複数個のオペレーティングシステムが同一の周辺デバイスを共有するために、あるいは排他的に使用するために必要な構成制御を行うことが可能となる。そして共有している周辺デバイスについて、一方のオペレーティングシステムが稼動中にもう一方のオペレーティングシステムを再起動した場合でも、再起動の前後で稼動中のオペレーティングシステムは該周辺デバイスを連続的に使用することが可能となる。
【００６２】
以下では第２の実施例について詳細に説明する。
【００６３】
図９にデバイス割込管理テーブル５０３の構成例を示す。ハードウェア固有情報５２０を構成するバス種別５２１，バス番号５２２，デバイス番号５２３，デバイス名称５２４については、図２（ｂ）の構成要素と同一である。割込番号５２６は、該当するデバイスに割り当てられた割込レベルを格納する。割込番号５２６に格納された割込レベルの割込が割込信号線１０８を介してプロセッサ１００に通知されると、プロセッサ１００は割込みレベルに応じた、すなわちデバイスに応じた処理を実行する。割込み番号５２６は、ここでは優先割込みテーブル１５６に対するインデックスとして利用する。
【００６４】
図１０に割込みアドレステーブル１５５の構成例を示す。割込みアドレステーブル１５５は、各々のオペレーティングシステムが備える割込みハンドラの開始アドレスを保持する表である。例えば割込みＩＲＱ２が発生した場合、事務処理ＯＳに対してはアドレス０ｘ０００００４４０を呼び出し、リアルタイムＯＳに対してはアドレス０ｘ０００００６４０を呼び出すことが意味する。
【００６５】
図１１に優先割込みテーブル１５６の構成例を示す。優先割込みテーブル156 は、個々の割込みがどちらのオペレーティングシステムで処理されるべきかを示す対応表で構成され、フラグ１が立っているオペレーティングシステムが備える割込みハンドラに処理を依頼する。さらに共有に関する欄では、複数のオペレーティングシステムで共有する入出力装置からの割込みにはフラグ１を、共有しない割込みにはフラグ０を記憶する。本実施例では、１６種類の割込み要因が存在すると仮定すると、優先割込みテーブル１５６も１６個のエントリ（ＩＲＱ０〜ＩＲＱ１５）の構成になる。なお、本説明では優先割込みテーブル１５６にフラグを記録する方法を想定したが、何らかの識別可能な情報を記録すればいかなる方法でも実現可能である。
【００６６】
図１２にＯＳ間制御機能１２４におけるデバイス検出機能５０４の処理フローを示す。機能的には図３で示したデバイス検出機能モジュール５０１と同等であり、同一記号が付与されている処理は図３の説明と同一である。デバイス初期化機能モジュール５１０，５１１はオペレーティングシステムを起動，再起動する際に、自身が有するデバイス情報データベース５１２，５１３に登録されている構成制御すべき周辺デバイスのハードウェア固有情報を検索し、該ハードウェア固有情報を鍵（キー）としてデバイス検出機能モジュール５０４に該当デバイス存在有無の確認要求を発行する。デバイス検出機能モジュール５０４は、デバイス初期化機能モジュールより受け取ったハードウェア固有情報をキーとして、デバイス割込管理テーブル５０３を検索すると共に、計算機システム内に実デバイスが存在するかＢＩＯＳ命令等により探索する（処理６００）。その結果、要求のあったデバイスが実デバイスとして計算機システムに存在するか検査する（処理６０１）。該当デバイスが存在しない場合、デバイス検出機能モジュール504は要求元に該当デバイスが存在しない旨を通知する（処理６０７）。該当デバイスが存在する場合、引き続きデバイス割込管理テーブル５０３上のデバイス名称５２４がキーと一致するか検査する（処理６０２）。ここで不一致の場合は、該当デバイスが割り当てられている位置に別のデバイスが存在する、あるいはデバイス割込管理テーブル５０３に該当デバイスが登録されていないことを意味し、デバイス検出機能モジュール５０４はデバイス存在確認要求元に対して該当デバイスとは違うデバイスが存在する旨を通知する（処理６０８）。デバイス割込管理テーブル５０３上のハードウェア固有情報５２０とキーが完全に一致した場合、デバイス割込管理テーブル５０３より割込番号５２６を抽出し、優先割込みテーブル１５６を参照する（処理６１０）。そして該当デバイスの共有フラグがセットされているか検査する（処理６０４）。処理６０４で該当デバイスが共有と判断された場合、要求元に対し該当デバイスは共有デバイスであると通知すると共に、構成制御を行うべきオペレーティングシステムを合わせて通知する（処理６０６）。処理６０４で該当デバイスが共有ではない場合、さらに該割込番号のレコードにおける要求元オペレーティングシステムにフラグがセットされているか検査する（処理６１１）。そこでセットされている場合、該当デバイスは存在し、かつ要求元オペレーティングシステムにより構成制御なされるべきデバイス（専有されるデバイス）として、要求元に通知する（処理６０５）。処理６１１で要求元オペレーティングシステムにフラグがセットされていない場合、すなわち要求元オペレーティングシステムとは違うオペレーティングシステムが専有するデバイスである場合、要求元オペレーティングシステムに対しては、該当デバイスは存在しないと通知する（処理６０７）。
【００６７】
テーブル更新機能モジュール５０５における処理フローについて、テーブル更新機能モジュール５０５は第１の実施例におけるテーブル更新機能モジュール５０２（図５参照）とただ１点を除いて同一である。すなわちテーブル更新機能モジュール５０５では、処理６４６で該当するデバイスが存在する場合、デバイス管理テーブル５００の該当データレコードのデバイス名称と、割込番号を更新する処理を実行する。
【００６８】
以上によりテーブル更新機能モジュール５０５はデータ割込管理テーブル503を更新可能である。
【００６９】
本発明によれば、複数個のオペレーティングシステムを切替えて動作する計算機システムにおいて、該複数個のオペレーティングシステムが同一の周辺デバイスを共有するために、あるいは排他的に使用するために必要な構成制御を行うことが可能となる。そして共有している周辺デバイスについて、一方のオペレーティングシステムが稼動中にもう一方のオペレーティングシステムを再起動した場合でも、再起動の前後で稼動中のオペレーティングシステムは該周辺デバイスを連続的に使用することが可能となる構成制御方式を提供することができる。
【００７０】
本発明に係わる計算機および構成制御方式は、次のようなものである。
【００７１】
計算機システムは、複数個のオペレーティングシステムと、複数個のオペレーティングシステムを切替えて実行するＯＳ切替手段とを有する計算機システムにおいて、計算機システム内デバイスを特定するハードウェア固有情報と、デバイスの構成制御を行うオペレーティングシステムとを記憶するデバイス管理テーブルを有し、複数個のオペレーティングシステムのうち少なくとも一つはデバイス管理テーブルを参照して構成制御を行うオペレーティングシステムを判定し、判定の結果がデバイス管理テーブルを参照したオペレーティングシステムのみであった場合には、デバイス管理テーブルを参照したオペレーティングシステムが該当するデバイスを構成制御する。
【００７２】
また別の計算機システムは、複数個のオペレーティングシステムと、複数個のオペレーティングシステムを切替えて実行するＯＳ切替手段とを有する計算機システムにおいて、計算機システム内デバイスを特定するハードウェア固有情報と、デバイスに割り当てられた割込レベルを記憶するデバイス割込管理テーブルを有し、割込レベル毎に起動するオペレーティングシステムを記憶する優先割込みテーブルを有し、複数個のオペレーティングシステムのうち少なくとも一つはデバイス割込管理テーブルを参照して割込レベルを得て、優先割込みテーブルを参照して割込レベルに対応するオペレーティングシステムを判定し、判定の結果がデバイス管理テーブルを参照したオペレーティングシステムのみであった場合には、デバイス管理テーブルを参照したオペレーティングシステムが該当するデバイスを構成制御する。
【００７３】
また計算機システムにおいて、判定の結果がデバイス管理テーブルを参照したオペレーティングシステムのみではなく任意の数のオペレーティングシステムで共有される場合で、デバイス管理テーブルを参照したオペレーティングシステムが構成制御を行うべきオペレーティングシステムであった場合には、デバイス管理テーブルを参照したオペレーティングシステムがデバイスの構成制御を行う。また計算機システムにおいて、デバイス管理テーブルを参照したオペレーティングシステムが再起動処理中の場合には、デバイス管理テーブルを参照したオペレーティングシステムがデバイスの構成制御を中止する。
【００７４】
また別の計算機システムは、複数個のオペレーティングシステムと、該複数個のオペレーティングシステムを切替えて実行するＯＳ切替手段とを有する計算機システムにおいて、計算機システム内デバイスを特定するハードウェア固有情報と、デバイスの構成制御を行うオペレーティングシステムとを記憶するデバイス管理テーブルを有し、ハードウェア固有情報を伴うデバイスの存在確認要求を受け、デバイス管理テーブルを参照して該当する計算機システム内デバイスの有無を応答するデバイス検出手段を有し、複数個のオペレーティングシステムのうち少なくとも一つはデバイス検出手段にデバイスの存在確認要求を発行し、応答結果を判定し、判定の結果がデバイス管理テーブルを参照したオペレーティングシステムのみであった場合には、デバイス管理テーブルを参照したオペレーティングシステムが該当するデバイスを構成制御する。
【００７５】
また別の計算機システムは、複数個のオペレーティングシステムと、複数個のオペレーティングシステムを切替えて実行するＯＳ切替手段とを有する計算機システムにおいて、計算機システム内デバイスを特定するハードウェア固有情報と、デバイスに割り当てられた割込レベルを記憶するデバイス割込管理テーブルを有し、割込レベル毎に起動するオペレーティングシステムを記憶する優先割込みテーブルを有し、ハードウェア固有情報を伴うデバイスの存在確認要求を受け、デバイス割込管理テーブルを参照して割込レベルを得て、優先割込みテーブルを参照して割込レベルに対応するオペレーティングシステムを判定し、該当する計算機システム内デバイスの有無を応答するデバイス検出手段を有し、複数個のオペレーティングシステムのうち少なくとも一つはデバイス検出手段にデバイスの存在確認要求を発行し、応答結果を判定し、判定の結果がデバイス管理テーブルを参照したオペレーティングシステムのみであった場合には、デバイス管理テーブルを参照したオペレーティングシステムが該当するデバイスを構成制御する。
さらに計算機システムは、判定の結果がデバイス検出手段にデバイスの存在確認要求を発行したオペレーティングシステムのみではなく任意の数のオペレーティングシステムで共有される場合で、デバイス検出手段にデバイスの存在確認要求を発行したオペレーティングシステムが構成制御を行うべきオペレーティングシステムであった場合には、デバイス検出手段に前記デバイスの存在確認要求を発行したオペレーティングシステムがデバイスの構成制御を行う。
【００７６】
さらに計算機システムは、デバイス検出手段に前記デバイスの存在確認要求を発行したオペレーティングシステムが再起動処理中の場合には、デバイス検出手段にデバイスの存在確認要求を発行したオペレーティングシステムがデバイスの構成制御を中止する。
【００７７】
さらに計算機システムは、デバイス検出手段は、存在確認要求のあったデバイスに対し該当するデバイスが計算機システム内に存在することを確認した後に、存在確認要求に対する応答を返すことを特徴とする。
【００７８】
さらに計算機システムは、デバイス検出手段は、存在確認を要求されたデバイスが、存在確認要求を発行したオペレーティングシステムのみが構成制御するのではない場合、または存在確認要求を発行したオペレーティングシステムが共有するデバイスでもない場合には、デバイスは存在しないと応答を返す。
【００７９】
さらに計算機システムは、複数個のオペレーティングシステムのうち少なくとも一つは、計算機システム内デバイスを特定するハードウェア固有情報からなるデバイス情報データベースを有し、デバイス情報データベースにおけるハードウェア固有情報は、デバイス管理テーブルあるいはデバイス割込管理テーブルにおけるハードウェア固有情報と同一構成のデータで構成される。
【００８０】
さらに計算機システムは、デバイスに対する存在確認要求に伴われる前記ハードウェア固有情報は、デバイス管理テーブルあるいはデバイス割込管理テーブルにおけるハードウェア固有情報と同一構成のデータで構成される。
【００８１】
さらに計算機システムは、ＯＳ切替手段はデバイス管理テーブルあるいはデバイス割込管理テーブルを更新するテーブル更新手段を有し、テーブル更新手段に対する更新要求に伴われるハードウェア固有情報は、デバイス管理テーブルあるいはデバイス割込管理テーブルにおけるハードウェア固有情報と同一構成のデータで構成される。
【００８２】
さらに計算機システムは、デバイス管理テーブルあるいはデバイス割込管理テーブルと、テーブル更新手段と、テーブル検出手段のいずれかまたは全てが、複数個のオペレーティングシステムの全てから参照することが可能である。
【００８３】
【発明の効果】
以上説明したように本発明によれば、複数個のオペレーティングシステムが同一の周辺デバイスを共有するために、あるいは排他的に使用するために必要な構成制御を行うことができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例におけるシステム構成を示す図である。
【図２】（ａ）本発明を適用する計算機システムのバスとデバイスの関係を示す図である。（ｂ）デバイス管理テーブルの構成を示す図である。
【図３】デバイスの存在確認要求に対する処理フローを示す。
【図４】デバイスの存在確認要求が来たハードウェア固有情報を保持するリンクトリストの構成を示す図である。
【図５】デバイス管理テーブルを更新する処理フローを示す。
【図６】構成制御処理を行うデバイス初期化機能モジュールの処理フローを示す。
【図７】デバイス情報データベースの構成を示す図である。
【図８】本発明による第２の実施例におけるメモリ内部の構成を示す図である。
【図９】デバイス割込管理テーブルの構成を示す図である。
【図１０】割込アドレステーブルの構成を示す図である。
【図１１】優先割込みテーブルの構成を示す図である。
【図１２】本発明の第２の実施例によるデバイスの存在確認要求に対する処理フローを示す。
【符号の説明】
１００…プロセッサ、１０１…メモリ、１０２…入出力制御装置、１０３…プロセッサバス、１０４…ディスプレイ、１０５…スイッチ、１０６…センサ、１０７…タイマ装置、１０８…割込み信号線、１０９…ネットワーク、１１６…事務処理ＯＳ、１１７…リアルタイムＯＳ、１２４…ＯＳ間制御機能、１２７…ＯＳコンテクスト切換、１２９…割込み管理テーブル、１５５…割込みアドレステーブル、１５６…優先割込みテーブル、５００…デバイス管理テーブル、501,５０４…デバイス検出機能、５０２，５０５…テーブル更新機能、５０３…デバイス割込管理テーブル、５１０，５１１…デバイス初期化機能、５１２，５１３…デバイス情報データベース、５２０，６２１，６２３，６２５，６８０…ハードウェア固有情報、５２１，６８１…バス種別、５２２，６８２…バス番号、５２３，６８３…デバイス番号、５２４，６８４…デバイス名称、５２５…属性フラグ、５２６…割込信号、５５０，５５１，５５５…バスブリッジ、５５２，５５８…ＰＣＩバス、５５３…ネットワークデバイス、５５４…ディスプレイデバイス、５５７…スイッチデバイス、５５９…センサデバイス、６２０…リンクトリスト、６２２，６２４，６２６…ポインタ、６８５…ドライバ、６８６…ＰＯＮ時ドライバ、６８７…再起動時ドライバ。
【図１】
0003765201.tif 000002
【図２】
0003765201.tif 000003
【図３】
0003765201.tif 000004
【図４】
0003765201.tif 000005
【図５】
0003765201.tif 000006
【図６】
0003765201.tif 000007
【図７】
0003765201.tif 000008
【図８】
0003765201.tif 000009
【図９】
0003765201.tif 000010
【図１０】
0003765201.tif 000011
【図１１】
0003765201.tif 000012
【図１２】
0003765201.tif 000013