以下、本発明の第1の実施例を図1により説明する。
本発明による計算機システムは、プロセッサA10,プロセッサB20,入出力制御装置30,メモリ100,120,140と、各種入出力装置から成る。
各種入出力装置として、操作員が使用するキーボード40,マウス41,表示装置70などがあり、外部の装置と入出力処理を行う通信装置71や機能拡張するための拡張スロット72−0〜m、オペレーティングシステム等を格納する不揮発性記憶42がある。また各種入出力装置70,71,72−0〜mは複数の信号線からなる拡張バス60を介して入出力制御装置30と接続する。以下ではこれら各種入出力装置を一括して入出力装置と呼ぶことにする。入出力装置は、拡張バスに含まれる割込信号を介して入出力制御装置に割込を集める。これらの入出力装置のうち、いずれかまたは全てがシステム構成に応じて省略されることもあり、さらに多様な入出力装置が接続されることもある。
これ以降の実施例では入出力制御装置30に二つのプロセッサが接続されている図を用いるが、実装上必ずしもこのような形態を取る必要はない。例えばプロセッサと入出力制御装置,メモリをひとつの計算機構成単位(モジュール)とし、複数のモジュールが拡張バス60を共有して接続する、いわゆる疎結合型マルチプロセッサ構成においても、これ以降の発明を適用することが可能である。なおモジュールはそれぞれを拡張バス60とは別の基板としても良く、全てあるいはいくつかのモジュールは拡張バス60と同一の基板としてもよい。
プロセッサ10,20はそれぞれ、複数の信号線からなるプロセッサバス80,82と割込信号線81,83を介して入出力制御装置30と接続する。メモリ100,120,140は複数の信号線からなるメモリバス50を介して入出力制御装置30と接続する。
プロセッサ10,20はそれぞれオペレーティングシステムを動作させるための処理装置である。メモリ100,120は、オペレーティングシステム101,121、入出力装置の情報取得要求を受けるデバイス情報取得機能102,122、入出力装置への情報設定要求を受けるデバイス情報設定機能103,123、構成定義テーブル141を参照する構成定義参照機能104,124、入出力装置を制御するデバイスドライバ105−0〜n,125−0〜n、それぞれのオペレーティングシステム上で動作するプログラムタスク106−0〜i,126−0〜iを保持する。これらのプログラムはそれぞれプロセッサ10,20によって読み出されて実行される。メモリ140は、それぞれのプロセッサ10,20が読み取り,書込みが可能なメモリである。このメモリ140には、各種入出力装置がいずれのオペレーティングシステムによって制御されるかが記述された構成定義テーブル141が保持されている。入出力装置の動作完了や変化は、割込信号線81,83を介してプロセッサ10,20へ通知される。
なお入出力装置への情報取得要求や情報設定要求とは、ここでは特に入出力装置自身の動作設定を読み取ったり書き込む事を意味する。例えば表示装置70の本来の目的は画面に画像や文字を表示することであるため、通常時は、表示装置70のデバイスドライバは表示したい画像や文字に関する情報を表示装置70が認識するバッファ等に設定する必要がある。その一方で表示装置70自身は拡張バス60に接続されており、拡張バス60で表示装置70を認識するためには表示装置70に対して各種資源(バスアドレス,割込,表示装置70を認識するコード,製造者名,リビジョン等)を設定あるいは取得する必要がある。これら通常動作以外に必要となる各種資源の設定に、入出力装置への情報取得要求や情報設定要求が必要となる。
構成定義テーブル141は、入出力装置のエントリ毎にいずれのオペレーティングシステムで処理されるべきかが記述されている。構成定義テーブル141は複数のオペレーティングシステム間で共有されるテーブルであり、複数のオペレーティングシステムから参照可能なメモリ(領域)に格納されている。
なお構成定義テーブル141は一旦設定したら頻繁に更新は行われず、また電源の投入、切断の前後で設定を保持する必要が有る。そのため構成定義テーブル141は不揮発性記憶装置を用いて保持するのが好適である。
しかしながらメモリ140は、必ずしも不揮発性メモリとする必要はない。例えば構成定義テーブル141を不揮発性記憶装置42内の構成定義テーブル保存領域44に保持して、計算機システムの立上げ時にシステム立上げ処理を行うプログラムが、不揮発性記憶装置42から構成定義テーブル保存領域44の内容をメモリ140に転送して構成定義テーブル141として運用する。
ここでシステム立上げ処理を行うプログラムとは、オペレーティングシステムを起動する前に計算機システムで必要な処理を実行するプログラムであり、例えば不揮発性記憶装置の初期化やメモリの初期設定を行う。ここでシステム立上げ処理を行うプログラムは、計算機システム内の最低限一つのプロセッサが実行すれば良いが、それぞれのプロセッサが整合を取りながらプログラムを実行しても良い。システム立上げ処理を行うプログラムは、不揮発性記憶装置42に格納しておき、それぞれのプロセッサが電源投入直後に不揮発性記憶装置42の当該領域を参照して実行する。
通信装置71は有線あるいは無線の中間媒体を介して、外部の計算機や装置とデータの受信あるいは送信を行う。拡張スロット72−0〜mは、計算機システムの機能を拡張するために使用されるものである。例えば外部の状態を観測するセンサ,スイッチ,画像入力カメラを接続するインターフェースを拡張したり、外部の装置を制御するためのリレーや通信装置を拡張するのに用いる。
なお本実施例では、メモリ100,120,140と別々のメモリを用いた例で説明しているが、これらのメモリのうち、任意の組み合わせで物理的に同一メモリ上に保持されるようにしても良い。またプロセッサがメモリを直接接続する機能を有する場合は、入出力制御装置30によらずに直接メモリ100,120,140をプロセッサ10,20に接続することも可能である。この場合メモリ140はプロセッサ間で共有する必要があるため、メモリ140として例えばデュアルポートメモリを採用し、メモリが持つ二つのメモリインターフェースをそれぞれのプロセッサバスに接続して共有を実現する。またこの場合の入出力制御装置30は、これらメモリを接続しないが各種入出力装置をプロセッサに提供したり、割込み制御をするために必要である。また一般には割込信号線81,83はプロセッサバス80,82の一部である。
本実施例では、計算機システム内に2つのオペレーティングシステム101,121が存在する場合について、それぞれのオペレーティングシステムが入出力装置を排他的または共有して動作する方法について説明する。なお本発明による計算機システムにおいて、オペレーティングシステムおよびプロセッサの個数は2つに限定されるものではなく、必要とする機能に応じてそれぞれ増減する。いずれの場合も本発明を適用することは可能である。
オペレーティングシステム101,121はそれぞれプロセッサ10,20で実行される。以下ではオペレーティングシステム101の動作について説明するが、これらの説明はオペレーティングシステム121においても同様である。
オペレーティングシステム101は、割り当てられたメモリおよびプロセッサを用いて、タスク106−0〜nを実行する。これらのタスク106−0〜iが入出力装置を使用する場合に、直接入出力装置を制御することは入出力装置の割り当てや、処理プログラムの再利用の観点から有効ではない。そのため一般的にはデバイスドライバが入出力装置の処理を担当し、これらタスクはデバイスドライバに入出力装置の処理を依頼する。
デバイスドライバがタスク106−0〜iから受ける入出力装置への処理依頼は、入出力装置から情報を取得する場合と入出力装置に情報を設定する場合に分類される。そこでデバイスドライバ105−0〜iはこれらの動作に応じて、デバイス情報取得機能102またはデバイス情報設定機能103に処理を依頼する。デバイス情報取得機能102またはデバイス情報設定機能103は、受け取った入出力装置に対する要求を処理するに当たり、該当する入出力装置が当該オペレーティングシステムで処理を実行するべき入出力装置であるか否かを検査する。検査するためにデバイス情報取得機能102またはデバイス情報設定機能103は、入出力装置に関する資源情報を構成定義参照機能104に問い合わせる。構成定義参照機能104は、構成定義テーブル141を参照して当該オペレーティングシステムが担当か否か検索して応答を、問い合わせがあったデバイス情報取得機能102またはデバイス情報設定機能103へ返す。
その結果、当該オペレーティングシステム101が処理を担当する入出力装置である場合には、デバイス情報取得機能102またはデバイス情報設定機能103は、デバイスドライバから要求された処理を実行し、デバイスドライバに所望の要求を返す。一方、当該オペレーティングシステム101が処理を担当する入出力装置でない場合には、情報取得機能102またはデバイス情報設定機能103は当該入出力装置があたかも存在していないかのように振る舞い、デバイスドライバに該当デバイスが存在していない旨を通知する。
一般に、入出力装置のドライバロードを行う時に入出力装置の存在確認が必要であり、ドライバロード後の通常動作時には装置の存在を確認する必要はない。ドライバをロードするのは、計算機システム立上げ時またユーザからの要求が有った時である。そこでドライバのロード時にのみ構成定義参照機能104が参照され、通常動作時は構成定義参照機能104が参照されないようにするのが、性能の観点より好適である。従来では、ドライバのロード時等に使用する「入出力装置を構成制御する際に使用する関数」アクセス手順と、通常時入出力装置を利用するアクセス手順は異なる。そこで構成定義参照機能104を呼び出すよう実装するのは、「入出力装置を構成制御する際に使用する関数」が適当である。本実施例では「入出力装置を構成制御する際に使用する関数」として、デバイス情報取得機能102またはデバイス情報設定機能103を例として述べる。
ここで構成定義テーブル141の内容について、各入出力装置の担当を唯一のオペレーティングシステムとなるように設定することにより、オペレーティングシステム間で排他的に当該入出力装置を使用できる。また構成制御テーブル141について、各入出力装置の担当を複数設定することにより、オペレーティングシステム間で共有して使用できる。
一方、入出力装置からの割込みについて、各オペレーティングシステム間で入出力装置を排他的に使用するためには、各入出力装置から通知される割込みを適切なオペレーティングシステムに報告しなければならない。
そこで、入出力制御装置30は割込みを振り分ける割込振分機能31を実装する。割込振分機能31は、各入出力装置からの割込みをそれぞれの入出力装置を担当するオペレーティングシステムに報告する。オペレーティングシステムは自身が担当する入出力装置からの割込みのみを受け、当該入出力装置を担当するデバイスドライバを呼び出し、入出力装置を制御することが可能となる。なお割込振分機能31は必ずしも入出力制御装置30上に実装する必要はなく、入出力制御装置30と独立して存在してもよい。
図2に割込振分機能31の構成を示す。割込振分機能31は、各入出力装置から報告される割込を適切なオペレーティングシステムに報告するための機構である。
各入出力装置からの割込は割込要因レジスタ200に保持される。割込プロセッサマスクレジスタ201,202は、それぞれプロセッサ10,20に報告すべき割込要因に対応したマスクが設定される。マスクビットに“1”が設定されると、対応した割込要因がプロセッサに報告される。
入出力装置から割込みが報告された時の動作について説明する。
入出力装置から割込が報告されると、割込要因レジスタ200上の要因ビットの内、当該入出力装置に対応する一つのビットが“1”にセットされる。そして要因ビットは割込プロセッサマスクレジスタ201,202の対応するビットと論理積が取られる(204,205)。最終的に、全ての割込要因の論理和が取られ(206,207)1本の割込信号線81,83となり、それぞれプロセッサ10,20に報告される。
ここで割込プロセッサマスクレジスタ201,202に設定する値は、構成定義テーブル141において設定される、入出力装置とオペレーティングシステムとの対応に合わせた値を用いる。例えば、表示装置70がプロセッサA10におけるオペレーティングシステム101で制御されるのであれば、割込プロセッサマスクレジスタ201(プロセッサA用)の対応するマスクビットを“1”に設定し、割込プロセッサマスクレジスタ202(プロセッサB用)の対応するマスクビットを“0”に設定する。
但し、当該入出力装置が共有設定されている場合は注意が必要である。この場合、両方のオペレーティングシステムに割込があがるよう設定して問題ない場合も有る。しかし後述する通信装置71を共有する場合などは、一般には一方のオペレーティングシステムに割込があがるように設定しておく方がハードウェア資源の管理の観点から実装が容易となる。そのため、割込プロセッサマスクビットの設定に関して、後述するOS判定フラグを用いて、一方のオペレーティングシステムに実装されるドライバのみが構成制御を行い、一方のオペレーティングシステムにのみ割込をあげるよう設定する必要がある。
以上のようにすることにより、各オペレーティングシステムから制御できる入出力装置と、割込が報告される入出力装置が一致し、デバイスドライバにおける一貫性が保たれることになる。
図3に割込振分機能31の別の構成を示す。図3では割込信号線81,83が複数の信号線により構成され、それら信号線で例えば数値レベルが符号化される場合の割込振分機能31について説明する。
図3(a)は割込振分機能31の構成を示すものであり、割込要因レジスタ200,割込レベルレジスタ210,割込エンコーダ220から成る。
図3(b)に割込レベルレジスタ210の構成を示す。割込レベルレジスタ210は、割込要因と1対1に対応して用意するレジスタであり、割込報告レベル211と割込処理をするプロセッサを示すプロセッサフラグ212から成る。ここでは、割込報告レベル211は複数ビットから成る符号化されたレベルを示す。また割込報告レベルは大きな値ほど割込優先度が高く、値0は割込が無いことを意味するものとする。プロセッサフラグ212に関して、当該割込を処理するプロセッサを表現するためにいくつか方法が考えられるが、例えばプロセッサフラグ212で持つビット毎に、処理するプロセッサを意味するよう表現する。すなわち、ビット0が1にセットされていればプロセッサA10,ビット1が1にセットされていればプロセッサB20が処理することを意味する。この時、10進数で値1の場合はプロセッサA10が処理し、値2の場合はプロセッサB20,値3はプロセッサA10とプロセッサB20が処理することを意味する。
図3(c)に割込エンコーダ220の構成を示す。割込エンコーダ220は、プロセッサA10に対する割込レベル出力部221と、プロセッサB20に対する割込レベル出力部222,プライオリティエンコーダ225から成る。プロセッサB20に対する割込レベル出力部222は、割込レベル出力部221における定数213(プロセッサAを示す)がプロセッサBを示す定数となっている以外は、割込レベル出力部221と同じである。
割込レベル出力部221において、各割込要因毎に、プロセッサフラグ212がプロセッサA10を示しているか比較器214にて検査する。プロセッサA10を意味するビットがセットされている場合、比較器214は“1”を出力する。そして、割込要因レジスタ200からの要因ビットと論理積215が取られる。すなわちプロセッサAに対応する入出力装置からの割込が発生した場合には、論理積215の出力は“1”となる。割込報告レベル211は、論理積215が“1”を出力される場合にそのままプライオリティエンコーダ225に入力される。論理積215が“0”を出力している場合には該当する割込要因からは割込報告レベル=0がプライオリティエンコーダ225に入力される。
プライオリティエンコーダ225では、入力される全ての割込要因のうち、最も割込報告レベルが高いものを選択し、割込信号線81に出力する。
以上よりそれぞれの入出力装置から報告される割込について、制御する対象の入出力装置からの割込のうち、最も割込報告レベルの高いものが各プロセッサに報告されることになる。
図4に本発明による構成定義テーブル141の構成を示す。
図4(a)は構成定義テーブル141の概念を示すテーブル例である。構成定義テーブル141は入出力装置名142とオペレーティングシステム・エントリ143から構成される。構成定義テーブル141を参照することにより、入出力装置に対応するオペレーティングシステムを決定することができる。例えば、マウスを制御するオペレーティングシステムはOS−Aであり、拡張スロット0を制御するオペレーティングシステムはOS−B、キーボードは制御するオペレーティングシステムが無く、通信装置はOS−AとOS−Bで共有されることが分かる。
図4(b)は、実際に実装される構成定義テーブル141の構成を示すテーブル例である。計算機で図4(a)のようなテーブルを直接実装する(例えば“キーボード”という文字列を扱う)のは効率と使い勝手の面で適さない。そこで入出力装置名に相当する情報を位置情報,オペレーティングシステムを示す名前には数値で表現するのが適当である。
実際の計算機システムにおいてデバイスドライバは、入出力装置を特定するためにオペレーティングシステムで一意に定まる位置情報を使用する。例えば、PCI(Peripheral Component Interconnect) バスにおいては、バス番号,デバイス番号,機能番号によって入出力装置を特定する。バス番号はシステム内のバス毎に一意に振られる番号であり、デバイス番号は同一バス内で入出力装置毎に一意に振られる番号,機能番号は同一入出力装置内で機能毎に一意に振られる番号である。機能番号に関して例を挙げると、LAN(Local Area Network)に接続する機能と、電話線に接続するモデム機能が同一入出力装置内に存在する場合、一般にはこれらの機能毎に独立して、動作を設定するためのレジスタ空間が確保される。この場合、バス番号,デバイス番号までは同一で、機能番号のみが異なるよう入出力装置が構成される。そこでレジスタ空間を識別するために機能番号でこれらの機能を識別し、構成制御や通常の処理を行う。
また処理するオペレーティングシステムを表現するに当たり、図3(b)で説明したように、ビット毎に処理するオペレーティングシステムを意味するよう表現する。すなわち、ビット0が1にセットされていればオペレーティングシステム101、ビット1が1にセットされていればオペレーティングシステム121が処理することを意味する。この時、10進数で値1の場合はオペレーティングシステム101が処理し、値2の場合はオペレーティングシステム121、値3はオペレーティングシステム101とオペレーティングシステム121が処理することを意味する。また値0はいずれのオペレーティングシステムも処理を行わないことを意味し、例えば計算機システムの検査等の目的で、当該入出力装置を処理しないようにすることが必要な場合に本機能を使うことができる。
本実施例における構成定義テーブル141は、バス番号144,デバイス番号145,機能番号146、さらにオペレーティングシステム毎に一意に振られたOS番号を示すOSエントリ143から構成される。図4(b)では、入出力制御装置30はバス番号=0,デバイス番号=0,機能番号=0の入出力装置であるとする。オペレーティングシステムは入出力装置自身をこれらの位置情報から特定し、動作条件を設定することが可能である。入出力制御装置30に接続されるキーボード40,マウス41は入出力制御装置30に接続される異なる機能であるとして、別の機能番号を振る。独立な機能番号により、これらの装置を識別することが可能である。
図4(c)にバス種別検索テーブル147の構成例を示す。図4(b)では構成定義テーブル141として一つのテーブルを示したが、バスの種別が複数有る場合には構成定義テーブル141をバスの種別毎に設け、これら複数の構成定義テーブル141を検索するためのバス種別検索テーブル147を用意する。バス種別検索テーブル147はバス種別148,構成定義テーブルインデックス149から成る。構成定義テーブルインデックス149は、構成定義テーブル141が複数存在する場合にこれらのテーブルが格納されるメモリの先頭アドレスを示す。
なお複数のバス種別を示すエントリを構成定義テーブル141に追加して、単一の構成定義テーブルとしても良い。
複数のバス種別の例として、PCMCIA/JEIDAで規定されるPCカードバスが計算機システムで用意される場合、図4(b)で示した構成定義テーブル141と同様なテーブルをPCカードバスに対しても用意し、バス種別テーブル147にPCカードのエントリを追加する。このような構成とすることにより、PCカードスロット毎に処理を行うオペレーティングシステムを設定することが可能となる。なお他のバス種においても、当該バスにおける入出力装置を一意に決定する位置情報を用いることにより、任意のバス種別において、入出力装置を制御するオペレーティングシステムを設定することができる。この場合、前述した位置情報の個数や内容が増減することがある。
なお構成定義テーブル141は複数のオペレーティングシステムが動作中に参照されるテーブルであるため、テーブルの更新を行う際には構成定義テーブル141を参照する全てのオペレーティングシステムが停止あるいは参照できないようにする必要がある。例えば構成定義テーブル141のエントリを更新するためには、全てのオペレーティングシステムが起動する前に更新するのが適当である。オペレーティングシステム稼働中でも、構成定義テーブル141を保持する不揮発性記憶装置42の構成定義テーブル保存領域44を更新し、次回のオペレーティングシステム再起動時に構成定義テーブルの内容が更新されるようにしても良い。すなわち、構成定義テーブル141を更新するためには、操作者が当該テーブルを一部変更あるいは全体更新し、テーブルのデータを構成定義テーブル保存領域44に格納し、計算機システムの電源を切断、再度投入する。その後いずれか一つのプロセッサにおいて実行されるシステム立上げプログラムが、先ほど変更した構成定義テーブル保存領域44よりテーブルのデータを取得しメモリ140の構成定義テーブル141を復元する。
図5に構成定義参照機能104の処理フローを示す。
構成定義参照機能104は、デバイス情報取得機能102とデバイス情報設定機能103から要求される入出力装置が存在するか判定する。すなわち、デバイス情報取得機能102とデバイス情報設定機能103からは、入出力装置を特定するバス種別,バス番号,デバイス番号,機能番号を伴い、当該オペレーティングシステム101で処理すべき入出力装置であるか確認を求められる。
構成定義参照機能104は最初に、デバイス情報取得機能102またはデバイス情報設定機能103から受け取った、バス種別を元にバス種別検索テーブル147を参照し、これから参照しようとする構成定義テーブル141、または構成定義テーブル上の領域を特定する(処理300)。引き続きバス番号144,デバイス番号145,機能番号146を元に、該当するエントリを構成定義テーブル141から検索する(処理301)。ここで該当するエントリが無い場合、「該当入出力装置無し」と要求元に応答し終了する(処理305)。該当するエントリがある場合、引き続きエントリに対応するOSエントリ143を参照し、OSエントリに含まれる値が、構成定義参照機能を呼び出したデバイス情報取得機能102またはデバイス情報設定機能103のオペレーティングシステムを含むか検査する(処理303)。例えば、オペレーティングシステム101からの呼出で、OSエントリ143のビット0が“1”にセットされていれば、オペレーティングシステム101は当該入出力装置の処理をするエントリに含まれると認められる。処理303でOSエントリに含まれない場合は、「該当入出力装置無し」と要求元に応答し終了する(処理305)。また処理303で含まれる場合、「該当入出力装置存在」と要求元に応答し、終了する(処理304)。
なお図5では構成定義参照機能104の処理フローという、ソフトウェア的処理手法を説明した。しかし、構成定義参照機能104は必ずしもソフトウェア的手法による必要はなく、例えばハードウェアで実装することも可能である。
図6(a)に構成定義参照機能104をハードウェアで実装する場合における、構成定義テーブル141の別の構成例を示す。ここでは図4(b)におけるバス番号144,デバイス番号145,機能番号146の値を16進数で表現し、連結した値をアドレス160とし、OSエントリ143をアドレス160に格納する値161とする。例えばマウス41は、バス番号=0,デバイス番号=0,機能番号=2であるので、アドレス160は0x002となり、アドレス0x002に格納される値161は0x01となる。
図6(b)は構成定義参照機能104の他の実施例である。構成定義参照機能104は、バス種別レジスタ162,バス番号レジスタ163,デバイス番号164,機能番号レジスタ165,テーブルインデックス166,オフセットレジスタ167,OSエントリレジスタ168から成る。
以下に、構成定義参照機能104を使用するフローを説明する。
デバイス情報取得機能102またはデバイス情報設定機能103は、構成定義参照機能104を利用する際に、検査したい入出力装置に対応するバス種別,バス番号,デバイス番号,機能番号をそれぞれバス種別レジスタ162,バス番号レジスタ163,デバイス番号164,機能番号レジスタ165に格納する。構成定義参照機能104は、格納されたバス種別レジスタ162の値を元にバス種別検索テーブル147を検索し、指定されたバス種別に対応する値(構成定義テーブルの先頭アドレス)を取得する。取得した値はテーブルインデックス166に格納される。またバス番号レジスタ163,デバイス番号164,機能番号レジスタ165に格納された値は、連結してオフセットレジスタ167に格納される。その後テーブルインデックス166とオフセットレジスタ167は加算され、図6(a)に示される構成定義参照機能104のアドレスを参照し、格納される値168を取得する。構成定義参照機能104を使用するデバイス情報取得機能102またはデバイス情報設定機能103は、一定時間後OSエントリレジスタ168を参照し、当初の入出力装置に対応するオペレーティングシステムを取得する。
以上より、ハードウェアで構成定義参照機能104を実現することが可能となる。
図6(c)にハードウェアで実装された構成定義参照機能104の実装例を示す。ハードウェアで実装された構成定義参照機能を使うことにより、図1における構成定義参照機能104はもはやメモリ100,メモリ120に存在するのではなく、例えば入出力制御装置30に含むことで、いずれのオペレーティングシステムから利用することが可能となる。
図7にデバイス情報取得機能102の処理フローを示す。
デバイス情報取得機能102は、デバイスドライバ105−0〜nから入出力装置に対するデータ読み取り要求を受ける。この時デバイス情報取得機能102は、バス種別,バス番号,デバイス番号,機能番号,読み取る入出力装置のアドレス,読み取るデータサイズ,読み取ったデータを格納するバッファのアドレスなどをデバイスドライバ105−0〜nから受け取る。
デバイス情報取得機能102は最初に構成定義参照機能104に対して、バス種別,バス番号,デバイス番号,機能番号を渡し、該当する入出力装置が存在するか確認要求を発行する(処理320)。構成定義参照機能104より返される応答により、当該入出力装置が存在しないと判明した場合、異常終了の応答を要求元のデバイスドライバに返し終了する(処理324)。当該入出力装置が存在する場合、要求された入出力装置のアドレスから指定されたサイズだけデータを読み取り指定されたバッファにデータを転送する(処理322)。その後要求元のデバイスドライバに正常終了の応答を返し終了する(処理323)。
図8にデバイス情報設定機能103の処理フローを示す。
デバイス情報設定機能103は、デバイスドライバ105−0〜nから入出力装置に対するデータ書き込み要求を受ける。この時デバイス情報設定機能103は、バス種別,バス番号,デバイス番号,機能番号,書き込む入出力装置のアドレス,書き込むデータサイズ,書込むべきデータを格納するバッファのアドレスなどをデバイスドライバ105−0〜nから受け取る。
デバイス情報設定機能103は最初に構成定義参照機能104に対して、バス種別,バス番号,デバイス番号,機能番号を渡し、該当する入出力装置が存在するか確認要求を発行する(処理340)。構成定義参照機能104より返される応答により、当該入出力装置が存在しないと判明した場合、異常終了の応答を要求元のデバイスドライバに返し終了する(処理344)。当該入出力装置が存在する場合、要求された入出力装置のアドレスへ指定されたバッファから指定されたサイズだけデータを転送する(処理342)。その後要求元のデバイスドライバに正常終了の応答を返し終了する(処理343)。
図9にオペレーティングシステム101の構成に関し、デバイスドライバ組込み機能150のブロック図を示す。
図9(a)はデバイスドライバ組込み機能150の一例のブロック図である。デバイスドライバ組込み機能150は、ドライバロード機能108と、入出力装置列挙機能109,入出力装置データベース110から成る。ドライバロード機能108は、指示されたドライバを所定の不揮発性記憶より読み出し、メモリ100上に展開し、当該ドライバで定められた機能を呼び出し、オペレーティングシステムで管理されるドライバの一覧に当該ドライバのエントリを追加する機能を有する。入出力装置データベース110は、入出力装置の種別毎に用意されるデータベースであり、入出力装置と対応するドライバの格納場所やドライバ起動時のパラメータが記載されている。入出力装置データベース110はオペレーティングシステムが呼び出す必要があるデバイスドライバに関するものであり、オペレーティングシステムが計算機システムに導入される際にあらかじめ含まれる。
図10に入出力装置列挙機能109の処理フローを示す。最初にバス種別,バス番号,デバイス番号,機能番号を初期化する(処理360)。次にバス種別,バス番号,デバイス番号,機能番号をデバイス情報取得機能102に指示し、結果を受け取る(処理361)。デバイス情報取得機能102の応答から、該当する入出力装置が当該オペレーティングシステム101の管理下にあるか判定する(処理362)。当該入出力装置が存在しない旨通知された場合、バス種別,バス番号,デバイス番号,機能番号について、次の入出力装置を指示するよう変更し処理361に戻る(処理368)。ここで次の入出力装置を指示するためには、例えばデバイス番号を1つ増加させたり、デバイス番号が規定の数値に達した場合にはデバイス番号初期化、バス番号を1つ増加させる。このようにして計算機システム中の全ての入出力装置を走査する。処理362より、該当する入出力装置が存在すると判明した場合には、入出力装置に対応するキーを作成し、入出力装置データベース110を検索し(処理363)、該当エントリが存在するか判定する(処理364)。該当エントリが存在しなかった場合、前回計算機システム起動時以降に入出力装置が追加されたことを意味するため、新たにドライバを計算機システムに導入する手順(後述)を実行する(処理367)。該当エントリが存在した場合、当該エントリより入出力装置に対応したデバイスドライバをオペレーティングシステム101に組み込むよう、ドライバロード機能108に指示する(処理365)。そして、最後まで入出力装置を走査しきったか判定する(処理366)。まだ全ての入出力装置を走査していない場合は、処理368を実行し、処理361を繰り返す。全ての入出力装置を走査した場合、入出力装置列挙機能109は終了する。
入出力装置列挙機能109と入出力装置データベース110により、計算機システムに存在する入出力装置をすべて検索し、前回の起動時以降入出力装置の構成に変更が有った場合には、自動的に対応するドライバをオペレーティングシステムに組み込むことが可能となる。
また計算機システムの稼働中に活線挿抜技術を用いて入出力装置が追加される場合、例えばPCカードが追加される場合、入出力装置列挙機能109は、やはりデバイスドライバ組込み機能150を用いることにより対応するドライバをロードすることが可能である。すなわち、PCカード等が新たに計算機システムに追加されると、プロセッサに対し割込が発生する。ここで割込みは、前述した割込振り分け機能31により処理を担当するプロセッサに対して報告される。その後割込を受けたプロセッサはオペレーティングシステムの機能からデバイスドライバ組込み機能150を条件付きで呼び出す。具体的には、指定されたバス種別,バス番号,デバイス番号,機能番号を伴いデバイスドライバ組込み機能150を呼び出す。その後デバイスドライバ組込み機能150は図10のフローの一部を処理し、対応するドライバを組み込むことが可能となる。
以上が入出力装置の自動検出とドライバの自動読み込みを実現するデバイスドライバ組込み機能150の構成に関する説明であるが、入出力装置の自動検出とドライバ自動読み込みを行わないデバイスドライバ組込み機能150もある。
図9(b)はデバイスドライバ組込み機能150の他の例のブロック図である。デバイスドライバ組込み機能150の他の例は、ドライバロード機能108と、入出力装置参照機能111,入出力装置リスト112から成る。入出力装置リスト112は、当該オペレーティングシステムで処理を行う全入出力装置のリストであり、入出力装置と対応するドライバの格納場所やドライバ起動時のパラメータが記載されている。
図11に入出力装置参照機能111の処理フローを示す。最初に入出力装置リスト112から入出力装置エントリを読み出す(処理380)。エントリに記載された入出力装置に対応するバス種別,バス番号,デバイス番号,機能番号を元にデバイス情報取得情報102に指示し、結果を受け取る(処理381)。デバイス情報取得機能102の応答から、該当する入出力装置が当該オペレーティングシステム101の管理下にあるか判定する(処理382)。当該入出力装置が存在しない旨通知された場合、入出力装置リスト112から次の入出力装置エントリを読み出す(処理385)。該当する入出力装置が存在すると判明した場合には、入出力装置に対応するデバイスドライバをオペレーティングシステム101に組み込むよう、ドライバロード機能108に指示する(処理383)。そして、入出力装置リスト112から全ての入出力装置を取得しきったか判定する(処理384)。まだ取得していない入出力装置がある場合は、処理385を実行し、処理381を繰り返す。全ての入出力装置を走査した場合、入出力装置参照機能111は終了する。
以上の構成と方法により、入出力装置を複数のオペレーティングシステムで排他的または共有して利用することが可能となる。
なお本発明では入出力装置を排他的あるいは共有して使用する際に、一方のオペレーティングシステムの動作が他方のオペレーティングシステムの動作に影響を与えていない。そのため本発明によると、一方のオペレーティングシステムを稼働中に、もう一方のオペレーティングシステムを停止したり、再起動することが可能となる。その際に稼働中のオペレーティングシステムは引き続いて動作を継続することが可能である。
本実施例では、オペレーティングシステム101,121はそれぞれプロセッサ10,20で実行される場合を説明したが、一つのプロセッサで二つのオペレーティングシステムを実行し、本発明を適用することも可能である。この場合には、入出力制御装置30は割込みを振り分ける機能を実装する必要が無くなり、全ての割込みは単一のプロセッサに報告される。
ここで一つのプロセッサで二つ以上のオペレーティングシステムを実行する技術について簡単に説明する。一般にオペレーティングシステムを実行するために必要なハードウェア資源としてプロセッサ(レジスタ,プログラムカウンタ,TLB(Translation Lookaside Buffer)等)と割込がある。そこで複数のオペレーティングシステムを切り換えて実行するためには、これらの資源をそれぞれのオペレーティングシステムで独立に制御できるよう見せることが必要であり、そのために複数のオペレーティングシステムとは独立なオペレーティングシステム切換機能(プログラム)を用意する。オペレーティングシステム切換機能は、特定の要因(一定時間経過を示す割込等)をきっかけとして起動され、それまで実行していた第1のオペレーティングシステムが利用していた上記のハードウェア資源をメモリの第1の特定領域に待避し、これから切り換える第2のオペレーティングシステムが使用するハードウェア資源をメモリの第2の特定領域より復元し、第2のオペレーティングシステムを実行する。
本実施例ではオペレーティングシステムの個数が2つの場合について説明したが、オペレーティングシステムの個数に制限されるものではない。例えば1つのオペレーティングシステムのみを実装した場合でも、構成定義テーブル141において任意の入出力装置をオペレーティングシステムの制御対象から外すことにより、該当する入出力装置の制御を行わないようすることが可能となる。これは計算機システムの検査やデバッグ作業の際に有効である。
本発明による第2の実施例を図12を用いて説明する。
図12は、複数のオペレーティングシステム間で同一種の入出力装置に対するドライバを共有するための計算機システムの構成を示したものである。図1と同一番号の要素に付いては、本発明の第1の実施例で説明したものと同一である。図12にて新たに加わった構成要素として、入出力制御装置30におけるOS判別フラグレジスタ32と、不揮発性記憶42における共通ドライバオブジェクト43,メモリ100とメモリ120における共通ドライバ107と共通ドライバ127である。
以下では同一の共通ドライバオブジェクトを複数のオペレーティングシステム間で共有するための方法について解説する。なお以下の説明ではオペレーティングシステム101における共通ドライバ107についてのみ動作の説明をするが、同じ動作はオペレーティングシステム121における共通ドライバ127でも当てはまる。また共通ドライバ107,共通ドライバオブジェクト43は、図中一つだけ示すが、必要な入出力装置に応じて複数の共通ドライバオブジェクトを用意するとよい。
オペレーティングシステム101は自身が立ち上がる際に、自身が管理するハードウェア資源(プロセッサ,メモリ等)や入出力装置を初期化する。入出力装置を初期化する際に、一般には入出力装置に対応するデバイスドライバによって初期化処理を実行する。そのためオペレーティングシステム101は、不揮発性記憶42からデバイスドライバに相当する共通ドライバオブジェクト43を読み出し、オブジェクトに含まれる命令コードや静的データ,変数領域などを初期化し、メモリ100上に配置するといったロード処理を行う。ロードされた共通ドライバオブジェクトは共通ドライバ107としてメモリ100上で存在する。その後オペレーティングシステム101より共通ドライバ107は呼び出され、所望の処理を行う。
共通ドライバ107は、自身がいずれのオペレーティングシステム、すなわちプロセッサから実行されているか判別する必要がある場合には、OS判別フラグレジスタ32を参照すると良い。OS判別フラグレジスタ32は、プロセッサA10とプロセッサB20の双方から読み出されるレジスタである。読み出される値は読み出し側に応じて変化する。例えばプロセッサA10より読み出した場合は0x55,プロセッサB20より読み出した場合は0xAAと読み出せる。
ここで共通ドライバオブジェクト43は、オペレーティングシステム101と121の双方より読み出されるように、双方のオペレーティングシステムで共通に認識できる格納方式により不揮発性記憶42に格納される。例えば、FAT(File Allocation Table)格納方式により格納する。ここで、FAT格納方式とはパーソナルコンピュータのフロッピー(登録商標)ディスクやハードディスクにおいてファイルを格納するために広く用いられている格納方式である。具体的な仕様についてはJIS規格X0605−1990『情報交換用フレキシブルディスクカートリッジのボリューム及びファイル構成』またはISO/IEC規格9293−1994『Information technology -- Volume and file structure of disk cartridges for information interchange』に開示されている。操作者はFAT格納方式で初期化された不揮発性記憶42の特定ディレクトリ(例えばcommonディレクトリ)の直下に共通ドライバオブジェクト43を格納しておき、各オペレーティングシステムは起動時にcommonディレクトリに格納されているドライバを必要に応じて読み込むよう設定することにより、ドライバを共通化することが可能となる。
なお共通ドライバオブジェクト43を複数のオペレーティングシステムで排他的にロードしても、同時にロードしても良い。入出力装置が排他的に利用される場合、一般的には対応する共通ドライバオブジェクト43は排他的にロードされるが、例えば計算機システム内の入出力装置に同一種のものが二つ存在し、一方をオペレーティングシステム101、もう一方をオペレーティングシステム121で利用する場合には、同一の共通ドライバオブジェクト43はそれぞれのオペレーティングシステムでロードされる。
その際、共通ドライバの処理として、自身がどちらのオペレーティングシステムから実行されているかによって処理内容を変更することがある。
図13にOS判別フラグレジスタ32を含む入出力制御装置30の構成を示す。
OS判別フラグレジスタ32はプロセッサA10に応答する値を示すプロセッサA定数249と、プロセッサB20に応答する値を示すプロセッサB定数250、これらの値を切り換えるセレクタ248から成る。セレクタ248は、選択入力信号251の値が“1”となる場合プロセッサA定数249を出力し、選択入力信号251の値が“0”となる場合プロセッサB定数250を出力する。
入出力制御装置30はプロセッサAアドレス信号240,プロセッサAデータ出力信号241,プロセッサAアドレスデコーダ244,プロセッサAデータセレクタ245,プロセッサBアドレス信号242,プロセッサBデータ出力信号243,プロセッサBアドレスデコーダ246,プロセッサBデータセレクタ247から成る。なお本ブロック図では特にデータ信号の出力部分について模式的に抽出したものであり、一般的な入出力制御装置ではデータは入力と出力がマルチプレクスされた入出力信号線にてプロセッサと通信する。
プロセッサAアドレスデコーダ244は、入力されるプロセッサAアドレス信号240から入出力装置内部の資源を選択する信号を出力するためのものである。ここでは特にOS判別フラグレジスタ32を選択する選択入力信号251を“1”に出力し、出力データセレクト信号253を出力する。プロセッサAデータセレクタ245は入力される選択入力信号253を元に、プロセッサAデータ出力信号241に、OS判別フラグレジスタ32からの出力信号を選択して出力する。
プロセッサBアドレスデコーダ246とプロセッサBデータセレクタ247も、それぞれプロセッサAアドレスデコーダ244とプロセッサAデータセレクタ245と同等の機能を有する。ただしプロセッサBアドレスデコーダ246はOS判別フラグレジスタ32に対する選択入力信号を出力しない。
以上の構成により、例えばプロセッサA10よりOS判別フラグレジスタ32を参照すると定数249で示される値0×55が得られ、プロセッサB20より参照すると定数250で示される値0×AAが得られる。なおここで定数249,250の値自身には特に意味はなく、任意の値が設定可能である。ここで必要なのは、同一プログラムをそれぞれのプロセッサ10,20で実行しなおかつプロセッサ毎に動作を切り換える必要がある場合に、本レジスタを用いて当該プログラムが現在どちらのプロセッサで実行されているかを知る手段を提供することにある。
本実施例における割込振分機能31の利用方法について以下に説明する。いずれのオペレーティングシステムで共通ドライバオブジェクト43が処理されるかは一般に操作者が設定するものであり、対応する入出力装置からの割込をどちらのオペレーティングシステムに報告するか、すなわち割込振分機能31にどのように設定するかは、共通ドライバオブジェクト43が実行される際に設定するのが適当である。そこで共通ドライバオブジェクト43の初期化処理中では、自身がいずれのプロセッサで実行されているかOS判別フラグレジスタ32を用いて判定し、自身が実行されているプロセッサに割込が通知されるように割込振分機能31を設定することが望ましい。
以上の構成により、共通ドライバオブジェクト43を用いて、それぞれのオペレーティングシステムで共通に利用することが可能となる。またOS判別フラグレジスタ32を参照することにより、それぞれのプロセッサに固有の処理を行うことが可能となる。
ここで本発明によると、オペレーティングシステム間である入出力装置を共有して使用する際に、ドライバを共有することも可能である。一般にデバイスの初期化処理は単一のオペレーティングシステムより行うことが望ましい。そこで当該入出力装置を構成制御するために、ドライバがどちらのオペレーティングシステムで実行されているかを判定し、一方のオペレーティングシステムのみ構成制御するよう処理すればよい。
本発明による第3の実施例を、図14を用いて説明する。
図14は、複数のオペレーティングシステムにおいて、入出力装置の制御担当を変更するための構成を示す。機能分散のマルチプロセッサを構成する計算機システムにおいて、システムの最適化をするために、それぞれのプロセッサ間で入出力装置の制御権を変更する場合がある。その際、従来ではオペレーティングシステムの再構築が必要であった。本発明では、入出力装置の制御権を簡便に変更するための構成について説明する。
本発明にて新たに加えた要素は、DBバッファ260,プロセッサ間で同期を取るためのプロセッサ間通信機能261,プロセッサA通信割込262,プロセッサB通信割込263である。DBバッファ260は、オペレーティングシステム101とオペレーティングシステム121の間でデータを受け渡しするためのものであり、それぞれのオペレーティングシステムより読み書き可能なメモリに存在し、本発明ではメモリ140に存在する。
図15にプロセッサ間通信の構成を示す。プロセッサ間で同期をとるためには、一方より他方のプロセッサになんらかの通知を送信し、もう一方より通知を受信したことを送信元に返答する機能が必要である。
図15(a)にプロセッサ間通信機能261の1実装例を示す。ここではプロセッサの持つポート出力と割込を用いる方法を示す。すなわち、通知を発行したいプロセッサは、自身が備えるポート出力を駆動する。発行側のポート出力は、もう一方のプロセッサの割込に接続されている。ここではプロセッサAポート出力280をプロセッサB割込み入力283に接続し、プロセッサBポート出力282をプロセッサA割込み入力281に接続する。例えばプロセッサA10からプロセッサB20にイベントを通知する場合には、プロセッサA10がプロセッサAポート出力280を駆動し、プロセッサB割込み入力283に通知する。プロセッサBは通知を認識すると、直ちにプロセッサBポート出力282を駆動し、プロセッサA割込み入力281に通知してプロセッサA10からの通知を認識したことを通知する。
図15(b)にプロセッサ間通信機能261の他の実装例を示す。図15(a)の構成ではプロセッサ間通信の要因までを通知することができない。本実装例は、プロセッサ通信の要因を示すレジスタを設けたことを特徴とする。プロセッサ間通信機能261は、Aバスインターフェース286,プロセッサA割込マルチプレクサ287,プロセッサA割込要因292,Bバスインターフェース288,プロセッサB割込マルチプレクサ289,プロセッサB割込設定291,プロセッサB割込要因293から成る。Aバスインターフェース286とBバスインターフェース288は、それぞれのプロセッサバスからプロセッサ間通信機能261内部のレジスタ等にアクセスするためのインターフェースである。プロセッサA割込マルチプレクサ287とプロセッサB割込マルチプレクサ289は、複数ある割り込み要因(プロセッサA割込設定290またはプロセッサB割込設定291を含む)から、それぞれの割込み信号線に適した信号にエンコードして出力する。ここで割込信号線81と割込信号線83は、複数の要因を通知するために複数の信号線から構成すると良い。プロセッサA割込要因292とプロセッサB割込要因293は、プロセッサ間通信で通知する割込みの要因を示す。またここではこれらの機能を入出力制御装置30に含めたが、必ずしも入出力制御装置30である必要はなく、個別プロセッサ間通信用ハードウェアとして別に実装しても良い。
以下に、プロセッサA10からプロセッサB20にイベントを通知する例について説明する。プロセッサA10は、まず初めにプロセッサB20に通知する要因を、プロセッサB割込要因293に設定する。引き続きプロセッサA10は、プロセッサB割込設定291に所定のコードを書き入れる。するとプロセッサB割込マルチプレクサ289で割込みがエンコードされ、プロセッサB20に割込みとして通知される。割込みを受けたプロセッサB20は、割込みの要因を調べるためにプロセッサB割込設定291,プロセッサB割込要因293の順に検査し、プロセッサA10からの割り込みであることと、割込みの要因がなんであるかを知る。その後割込みをクリアするために、プロセッサB割込設定291をクリアし、プロセッサ間通信を終了する。必要が有ればプロセッサB20は、プロセッサ間通信機能261を用いてプロセッサA10に通知しても良い。
再び図14について、例としてオペレーティングシステム101で処理を行っていた入出力装置の制御権をオペレーティングシステム121に渡す場合について説明する。入出力装置の制御権は操作者の指示により変更される。入出力装置の制御権を変更するためには、以下の作業が必要である。なお構成制御情報とはオペレーティングシステムが入出力装置を初期化する際に必要な情報のことであり、具体的にはメモリ、割込等のハードウェア資源の割り当て情報を意味する。
(イ)オペレーティングシステム間で入出力装置に対応するデバイスドライバを移動する。
(ロ)入出力装置に対応する構成制御情報をオペレーティングシステム間で移動する。
(ハ)オペレーティングシステム間で認識する入出力装置の構成を変更する。
ここで上記(イ)の対応策として、それぞれのオペレーティングシステムに予め組み込んでおいたり、実際にデバイスドライバのオブジェクトをそれぞれのオペレーティングシステムが認識する不揮発性記憶装置間で移動しても、さらには本発明の第2の実施例で示した共通ドライバオブジェクトを使用しても良い。
上記(ロ)に関して、それぞれのオペレーティングシステムは構成制御情報である入出力装置データベース110,130を変更する必要がある。以下に構成制御情報を変更する手順を説明する。オペレーティングシステム101は入出力装置データベースより、当該入出力装置に関するデータベースのエントリを抽出しDBバッファ260に書き出す。オペレーティングシステム101は、DBバッファ260にデータベースエントリを書き出したことをオペレーティングシステム121にプロセッサ間通信機能261を介して通知する。通知を受けたオペレーティングシステム121は、DBバッファ260を参照し、自オペレーティングシステムが管理する入出力装置データベース130を更新する。更新した後、オペレーティングシステム121は、オペレーティングシステム101にプロセッサ間通信機能261により、更新が終了した旨を通知する。更新終了通知を受けたオペレーティングシステム101は、自オペレーティングシステムが管理する入出力装置データベース110から当該入出力装置に関するエントリを削除する。
もしもオペレーティングシステム121が何らかの理由により正常にエントリを更新できない場合には、オペレーティングシステム101は、異常終了した旨をオペレーティングシステム121より通知されるか、または通知が一定時間内に終了しないことを自ら検出して、当該入出力装置のエントリを削除しない。なお通知が一定時間内に終了しないことを検出するには、プロセッサあるいはプロセッサ外部の入出力装置に実装されるタイマ機能を用いると良い。
ここでオペレーティングシステム101における入出力装置データベースのエントリの内容に関して、オペレーティングシステム121の構成と異なる場合がある。例えば入出力装置の出力する割込のレベルがオペレーティングシステム間で異なることがある。そのような場合、オペレーティングシステム121は入出力装置データベース130を更新する際、該当するデータベースエントリの内容を変更する。変更の際には、ユーザの介入による値変更の指示や、予め保持する入出力装置の初期設定情報等を元にオペレーティングシステム121は変更する。
万が一オペレーティングシステム121が入出力装置データベース130を更新した後に、何らかの理由により変更終了を通知できなかった場合には、両方のオペレーティングシステムが管理する入出力装置データベース中に同一入出力装置に関するエントリが存在することになる。最悪の場合でも、構成定義テーブル141の参照により、一方のエントリは意味の無いエントリ(存在しないはずの入出力装置に対するアクセス)として無視されるが、信頼性の面で不必要なエントリを残すのは問題がある。そこで確実に入出力データベースを更新するために、既存のデータベース更新技術、例えば2フェーズ・コミット方式を採用するとよい。
2フェーズ・コミット方式とは、まず更新に関連するデータベースを管理するサーバに対してトランザクションを完了(コミット)可能な状態に有るかどうか問い合わせ(フェーズ1)、いずれもレディ状態に有ることを確認すると、全てのデータベースサーバに対してコミットするよう通知する(フェーズ2)。ここでは入出力装置データベース110,130それぞれにデータベースサーバを設けて、入出力装置移動元にあるオペレーティングシステムがそれぞれのデータベースサーバにエントリの削除と追加を通知する。最終的にいずれも問題ない場合には、入出力装置移動元にあるオペレーティングシステムがコミットをそれぞれのデータベースサーバに通知して、実際のデータベースに反映するよう指示することにより、両方のデータベースが一気に更新される。この際、それぞれのデータベースサーバでは記録を取りながら処理を進めるため、万が一途中で不測の事態におちいっても復旧することが可能である。
以上により、安全に入出力エントリを移動することが可能となる。
上記(ハ)に関し、オペレーティングシステム間で認識する入出力装置の構成を変更するためには、構成定義テーブル141の変更が必要である。構成定義テーブル141を変更するには、図4の説明に述べた通り、オペレーティングシステムからの参照が無い状態でテーブルの内容を変更する必要がある。変更する手順は次の通りとなる。入出力装置の制御を手放すオペレーティングシステム(ここでの例はオペレーティングシステム101)は、上記(ロ)の処理が正常に終了した時点で、構成定義テーブル141を別のメモリ領域にコピーし、構成定義テーブルの当該入出力装置のOSエントリ143を“1”(オペレーティングシステム101を示す)から“2”(オペレーティングシステム121を示す)に変更する。オペレーティングシステム101は、変更した構成定義テーブルを不揮発性記憶装置42の構成定義テーブル保存領域44に書き込む。その後計算機システムを再立上げすると、計算機立上げ処理プログラムが構成定義テーブル保存領域44よりメモリ140に構成定義テーブル141を復元する。
以上のような構成と方法をとることにより、オペレーティングシステム間で入出力装置の制御権を移し替えることが可能となる。
本発明による第4の実施例を、図16を用いて説明する。
図16は、入出力装置を複数のオペレーティングシステムにて共有するための構成を示し、特に入出力装置として通信装置71を共有するための構成を示す。図1,図12,図14と同一番号の要素に付いては、本発明のこれまでの実施例で説明したものと同一である。図16にて新たに加わった構成要素として、メモリ100における通信共用ドライバ105−Aと、代理サーバ105−P,メモリ120における通信共用ドライバ125−B,通信バッファ264がある。以下に通信装置71を二つのオペレーティングシステム101,121が共有して利用する方法を説明する。
通信装置71は、通信路を介して他の計算機装置やネットワーク装置と接続している。通信装置71が接続する通信路として有線または無線の伝送媒体が有る。またこれらの媒体上ではプロトコルと呼ばれる通信規約に基づき、通信装置間でデータの交換が行われる。現在インターネットで主に使用されるプロトコルとして、TCP/IP(Transmission Control Protocol/Internet Protocol)やUDP/IP(User Datagram Protocol/Internet Protocol)が挙げられる。TCPやUDPも、IPもOSI(Open Systems Interconnection)参照プロトコルで定められる階層モデルにおいて、それぞれトランスポート層とネットワーク層に対応するプロトコルである。IPとは、他の通信ノードとの接続を実行するアドレスの割り振りや通信ノードに至るまでのルーティングを規定するプロトコルである。またTCPとは、各種通信サービス(TELNETやFTP(File Transfer Protocol),HTTP(Hyper Text Transfer Protocol)等)の信頼性を支えるもので、コネクション管理,チェックサム,応答確認等を規定するプロトコルである。UDPもTCP同様通信サービスの信頼性を支えるプロトコルである。TCPが通信装置間でコネクションを張るのに対し、UDPはコネクションレス型通信であり、TCPより簡略化されている。本実施例では、通信装置71がTCP/IPにて通信する例を元に説明する。
図17にTCPにて定められるデータパケットのフォーマットを示す。TCPのパケットは、送信元ポート番号500,送信先ポート番号501,その他のTCPヘッダ502,データ503から成る。ここではTCPヘッダの詳細な説明は省くが、その他のTCPヘッダ502は、送信用シーケンス番号,応答確認番号,ヘッダ長,コードビット,ウィンドウ,チェックサム,緊急ポインタから構成される。一般に、TCPより上位のネットワークアプリケーションは、ポート番号を元に、データ送受信の宛先アプリケーションを指定する。例えば『良く知られたポート番号』として、TELNETアプリケーションならば23,FTPアプリケーションならば20と21等がある。
以下では、図16について複数のオペレーティングシステム間で通信装置を共用する方法について説明する。なお本実施例では割込振分機能31について、通信装置71から上げられる割込はオペレーティングシステム101にあがるよう予め設定する。
通信装置71を共用するに当たり、通信装置71からドライバが受けるデータの種別として、一般に次の3種がある。
(a)データ受信
(b)受信データのステータス報告
(c)送信データのステータス報告
またドライバから通信装置71に渡すデータとして次の1種がある。
(d)データ送信
以下では、通信装置71とこれらデータを授受する方法について説明する。
まず受信処理に関して以下に説明する。通信装置71は、通信路よりデータを受信すると受信データと受信ステータスをメモリ上に転送し、データ受信した旨を割込にてオペレーティングシステム101に通知する。割込を受けたオペレーティングシステム101は割込みの要因が通信装置71に有ることを検出し、受信したデータの処理を通信共用ドライバ105−Aに依頼する。通信共用ドライバ105−Aは、受信したデータパケットのTCPヘッダ中の送信先ポート番号501を解析する。そして通信共用ドライバ105−Aは、受信したデータの送信先ポート番号501に対応した上位アプリケーションに通知する。ここで受信したデータの宛先が代理サーバ105−Pであった場合、データを受け取った代理サーバ105−Pは通信バッファ264に受信データを格納し、プロセッサ間通信261を用いて、オペレーティングシステム121にデータ受信した旨を通知する。割込を受信したオペレーティングシステム121は割込要因がデータ受信であることを検出すると、通信共用ドライバ125−Bに代理サーバ105−Pからのデータの処理を依頼する。通信共用ドライバ125−Bは、必要に応じて上位のアプリケーションに通知し処理を完了する。また通信共用ドライバ105−Aが受信したデータの宛先が、他の上位アプリケーション(例えばTELNET等)であった場合は、通信共用ドライバ105−Aは対応する上位アプリケーションにデータを通知し処理を完了する。
次に送信処理に関して以下に説明する。送信すべきデータを通信共用ドライバ105−Aが上位のアプリケーションより受け取ると、通信共用ドライバ105−Aは、受け取ったデータを元に送信データと送信ステータス(送信に関する情報が設定されている)をメモリ上に準備する。送信を開始する方法として、通信共用ドライバ105−Aが通信装置71に何らかの方法(通信装置71のレジスタ経由)にて送信準備が出来た旨を通知するか、あるいは通信装置71が一定周期で送信ステータスを検査し送信データの準備が出来たことを自分で判定する、という方法がある。いずれの場合でも、通信装置71は送信データと送信ステータスを元にデータを通信路に送信し、送信の成否や通信路の状態等を送信ステータスとして通信共用ドライバ105−Aに応答し、処理を完了する。一方オペレーティングシステム121において、上位アプリケーションが送信すべきデータを通信共用ドライバ125−Bに渡すと、通信共用ドライバ125−Bは次の処理を行う。通信共用ドライバ125−Bは上位アプリケーションより受けたデータをそのまま通信バッファ264に格納して、プロセッサ間通信機能261で代理サーバ105−Pに通知する。代理サーバ105−Pは通信共用ドライバ105−Aに通信バッファ264のデータを渡し処理を完了する。
ここで通信装置71からの受信データと受信ステータスの転送先、あるいは通信装置71への送信データと送信ステータスの格納先として、メモリ100でもメモリ140でも可能だが、他方のオペレーティングシステム121との間でデータの授受を考えると、双方のオペレーティングシステムよりアクセス可能なメモリ140に置くことが好適である。
本発明では、例えばTCP/IPに接続する通信装置71を用いる場合、送信先ポート番号501により受信したデータパケットの行き先オペレーティングシステムを決定することを特徴とする。またさらにポート番号までを同一とし、さらにその上位のアプリケーションにて規定される送信先番号等を規定し、それらを元に受信したデータパケットの行き先オペレーティングシステムを決定することを特徴とする。
なお本発明は通信装置を例に説明を行ったが、同様の手法により他の入出力装置の共有を実現することが可能である。すなわち各種デバイスドライバの上位アプリケーションとして代理サーバ105−Pに相当するアプリケーションを実装し、その代理サーバとメモリ140を経由してもう一方のオペレーティングシステムより入出力装置を制御するものである。
通信装置を共有することにより当該計算機システムを利用するユーザは、通信に必要なハードウェア資源(ケーブルやネットワークアドレス等)を削減できる上に、設定作業は半減し、効率よく通信することが容易となる通信費も削減できる。
本発明による第5の実施例を図18を用いて説明する。
図18は、複数のオペレーティングシステムが物理的に別の装置に分離している場合に入出力装置を共有するための構成例を示し、特に入出力装置として通信装置71を共有するための構成を示す。図1,図12,図14,図16と同一番号の要素に付いては、本発明のこれまでの実施例で説明したものと同一である。図18にて新たに加わった構成要素として、連携通信装置73−A,B,プロトコル変換機能74,連携伝送路76,デバイス情報遠隔取得機能127,デバイス情報遠隔設定機能128,遠隔装置リスト129,連携通信ドライバ400,420,遠隔計算機リスト410がある。オペレーティングシステム101と121はそれぞれ別の計算機装置2と計算機装置3に分離している。
連携通信装置73−A,Bは、連携伝送路76を介してお互いに接続し、また他の計算機装置とも接続する。連携伝送路76として有線または無線の伝送媒体が有る。
プロトコル変換機能74は、連携通信装置73−A,Bに実装してもよいが、一般的には連携通信装置73−A,Bのデバイスドライバとしてそれぞれ連携通信ドライバ400,420上に実装する。プロトコル変換機能74の機能は次の通りである。第1の機能は、デバイス情報遠隔取得機能127またはデバイス情報遠隔設定機能128からの要求を受け構成定義要求メッセージに変換する。第2の機能は、構成定義要求メッセージを連携伝送路76から受けると、デバイス情報取得機能102またはデバイス情報設定機能103に要求を発行しメッセージ発行元に応答を返す。第3の機能は、通信共用ドライバ105−A,125−Bの間でデータを相互に交換する、である。
なお計算機装置2が認める以外の計算機装置が、計算機装置2に共有関係を求めてくることは望ましくないので、共有可能な入出力装置を有する計算機装置2は自身が認める計算機のリストを用意する必要がある。本発明では遠隔計算機リスト410をオペレーティングシステム101が管理する。計算機装置2は自身が有する入出力装置の共有を認める計算機を本リストに記載し、本リストに記載されない計算機からの要求を拒絶する。
複数のオペレーティングシステムで入出力装置を共有するためには、次の2点を解決する必要がある。
(i)双方のオペレーティングシステムで立上げ時に当該入出力装置を共有することを認識する
(ii)運用中、いずれのオペレーティングシステムに通知するデータであるかを認識し、配送する
以下に例として通信装置71を二つのオペレーティングシステム101,121すなわち計算機装置2と計算機装置3で共有して利用する方法を説明する。なおここでは入出力装置の共有について説明するが、本発明によればこれら計算機装置間で、入出力装置を排他的に利用することは実施例1と同様の手順をとることにより可能である。
計算機装置3は立ち上がる際、またはユーザからの指示の際に、自計算機装置が利用可能な入出力装置を認識する必要がある。図18では計算機装置3において構成定義参照機能124や構成定義テーブル141を省略しているが、必要が有れば実装し、計算機装置3内部の構成制御を第1の実施例と同様に行ってもよい。本実施例では図9(b)で示したような入出力装置リスト112を実装し、計算機システムの構成制御を行うものとする。
図19に遠隔装置の認識に関する処理フローを示す。
図20に計算機装置2における入出力装置確認処理の処理フローを示す。
オペレーティングシステム121は、立上げ時あるいはユーザからの指示が有った時点で、入出力装置リスト112に列挙される入出力装置を構成制御するのと同様に、遠隔装置リスト129に列挙される入出力装置を構成制御する。以下では図19と図20に基づき説明を行う。
オペレーティングシステム121は、遠隔装置リスト129に記述される入出力装置の情報を取得するために、必要な情報と共にデバイス情報遠隔取得機能127を呼び出す(処理600)。デバイス情報遠隔取得機能127は、デバイス情報取得要求を連携通信ドライバ420を介して、連携通信機能73−Bに渡す(処理610)。連携通信ドライバ420では、プロトコル変換機能74を用いて要求を構成定義要求メッセージに変換し(処理620)、連携伝送路76を介して連携通信装置73−Aに通知する(処理621)。
通知を受けた連携通信装置73−Aのデバイスドライバである連携通信ドライバ400は、受信したデータより計算機装置3からの構成定義要求メッセージであることを認識し(処理630)、遠隔計算機リスト410に要求元である計算機装置3が含まれるか確認する(処理631)。もしも遠隔計算機リスト410に計算機装置3が含まれない場合、連携通信ドライバ400は該当する入出力装置が無い旨を通知し、処理を終了する(処理636)。もしも遠隔計算機リスト410に計算機装置3が含まれる場合、連携通信ドライバ400はデバイス情報取得機能102に要求を発行し、結果を得る(処理632)。そこでOSエントリが不一致であった場合、連携通信ドライバ400は処理636を実行し、処理を終了する。OSエントリが一致した場合、連携通信ドライバ400は計算機装置2と計算機装置3の間で認証関係に有るとして、入出力装置へのアクセスを許可するキーコードを生成する(処理634)。以降、当該入出力装置へ計算機装置3がアクセスをする場合、本キーコードをアクセス要求メッセージに添付あるいはキーコードを用いたメッセージの暗号化を行い、計算機装置2にアクセスする。連携通信ドライバ400は本キーコードを保存し、以降の計算機装置3からのアクセスに対して認証を行う。さて連携通信ドライバ400は、処理633の応答結果を生成し(処理635)、要求元である連携通信機能73−Bに対してメッセージに変換して返送する(処理637)。この時キーコードを合わせて送る。
応答を待っている連携通信機能73−Bは(処理622)、受信した結果を元に、認証されたかどうか判定し(処理623)、もし認証されたならキーコードを保存する(処理624)。その後連携通信ドライバ400は、プロトコル変換機能74によりメッセージをデバイス情報遠隔取得機能127に対する応答に変換し応答する(処理625)。
デバイス情報遠隔取得機能127は、認証されたか判定する(処理611)。認証された場合、さらに入出力装置があるのか否か判定する(処理612)。もし当該入出力装置があれば「入出力装置有り」と応答を返し(処理613)、なければ「入出力装置無し」と要求元オペレーティングシステムに応答を返す(処理614)。
その後オペレーティングシステム121は、遠隔装置認識の結果、該当する入出力装置が存在しているか判定する(処理602)。さらに当該入出力装置が計算機装置3によって排他的に利用されるものであれば(処理603)、当該入出力装置に対して、構成制御を実行する(処理604)。そして全ての遠隔装置リスト129中の入出力装置の検査が終わると、オペレーティングシステム121は処理を終了する(処理605)。
ここで計算機装置3は通信装置71が利用(計算機装置2と共有)可能であるとする。ここで例えば計算機装置3が排他的に利用する入出力装置が計算機装置2にある場合には、さらにデバイス情報遠隔設定機能129を用いて構成制御を行えばよい。この場合でも動作はデバイス情報遠隔取得機能128と同様である。
計算機装置3から計算機装置2における入出力装置を利用するためには、直接当該入出力装置を制御するのは困難であるため、代理のデバイスドライバや代理のサーバを予め起動しておく必要がある。起動する代理デバイスドライバまたは代理サーバは、計算機装置3からの要求に応じて動的に起動してもよいが、性能的な観点から予めオペレーティングシステムで当該ドライバやサーバを立上げておくのが良い。
以下に計算機装置3から通信装置71を利用する方法について説明する。まず通信装置71からの受信データを計算機装置3のアプリケーションに転送する場合を説明する。通信装置71がデータを受信した後、通信共用ドライバ105−Aが代理サーバ105−Pに通知をする所までは第4の実施例と同様である。データを受け取った代理サーバ105−Pは、連携通信ドライバ400に受信したデータを渡す。連携通信ドライバ400は渡されたデータを、通信処理に必要な処理を施した後に連携伝送路76を介して連携通信装置73−Bに送信する。連携通信装置73−Bはデータの受信を割込にてオペレーティングシステム121に通知する。オペレーティングシステム121は割込要因を解析し、連携通信装置73−Bからのデータ受信であると判定し、連携通信ドライバ420に処理を依頼する。連携通信ドライバは、受信したデータより最終的な宛先のアプリケーション(例えばHTTP)を判定し、データを渡して処理を終了する。
次に計算機装置3から通信装置71へデータを送信する場合を説明する。送信すべきデータを連携通信ドライバ420が上位のアプリケーションより受け取ると、連携通信ドライバ420は受けたデータに必要な通信処理を施した後に連携伝送路76を介して連携通信装置73−Aに送信する。連携通信装置73−Aはデータを通信バッファ264に格納し、データの受信を割込にてオペレーティングシステム101に通知する。その後処理を渡された連携通信ドライバ400はデータの送信要求であることを代理サーバ105−Pに通知する。代理サーバ105−Pは通信共用ドライバ105−Aに通信バッファ264のデータを渡し処理を完了する。
本発明によれば、計算機装置3は共有する入出力装置(本実施例では通信装置71)の立上げ時に必ずしも用意されていなくても良い。そのため計算機装置3は、計算機装置2が立ち上がった後に動的に連携通信装置73−A,Bを介して接続し、共有して入出力装置を利用することが可能である。また計算機装置3は計算機装置2が稼働中に動的に離脱しても、計算機装置2の動作に影響を与えない。計算機装置3は、離脱した後に再び接続する場合、計算機装置2の通信装置71を共有するよう例えばユーザからの指示を受け、共有関係を再確立することが可能となる。すなわち本発明によれば計算機装置3は、連携通信装置73−A,Bを介して動的に接続あるいは離脱する場合でも、計算機装置2と入出力装置を共有して利用することが可能である。
また本発明は、計算機装置立上げ時あるいはユーザの指示がある時に共有する入出力装置が利用できるか構成定義テーブルを参照し、通常の運用時には構成定義テーブルを参照しないため、通常の運用時に高速に共有入出力装置を利用できることを特徴とする。
図21に遠隔装置リスト129の構成例を示す。
遠隔装置リスト129は、計算機識別ID441,バス番号442,デバイス番号443,機能番号444,OSエントリ445から成る。計算機識別ID441は、連携通信装置73−A,Bが接続する連携伝送路76において唯一決定するID番号が列挙されている。本実施例では、計算機装置2のみの入出力装置を指定しているため、同一の計算機識別IDとなっている。計算機識別ID441として、例えばIPアドレスやMAC(Media Access Control)アドレス等の、当該計算機装置環境で唯一となるIDを採用するとよい。その他のバス番号442,デバイス番号443,機能番号444,OSエントリ445は、それぞれ図4(b)におけるバス番号144,デバイス番号145,機能番号146,OSエントリ147と同様である。なお遠隔装置リスト129は、基本的に計算機装置3が計算機装置2に対して共有あるいは排他的に利用する入出力装置に関する記述を示すので、一般的にはオペレーティングシステム101のみが使用するエントリは含まない。
計算機識別ID441を用いることにより、連携通信装置73−Bは共有する入出力装置を有する計算機装置を計算機装置ID441にて指定することにより、連携伝送路76に複数の計算機装置が接続されていても、唯一の計算機装置を指定することができる。
遠隔装置リスト129を用いることにより、連携通信ドライバ420は、計算機装置ID441により計算機装置を特定し、バス番号442,デバイス番号443,機能番号444により当該計算機装置内の入出力装置を特定できる。
これまで説明した第1から第5の実施例において、構成定義テーブル141の構成についてより簡便にするために、次のようにしてもこれまでの目的を達成することが出来る。すなわち、各OS毎に記憶領域を定め、それぞれの記憶領域におけるアドレスまたはビット位置と入出力装置を一意に関連付け、それぞれのアドレスまたはビット位置に設定されている値によって入出力装置の担当OSを決定する。アドレスと入出力装置を関連付ける例をとれば、例えば、オフセットアドレス=0の場合には表示装置70の担当OSを表し、オフセットアドレス=1の時は入出力制御装置30の担当OS、オフセットアドレス=2の場合にはキーボード40の担当OSを表すこととする。それぞれのオフセットアドレスには、当該記憶領域に関連付けられたOSが当該入出力装置を担当すべきか否かを示す値がデータとして保持されている。例えば、表示装置70はオペレーティングシステム101が担当するならば、オペレーティングシステム101用の記憶領域のオフセットアドレス=0には値1、オペレーティングシステム121用の記憶領域のオフセットアドレス=0には値0が設定される。ここで、値1は当該OSが担当する、値0は当該OSが担当しないことを意味する。そして共有する装置に関しては、格納する値に特定の値(例えば前述の値に128を加えた値とする)で表現すればよい。構成定義参照機能104,124は、上位のデバイスドライバから要求される入出力装置とオフセットアドレスの関係をあらかじめ(例えば変換テーブルにより)把握しておく機能が必要である。構成定義参照機能104,124は、それぞれのOSと関連する記憶領域を参照することにより、自身が担当する入出力装置を特定することが可能となる。以上の構成をとることにより、構成定義テーブル141は必ずしもメモリ140、すなわち共有メモリに存在する必要がなくなり、例えばそれぞれのオペレーティングシステムからのみ参照できるメモリ100,120に、それぞれのオペレーティングシステム用の記憶領域を配置することが可能となる。
本発明による第6の実施例を図22を用いて説明する。
図22は、構成定義テーブル141を構築するためのプログラムを示す。図4(b)に示すような構成定義テーブル141を用意するために、直接テーブルを記述するのは管理や使い勝手の面から望ましくない。そこで、図22(a)に示すようなGUI(Graphical User Interface)による、構成定義構築ツール500を用意する。ユーザは構成定義構築ツール500を用いて入出力装置の制御をいずれのオペレーティングシステムで行うか指示する。
構成定義構築ツール500は、決定ボタン501,取消ボタン502,全入出力装置リスト510,OS−A制御リスト511,共有制御リスト512,OS−B制御リスト513と、入出力装置を表わすアイコンから成る。構成定義構築ツール500は構成定義テーブル141を格納する計算機で実行してもよいが、他の計算機システムで実行して対象となる計算機に転送しても良い。
図22(a)は構成定義構築ツール500の初期画面である。決定ボタン501が押されると、現在の構成定義構築ツール500に設定されている内容で結果を構築情報ファイル515として出力し、構成定義構築ツール500は終了する。取消ボタン502が押されると、現在の構成定義構築ツール500に設定されている内容を取り消して、構成定義構築ツール500は終了する。構成定義構築ツール500は起動する際に、現在の構築情報ファイル514を取り込んで、その状態を構成定義構築ツール500の画面に反映する。
以下にユーザが構成定義構築ツール500を用いて、入出力装置の制御をいずれのオペレーティングシステムで行うか指示する方法について説明する。
ユーザは、入出力装置の処理を行うのがいずれのオペレーティングシステムまたは共有とするかを設定するために、入出力装置に対応するアイコンを選択し、対象となるリスト511,512,513のいずれかにアイコンをドラッグ・アンド・ドロップする。アイコンが置かれるリストに対応して、オペレーティングシステム101,オペレーティングシステム121、または共有となる。図22(b)に示すように設定が終了すると、ユーザは決定ボタン501を押す。その結果、構成定義構築ツール500は現在の設定情報を構築情報ファイル515として出力する。また現在の設定情報を破棄したい場合、ユーザは取消ボタン502を押し、構成定義構築ツール500を終了する。
図22(c)は構築情報初期設定ファイル540の内容例である。構築情報初期設定ファイル540は入出力装置名520,装置ID521,バス種別522,バス番号523,デバイス番号524,機能番号525,OS固定フラグ526,共有フラグ527から構成される構造体の配列である。このほかにも、入出力装置に対応するアイコンのビットマップファイル名等も必要に応じて追加する。入出力装置名520は、アイコンと合わせて表示される入出力装置の名前である。装置ID521は、GUI画面のアイコンに対応した一意の番号である。バス種別522,バス番号523,デバイス番号524,機能番号525は、図4(b),(c)で説明したバス種別148,バス番号144,デバイス番号145,機能番号146と同様である。OS固定フラグ526は、当該入出力装置を処理可能なオペレーティングシステムを表わしたものである。本実施例では、0x01はオペレーティングシステム101を、0x02がオペレーティングシステム121を表わし、これらの論理和である0x03が両方のオペレーティングシステムを表わす。すなわち図22(c)では“表示装置”のみがオペレーティングシステム101でしか処理可能であり、“拡張スロット0”がオペレーティングシステム121でしか処理可能であり、他の入出力装置はどちらのオペレーティングシステムでも処理可能であることを意味する。共有フラグ527は、当該入出力装置が共有して制御することが可能であるかを示すフラグである。0x01の値を持つ入出力装置が共有可能であり、0x00の値を持つ入出力装置は共有不可能であることを表わす。本実施例では通信装置のみが共有可能であることを表わしている。なお、共有不可能のフラグを持つ入出力装置は、共有制御リスト512にドロップすることは出来ないよう制御される。
次に装置ID521を用いて、構成定義構築ツール500から構築情報ファイル515を作成する手順を示す。ユーザがアイコンをGUI画面の中のあるリストから引き抜くと、各リストを管理する配列から当該入出力装置に対応する装置ID521が削除される。その後アイコンが別のリストに置かれると、当該リストを管理する配列に当該入出力装置の装置ID521が追加される。そしてユーザが決定ボタン501を押すと、OS−A制御リスト511,共有制御リスト512,OS−B制御リスト513をそれぞれ管理する配列に含まれる装置ID521が決定される。その後それぞれの装置ID521と対応するバス種別522,バス番号523,デバイス番号524,機能番号525に加え、それぞれを制御するオペレーティングシステムを意味するフラグが生成され、構築情報ファイル515として出力する。構築情報ファイル515は、対象となる計算機システムに転送される際に、構成定義テーブル141で定められる書式に従い変換され、構成定義テーブル141または不揮発記憶装置42上の構成定義テーブル保存領域44に格納される。
以上より、構築情報初期設定ファイル540に基づき、構成定義構築ツール500はGUI画面上でアイコンの移動を制御したり、構築情報ファイル515を出力することが可能となる。
図23に構成定義構築ツールの他の実施例を示す。
図23は他の構成定義構築ツール550のGUI画面の構成を示す。それぞれの入出力装置は、いずれかのオペレーティングシステムに固定的にしか使用できないものもあり、また共有可能な入出力装置も制限される場合がある。その場合、図22(a)にて示されるユーザインターフェースでは、入出力装置が持つ制限が直感的に分かりづらい点がある。その問題点を解決するために、構成定義構築ツール550では、入出力装置毎に取りうるオペレーティングシステムの組を予めプルダウンメニュー形式で提供することを特徴とする。
構成定義構築ツール550は、入出力装置名551とOS選択プルダウンリスト552から成る。入出力装置名551毎に、取りうるオペレーティングシステムの組はOS選択プルダウンリスト552に記載されている。例えば図22(c)の初期設定によると、通信装置はオペレーティングシステム101,121あるいは共有のいずれも取りうるので、OS選択プルダウンリスト552には全てが記載されている。そこでユーザはいずれの構成を選択することが可能である。一方、拡張スロット0はオペレーティングシステム121(OS−B)のみが制御可能となっているため、OS選択プルダウンリスト552は選択の余地がなく、“未使用”または“OS−Bのみ”の項目だけが選択可能となる。その他のボタンやボタンを押した後の動作は、図22の場合と同様である。
本発明によれば、市場に流通する汎用OSを活用しつつ複数のOSを実装する計算機システムにおいて、入出力装置を制御するOSを柔軟に設定し、例えば入出力装置個別に制御するOSを排他的あるいは共有して設定することが可能となる。さらに入出力装置を制御するオペレーティングシステムを「無し」とすることで、当該入出力装置を一時的に無効にすることが可能である。また当該オペレーティングシステムに無関係な入出力装置に対しても安全にアクセスできるため、計算機システム内の全入出力装置を検索し構成制御するといった、プラグアンドプレイ・オペレーティングシステムを採用することが可能となる。
また本発明によれば、入出力装置を共有する複数のOSを実装した計算機システムにおいて、一方のOSの稼動状況に関わらず、もう一方のOSは共有する入出力装置を継続して使用することが可能となる。すなわち本発明の目的である、一方のOSの不具合は入出力装置を共有するもう一方のOSの稼動状況に影響を与えないようにすることが可能となる。
また本発明により、通信装置をはじめとする入出力装置を、別筐体の計算機装置間で共有することが可能となる。例えば、携帯電話で通話しながら、携帯電話に取り付けられた無線装置を介して、同じく無線装置を取り付けられたゲーム装置にデータを転送するといった使い方が可能となる。この際、計算機装置が認証しない計算機装置からの入出力装置アクセスを拒絶することも本発明により実現できる。
さらに本発明によれば、同種の複数のOSを実装する計算機システムにおいて、OS間で入出力装置のデバイスドライバを共有することが可能となる。
さらに本発明によれば、入出力装置を複数のOS間で排他的に制御する計算機システムにおいて、入出力装置を制御あるいは管理するOSを容易に切り換えることが可能となる。このため、一方のオペレーティングシステムの負荷が高まった場合、もう一方のオペレーティングシステムにある入出力装置の処理を移行する際に、ユーザの作業量を低減することができる。
また本発明によれば、これら複数の入出力装置を制御するオペレーティングシステムを設定するために、GUI画面を用いて容易に設定することが可能となる。入出力装置によっては、特定のオペレーティングシステムによってのみ制御されるものも有り、こういった入出力装置に対してもユーザが迷わないように、プルダウンリストを用いて取りうるオペレーティングシステムの組をGUI画面で設定することも可能となる。