(57)【要約】【課題】  ＯＳおよびアプリケーションプログラムの入出力動作を停止させることなく、その入出力動作にかかる二重化された入出力装置の、ドライバを更新する。【解決手段】  ドライバ７００は上位ドライバ７１０と二重化された入出力装置それぞれの入出力動作を制御する下位ドライバ７２０、７３０とを備える。下位ドライバ７２０、７３０のうち、一方が現用系、他方が待機系である。ドライバ更新の指示が出されると、上位ドライバは、待機系のドライバを更新して再組み込みを行う。次に、現用系と待機系とを切り換える。もう一度、待機系のドライバの更新・再組み込みと、現用系／待機系の切り換えとを行う。【選択図】  図２
2005056148.tif 000002
【特許請求の範囲】
【請求項１】
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するドライバ更新システムであって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示手段と、
制御を停止させた下位ドライバを、新たな下位ドライバで置換する下位ドライバ置換手段と、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示手段と、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示手段と、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる装置の制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する更新手段と、
を具備することを特徴とするドライバ更新システム。
【請求項２】
前記制御停止指示手段は、上位装置から、下位ドライバを更新する旨の指示と交換対象の新たな下位ドライバとを受信し、待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示し、
前記下位ドライバ置換手段は、前記上位ドライバからの、制御を停止させた旨の通知に応答して、制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換し、
前記制御開始指示手段は、前記下位ドライバ置換手段による置換の完了後、置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示し、
前記切換指示手段は、前記上位ドライバからの制御を開始した旨の通知に応答して、現用系の装置と待機系の装置の切り換えを前記上位ドライバに指示し、
前記更新手段は、前記上位ドライバからの切換完了通知に応答して、現用系であった装置に対応する下位ドライバを更新するための処理を行う、
ことを特徴とする請求項１に記載のドライバ更新システム。
【請求項３】
前記更新手段は、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる制御を停止させることを前記上位ドライバに指示する第２の制御停止指示手段と、
該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換する第２の下位ドライバ置換手段と、
置換後の新たな下位ドライバによる制御を開始させる第２の制御開始指示手段と、
を具備することを特徴とする請求項１または２に記載のドライバ更新システム。
【請求項４】
前記少なくとも２台の装置のうち１台が主に現用系として動作するように設定されており、
前記更新手段は、
下位ドライバを更新して、待機系として制御を開始した後で、前記主に現用系として動作する装置を現用系に切り換えることを前記上位ドライバに指示する第２の切換指示手段
をさらに具備することを特徴とする請求項１、２または３に記載のドライバ更新システム。
【請求項５】
前記下位ドライバ置換手段は、前記下位ドライバと前記新たな下位ドライバとの新旧を判別して、前記新たなドライバが前記下位ドライバと同一か古い場合には置換しないことを特徴とする請求項１乃至４の何れか１項に記載のドライバ更新システム。
【請求項６】
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するドライバ更新方法であって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示ステップと、
制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換する下位ドライバ置換ステップと、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示ステップと、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示ステップと、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる該対応する装置の制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる該対応する装置の制御を開始させることを前記上位ドライバに指示する更新ステップと、
を備えることを特徴とするドライバ更新方法。
【請求項７】
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するプログラムであって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示手順と、
制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換する下位ドライバ置換手順と、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示手順と、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示手順と、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する更新手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長構成で設けられた各入出力装置の動作制御を行うデバイスドライバプログラム（ドライバ）を更新する、ドライバ更新システム、ドライバ更新方法およびプログラムに関する。
【背景技術】
【０００２】
電子計算機システムに接続される入出力装置などの制御を行うプログラムは、デバイスドライバプログラムと呼ばれている。以下、デバイスドライバプログラムをドライバと称する。ドライバは、オペレーティングシステム（Operating System、以下ＯＳと称する。）およびアプリケーションプログラム（以下、アプリと称する。）からの要求により入出力装置などの制御を行う。
【０００３】
ドライバは、バグの解消、装置の更新、などの理由により更新される。更新されたドライバにより制御を行うには、古いドライバの実行を停止させてアンロードし、新しいドライバをロードして実行を開始させなければならない。従って、ドライバを更新している間、ＯＳおよびアプリからドライバによる制御が行われていない装置へアクセスできない。
【０００４】
一方、電子計算機システム特に、メインフレーム・サーバなどの用途に用いられるコンピュータの入出力装置などは無停止運転のために冗長構成をとっている。このような電子計算機システムにおいては、ドライバの更新時であってもＯＳおよびアプリの動作が（一時）停止しないことが要求される。
【０００５】
ＯＳおよびアプリの動作を（一時）停止させることなく、冗長構成された装置を制御するドライバを更新する従来の技術は、更新するドライバのロード、および関連するアプリの初期設定を行う技術である（例えば、特許文献１参照。）。ドライバが更新されている間、旧ドライバと新ドライバとが共にロードされており、各装置の制御を段階的に旧ドライバから新ドライバに移行させる。
【特許文献１】特開平８−６９４３０号公報（第３−６頁、図８、９）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このドライバ更新方法によると、ＯＳおよびアプリはドライバを介して任意の装置へアクセスできるため、担当するドライバが切り換えられようとしている装置へアクセスしようとするＯＳおよびアプリの動作は（一時）停止する。
【０００７】
本発明は、ＯＳおよびアプリケーションプログラムの動作を（一時）停止させることなく、冗長構成をとっている装置を制御するドライバを更新可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の観点にかかるドライバ更新システムは、
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するドライバ更新システムであって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示手段と、
制御を停止させた下位ドライバを、新たな下位ドライバで置換する下位ドライバ置換手段と、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示手段と、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示手段と、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる装置の制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する更新手段と、
を具備する。
【０００９】
本発明によれば、待機系として動作している装置の制御を停止させて、下位ドライバを更新して制御を開始させる。次に、現用系と待機系とを切り換え、現用系から待機系となった装置の制御を停止させて、下位ドライバを更新し、制御を開始させる。
このため、ＯＳおよびアプリケーションプログラムの動作を（一時）停止させることなく、下位ドライバが更新される。
【００１０】
例えば、上記ドライバ更新システムにおいて、
前記制御停止指示手段は、上位装置から、下位ドライバを更新する旨の指示と交換対象の新たな下位ドライバとを受信し、待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示し、
前記下位ドライバ置換手段は、前記上位ドライバからの、制御を停止させた旨の通知に応答して、制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換し、
前記制御開始指示手段は、前記下位ドライバ置換手段による置換の完了後、置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示し、
前記切換指示手段は、前記上位ドライバからの制御を開始した旨の通知に応答して、現用系の装置と待機系の装置の切り換えを前記上位ドライバに指示し、
前記更新手段は、前記上位ドライバからの切換完了通知に応答して、現用系であった装置に対応する下位ドライバを更新するための処理を行う。
【００１１】
上記ドライバ更新システムにおいて、
前記更新手段は、例えば、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる制御を停止させることを前記上位ドライバに指示する第２の制御停止指示手段と、
該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換する第２の下位ドライバ置換手段と、
置換後の新たな下位ドライバによる制御を開始させる第２の制御開始指示手段と、
を具備する。
【００１２】
上記ドライバ更新システムにおいて、
前記少なくとも２台の装置のうち１台が主に現用系として動作するように設定することができる。
この場合、前記更新手段は、
下位ドライバを更新して、待機系として制御を開始した後で、前記主に現用系として動作する装置を現用系に切り換えることを前記上位ドライバに指示する第２の切換指示手段をさらに具備する。
【００１３】
上記ドライバ更新システムにおいて、
前記下位ドライバ置換手段が、前記下位ドライバと前記新たな下位ドライバとの新旧を判別して、前記新たなドライバが前記下位ドライバと同一か古い場合には置換しないものであってもよい。
【００１４】
本発明によれば、ドライバプログラムを誤ってダウングレードすることが防止される。
【００１５】
本発明の第２の観点にかかるドライバ更新方法は、
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するドライバ更新方法であって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示ステップと、
制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換する下位ドライバ置換ステップと、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示ステップと、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示ステップと、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる該対応する装置の制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる該対応する装置の制御を開始させることを前記上位ドライバに指示する更新ステップと、
を備える。
【００１６】
本発明の第３の観点にかかるプログラムは、
１台が現用系として動作し、他が待機系として動作するように冗長構成された少なくとも２台の装置を制御し、前記少なくとも２台の装置を１対１で制御する少なくとも２つの下位ドライバと該少なくとも２つの下位ドライバを共通に制御する上位ドライバとから構成される装置制御システムの前記下位ドライバを更新するプログラムであって、
待機系の装置に対応する前記下位ドライバによる制御を停止させることを、前記上位ドライバに指示する制御停止指示手順と、
制御を停止させた下位ドライバを、新たな下位ドライバでそれぞれ置換する下位ドライバ置換手順と、
置換された新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する制御開始指示手順と、
現用系の装置を待機系に切り換え、待機系の装置を現用系に切り換えることを前記上位ドライバに指示する切換指示手順と、
現用系から待機系に切り換えられた装置の制御を担当する下位ドライバによる制御を停止させることを前記上位ドライバに指示し、該下位ドライバによる制御の停止後、該下位ドライバを、新たな下位ドライバで置換し、置換後の新たな下位ドライバによる制御を開始させることを前記上位ドライバに指示する更新手順と、
をコンピュータに実行させる。
【発明の効果】
【００１７】
本発明は、例えば、多重化された入出力装置の構成を含む電子計算機システムにおいて、それらの入出力装置に対するＯＳあるいはアプリケーションプログラムの動作が停止させることなく、それらの入出力装置を制御するデバイスドライバプログラムを更新可能である。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の形態にかかる計算機システムを説明する。ここでは、外部記憶装置のみが二重化されている例を説明する。この計算機システムの構成を図１に示す。なお、理解を容易にするため、これらの外部記憶装置を制御するために使用するデバイスドライバプログラム（以下、ドライバと称する。）は同一ファイルから生成される。また、アプリケーションプログラム（以下、アプリと称する。）の入出力要求はオペレーティングシステム（ＯＳ）を経由するものとする。
【００１９】
図示するように、この計算機システムにおいて、コンピュータ１００に外部記憶装置２２０、２３０と、キーボード３１０と、マウス３２０およびディスプレイ４００とが接続されている。
【００２０】
コンピュータ１００は、ワークステーション、サーバなどの情報処理装置として機能する。コンピュータ１００は、制御部１１０と、主記憶部１２０と、入出力チャネル１３０とを備える。
【００２１】
制御部１１０は、中央演算処理装置（ＣＰＵ）などを備え、各種データ処理を主記憶部１２０に格納された動作プログラムによって実行する。ここで、動作プログラムには、ＯＳ、ドライバ、アプリなどを含む。
【００２２】
主記憶部１２０は、例えば、ＲＡＭ（Random Access Memory）から構成され、制御部１１０のワークエリアとして機能する。主記憶部１２０には、ＯＳ、ドライバ、アプリ、ドライバ更新プログラム、「新しいドライバ」、などの実行コードあるいはデータが、外部記憶装置２２０あるいは２３０などからロードされる。
【００２３】
入出力チャネル１３０は、ＣＰＵなどを備え、主記憶部１２０と入出力装置との間のデータ転送処理を行う。
【００２４】
外部記憶装置２２０と外部記憶装置２３０とは、ハードディスク、もしくはハードディスクアレイなどから構成され、コンピュータ１０の補助記憶装置としての役割を果たす。
外部記憶装置２２０と外部記憶装置２３０とは、一方が現用系となって動作し、他方が待機系となって動作する。現用系が障害などの理由により動作できなくなった場合には、例えば、ドライバが現用系と待機系とを入れ替える。ミラーリングなどの手法により、外部記憶装置２２０が格納しているデータと外部記憶装置２３０が格納しているデータとは同期がとられる。
【００２５】
キーボード３１０、およびマウス３２０は、利用者がコンピュータ１００に各種情報処理の開始などを指示する装置である。また、ディスプレイ４００は、コンピュータ１００の処理結果を利用者に対して表示する装置である。
【００２６】
ドライバは、ＯＳおよびアプリと入出力装置などを橋渡しするためのプログラムである。ドライバの構成と機能とを、図２を用いて説明する。
図示するように、ドライバ７００は、上位ドライバ７１０と、下位ドライバ７２０、７３０とから構成される。
上位ドライバ７１０は外部インターフェイス７１１と、ディスパッチ部７１２と、内部インターフェイス（Ｉ／Ｆ）７１３などを備える。
下位ドライバ７２０は、内部Ｉ／Ｆ７２１と、処理部７２２と、ハードウェアインターフェイス（Ｉ／Ｆ）７２３などを備える。下位ドライバ７３０は下位ドライバ７２０と同じ構成、機能を有する。
【００２７】
ドライバ７００はＯＳ６００からの入出力要求などを、上位ドライバ７１０内の外部インターフェイス７１１で受信する。ディスパッチ部７１２は、キューを備え、ＯＳ６００から送信された入出力要求はこのキューに蓄えられる。ディスパッチ部７１２は、キューに蓄えられた入出力要求を現用系側の外部記憶装置に送出する。ディスパッチ部７１２は、ドライバ７００を制御する制御命令もＯＳ６００から受信し、制御命令に基づいて、下位ドライバの切り離し、組み込みなどを実行する。
ドライバ７００でＯＳ６００から受信した入出力要求が振り分けられ、また、外部記憶装置２２０と２３０とに格納されているデータは同期がとられるので、ＯＳ６００は外部記憶装置２２０と２３０との何れが現用系として動作しているかということを考慮しないで、入出力要求をドライバ７００に送信できる。
【００２８】
上位ドライバ７１０は、図示しないエントリポイントテーブルを保持している。エントリポイントテーブルは、現用系側の下位ドライバを呼び出す番地（エントリポイント）を記載する。
内部Ｉ／Ｆ７１３は、各入出力要求に対応して、エントリポイントテーブルに記載された（下位ドライバの）番地をコールする。内部Ｉ／Ｆ７１３が、これらの番地をコールすると、下位ドライバはエントリポイントに応じた処理を実行する。
【００２９】
下位ドライバ７２０、７３０はそれぞれ内部Ｉ／Ｆ７２１、７３１で上位ドライバ７１０から入出力要求などを受け取り、それぞれ、処理部７２２、７３２で入出力要求などを解析する。また、入出力要求などの解析結果に基づいて、ハードウェアＩ／Ｆ７２３、７３３から外部記憶装置２２０、２３０を制御する信号を送出する。
外部記憶装置２２０、２３０の処理結果（例えば、読み出されたデータなど）はハードウェアＩ／Ｆ７２３、７３３で受け取られ、内部Ｉ／Ｆ７２１、７３１、７１３、外部インターフェイス７１１を経由してＯＳ６００に送信される。
【００３０】
また、上位ドライバ７１０は下位ドライバ７２０、７３０を制御するための制御命令（ドライバの論理的な切り離し、登録など）を出力する。下位ドライバ７２０、７３０は制御命令に応じた所定の処理を実行する。
【００３１】
例えば、上位ドライバ７１０が、下位ドライバ７２０、７３０に自身のドライバ情報（エントリポイント、バージョン情報などを含む。）の提示を求める制御命令を送信すると、下位ドライバ７２０、７３０はドライバ情報を上位ドライバ７１０に送信する。
また、下位ドライバ７２０、７３０に終了を指示する旨の制御命令を送信すると、下位ドライバ７２０、７３０は実行を終了する。
【００３２】
また、入出力要求を現用系に振り分けるなどのために、ディスパッチ部７１２は下位ドライバを管理するドライバ管理情報を保持している。このドライバ管理情報の例を図３に示す。
【００３３】
図示するように、ドライバ管理情報は、例えば、ドライバ識別子、エントリポイント、現用／待機に関する情報、バージョン情報などを含む。
ドライバ識別子は、上位ドライバ７１０が下位ドライバ７２０、７３０を識別するために付与する情報で、ドライバ７００内部で一意である。この情報は、下位ドライバが更新されても変化しない。
現用／待機に関する情報は、そのドライバが現用系あるいは待機系の何れとして動作しているかを示す情報である。
バージョン情報は、下位ドライバ７２０、７３０に付与されたバージョンに関する情報である。
【００３４】
ドライバ７００が現用系と待機系とを切り換える指示を受けた場合、上位ドライバ７１０は、エントリポイントテーブルの内容を、現用系となった装置を制御する下位ドライバへのエントリポイントで上書きする。そして、ドライバ管理情報の現用／待機に関する情報を更新する。つまり、現用系となった装置を制御する下位ドライバの現用／待機に関する情報を、現用系での動作を行っている旨の情報に更新し、それまで現用系の装置を制御していた下位ドライバの現用／待機に関する情報を待機系での動作を行っている旨の情報に更新する。
【００３５】
ドライバ更新プログラムは、下位ドライバ７２０、７３０を、新しい下位ドライバに置き換えるドライバ更新処理を実行する。ドライバ更新プログラムの構成と機能とを図４を用いて説明する。ドライバ更新プログラム８００は、制御部８１０と、制御指示部８２０と、ドライバ更新部８３０と、切換指示部８４０と、同期指示部８５０とから構成される。
【００３６】
制御部８１０は、制御指示部８２０と、ドライバ更新部８３０と、切換指示部８４０と、同期指示部８５０などを制御する。
制御指示部８２０は、上位ドライバ７１０に下位ドライバの切り離し・登録の指示を出し、上位ドライバ７１０からの応答を待つ。下位ドライバを切り離す場合は、ドライバ識別子を指定して下位ドライバを停止させる指示を、上位ドライバ７１０に出す。下位ドライバを組み込む場合には、ドライバファイルを指定して下位ドライバとして動作するように組み込む指示を、上位ドライバ７１０に出す。なお、予め上位ドライバ７１０に問い合わせ、ドライバ識別子を取得する。（以下、同じ。）
ドライバ更新部８３０は、新しい下位ドライバを主記憶部１２０に読み込み、ドライバ７００の下位ドライバとして実行可能な状態にする。
切換指示部８４０は、現用系を制御している下位ドライバのドライバ識別子と、現用系を制御させたい下位ドライバのドライバ識別子とを指定して、現用系と待機系とを切り換える指示を、上位ドライバ７１０に出す。
同期指示部８５０は、上位ドライバ７１０に、下位ドライバ７２０、７３０を介して、外部記憶装置２２０、２３０が格納しているデータの同期をとらせる旨の指示を出す。
【００３７】
なお、以下の説明では、制御部８１０、制御指示部８２０、ドライバ更新部８３０、切換指示部８４０、同期指示部８５０の個々の動作を述べずに、ドライバ更新プログラム８００全体の動作として説明する。
【００３８】
次に、図５を参照して、ドライバ更新処理を説明する。
ドライバの更新指示はキーボード３１０、マウス３２０などを操作してコンピュータ１００にドライバ更新プログラムの実行開始の指示を与えるものとする。なお、当初、外部記憶装置２２０が現用系、外部記憶装置２３０が待機系であって、更新前の下位ドライバのバージョンと更新後のバージョンとは異なっているものとする。
【００３９】
まず、ドライバ更新プログラム８００は、新しい下位ドライバの更新データを主記憶部１２０に読み出す（ステップＳ１１）。例えば、ドライバ更新プログラム８００はＣＤ−ＲＯＭから新しい下位ドライバの更新データを読み出す。
【００４０】
次に、ドライバ更新プログラム８００は、上位ドライバ７１０に待機系側に設定されている下位ドライバを制御から離脱させ、下位ドライバを停止させる指示を出す（ステップＳ１２）。上位ドライバ７１０は、待機系側が処理すべき入出力処理が無いことを確認した上で、入出力装置を論理的に切り離し、対応する下位ドライバの動作を停止させる。そして、上位ドライバ７１０は、下位ドライバを停止させた旨の情報をドライバ更新プログラム８００に送信する。
【００４１】
そして、下位ドライバを停止させた旨のデータを受信すると、ドライバ更新プログラム８００は、待機系の下位ドライバを新しい下位ドライバに置き換え、起動させる（ステップＳ１３）。次に、ドライバ更新プログラム８００は、上位ドライバ７１０に、この新しい下位ドライバをドライバ７００に組み込む指示を出す（ステップＳ１４）。上位ドライバ７１０は、新しい下位ドライバから、その下位ドライバに関する情報を取得し、ドライバ管理情報に登録する。そして、上位ドライバ７１０は、ドライバ更新プログラムに、下位ドライバの組み込みが終了した旨の情報を送信する。
【００４２】
そして、ドライバ更新プログラム８００は、上位ドライバ７１０に現用系と待機系とを切り換える指示を出す（ステップＳ１５）。この時選択される待機系は、直前のステップＳ１２からステップＳ１４で下位ドライバが更新された待機系である。
上位ドライバ７１０は、ドライバ管理情報に記載された、切り換え対象となっている、２つの下位ドライバの現用／待機に関する情報を入れ替える。そして、現在実行中の入出力要求の処理が完了した後に（次の入出力要求を処理する前に）、エントリポイントを現用系に切り換えられた下位ドライバのエントリポイントを指し示すように書き換える。上位ドライバ７１０は、ドライバ更新プログラムに現用系と待機系とを切り換えた旨の情報を送信する。
【００４３】
次に、現用系と待機系とを切り換えた旨の情報を受信すると、ドライバ更新プログラム８００は待機系側の下位ドライバのバージョンと更新する下位ドライバのバージョンとを比較し、２つのバージョンが等しいか否かを判別する（ステップＳ１６）。すなわち、ドライバ更新プログラムは上位ドライバ７１０（ドライバ管理情報）から待機系の下位ドライバのバージョンに関する情報を取得し、新しい下位ドライバのバージョンと一致するか否かを、例えば、それぞれの下位ドライバのバージョン番号（あるいは作成日時）に基づいて判別する。
２つの下位ドライバのバージョンが等しくなかった場合は（ステップＳ１６：ＮＯ）、ドライバ更新プログラム８００は、待機系側の下位ドライバが更新されていないと判断し、ステップＳ１２に戻って、ドライバの更新を続ける。
等しい場合は（ステップＳ１６：ＹＥＳ）、ドライバ更新プログラム８００は、現用系、待機系双方の下位ドライバが更新されたと判断し、ドライバ更新処理を終了する。ドライバ更新プログラム８００は、ディスプレイ４００に外部記憶装置２２０、２３０を制御する下位ドライバを更新した旨のメッセージを表示する。そして、ドライバ更新プログラムは後処理として、現用系と待機系のデータの同期をとる旨の指示を上位ドライバ７００に指示する。
【００４４】
以上の各ステップにより、まず下位ドライバ７３０が更新され、次に下位ドライバ７２０が更新される。
この間、外部記憶装置２２０、２３０が交替しながら現用系として動作する。現用系の入出力動作は通常の場合と同様に行われる。すなわち、下位ドライバを更新している間もＯＳ６００からの入出力要求は処理される。また、ドライバを更新している間、そのドライバが制御を担当していた外部記憶装置へは入出力要求が送信されないので、その外部記憶装置へのアクセスができなくても、実質的に問題はない。
【００４５】
なお、本発明は上記実施の形態に限定されず、種々の変形および応用が可能である。
【００４６】
例えば、上記実施の形態では、入出力装置（外部記憶装置）が二重化された例を説明したが、入出力装置がそれ以上の多重度を持った構成でもよい。この場合、下位ドライバは入出力装置の個数分だけ存在する。そして、この場合の下位ドライバの更新順序は、例えば、次の手順である。すなわち、ドライバ７００は待機系を担当するすべての下位ドライバを更新した後に、現用系と待機系のうちの１台とを切り換え、切り換え前に現用系を担当していた下位ドライバを更新する。さらに、デフォルトで現用系として動作する入出力装置が予め設定してあって、下位ドライバの更新後にその入出力装置が現用系に復帰するようにしてもよい。なお、現用系として動作する入出力装置が２台以上あっても構わない。
また、冗長構成を持つのであれば入出力装置に限らない。
【００４７】
また、コンピュータ１００が通信ネットワークに接続されており、通信ネットワークに接続された他のコンピュータに下位ドライバの更新データが格納されている場合に、ドライバ更新プログラム８００がその下位ドライバの更新データをダウンロードするように構成してもよい。
【００４８】
また、下位ドライバ７２０のプログラムと７３０のプログラムとが異なっていてもよい。この場合、ドライバ更新プログラム８００は下位ドライバ７２０、７３０をそれぞれのための新しい下位ドライバで置き換える。
【００４９】
また、下位ドライバのダウングレードを防止するために、更新する下位ドライバのバージョンが、稼働中の下位ドライバより古いか同じである場合は、下位ドライバの更新を中止するように構成してもよい。
【００５０】
また、新しい下位ドライバのデータがバイナリプログラム（すなわち、そのままドライバとして動作可能）の形式でなくてもよく、プログラムリストの形式（いわゆる、ソースプログラム）であってもよい。この場合、ドライバ更新プログラム８００はコンパイラを起動し（更新プログラム８００がコンパイラを含んでいてもよい）、更新後のプログラムリストからバイナリプログラム（下位ドライバ）を作成する。
また、新しい下位ドライバのデータは、新しい下位ドライバのデータ全体でなくてもよく、更新前と更新後の差分データ（いわゆる、パッチ）であってもよい。この場合、ドライバ更新プログラム８００は更新前の下位ドライバに差分データを当てて更新後の下位ドライバを作成する。
【００５１】
また、上述のドライバ更新プログラム８００の機能を、ＯＳとアプリとの分担、またはＯＳとアプリとの協動により実現する場合、等には、ＯＳ以外の部分のみを媒体に格納してもよい。
【００５２】
なお、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板（Bulletin Board System）に該プログラムを掲示し、ネットワークを介して該プログラムを配信してもよい。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態にかかるコンピュータシステムの構成を示した図である。
【図２】図１の外部記憶装置の入出力動作を制御するドライバの構成および機能を説明するためのブロック図である。
【図３】図２の上位ドライバが管理するドライバ管理情報の例を示す図である。
【図４】図２の下位ドライバを更新するドライバ更新プログラムの機能を説明するためのブロック図である。
【図５】本発明の実施の形態にかかるドライバ更新処理を説明するためのフローチャートである。
【符号の説明】
【００５４】
１００  コンピュータ
１１０  制御部
１２０  主記憶部
１３０  入出力チャネル
２２０、２３０  外部記憶装置
３１０  キーボード
３２０  マウス
４００  ディスプレイ
６００  オペレーティングシステム（ＯＳ）
７００  ドライバ
７１０  上位ドライバ
７１１  外部インターフェイス
７１２  ディスパッチ部
７１３、７２１、７３１  内部Ｉ／Ｆ
７２０、７３０  下位ドライバ
７２２、７３２  処理部
７２３、７３３  ハードウェアＩ／Ｆ
８００  ドライバ更新プログラム
８１０  制御部
８２０  制御指示部
８３０  ドライバ更新部
８４０  切換指示部
８５０  同期指示部
【図１】
2005056148.tif 000003
【図２】
2005056148.tif 000004
【図３】
2005056148.tif 000005
【図４】
2005056148.tif 000006
【図５】
2005056148.tif 000007