(57)【特許請求の範囲】
【請求項１】
制御情報を記憶する記憶部と，
仮想マシンの入出力処理のチャネル制御を行うリスタート制御部とを備えて，
前記リスタート制御部は，
チャネルを共用する仮想マシン各々の入出力処理およびチャネル制御の状態を示す制御情報を前記記憶部に書き込み，
前記チャネルを共用する複数の仮想マシンのいずれかからＩＯ命令を受け付けた場合に，前記チャネルがビジーであるときは，前記制御情報にもとづいて，該チャネルのビジー解除時にリスタートする仮想マシンの順序を決定し，
前記順序にもとづきリスタートする仮想マシンが，ビジー解除の通知を受けてＩＯ命令を再発行するＯＳリスタートをするものであるときは，該仮想マシンへのビジー解除の通知から該仮想マシンから受け付けたＩＯ命令の処理完了までの間，前記チャネルを共用する他の仮想マシンに対するビジー解除およびＩＯ命令の処理を抑止し，前記リスタートする仮想マシンが，チャネルがビジーとなったＩＯ命令を再発行しないハードウェア・リスタートをするものであるときは，該チャネルのビジー解除前に該仮想マシンから受け付けていたＩＯ命令の処理を実行する
ことを特徴とするチャネル制御装置。
【請求項２】
前記順序にもとづきリスタートする仮想マシンがＯＳリスタートをするものである場合に，該仮想マシンに対する前記ビジー解除の通知時から所定の時間以上の経過を示すタイムアウトを検出するリスタートタイマ部を備えて，
前記リスタート制御部は，前記タイムアウトの検出を受け付けた場合に，前記順序にもとづきスタートした仮想マシンの次の順序の仮想マシンを特定して，該特定された仮想マシンが発行したＩＯ命令の処理を実行する
ことを特徴とする請求項１記載のチャネル制御装置。
【請求項３】
前記制御情報記憶部に，前記チャネルを共用する仮想マシン各々の入出力処理の回数を含む制御情報が記憶されている場合に，
前記リスタート制御部は，前記リスタートさせる仮想マシンの順序を決定する処理において，前記制御情報の仮想マシンの入出力処理回数をもとに前記チャネルを共用する仮想マシン各々のＩＯ命令処理が再開される可能性を示す再開可能数を計算し，前記入出力処理回数および前記再開可能数をもとに，前記リスタートする仮想マシンの順序を決定する
ことを特徴とする請求項１または請求項２に記載のチャネル制御装置。
【請求項４】
前記リスタート制御部は，前記リスタートさせる仮想マシンの順序を決定する処理において，前記チャネルを共用する仮想マシンがＯＳリスタートをするものであるときは，該仮想マシンの再開可能数を，所定の重み付けをして計算する
ことを特徴とする請求項１ないし請求項３のいずれか一項に記載のチャネル制御装置。
【請求項５】
前記リスタート制御部は，前記リスタートさせる仮想マシンの順序を決定する処理において，前記チャネルを共用する仮想マシンが，パスとして他のチャネルを選択して使用できるものであるときは，該仮想マシンの再開可能数を，所定の重み付けをして計算する
ことを特徴とする請求項１ないし請求項４のいずれか一項に記載のチャネル制御装置。
【請求項６】
記憶部を備えるチャネル制御装置が，
チャネルを共用する仮想マシン各々の入出力処理およびチャネル制御の状態を示す制御情報を前記記憶部に書き込む処理ステップと，
前記チャネルを共用する複数の仮想マシンのいずれかからＩＯ命令を受け付けた場合に，前記チャネルがビジーであるときは，前記制御情報にもとづいて，該チャネルのビジー解除時にリスタートする仮想マシンの順序を決定する処理ステップと，
前記順序にもとづきリスタートする仮想マシンが，ビジー解除の通知を受けてＩＯ命令を再発行するＯＳリスタートをするものであるときは，該仮想マシンへのビジー解除の通知時から該仮想マシンから受け付けたＩＯ命令の処理完了時までの間，前記チャネルを共用する他の仮想マシンに対するビジー解除およびＩＯ命令の処理を抑止し，前記リスタートする仮想マシンが，チャネルがビジーとなったＩＯ命令を再発行しないハードウェア・リスタートをするものであるときは，該チャネルのビジー解除前に該仮想マシンから受け付けていたＩＯ命令の処理を実行する処理ステップとを，実行する
ことを特徴とするチャネル制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，入出力装置についてのチャネル制御技術に関する。
【背景技術】
【０００２】
ホストシステム上に，仮想的なハードウェア（仮想マシン）を複数開設して同時に複数のＯＳの実行を可能とするコンピュータシステムにおいて，仮想マシンのＯＳでは複数のアーキテクチャが混在する。
【０００３】
このようなコンピュータシステムで，専用ハードウェア（チャネル装置）を用いて入出力処理を制御するチャネル制御方式が採用されている場合に，チャネル制御を実行するチャネル制御装置が，あるチャネル配下の入出力装置を複数の仮想マシン（ゲスト）に割り当てることにより，チャネルを複数ゲストで共用することがある。
【０００４】
１つのチャネルで２つのゲスト各々から発行された入出力命令（ＩＯ命令）が衝突した場合に，チャネル制御装置は，先発のＩＯ命令を処理し，後発のＩＯ命令については，「チャネルビジー」状態として，先発のＩＯ命令の処理完了を待機させる。そして，チャネル制御装置は，先発のＩＯ命令の完了後に「ビジー解除」を行い，待機させていた後発のＩＯ命令処理の再開（リスタート）を行う。
【０００５】
後発のＩＯ命令のリスタートは，ゲストのアーキテクチャによって，「ハードウェア（ＨＷ）リスタート」または「ＯＳリスタート」のいずれかとなる。
【０００６】
図８は，「ＨＷリスタート」を説明するための図，図９は，「ＯＳリスタート」を説明するための図である。
【０００７】
「ＨＷリスタート」では，図８に示すように，ゲストＯＳがＩＯ命令を発行したときに，チャネルβがビジーであれば，チャネル制御装置は，受け付けたＩＯ命令を保持し，ビジーの解除を行った後に保持していたＩＯ命令の処理を再開する。
【０００８】
「ＯＳリスタート」では，図９に示すように，チャネルβがビジーであれば，チャネル制御装置は，ＩＯ命令を発行したゲストＯＳに対してチャネルビジーを通知し，ビジーの解除を行った後にビジー解除をさらに通知して，ゲストＯＳが再発行したリスタート用のＩＯ命令を受け付けてＩＯ命令の処理を行う。
【０００９】
従来，チャネルで衝突したＩＯ命令を制御するために，低速ＣＰＵと高速ＣＰＵがドライブを共用する場合に，低速ＣＰＵが高速ＣＰＵに使用されているドライブにＩＯ命令を発行するとチャネルビジーが通知され，高速ＣＰＵがドライブを開放すると，低速ＣＰＵのＩＯ命令を優先的に処理する手法が知られている。
【００１０】
また，複数のＣＰＵにチャネルパスを介して接続される入出力制御装置と複数の入出力装置とを有する構成において，１つのＣＰＵからＩＯ命令を受け付けたときに他のＣＰＵがその入出力装置を使用中であればデバイスビジーを通知し，あるＣＰＵが他ＣＰＵのＩＯ命令の受付で待たされた回数が規定値を超えたときに，他ＣＰＵからそのＣＰＵへ入出力を切り換える手法が知られている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平４−０６４１５８号公報
【特許文献２】特開平２−２６７６５３号公報
【特許文献３】特開平４−０３３１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
チャネルを共用する２つのゲストのうち，一方のゲストのＩ／Ｏ負荷が極端に高い場合や，チャネルのリザーブを長期間にわたって保持する状況が生じた場合など，他方のゲストのＩＯ命令が処理されにくくなり，入出力レスポンスが悪くなることがある。
【００１３】
例えば，図１０に示すように，「ＯＳリスタート」を採用するゲストと，「ＨＷリスタート」を採用するゲストとがチャネルを共用し，ゲスト各々がＩＯ命令を発行した場合に，双方のゲストがチャネルビジーを認識しているときには，ＯＳリスタートのゲストは，再度チャネルビジーとなる確率が高くなる。これは，ＯＳリスタートのゲストでは，最初のビジー解除からリスタート用のＩＯ命令の再発行までの処理の所要時間が，ＨＷリスタートのゲストに比べて長くかかることから，ＩＯ命令の再発行の時点で，チャネルが他のゲストのＩＯ命令発行により再度ビジーとなることがあるからである。
【００１４】
このように，ＯＳリスタートのゲストのリスタート処理が滞りタイムアウトが発生すると，例えば，業務システムでは端末装置での処理が停止したりするなど，深刻な障害となる。
【００１５】
チャネルを共用する各ゲストを，チャネルビジーになった順番でリスタートさせるように制御キューを導入したチャネル制御の場合には，各ゲストのＩＯ命令の発行頻度に対応した順序で制御することができず，結果として，高速なゲストが，低速なゲストの影響を受けてしまい，全体としての処理効率を低下させるという問題が生じる。
【００１６】
さらに，チャネルビジーはデバイスビジーと異なり，マルチパス，すなわちＩＯ命令の実行を他のチャネルを選択して処理できる機能を持つゲストの場合には，ビジーとなったチャネル以外のチャネルにより処理できるため，チャネルビジーを認識したゲストのリスタートが無駄になるという問題がある。
【００１７】
本願において開示されるチャネル制御装置の目的は，異なるアーキテクチャの仮想マシンがチャネルを共用する場合でも，効率よく共用できるチャネル制御を実現することである。
【課題を解決するための手段】
【００１８】
本願において開示されるチャネル制御装置は，複数の仮想マシンの入出力処理をチャネル制御するチャネル制御装置であって，記憶部と，仮想マシンの入出力処理のチャネル制御を行うリスタート制御部とを備える。
【００１９】
前記チャネル制御装置のリスタート制御部は，チャネルを共用する仮想マシン各々の入出力処理およびチャネル制御の状態を示す制御情報を前記記憶部に書き込む処理と，前記チャネルを共用する複数の仮想マシンのいずれかからＩＯ命令を受け付けた場合に，前記チャネルがビジーであるときは，前記制御情報をもとに，該チャネルのビジー解除時にリスタートする仮想マシンの順序を決定する処理と，前記順序にもとづきリスタートする仮想マシンが，ビジー解除の通知を受けてＩＯ命令を再発行するＯＳリスタートをするものであるときは，該仮想マシンへのビジー解除の通知時から該仮想マシンから受け付けたＩＯ命令の処理完了時までの間，前記チャネルを共用する他の仮想マシンに対するビジー解除およびＩＯ命令の処理を抑止し，前記リスタートする仮想マシンが，チャネルがビジーとなったＩＯ命令を再発行しないハードウェア・リスタートをするものであるときは，該チャネルのビジー解除前に受け付けていたＩＯ命令の処理を実行する。
【００２０】
また，本発明の別の態様として開示するチャネル制御方法は，上記チャネル制御装置で実行される処理を実現する処理ステップを有する。
【発明の効果】
【００２１】
異なるアーキテクチャの仮想マシンがチャネルを共用する場合でも，効率よく共用できるチャネル制御を実現することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施の形態として開示されるチャネル制御装置の構成例を示す図である。
【図２】本発明の一実施の形態における，チャネルごとの制御情報である制御情報テーブルの構成例を示す図である。
【図３】本発明の一実施の形態における，チャネル制御装置の処理を概説するための図である。
【図４】チャネル制御装置のＩＯ命令発行時の処理フロー例を示す図である。
【図５】チャネル制御装置のビジー解除時の処理フロー例を示す図である。
【図６】制御情報テーブル再設定処理（ステップＳ２２）の，より詳細な処理フローを示す図である。
【図７】チャネル制御装置のリスタートタイマ部の処理フロー例を示す図である。
【図８】「ＨＷリスタート」を説明するための図である。
【図９】「ＯＳリスタート」を説明するための図である。
【図１０】「ＨＷリスタート」を採るゲストと「ＯＳリスタート」を採るゲストとが共用するチャネルでの入出力レスポンスの悪化を説明するための図である。
【発明を実施するための形態】
【００２３】
図１は，本発明の一実施の形態として開示されるチャネル制御装置の構成例を示す図である。
【００２４】
チャネル制御装置１０は，演算装置（ＣＰＵ）および一時記憶装置（図示しない），入出力装置２，チャネル３を備えるコンピュータシステム１に備えられる。
【００２５】
コンピュータシステム１では，ホストシステム上に異なるアーキテクチャの仮想マシン（ゲスト）４を構築する環境を実現している。
【００２６】
チャネル３は，入出力装置２へまたは入出力装置２からデータを転送する経路機構であって，ゲスト４と入出力装置２とのインタフェースを司る機構である。チャネル３は，複数のゲスト４で共用することができる。
【００２７】
入出力装置２は，例えば，外部記憶媒体，例えば，ストレージ，レイド等の外部記憶装置である。
【００２８】
チャネル制御装置１０は，入出力装置２に対応するチャネル３をゲスト４のＯＳ（ゲストＯＳ）に割り当て，ゲストＯＳが発行したＩＯ命令の処理を制御する。
【００２９】
より詳しくは，チャネル制御装置１０は，ゲスト４が発行したＩＯ命令がチャネルビジーの場合に，そのチャネルビジー解除後に，ビジー解除にかかるＩＯ命令の入力処理をリスタートさせる。
【００３０】
チャネル制御装置１０が制御するリスタートは，「ＯＳリスタート」または「ＨＷリスタート」のいずれかである。ＨＷリスタートは，チャネルビジーの解除後に，チャネル制御装置１０が，ビジー解除されたチャネル３によるＩＯ命令の入出力処理を再開する処理である。ＯＳリスタートは，チャネルビジーの解除後に，ゲスト４のＯＳがチャネルビジーとなったＩＯ命令を再発行し，チャネル制御装置１０が再発行されたＩＯ命令を受け付けて入出力処理を実行する処理である。なお，チャネル制御装置１０はが，再発行されたＩＯ命令を受け付けてその入出力処理を制御する。
【００３１】
チャネル制御装置１０は，リスタート制御部１１，制御情報記憶部１３，およびリスタートタイマ部１５を備える。
【００３２】
リスタート制御部１１は，チャネル制御装置１０内で，チャネル３のチャネルビジーおよびチャネルビジー解除により，ゲスト４が発行したＩＯ命令による，チャネル３を用いる入出力処理を制御する。
【００３３】
より具体的には，リスタート制御部１１は，チャネル３を共用するゲスト４各々から，発行されたＩＯ命令を受け付け，受け付けたＩＯ命令による入出力処理およびチャネル３の制御状態を示す制御情報を制御情報記憶部１３に格納する。
【００３４】
そして，リスタート制御部１１は，共用する複数のゲスト４のいずれかからＩＯ命令を受け付けたチャネル３がビジーである場合に，制御情報記憶部１３の制御情報にもとづいて，ゲスト４のリスタートがＯＳリスタートであるかＨＷリスタートであるかを判断し，チャネル３のビジー解除時にリスタートさせるゲスト４の順序を決定する。
【００３５】
リスタート制御部１１は，ゲスト４のリスタートがＯＳリスタートであるときは，そのゲスト４へビジー解除を通知し，ゲスト４から受け付けたＩＯ命令の処理を行う一方，ビジー解除の通知時からＩＯ命令の処理完了時までの間，チャネル３を共用する他のゲスト４に対するビジー解除およびＩＯ命令の処理を抑止する。リスタート制御部１１は，リスタートするゲスト４が，ＨＷリスタートを行うときは，チャネル３のビジー解除前に受け付けていた，そのゲスト４のＩＯ命令を処理する。
【００３６】
制御情報記憶部１３は，各チャネルの制御情報を記憶する。
【００３７】
図２は，チャネルごとの制御情報である制御情報テーブルの構成例を示す図である。
【００３８】
図２に示す制御情報テーブルは，チャネルの識別情報（チャネルａ），ビジー解除開始時間，および各ゲストのゲスト情報を含む。
【００３９】
ビジー解除開始時間は，後述するリスタートのタイプがＯＳ型であるゲスト４が，ビジー解除を開始した時刻，すなわち，ビジー解除通知時刻を示す。
【００４０】
ゲスト情報は，ゲストＩＤ，リスタート，パス，再開可能数，再開済数，状態，処理数の各項目を有する。
【００４１】
ゲストＩＤは，ゲスト４を識別する番号である。
【００４２】
リスタートは，ゲスト４の入出力処理のリスタート方法を示す。“ＯＳ”は，ＯＳリスタートを示し，“ＨＷ”は，ＨＷリスタートを示す。
【００４３】
パスは，ゲスト４のチャネルの利用形態を示す。“マルチパス”は，ゲスト４が入出力装置２へのパスとして他のチャネルを選択できることを示し，“シングルパス”は，ゲスト４が１つのチャネルのみ利用することを示す。
【００４４】
再開可能数は，一定間隔における入出力処理の再開（リスタート）可能な数を示す。例えば，以下の式により求められる。
【００４５】
再開可能数＝１＋（（ゲスト数×３）×（本ゲストの「処理数」÷全ゲストの「処理数」の合計））
また，再開可能数は，ゲスト４のパスの利用形態に応じた重み付けをして，例えば，以下の式により求められるようにしてもよい。
【００４６】
再開可能数＝１＋（（ゲスト数×３）×（本ゲストの「処理数」÷全ゲストの「処理数」の合計））＋（本ゲストの「パス」がシングルの場合＝１，マルチの場合＝０）
再開済数は，一定間隔における入出力処理の再開（リスタート）実施の数を示す。
【００４７】
状態は，チャネルビジーに関する現在の状態を示す。“フリー”は，ゲスト４がチャネルを使用していない状態，“ビジー”は，チャネル３がＩＯ命令を処理中であることを示す。“ビジー解除中”は，ビジー解除の実行中であることを示す。
【００４８】
処理数は，一定間隔における入出力処理の数を示す。
【００４９】
ゲスト情報は，ゲスト４が開設された時または運用中のゲスト４にチャネル３が割り当てられた時に生成される。
【００５０】
リスタートタイマ部１５は，リスタートするゲスト４に対するビジー解除通知時から，所定時間の経過を示すタイムアウトを検出する。
【００５１】
リスタートタイマ部１５が，制御情報テーブルのビジー解除時間の時刻設定を検出してタイマ処理を行うことにより，ＯＳリスタートのゲスト４がリスタートの対象に選択されている場合に，通知したゲスト４のゲストＯＳがビジー解除通知に反応するまで他のゲスト４のビジー解除を抑止し，その一方で，ゲスト４がビジー解除通知を認識せず入出力処理が再開されない場合には，リスタートの対象を他のゲスト４へ切り替えることが可能となる。
【００５２】
チャネル制御装置１０のリスタート制御部１１は，以下のように処理を行う。
【００５３】
処理ステップ１：  リスタート制御部１１は，チャネル３(３ｂ)を共用しているゲスト４の数と，各ゲスト４（４ａ，４ｂ）のリスタートが，“ＯＳ”であるか“ＨＷ”であるかを判断して，制御情報テーブルに書き込む。さらに，リスタート制御部１１は，各ゲスト４（４ａ，４ｂ）のパスの利用形態（シングルパス，マルチパス）を書き込む。
【００５４】
処理ステップ２：  リスタート制御部１１は，制御情報テーブルを参照して，各ゲスト４（４ａ，４ｂ）のチャネル３の利用回数を計測する。
【００５５】
処理ステップ３：  チャネル３ｂで，複数のゲスト４がチャネルビジーになった場合に，チャネル３ｂの利用回数と利用形態（シングルパス・マルチパス）に応じて，ビジー解除時のリスタートするゲストの順番を決定する。
【００５６】
図３に示すように，２つのゲスト４ａ，４ｂがチャネル３ｂを共用している場合に，例えば，ＨＷリスタートのゲスト４ａが，ゲスト４ｂに比べて入出力処理の頻度が多く，シングルパスである場合は，リスタートするゲストの順序を，ゲスト４ａ，ゲスト４ｂと決定する。
【００５７】
チャネルの利用形態（シングルパス・マルチパス）を，リスタートの順序決定に用いる理由は，マルチパスの機能を有するゲスト４は，他のチャネルを利用してＩＯ命令が実行される可能性が高いためである。
【００５８】
例えば，図３に示すゲスト４ａがマルチパスである場合には，チャネル３ｂがチャネルビジーであれば，他のチャネル３ａを選択して入出力装置２への入出力処理を行うことができるとする。この場合には，チャネル３ｂのチャネル制御において，ゲスト４ａのリスタートの順序を下位としても，チャネル３ａを用いてＩＯ命令の処理が実行される可能性が高く，全体としてはチャネルの使用効率がよくなるからである。
【００５９】
リスタート制御部１１は，決定した順序に従って，ゲスト４ａのリスタートｒ１を処理し，その処理完了後に，ゲスト４ｂのリスタートｒ２を実行する。
【００６０】
一方，リスタート制御部１１は，制御情報テーブルの情報から，リスタートするゲストの順序を，ゲスト４ｂ，４ａと決定した場合には，ＯＳリスタートのゲスト４ｂへビジー解除を通知する。そして，リスタート制御部１１は，ビジー解除時に，ゲスト４ｂへビジー解除を通知し，ゲスト４ｂのリスタート用のＩＯ命令を受け付けて，入出力処理を再開する。リスタート制御部１１は，ビジー解除の通知から，ゲスト４ｂのゲストＯＳが反応するまで，他のゲスト４ａのビジー解除とＩＯ命令の実行を抑止する。
【００６１】
これにより，ビジー解除を通知したゲスト４ｂのゲストＯＳが発行するリスタート用のＩＯ命令の実行を保証する。
【００６２】
そして，ゲスト４ｂが発行したリスタート用のＩＯ命令により，リスタートｒ２が完了したら，リスタート制御部１１は，ゲスト４ａのリスタートｒ１を実行する。
【００６３】
ゲスト４ｂへビジー解除を通知したが，ゲスト４ｂのゲストＯＳが他の処理により一定時間反応しない場合（リスタート用のＩＯ命令の発行がない場合），リスタート制御部１１は，ゲスト４ｂのリスタートｒ２を中止して，次の順序に決定されたゲスト４ａのリスタートｒ１を実行する。ビジー解除通知後の一定時間の経過は，リスタートタイマ部１５が監視する。
【００６４】
以下，チャネル制御装置１０の処理をより詳細に説明する。
【００６５】
図４は，ＩＯ命令発行時の処理フロー例を示す図である。
【００６６】
リスタート制御部１１は，ゲスト４ｘが発行したＩＯ命令を受け付けると，以下の処理を行う。
【００６７】
リスタート制御部１１は，ＩＯ命令を発行したゲスト４ｘが割り当てられているチャネル３を選択して（ステップＳ１０），選択したチャネル３の制御情報テーブルを参照して，チャネルビジーであるかを判断する（ステップＳ１１）。
【００６８】
チャネルビジーではない場合には（ステップＳ１１のＮ），リスタート制御部１１は，制御情報テーブルの「状態」が“ビジー解除中”であるゲストが存在するかを判断する（ステップＳ１２）。チャネルビジーである場合（ステップＳ１１のＹ）または制御情報テーブルの「状態」が“ビジー解除中”であるゲストが存在する場合には（ステップＳ１２のＹ），リスタート制御部１１は，制御情報テーブル中のゲスト４ｘの「状態」をビジーにする（ステップＳ１３）。
【００６９】
さらに，リスタート制御部１１は，ゲスト４ｘの「リスタート」がＨＷであるかを判断して（ステップＳ１４），ゲスト４ｘの「リスタート」がＨＷであれば（ステップＳ１４のＹ），チャネル制御装置１０で受け付けたＩＯ命令の実行を保留して（ステップＳ１５），処理を終了する。
【００７０】
ゲスト４ｘの「リスタート」がＨＷでなければ（ステップＳ１４のＮ），リスタート制御部１１は，ゲスト４ｘのゲストＯＳへチャネルビジーを通知して（ステップＳ１６），処理を終了する。
【００７１】
制御情報テーブルの「状態」が“ビジー解除中”であるゲストが存在しない場合には（ステップＳ１２のＮ），リスタート制御部１１は，制御情報テーブルのゲスト４ｘの「処理数」を１加算し，「状態」をフリーにし，「ビジー解除開始時間」を初期化して（ステップＳ１７），さらに，受け付けたＩＯ命令による入出力処理を開始して（ステップＳ１８），処理を終了する。
【００７２】
図５は，ビジー解除時の処理フロー例を示す図である。
【００７３】
リスタート制御部１１は，チャネル３でビジーが解消された場合に，以下の処理を行う。
【００７４】
リスタート制御部１１は，チャネル３の制御情報テーブルの「状態」がビジーであるゲストが存在するかを判断する（ステップＳ２０）。
【００７５】
「状態」がビジーであるゲストが存在する場合には（ステップＳ２０のＹ），リスタート制御部１１は，さらに，制御情報テーブルの「状態」がビジーであって，かつ，「再開済数」＜「再開可能数」に該当するゲストが存在するかを判断する（ステップＳ２１）。
【００７６】
「状態」がビジーであって，かつ，「再開済数」＜「再開可能数」に該当するゲストが存在しなければ，すなわち，すべてのゲストが「再開済数」＝「再開可能数」である場合（ステップＳ２１のＮ），リスタート制御部１１は，制御情報テーブルの再設定処理を行って（ステップＳ２２），ステップＳ２３の処理へ進む。
【００７７】
「状態」がビジーであって，かつ，「再開済数」＜「再開可能数」に該当するゲストが存在する場合に（ステップＳ２１のＹ），リスタート制御部１１は，制御情報テーブルの「再開済数÷再開可能数」が最小であるゲストを選択し（ステップＳ２３），制御情報テーブルの選択したゲスト４ｙの「再開済数」を１加算する（ステップＳ２４）。
【００７８】
そして，リスタート制御部１１は，ゲスト４ｙの「リスタート」がＨＷであるかを判断する（ステップＳ２５）。ゲスト４ｙの「リスタート」がＨＷであれば（ステップＳ２５のＹ），リスタート制御部１１は，制御情報テーブルのゲスト４ｙの「状態」をフリーにし（ステップＳ２６），入出力処理を開始して（ステップＳ２７），処理を終了する。
【００７９】
選択したゲストの「リスタート」がＨＷでなければ（ステップＳ２５のＮ），リスタート制御部１１は，制御情報テーブルのゲスト４ｙの「状態」をビジー解除中にして，「ビジー解除開始時間」に現処理時刻を設定する（ステップＳ２８）。さらに，リスタート制御部１１は，選択したゲスト４ｙのゲストＯＳへ，ビジー解除を通知して（ステップＳ２９），処理を終了する。
【００８０】
図６は，図５に示す処理フローの制御情報テーブル再設定処理（ステップＳ２２）の，より詳細な処理フローを示す図である。
【００８１】
リスタート制御部１１は，チャネル３を共用するゲスト４を１つ選択して（ステップＳ２２０），所定の式によって，制御情報テーブルの「再開可能数」を算出し，算出した値を整数化した後，制御情報テーブルへ設定する（ステップＳ２２１）。さらに，リスタート制御部１１は，制御情報テーブルの「再開数」，「処理数」を初期化する（ステップＳ２２２）。
【００８２】
処理したゲスト４がチャネル３を共用している最後のゲストであるかを調べて，最後のゲストであれば（ステップＳ２２３のＹ），リスタート制御部１１は，処理を終了する。最後のゲストでなければ（ステップＳ２２３のＮ），リスタート制御部１１は，ステップＳ２２０の処理へ戻り，次のゲストを選択する（ステップＳ２２０）。
【００８３】
図７は，リスタートタイマ部１５の処理フロー例を示す図である。
【００８４】
リスタートタイマ部１５は，制御情報テーブルのビジー解除時間の設定イベントを検出するパトロール処理を行う（ステップＳ３０）。リスタートタイマ部１５は，制御情報テーブルの「ビジー解除開始時間」が設定されているかを判断する（ステップＳ３１）。制御情報テーブルの「ビジー解除開始時間」が設定されていれば（ステップＳ３１のＹ），リスタートタイマ部１５は，さらに，現時点で，設定されているビジー解除開始時間から一定時間経過しているかを調べる（ステップＳ３２）。
【００８５】
ビジー解除開始時間から一定時間経過するかをチェックし，ビジー解除開始時間から一定時間が経過していたら（ステップＳ３２のＹ），制御情報テーブルの「状態」をフリーにして，「ビジー解除開始時間」を初期化して（ステップＳ３３），ビジー解除時の処理（ステップＳ２０〜Ｓ２９）へ進む（ステップＳ３４）。
【００８６】
リスタートタイマ部１５は，制御情報テーブルの「ビジー解除開始時間」が設定されていなければ（ステップＳ３１のＮ），または，まだビジー解除開始時間から一定時間が経過していなければ（ステップＳ３２のＮ），処理を終了する。
【００８７】
上記の実施例では，チャネル制御装置１０を，専用ハードウェアとする構成例をもとに説明した。別の実施例として，チャネル制御装置１０のリスタート制御部１１は，チャネル制御装置１０にインストールされるソフトウェアとして構成されてもよい。
【００８８】
以上の説明したように，開示したチャネル制御装置１０によれば，次のような効果がある。
【００８９】
・  チャネル制御装置１０では，複数のゲストが共用するチャネルで，チャネルビジーが生じた場合に，ビジー解除時にリスタートするゲストの順序を各ゲストの入出力処理回数にもとづいて求めた再開可能数により決定する。よって，各ゲストのチャネル利用回数を考慮して効率的なビジー解除を行うことができる。
【００９０】
・  チャネル制御装置１０では，ゲストのリスタートの方式に応じたビジー解除およびリスタートを行う。特に，ビジー解除の対象とするゲストが「ＯＳリスタート」をするものである場合に，チャネル制御装置１０は，ビジー解除からＩＯ命令の再処理完了までの間，他のゲストのビジー解除を抑止する。これにより，リスタート完了までの処理時間がより長いゲストに対してもリスタート機会を確保することができる。
【００９１】
・  チャネル制御装置１０では，リスタートするゲストがＯＳリスタートである場合に，そのゲストが，ビジー解除通知を認識せず，一定時間内にリスタート用のＩＯ命令を発行しなかったときは，そのリスタートを中止して，リスタートの対象を他のゲストに切り替える。これにより，リスタート未完了の状態を終了させて，チャネルの使用効率の低下を防ぐことができる。
【００９２】
・  チャネル制御装置１０では，リスタートするゲストの順序を，各ゲストのＩＯ命令発行の状態を考慮して決定することができる。これにより，効率的なビジー解除を行うことができる。
【００９３】
したがって，本発明の一態様として開示されたチャネル制御装置によれば，複数の仮想マシンが共用するチャネルでチャネルビジーが生じた場合に，ビジー解除時にリスタートする仮想マシンの順序を，各仮想マシンの入出力処理の状態にもとづいて決定することができるため，各ゲストの入出力処理を考慮した効率的なビジー解除を行うことができる。
【００９４】
また，チャネル制御装置によれば，仮想マシンのリスタートの方式，例えばハードウェア・リスタートまたはＯＳリスタートなどに応じて，ビジー解除およびリスタートの処理を行うことができるため，各ゲストの処理方式に対応して効率的なビジー解除を行うことができる。
【００９５】
よって，異なるアーキテクチャの仮想マシンが共用するチャネルにおける効率的なチャネル使用を実現することができる。
【００９６】
以上のように，チャネル制御装置は，異なるアーキテクチャの仮想マシンがチャネルを共用する場合に，効率的な共用を実現することができる。
【符号の説明】
【００９７】
１  コンピュータシステム
２  入出力装置
３  チャネル
４  仮想マシン（ゲスト）
１０  チャネル制御装置
１１  リスタート制御部
１３  制御情報記憶部（制御情報テーブル）
１５  リスタートタイマ部
【図１】
0005533526.tif 000002
【図２】
0005533526.tif 000003
【図３】
0005533526.tif 000004
【図４】
0005533526.tif 000005
【図５】
0005533526.tif 000006
【図６】
0005533526.tif 000007
【図７】
0005533526.tif 000008
【図８】
0005533526.tif 000009
【図９】
0005533526.tif 000010
【図１０】
0005533526.tif 000011