(57)【要約】  入出力制御システムは、第１及び第２記憶領域を具備し、第１記憶領域の一部または全部をキャッシュとして入出力処理を行う。第２記憶領域に入出力するデータを第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するキャッシュ管理部１１０と、第３記憶領域へ記憶されたデータの領域であるデータ領域と入出力に関する情報とを関連付けて記憶する入出力特定情報記憶部１１１と、第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成するライトバック部１２０と、入出力特定情報記憶部を参照して生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、特定する入出力特定部１００とを備える。
2008149657.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶領域及び第２記憶領域を具備し、前記第１記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置の入出力制御システムであって、
前記第２記憶領域に入出力するデータを、前記第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するキャッシュ管理部と、
前記第３記憶領域へ記憶されたデータの領域であるデータ領域と、前記入出力に関する情報とを関連付けて記憶する入出力特定情報記憶部と、
前記第３記憶領域のデータ領域から前記第２記憶領域への前記データの出力要求を生成するライトバック部と、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定する入出力特定部とを備える
入出力制御システム。
【請求項２】
請求の範囲１に記載の入出力制御システムにおいて、
前記入出力特定部は、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記入出力に関する情報を復元する入出力特定情報復元部を有する
入出力制御システム。
【請求項３】
請求の範囲２記載の入出力制御システムにおいて、
前記出力要求を、前記復元された入出力に関する情報を参照して、管理する入出力要求管理部を更に備え、
前記入出力特定部は、前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定する
入出力制御システム。
【請求項４】
請求の範囲２又は３に記載の入出力制御システムにおいて、
前記入出力要求管理部が、入出力をスケジューリングする入出力スケジューリング部、入出力の監視、及び統計をとる入出力モニタ部、入出力のアクセスを制御する入出力アクセスコントロール部のいずれか一つの機能を少なくとも含む
入出力制御システム。
【請求項５】
請求の範囲２乃至４のいずれか一項に記載の入出力制御システムにおいて、
前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記第３記憶領域から前記第２記憶領域へ出力するデータ領域を決定する
入出力制御システム。
【請求項６】
請求の範囲２乃至５のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度、前記入出力の入出力先を特定する情報のいずれか一つを少なくとも含む
入出力制御システム。
【請求項７】
請求の範囲６記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度、前記第２記憶領域を有する入出力先装置を特定する情報のいずれか一つを少なくとも含む
入出力制御システム。
【請求項８】
請求の範囲１に記載の入出力制御システムにおいて、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成する入出力処理プロセス生成部と、
前記プロセスと前記入出力処理プロセスとを関連付けて管理する入出力処理プロセス管理部とを更に備え、
前記入出力特定部は、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力処理プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部を有し、
選択された前記入出力処理プロセスが、前記出力要求を発行する
入出力制御システム。
【請求項９】
請求の範囲８に記載の入出力制御システムにおいて、
前記入出力特定部は、
前記プロセスによる入力要求に応答して、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部を有し、
選択された前記入出力処理プロセスが、前記入力要求を発行する
入出力制御システム。
【請求項１０】
請求の範囲８又は９に記載の入出力制御システムにおいて、
前記入出力要求を、前記選択された入出力処理プロセスの処理として管理する入出力要求管理部を更に備え、
前記入出力要求管理部は、前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理することが可能である
入出力制御システム。
【請求項１１】
請求の範囲８乃至１０のいずれか一項に記載の入出力制御システムにおいて、
前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記第３記憶領域から前記第２記憶領域へ出力する記憶領域を決定する
入出力制御システム。
【請求項１２】
請求の範囲８乃至１１のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度、前記入出力の入出力先を特定する情報のいずれか一つを少なくとも含む
入出力制御システム。
【請求項１３】
請求の範囲１２に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度、前記第２記憶領域を有する入出力先装置を特定する情報のいずれか一つを少なくとも含む
入出力制御システム。
【請求項１４】
請求の範囲８乃至１１のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
入出力制御システム。
【請求項１５】
請求の範囲１４記載の入出力制御システムにおいて、
前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
入出力制御システム。
【請求項１６】
請求の範囲２又は１５に記載の入出力制御システムにおいて、
前記キャッシュ管理部は、前記第３記憶領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定する
入出力制御システム。
【請求項１７】
第１記憶領域及び第２記憶領域を具備し、前記第１記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法であって、
前記第２記憶領域に入出力するデータを、前記第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するステップと、
前記第３記憶領域へ記憶されたデータの領域であるデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
前記第３記憶領域のデータ領域から前記第２記憶領域への前記データの出力要求を生成するステップと、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定するステップとを備える
入出力制御方法。
【請求項１８】
請求の範囲１７に記載の入出力制御方法において、
前記特定するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記入出力に関する情報を復元するステップを有する
入出力制御方法。
【請求項１９】
請求の範囲１８記載の入出力制御方法において、
前記出力要求を、前記復元された入出力に関する情報を参照して、管理するステップを更に備え、
前記特定するステップは、
前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定するステップを更に有する
入出力制御方法。
【請求項２０】
請求の範囲１８又は１９に記載の入出力制御方法において、
前記管理するステップは、
入出力をスケジューリングする、入出力の監視及び統計をとる、入出力のアクセスを制御する、のいずれか一つを少なくとも実行するステップを有する
入出力制御方法。
【請求項２１】
請求の範囲１８乃至２０のいずれか一項に記載の入出力制御方法において、
前記生成するステップは、
前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記第３記憶領域から前記第２記憶領域へ出力するデータ領域を決定するステップを有する
入出力制御方法。
【請求項２２】
請求の範囲１８乃至２１のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度、前記入出力の入出力先を特定する情報のいずれか一つを少なくとも含む
入出力制御方法。
【請求項２３】
請求の範囲２２記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度、前記第２記憶領域を有する入出力先装置を特定する情報のいずれか一つを少なくとも含む
入出力制御方法。
【請求項２４】
請求の範囲１７に記載の入出力制御方法において、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
前記特定するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップと、
選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有する
入出力制御方法。
【請求項２５】
請求の範囲２４に記載の入出力制御方法において、
前記プロセスによる入力要求に応答して、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択するステップと、
選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを更に備える
入出力制御方法。
【請求項２６】
請求の範囲２４又は２５記載の入出力制御方法において、
前記入出力要求を、前記選択された入出力処理プロセスの処理として管理するステップを更に備え、
前記入出力要求を管理するステップは、
前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理するステップを有する
入出力制御方法。
【請求項２７】
請求の範囲２４乃至２６のいずれか一項に記載の入出力制御方法において、
前記生成するステップは、
前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記第３記憶領域から前記第２記憶領域へ出力する記憶領域を決定するステップを有する
入出力制御方法。
【請求項２８】
請求の範囲２４乃至２７のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度、前記入出力の入出力先を特定する情報のいずれか一つを少なくとも含む
入出力制御方法。
【請求項２９】
請求の範囲２８に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度、前記第２記憶領域を有する入出力先装置を特定する情報のいずれか一つを少なくとも含む
入出力制御方法。
【請求項３０】
請求の範囲２４乃至２７のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
入出力制御方法。
【請求項３１】
請求の範囲３０記載の入出力制御方法において、
前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
入出力制御方法。
【請求項３２】
請求の範囲１８又は３１に記載の入出力制御方法において、
前記データを前記第３記憶領域へ記憶するステップは、
前記第３記憶領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定するステップを有する
入出力制御方法。
【請求項３３】
第１記憶領域及び第２記憶領域を具備し、前記第１記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法をコンピュータに実行させるプログラムであって、
前記第２記憶領域に入出力するデータを、前記第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するステップと、
前記第３記憶領域へ記憶されたデータの領域であるデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
前記第３記憶領域のデータ領域から前記第２記憶領域への前記データの出力要求を生成するステップと、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定するステップと
を備える入出力制御方法をコンピュータに実行させるプログラム。
【請求項３４】
請求の範囲３３に記載のプログラムにおいて、
前記特定するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記入出力に関する情報を復元するステップを有する
プログラム。
【請求項３５】
請求の範囲３３に記載のプログラムにおいて、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
前記特定するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップと、
選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの入出力制御システム、入出力制御方法、および、入出力制御プログラムに関する。本発明は、特に、キャッシュを用いて外部記憶装置へアクセスを行うコンピュータに使用される入出力制御システム、入出力制御方法、および、入出力制御プログラムに関する。
【背景技術】
【０００２】
現在のコンピュータは、プログラム、および、データを主記憶装置に展開し、ハードディスクのような外部記憶装置への入出力を伴いながら処理を実行して、コンピュータサービスを実現している。ここで、プログラムは、動作手順をコンピュータで動作できる形の命令で記述したものである。実際には同一プログラムを用いて、複数の処理が動作している。すなわち、同じ手順に沿って、複数の作業がなされている。このプログラムに沿って処理している単位を、プロセスと呼ぶ。【０００３】
コンピュータの作業を制御しているプログラムがオペレーティングシステム（ＯＳ）である。ＯＳ上では、多くのプロセスが動作し、外部記憶装置に対してデータの入出力を行っている。ここで、プロセスが動作するために外部記憶装置から主記憶装置へプログラム本体を読込む処理も、プログラム本体というデータの外部記憶装置からの入力であり、外部記憶装置に対するデータの入出力の一部である。【０００４】
データの入出力処理は、プロセスの応答性に大きく影響する。プロセスの応答性とは、プロセスに対して要求を入力したときに、要求に対する処理を行い、何らかの結果、応答を返すまでの性能を呼ぶ。例えば、ワープロソフトの読込プロセスの場合、プロセスの応答性は、ドキュメントファイルを開くまでの時間になる。入力プロセスの場合、キー入力してから、１文字が入力処理され表示されるまでの時間になる。【０００５】
また、別の例として、インターネットのページアクセスの場合、プロセスの応答性は、ユーザから見るとアクセスプロセスの応答性であり、ＵＲＬを入力してから対応ページがウェブブラウザに表示されるまでになる。しかし、ウェブブラウザから見ると、ページアクセスは複数のファイル、ドキュメントへのアクセスとなり、それぞれの「ファイル、ドキュメントをアクセスする」という要求と「対応するデータが転送され受信完了する」という結果とから構成されている。したがって、ページアクセスは複数の応答から成り立っていることになる。
このように、プロセスの応答性は、様々な粒度で存在する。【０００６】
データの入出力は、外部記憶装置への入出力を必要とする場合がある。その入出力は、コンピュータが演算装置、主記憶装置を用いて計算処理するのに比べて、多くの時間を要する。そのため、データの入出力処理は、プロセス実行において比重が大きくなる傾向があり、応答性に大きく影響する。従って、１つのプロセスの応答性を向上させるためには、データの入出力処理、すなわち、外部記憶装置へのデータの転送速度、記憶速度などを向上させる必要がある。【０００７】
通常、連続したデータを外部記憶装置へバースト的に入出力するほど転送速度は向上する。これは、ハードディスク等でシークするというオーバヘッドなどが除かれたり、バスをフルに利用してデータ転送できたりするためである。しかし、一つのプロセスが膨大なデータを一度に入出力し、データ入出力を優先すると、他のプロセスは入出力ができなくなり、待機状態へ移り、処理が中断される。結果として、他のプロセスの応答性が下がるため、全体の平均的な応答性が下がるという問題が生じる。そのため、ＯＳは入出力スケジューラを持ち、連続データの入出力による高速化と各プロセスへの応答性向上のトレードオフを調整しながら入出力制御を行っている。【０００８】
例えば、ＤＡＮＩＥＬ  Ｐ．ＢＯＶＥＴ、ＭＡＲＣＯ  ＣＥＳＡＴＩ著、“Ｉ／Ｏ  Ｓｃｈｅｄｕｌｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ”、Ｕｎｄｅｒｓｔａｎｄｉｎｇ  ｔｈｅ  ＬＩＮＵＸ  ＫＥＲＮＥＬ、米国、Ｏ’ＲＥＩＬＬＹ、２００５年１１月、５８０〜５８３頁に、Ｌｉｎｕｘの入出力スケシュール機構が開示されている。すなわち、Ｌｉｎｕｘでは、Ｉ／Ｏ  ｅｌｅｖａｔｏｒとよばれる入出力スケシュール機構を持ち、利用用途の違いによって、Ｎｏｏｐスケジューラ、Ｄｅａｄｌｉｎｅスケジューラ、Ａｎｔｉｃｉｐａｔｏｒｙスケジューラ、ＣＦＱ（Ｃｏｍｐｌｅｔｅ  Ｆａｉｒｎｅｓｓ  Ｑｕｅｕｅｉｎｇ）スケジューラなどを設定することができる。【０００９】
入出力スケジューラは、入出力制御を行う過程において、入出力要求に対して、優先度による能力配分を行っている。このとき、入出力の優先度を決定するパラメータは、例えば、プロセスグループのＩＤやプロセスのＩＤ、また、そのプロセスに設定した入出力の優先度、入出力先の外部記憶装置の識別子などが挙げられる。入出力要求に対して、入出力スケジューラは、例えば、プロセスＩＤを参照してプロセスごとに要求処理の時間や要求処理の回数等を均等に配分したり、特定のプロセスＩＤに対しては数倍の要求処理をしたりなどを行う。【００１０】
また、ＯＳには、主記憶装置に一時記憶領域を確保し、外部記憶装置のデータを保有することで、入出力処理を見かけ上、高速化させる手法が採用されている。この一時記憶領域をキャッシュ、ファイルキャッシュ、Ｉ／Ｏキャッシュ、または、バッファ、Ｉ／Ｏバッファなどと呼ぶ（以下、キャッシュと統一して呼ぶこととする）。【００１１】
現在のコンピュータにおいて、一般的に、外部記憶装置と主記憶装置との間のデータ転送に比べて、演算装置と主記憶装置との間のデータ転送の方が高速である。そのため、ＯＳは、データを外部記憶装置に対して入出力するとき、ひとまずキャッシュに対して入出力させておき、タイミングを見計らって、キャッシュと外部記憶装置との間で入出力を行う。プロセスからしてみると、キャッシュに対してデータを入出力できた時点で入出力処理は完了する。データ領域の再利用性が高い場合、キャッシュへの入出力が繰り返され、外部記憶装置へのデータの入出力を回避することが可能なため、入出力を高速化することが可能になる。【００１２】
データの読込みにおいては、キャッシュ領域上にデータが存在しないときが外部記憶装置からのデータ入力（読込み）のタイミングとなる。ＯＳは、そのタイミングで外部記憶装置からキャッシュへデータを読み込んでいる。データの書込みにおいては、キャッシュ領域上で更新されたデータを外部記憶装置へ反映させるため、所定の事象がデータ出力（書込み）の契機となる。ＯＳは、その出力契機でキャッシュ領域のデータを外部記憶装置へ書き込んでいる。このように、キャッシュ領域上の更新されたデータをあるタイミングで外部記憶装置へ書き込む（出力する）ことをライトバックと呼ぶ。【００１３】
データの反映が行わなければ、キャッシュ上に保存されている更新データは外部記憶装置に反映されず、データの不整合などを起こす原因となる。キャッシュから外部記憶装置への出力契機としては、例えば、一定時間ごとがある。また別の例として、主記憶装置における未使用領域が少なくなったときがある。また別の例として、更新されたデータが一定以上になったときがある。更に別の例として、外部記憶装置への入出力処理が行われていないときがある。【００１４】
キャッシュに関する制御を行うのが、キャッシュ管理機構である。キャッシュ管理機構は、キャッシュの領域の確保や解放や、また、キャッシュの利用状況（どのファイルに対するキャッシュかなど）を管理している。キャッシュ管理機構は、ファイルシステムや主記憶管理システムと混在して存在している場合が多い。また、キャッシュにおけるライトバックは、ライトバックプロセスが実行する。【００１５】
例えばＤＡＮＩＥＬ  Ｐ．ＢＯＶＥＴ、ＭＡＲＣＯ  ＣＥＳＡＴＩ著、”Ｗｒｉｔｉｎｇ  Ｄｉｒｔｙ  Ｐａｇｅｓ  ｔｏ  Ｄｉｓｋ”、Ｕｎｄｅｒｓｔａｎｄｉｎｇ  ｔｈｅ  ＬＩＮＵＸ  ＫＥＲＮＥＬ、米国、Ｏ’ＲＥＩＬＬＹ、２００５年１１月、６２２〜６３０頁に、Ｌｉｎｕｘのライトバックプロセスが開示されている。すなわち、Ｌｉｎｕｘでは、ｂｄｆｌｕｓｈやｐｄｆｌｕｓｈと呼ばれるライトバックプロセスが、ライトバックを行っている。ライトバックプロセスは、前述のタイミングを契機に、更新のあったキャッシュ領域、すなわち、書込みがあったキャッシュ領域を探索する。そして、更新キャッシュ領域のデータを外部記憶装置へ出力する（書き込む）ためのデータ出力要求を作成し、入出力スケジュール機構へ発行している。このとき、探索速度を向上させるため、更新キャッシュ領域を予め更新リストなどで管理することもできる。【００１６】
ライトバックプロセスは、データ出力要求を発行するときに、一度に全ての更新データを出力するのではなく、適度な更新キャッシュ領域を選択して出力要求を発行する。更新データの選択としては、例えば、データ利用時刻が一番古いデータを優先するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法が挙げられる。また、別の更新データの選択として、ファイルシステム順に検索する手法が挙げられる。また、別の更新データの選択として、特定の外部記憶装置に対するキャッシュ領域のみを選択する手法が挙げられる。さらに、上記に挙げた更新データの選択手法を組み合わせた手法も、更新データの選択手法となる。また、更新データを選択するデータ量は、ファイル単位、一定ページサイズ（単一ページを含む）などが挙げられる。【００１７】
外部記憶装置へのデータ出力要求は、少なくとも、出力先の外部記憶装置を特定する識別子（例えば、ＰＣＩ機器番号やデバイス番号、Ｌｉｎｕｘにおけるメジャー番号、マイナー番号など）と外部記憶装置へ反映させるために選ばれたキャッシュ領域を示す情報（例えば、データのアドレス、ページ番号など）とを含む。【００１８】
図１は、従来技術におけるキャッシュを用いた入出力を説明する概念図である。プロセス１、プロセス２はデータの入出力を繰り返すことで、プログラムを実行する。プロセス１、２はＯＳ１０００へデータの入出力を要求し、ＯＳ１０００はキャッシュ１３００を用いてプロセス１，２からの入出力を高速化する。キャッシュ管理機構１３２０は、主意記憶装置１２００上からキャッシュ１３００を確保する。キャッシュ管理機構１３２０は、キャッシュ１３００内のキャッシュ領域１３１０を確保し、プロセス１、２からの入出力要求に対応する。図１において、“プロセス”の後に続く数字をプロセスＩＤとし、入出力要求に対して、プロセスＩＤ＝ｘのｙ番目のデータ入出力要求を“ｘ−ｙ”と表現する。【００１９】
まず、入力の場合の例を説明する。
例えば、プロセス１からの入力要求“１−１”に対して、キャッシュ管理機構１３２０はキャッシュ領域１３１０に、キャッシュ領域“１−１”を確保する。そのキャッシュ領域“１−１”上にデータは存在しないため、ＯＳ１０００はプロセス１のコンテキストのまま、データ入力要求を入出力スケジューラ１４００に発行する。入出力スケジューラ１４００は、外部記憶装置１６００へ入力要求“１−１”を要求し、外部記憶装置１６００からデータをキャッシュ領域１３１０のキャッシュ領域“１−１”へ転送する。ＯＳ１０００は、読み込んだデータをプロセスへ返答する、すなわち、プロセス空間へコピー、マッピングすることで読込要求は完了する。【００２０】
上記入力の場合、ＯＳ１０００がプロセス１のコンテキストのまま入力要求を入出力スケジューラ１４００に発行するとき、ＯＳ１０００は、その入力要求を発行した現在動作中のプロセスのプロセス情報（例示：プロセスＩＤ）を保持している。したがって、入出力スケジューラ１４００は、その入力要求を受け取るとき、そのプロセス情報を特定することができる。例えば、上記の例（入力要求“１−１”）では、入力要求の要求元のプロセスＩＤ＝１であることを特定できる。ここで、入出力スケジューラ１４００は、既述のように、プロセス（例示：プロセスＩＤ）に応じた優先度等を用いた入出力制御を実行することができる。従って、図１に示されるような場合では、プロセスの優先度等に応じて、入力要求に関する処理を実行することができる。それにより、入出力スケジューラによる入力に関する処理の応答性を向上させることができる。【００２１】
次回以降の同じ入力要求（読込要求）“１−１”に関しては、キャッシュ１３００上に、その入力要求に対応するキャッシュ領域“１−１”が存在する。従って、そのキャッシュ領域“１−１”からプロセス空間へデータをコピー、マッピングすることで入力要求に対する処理は完了する。そのため、読込速度を向上させることができる。【００２２】
次に、出力の場合の例を説明する。
プロセス１からの出力要求“１−３”に対して、キャッシュ管理機構１３２０はキャッシュ領域１３１０に、キャッシュ領域“１−３”を確保する。書き込むデータをプロセス空間からキャッシュ領域１３１０のキャッシュ領域“１−３”へコピーすることで出力要求に対する処理は完了する。プロセスから見て、出力処理はキャッシュ１３００への出力のみで終了するため、高速に出力処理を実行することができる。一方、実際に外部記憶装置１６００へ出力結果、すなわち、更新データを反映させるのは、ライトバックプロセス１５００が行う。【００２３】
図１において、プロセスからのデータ出力要求“ｘ−ｙ”に対するライトバックプロセス１５００から外部記憶装置１６００へのデータ出力要求を“ＲＢ（ｘ−ｙ）”と表現する。ライトバックプロセス１５００は、前述のタイミングを契機に起動し、ライトバックを開始する。更新キャッシュ領域１３１０のキャッシュ領域“１−３”を発見し、外部記憶装置１６００への出力が行われる。すなわち、ライトバックプロセス１５００は、更新キャッシュ領域１３１０のキャッシュ領域“１−３”に対する外部記憶装置１６００への出力要求を入出力スケジューラ１４００に発行する。このとき、ライトバックプロセス１５００のコンテキストとして、出力要求は発行される。そのため、外部記憶装置１６００への出力要求“ＲＢ（１−３）”として入出力スケジューラ１４００で扱われることになる。上記ライトバックにより、キャッシュ領域１３１０の更新データと外部記憶装置１６００のデータとの整合性が取れることになる。【００２４】
しかしながら、キャッシュを用いた入出力性能向上を図ることより、コンピュータの性能と応答性が低下するという問題が生じる。これは、キャッシュ管理機構１３２０がキャッシュ１３００をＯＳ１０００上で一意に扱い、プロセス１１００を意識していないためである。キャッシュ管理機構１３２０がプロセス情報を利用しないため、例えば、あるプロセス１１００が無限にキャッシュ１３００を使用し始め、主記憶装置１２００を独占すると、他のプロセス１１００の入出力が発生したときに新たなキャッシュ領域が主記憶装置１２００上には確保できない。そのため、必要なキャッシュ領域の確保のために使用中のキャッシュ領域の解放が必要となり、コンピュータ性能著しく低下するという恐れがある。【００２５】
このようなコンピュータ性能低下を解決するための一手段として、プロセスごとにキャッシュ容量を限定する方法が特開２００６−３５０７８０号公報（対応米国出願ＵＳ２００６２８８１５９）に記載されている。キャッシュ管理機構は、キャッシュ管理情報に設定する取得設定パラメータを基に、プロセスごとのキャッシュ容量を決定する。そして、キャッシュ管理機構は、プロセスが新たに確保要求するキャッシュ領域に対して、決定されたキャッシュ容量を超えないようにキャッシュ領域の確保、解放を制御している。これにより、特定のプロセスに対するキャッシュ領域の枯渇を防いでいる。【００２６】
しかし、特開２００６−３５０７８０号公報（対応米国出願ＵＳ２００６２８８１５９）の技術を用いた場合でも、更新データを外部記憶装置１６００へ反映させる処理は、ライトバックプロセスにより実行されることに変わりはない。
この出力の場合、ライトバックプロセス１５００は、ライトバックプロセス１５００のコンテキストとして、出力要求を入出力スケジューラ１４００へ発行する。ＯＳ１０００は、その入力要求を発行した現在動作中のプロセスとしてライトバックプロセスの情報を保持している。そのため、入出力スケジューラ１４００はその出力要求を受信するとき、プロセス情報をライトバックプロセスと特定する。すなわち、出力要求を発した大元のプロセス情報を特定することができない。例えば、上記の例（出力要求“ＲＢ（１−３）”では、出力要求の要求元のプロセス＝ライトバックプロセスと特定し、大元のプロセスＩＤ＝１を特定することができない。更に、キャッシュ領域１３１０に格納されたデータそのものは、どのプロセスによるデータかを示すプロセス情報（例示：プロセスＩＤ）を含んでいない。そのため、データそのものからも大元のプロセスＩＤ＝１を特定することができない。
このように、出力要求ＲＢ（ｘ−ｙ）は、ライトバックプロセスによる出力要求と特定されるため、入出力スケジューラ１４００は、既述のように、プロセス（例示：プロセスＩＤ）に応じた優先度等を用いた入出力制御を実行することができなくなる。従って、図１に示されるような場合では、プロセスの優先度等に応じて、出力要求に関する処理を実行することができない。すなわち、入出力スケジューラによる出力に関する処理の応答性を向上させることができない。【００２７】
図２Ａ〜図２Ｂは、従来技術における入力及び出力に関する処理の一例の概念を示す模式図である。図２Ａは入力の場合、図２Ｂは出力の場合をそれぞれ示す。図２Ａを参照すると、入力の場合、ＯＳ１０００はプロセス１、２、３からの入力要求を入出力スケジューラ１４００に発行する。そのとき、入出力スケジューラ１４００は、入力の要求元情報として、入力を要求するプロセスのプロセスＩＤを特定することができる。そのため、入出力スケジューラ１４００は、プロセスＩＤに応じた優先度等を用いた入力制御を実行することができる。この図では、入力制御として、入力処理を均等に割り振って行っている。
一方、図２Ｂを参照すると、出力の場合、ライトバックプロセス１５００は、プロセス１、２、３からの出力要求を一元化してライトバックプロセス１５００からの出力要求として、入出力スケジューラ１４００へ発行する。そのとき、入出力スケジューラ１４００は、出力の要求元情報として、出力を要求するプロセスをライトバックプロセスと特定する。そのため、入出力スケジューラ１４００は、要求元情報としてプロセスＩＤを知ることができず、プロセスＩＤに応じた優先度等を用いた出力制御を実行することができない。この図では、例えば、出力処理を出力要求の古い順やアドレスの近い順などで行うことになる。【００２８】
このように、従来のキャッシュ管理機構は、プロセスごとのキャッシュ容量の制御により、キャッシュの独占による性能低下を防ぐことはできる。しかし、入出力スケジューラによる優先度等を用いた入出力制御が無効になる問題は解決されない。その理由は、上記のように、キャッシュ管理機構がキャッシュ領域に対して明確にプロセス情報を保持せず、さらに、キャッシュから外部記憶装置へのデータ出力がライトバックプロセスに対するデータの出力として一元化されるためである。すなわち、入出力スケジューラは全てライトバックプロセスからのデータ出力要求と認識するため、本来伝わるべきキャッシュを用いて入出力を行ったプロセスに対する入出力の優先を決定するパラメータが、入出力スケジューラへ伝わらないからである。キャッシュによる入出力機構において、入出力スケジューラがプロセスの優先度を適切に決定可能な技術が望まれる。その優先度の決定に必要な情報を適切に入出力スケジューラへ伝達させることが可能な技術が求められる。【００２９】
関連する技術として特開２００５−２９３２０５号公報（対応米国出願ＵＳ２００５２２３１６８）に、記憶制御装置、制御方法、および制御プログラムが開示されている。この記憶制御装置は、複数の記憶装置を制御する。この記憶制御装置は、該記憶制御装置内のキャッシュメモリに格納されているデータの前記複数の記憶装置へのライトバックをＬＲＵ法によって行うＬＲＵライトバック手段と、該ＬＲＵライトバック手段によって実行されているライトバックの数が少ない記憶装置を選択して、該選択した記憶装置に対するデータのライトバックを行うライトバックスケジュール処理手段とを備える。【００３０】
ＷＯ９９／４０５１６号公報（対応米国特許ＵＳ６７４８４８７）にディスクキャッシュ制御方法、ディスクアレイ装置、及び記憶装置が開示されている。このディスクキャッシュ制御方法は、データが分割されて格納される複数のディスク装置と、ディスクキャッシュとを有し、上記複数のディスク装置に複数のボリウムが割り当てられたディスクアレイ装置におけるディスクキャッシュ制御方法である。上記データへの新たなディスクキャッシュ領域の割り当ては、上記ボリウムを任意の固定長で区分された領域毎にアクセス頻度を求め、上記アクセス頻度が低い上記領域に対して割り当てられているディスクキャッシュ領域から順に行われる。【００３１】
特開２０００−１７２５６２号公報（対応米国特許ＵＳ６５０７８９４）に情報処理装置が開示されている。この情報処理装置は、主記憶装置と、主記憶のコピーを保持するキャッシュメモリと、前記キャッシュメモリの制御情報及びアドレス情報を参照，更新しつつ前記キャッシュメモリ内のデータを管理するキャッシュメモリ制御部を含むプロセッサとを備えている。この情報処理装置において、前記制御情報及びアドレス情報の参照及び更新を行わずに前記主記憶装置のデータを前記キャッシュメモリに転送するプリフェッチ手段を備えている。【００３２】
特開平８−３２８９５６号公報にマルチプロセッサシステムのメモリ管理方式が開示されている。このマルチプロセッサシステムのメモリ管理方式において、マルチプロセッサシステムは、複数のプロセッサからなる仮想記憶機構を備えている。マルチプロセッサシステムは、メモリ管理手段と、プロセス管理手段と、アドレス変換キャッシュと、バインド制御手段と、無効化制御手段とを具備する。メモリ管理手段は、仮想アドレスと実アドレスとの関連づけを管理する。プロセス管理手段は、上記プロセッサにより実行されるプロセスを管理する。アドレス変換キャッシュは、上記プロセッサそれぞれの内部に設けられ、上記メモリ管理手段により関連づけられた仮想アドレスと実アドレスとの連結情報を保持する。バインド制御手段は、いずれかのプロセッサにて実行中のプロセスによる外部データへのアクセス要求について、該プロセッサ上のオペレーティングシステムから上記メモリ管理手段に対し問い合わせが行われ、この問い合わせに対して上記メモリ管理手段が所定の仮想アドレス及び実アドレスを引き渡した際に、この実アドレスで示されるメモリページをそのプロセスが使用終了するまで、そのプロセスをそのプロセッサにバインドするように上記プロセス管理手段に通知する。無効化制御手段は、そのプロセッサが内部にもつ上記アドレス変換キャッシュの該仮想アドレスに関連づけられた実アドレスを無効化し、上記引き渡される実アドレスに更新する。マルチプロセッサシステムのメモリ管理方式は、いずれかのプロセッサにて実行中のプロセスによって上記メモリ管理手段により管理される仮想アドレスと実アドレスとの関連づけが更新されたときであっても、他のすべてのプロセッサが内部にもつ上記アドレス変換キャッシュの一斉無効化を必要とせずにメモリ管理を実施する。
【発明の開示】
【００３３】
本発明の目的は、キャッシュによる入出力機構において、入出力スケジューラがスケジューリングを適切に実行可能なコンピュータの入出力制御システム、入出力制御方法、及び、入出力制御プログラムを提供することにある。
【００３４】
この発明のこれらの目的とそれ以外の目的と利益とは以下の説明と添付図面とによって容易に確認することができる。
【００３５】
本発明の入出力制御システムは、第１記憶領域及び第２記憶領域を具備し、第１記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置の入出力制御システムである。本発明の入出力制御システムは、キャッシュ管理部と、入出力特定情報記憶部と、ライトバック部と、入出力特定部とを備える。キャッシュ管理部は、第２記憶領域に入出力するデータを、第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶する。入出力特定情報記憶部は、第３記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて記憶する。ライトバック部は、第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成する。入出力特定部は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定する。
【００３６】
本発明の入出力制御方法は、第１記憶領域及び第２記憶領域を具備し、第１記憶領域の一部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法である。出力制御方法は、（ａ）第２記憶領域に入出力するデータを、第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するステップと、（ｂ）第３記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、（ｃ）第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成するステップと、（ｄ）生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定するステップとを備える。
【００３７】
本発明のプログラムは、第１記憶領域及び第２記憶領域を具備し、第１記憶領域の一部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法をコンピュータに実行させるプログラムである。プログラムは、（ａ）第２記憶領域に入出力するデータを、第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶するステップと、（ｂ）第３記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、（ｃ）第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成するステップと、（ｄ）生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定するステップとを備える入出力制御方法をコンピュータに実行させる。
【図面の簡単な説明】
【００３８】
【図１】図１は、従来技術におけるキャッシュを用いた入出力を説明する概念図である。
【図２Ａ】図２Ａは、従来技術における入力及び出力に関する処理の一例の概念を示す模式図である。
【図２Ｂ】図２Ｂは、従来技術における入力及び出力に関する処理の他の一例の概念を示す模式図である。
【図３】図３は、本発明の入出力制御システムの第１の実施例の構成を示すブロック図である。
【図４】図４は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第２の実施例の概念を示す模式図である。
【図５】図５は、本発明の入出力制御システムの第２の実施例の構成を示すブロック図である。
【図６】図６は、本発明の出力制御システムの第２の実施例の動作を示すフローチャートである。
【図７】図７は、本発明の出力制御システムの第２の実施例の動作を示すフローチャートである。
【図８】図８は、本発明の出力制御システムの第２の実施例の動作を示すフローチャートである。
【図９】図９は、本発明の入出力制御システムの第３の実施例の構成を示すブロック図である。
【図１０】図１０は、本発明の出力制御システムの第３の実施例の動作を示すフローチャートである。
【図１１】図１１は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第４の実施例の概念を示す模式図である。
【図１２】図１２は、本発明の入出力制御システムの第４の実施例の構成を示すブロック図である。
【図１３】図１３は、本発明の出力制御システムの第４の実施例の動作を示すフローチャートである。
【図１４】図１４は、本発明の出力制御システムの第４の実施例の動作を示すフローチャートである。
【図１５】図１５は、本発明の出力制御システムの第４の実施例の動作を示すフローチャートである。
【図１６】図１６は、本発明の出力制御システムの第４の実施例の動作を示すフローチャートである。
【図１７】図１７は、本発明の入出力制御システムとしての計算機システム装置の第１具体例を示すブロック図である。
【図１８】図１８は、本発明におけるキャッシュを用いた入出力を説明する概念図である。
【図１９】図１９は、本発明の入出力制御システムとしての計算機システム装置の第２具体例を示すブロック図である。
【図２０】図２０は、本発明の入出力制御システムとしての計算機システム装置の第２具体例の応用例を示すブロック図である。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの実施例に関して、添付図面を参照して説明する。【００４０】
（第１の実施例）
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第１の実施例について、添付図面を参照して説明する。なお、本発明に関し、キャッシュを用いた入出力において、プロセスの入出力に関する情報を伝達することを主に説明するために、キャッシュ制御、および、キャッシュからの入出力要求生成に関わる構成要素を主に説明する。【００４１】
図３は、本発明の入出力制御システムの第１の実施例の構成を示すブロック図である。入出力制御システムは、第１記憶領域及び第２記憶領域を具備し、第１記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部１１０と、ライトバック部１２０と、入出力特定部１００とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム（入出力制御方法）がインストールされて、本発明の入出力制御システムとして機能する。【００４２】
キャッシュ管理部１１０は、第２記憶領域に入出力するデータを、第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶する。第１記憶領域は半導体メモリに例示され、第２記憶領域はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に例示される。キャッシュ管理部１１０は、入出力特定情報記憶部１１１を含む。入出力特定情報記憶部１１１は、第３記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて記憶する。入出力に関する情報は、入出力の要求元に関する情報に例示される。ライトバック部１２０は、第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成する。入出力特定部１００は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部１１１を参照して、特定する。【００４３】
キャッシュ管理部１１０は、入出力要求部２００及び入出力要求処理部１０１と連係している。キャッシュ管理部１１０は、入出力要求部２００がキャッシュを利用したデータの入出力を要求するときに動作する。ここで、入出力要求部２００は、プログラム（プロセス）からデータの入出力要求を受け付ける。入出力要求処理部１０１は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する。【００４４】
次に、本発明の出力制御システムの第１の実施例の動作（入出力制御方法、入出力制御プログラムの実施例）について、図３を参照して説明する。ここでは、プログラムからのデータの出力要求に対する動作について説明する。【００４５】
まず、データ出力要求がプログラムの入出力要求部２００から発行された場合、キャッシュ管理部１１０は、第２記憶領域に入出力するデータを、第１記憶領域のキャッシュとして用いる第３記憶領域へ記憶する。次に、キャッシュ管理部１１０は、第３記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部１１１に記憶する。その後、ライトバック部１２０は、第３記憶領域のデータ領域から第２記憶領域へのデータの出力要求を生成する。続いて、入出力特定部１００は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部１１１を参照して、特定する。そして、入出力要求処理部１０１は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する。【００４６】
本発明における出力の場合、入出力要求処理部１０１が入出力の要求に関連する処理を実行するとき、少なくとも入出力特定情報記憶部１１１及び入出力特定部１００の機能により、入出力に関する情報を取得し、特定することができる。それにより、出力要求の大元の要求元又はそれに関連する情報を特定することができる。従って、出力要求の大元の要求元又はそれに関連する情報に基づいて、入出力要求処理部１０１は入出力の要求に関連する処理を実行することができる。【００４７】
以下、本発明の具体的な実施例について、第２の実施例から第４の実施例において説明する。【００４８】
（第２の実施例）
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第２の実施例について、添付図面を参照して説明する。【００４９】
図４は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第２の実施例の概念を示す模式図である。図４を参照すると、本発明における出力の場合、キャッシュ領域とプロセス１、２、３との関係が、ライトバックプロセスの実行前に予め記憶されている。そのため、ライトバックプロセス１７００は、当該関係を参照することで、プロセス１、２、３からの出力要求を入出力スケジューラ１４００へ発行するとき、それら出力要求の大元の要求元であるプロセスＩＤを特定することができる。従って、ライトバックプロセス１７００は、そのプロセスＩＤを用いることで、出力を要求するプロセス（出力の要求元情報）がライトバックプロセス１７００ではなく大元のプロセス１、２、３であると入出力スケジューラ１４００に認識（特定）させることができる。それにより、入出力スケジューラ１４００は、プロセスＩＤに応じた優先度等を用いた出力制御を実行することができる。この図では、出力制御として、出力処理を均等に割り振って行っている。【００５０】
以下、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第２の実施例について具体的に説明する。なお、本発明に関し、キャッシュを用いた入出力において、プロセスの入出力に関する情報を伝達することを主に説明するために、キャッシュ制御、および、キャッシュからの入出力要求生成に関わる構成要素を主に説明する。【００５１】
図５は、本発明の入出力制御システムの第２の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部１１０と、ライトバック部１２０と、入出力特定情報復元部１３０とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム（入出力制御方法）がインストールされて、本発明の入出力制御システムとして機能する。【００５２】
キャッシュ管理部１１０は、従来のキャッシュ管理機構１３２０（図１）が有するキャッシュ管理機能に加え、入出力特定情報記憶部１１１を含む。キャッシュ管理部１１０は、入出力要求部２００及び入出力要求スケジューリング部３００と連係している。キャッシュ管理部１１０は、入出力要求部２００がキャッシュを利用したデータの入出力を要求するときに動作する。【００５３】
ここで、入出力要求部２００は、プログラム（プロセス）からデータの入出力要求を受け付ける。データ入出力要求スケジューリング部３００は、外部記憶装置に対するデータの入出力要求をスケジューリングする。入出力要求部２００は、ＯＳに含まれている入出力要求を受け付けるプログラム、又はプログラム（プロセス）の入出力担当部分に例示される。入出力要求スケジューリング部３００は、ＯＳに含まれている入出力スケジューラ１４００に例示される。
ただし、プログラム（プロセス）からの入出力要求は、入出力の要求を示す情報、及び、プロセスを特定する情報を含む。入出力の要求を示す情報は、リクエスト識別子、データ位置や量、入出力バッファ（キャッシュ領域を含む）等の位置に例示される。プロセスを特定する情報は、入出力先識別子に例示され、プロセスグループＩＤやプロセスのＩＤのようなプロセスグループやプロセスの識別子、入出力の優先度を含んでいても良い。【００５４】
キャッシュ管理部１１０は、入出力要求部２００からのデータの入出力要求に対して、キャッシュ領域を管理する。キャッシュ領域の管理としては、少なくとも、データの入出力に必要なキャッシュの確保、解放、および、ファイルにおけるアドレス、外部記憶装置におけるデータ位置との対応表（マッピングテーブル）による管理を行う。具体的には以下のような管理を行う。【００５５】
キャッシュ管理部１１０は、入出力要求部２００からのデータの入力要求に対して、既にキャッシュ領域にデータを確保していた場合、当該キャッシュ領域からデータを読込む。一方、データの確保がなされていない場合、キャッシュ領域を確保した後、外部記憶装置からキャッシュ領域へのデータの入力要求を作成し、入出力要求スケジューリング部３００に発行する。【００５６】
キャッシュ管理部１１０は、入出力要求部２００からのデータの出力要求に対して、既にキャッシュ領域に書込み領域を確保していた場合、当該キャッシュ領域へのデータを書き込む。一方、キャッシュ領域に書込み領域が確保されていない場合、新規キャッシュ領域を確保し、ファイルにおけるアドレス、外部記憶装置におけるデータ位置との対応関係を構築した後、キャッシュ領域へデータを書き込む。ここで、対応関係の構築とは、例えば、上記対応表（マッピングテーブル）への出力要求に関する情報の登録である。なお、書込みキャッシュ領域に対して更新フラグを設定しておき、データの更新の有無を記憶する。更新フラグは、ライトバック部１２０で、外部出力装置へ更新データを出力する際に、更新データ領域かどうかを判定するために参照する。【００５７】
さらに、キャッシュ管理部１１０は、キャッシュ領域に対応した入出力の特定に必要な情報を取得し、その取得された情報を入出力特定情報記憶部１１１に記憶する。ここで、入出力の特定に必要な情報とは、入出力スケジューラ部３００が入出力をスケジューリングする際に指針とするパラメータ情報である。今後、この情報を入出力特定情報と呼ぶ。後述されるように、その入出力特定情報を用いることにより、入出力スケジューラ部３００は、優先度等を用いた出力制御を実行することが可能となる。【００５８】
入出力特定情報としては、例えば、プロセスやプロセスグループの識別子、そのプロセスやプロセスグループに対する入出力優先度、入出力先の外部記憶装置の識別子などである。ここで、識別子とは、個々を識別するための情報のことをいう。例えば、ＩＤなどの番号や管理情報を格納している構造体へのポインタなどが挙げられる。入出力特定情報が例えばプロセスＩＤやプロセスグループＩＤ等の場合、キャッシュ管理部１１０は、プログラム（プロセス）から入出力要求を受け取るとき、ＯＳが保持している現在動作中のプロセスのプロセス情報として、その入出力特定情報を取得することができる。また、入出力特定情報が例えば外部記憶装置の識別子等の場合、入出力要求から直接取得することができる。【００５９】
入出力特定情報記憶部１１１は、入出力特定情報とキャッシュ領域との関係を記憶し、管理する。すなわち、キャッシュ領域を表す情報と入出力特定情報とをキャッシュ管理部１１０から受取ると、それらの情報を互いに関連付けて記憶し、管理する。キャッシュ領域を表す情報は、例えば、キャッシュ領域のページアドレスやキャッシュ領域のブロック番号などがあり、対応表（マッピングテーブル）に記されている。
入出力特定情報記憶部１１１の管理方法として、例えば、キャッシュ領域を表す情報と入出力特定情報とを対応（関連）付けた管理表を作成して記憶することができる。また、入出力特定情報記憶部１１１の管理方法の別の例として、ＯＳがキャッシュを管理している管理構造体の中に、パラメータとして入出力特定情報を加えることができる。その場合、例えば、メモリ管理構造体のキャッシュ領域を示すアドレススペース構造体やページ構造体に、プロセスやプロセスグループの識別子を関連付けるように加える方法が考えられる。【００６０】
ライトバック部１２０は、更新キャッシュ領域のライトバックを行う。すなわち、先に述べた外部記憶装置へのデータの出力タイミングに、更新データを適度に外部記憶装置へ反映させるために、入出力スケジューラ部３００に処理させるためのデータの出力要求を作成する。データ出力要求は、プログラム（プロセス）からの入出力要求と同様である。ただし、データの出力要求元がライトバック部１２０であることを示す情報を有していても良い。ライトバック部１２０は、図４におけるライトバックプロセス１７００に対応する。
ライトバック部１２０は、背景技術のライトバックプロセス１５００と概ね同様である。しかし、更新データの選択として、入出力特定情報記憶部１１１に記憶されている入出力特定情報を参照することができる点で異なる。すなわち、例えば、入出力特定情報から特定のプロセスの識別子を抽出することにより、特定のプロセスに対するキャッシュ領域のみを選択する手法が実現できる。選択されたキャッシュ領域のみにおいて出力処理することで、実質的に出力要求に優先度を持たせることができる。さらに、上記の入出力特定情報を用いて更新データ選択手法と従来の更新データ選択手法を組み合わせた手法も、更新データの選択手法となる。ライトバック部１２０は、外部記憶装置へのデータ出力要求を入出力特定情報復元部１３０に発行する。【００６１】
入出力特定情報復元部１３０は、ライトバック部１２０からの外部記憶装置へのデータ出力要求に対して、入出力特定情報記憶部１１１に記憶した入出力特定情報を復元する。入出力特定情報を復元するとは、ライトバック部１２０で入出力スケジューリング部３００へ出力要求を発行しても、入出力スケジューリング部３００には大元の発信元（出力要求元）であるプロセス情報（入出力特定情報）を特定できるようにすることである。すなわち、入出力特定情報復元部１３０は、ライトバック部１２０からデータ出力要求を受信したなら、データ出力要求に含まれるキャッシュ領域を示す情報に基づいて、そのキャッシュ領域に対応する入出力特定情報を入出力特定情報記憶部１１１から検出する。そして、入出力特定情報を復元して、データ出力要求を出力するプロセスがライトバック部１２０ではなく、入出力特定情報で特定されるプロセスであるように見せかけながら、そのデータ出力要求を入出力スケジューリング部３００へ発行する。【００６２】
入出力情報の復元方法としては、例えば、ライトバック部１２０が、上記の入出力特定情報記憶部１１１を参照して、出力要求元情報を、一時的に、自身（ライトバック部１２０）を示す情報から、キャッシュ領域に対応する入出力特定情報（例示：プロセス識別子や入出力優先度）に変換する方法がある。それにより、ライトバック部１２０からではなく、データをキャッシュへ出力したプロセスから出力要求が発行されたように見せかけることができる。
また、別の入出力情報の復元方法としては、例えば、入出力スケジューリング部３００へのインタフェース（ＡＰＩ）にラッパープログラムとして変換部を用意し、入出力スケジューリング部３００がプロセスコンテキストから入出力特定情報を読み取ろうとするときに、データをキャッシュへ出力したプロセスの入出力特定情報に変換して受け渡す方法も挙げられる。【００６３】
ライトバックプロセスは複数ページを一度に出力要求にする場合もある。そのとき、入出力特定情報が複数ページにおいて異なることがある。そのときに復元する入出力特定情報を適切に選択する必要がある。
復元する入出力特定情報の選択としては、例えば、出力要求の対象となっているキャッシュ領域に対して合計容量の割合の一番高い入出力特定情報を選択することができる。復元する入出力特定情報の選択の別の例として、出力要求の対象となっているキャッシュ領域に対して入出力優先度が一番高い、すなわち、一番優先する入出力特定情報を選択することができる。復元する入出力特定情報の選択の別の例として、出力要求の対象となっているキャッシュ領域に対して最後に更新したキャッシュ領域に対する入出力特定情報を選択することができる。【００６４】
このように、入出力特定情報復元部１３０は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報（データ出力要求の大元の発生元）を、入出力特定情報記憶部１１１を参照して特定する入出力特定部１００と見ることができる。また、入出力スケジューリング部３００は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する入出力要求処理部１０１と見ることができる。【００６５】
入出力要求スケジューリング部３００は、外部記憶装置に対するデータの入力要求について、従来と同様の方法でスケジューリングする。また、入出力スケジューリング部３００は、外部記憶装置に対するデータの出力要求について、出力要求元情報（ライトバック部１２０を示す情報から、データをキャッシュへ出力したプロセスへ一時的に復元（変換）された入出力特定情報）を参照して、スケジュールにおける優先度を決定し、決定された優先度に基づいてスケジューリングを行う。【００６６】
そのスケジューリング後に、入出力特定情報復元部１３０は、入出力特定情報復元により後の処理に影響する情報変換を、元の情報へ戻す。すなわち、出力要求元情報について、データをキャッシュへ出力したプロセスへ一時的に復元（変換）された入出力特定情報を、ライトバック部１２０を示す情報へ戻す。【００６７】
次に、本発明の出力制御システムの第２の実施例の動作（入出力制御方法、入出力制御プログラムの実施例）について、図４〜図８を参照して説明する。ただし、図６乃至図８は、本発明の出力制御システムの第２の実施例の動作を示すフローチャートである。【００６８】
まず、図６を参照して、プログラムからのデータの入力要求に対する動作について説明する。
入力要求時には、スループット向上のために、データ読込パターンを予測し先行して読み出しておく、一般に「先読み」と呼ばれる技術を適用する場合もある。本説明では、これは入力要求発行時に入出力要求部２００にて適用されているものとし、その後のキャッシュ確保と外部記憶からのデータ読み出し部分について説明する。【００６９】
データ入力要求がプログラムの入出力要求部２００から発行された場合、キャッシュ管理部１１０は、要求されたデータ領域が既に確保されているかどうかをチェックする（ステップＳ１０１）。
ステップＳ１０１にて、キャッシュ上にデータ領域が未だ確保されていない場合（ステップＳ１０１：ＮＯ）、キャッシュ管理部１１０は、空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域としてキャッシュ管理情報に登録する（ステップＳ１０２）。
ステップＳ１０１にて、キャッシュ上にデータ領域が既に確保されている場合（ステップＳ１０１：ＹＥＳ）、キャッシュ管理部１１０は当該キャッシュ上に既にデータが存在するかどうかをチェックする（ステップＳ１０３）。
ステップＳ１０３にて、データ領域に対応するキャッシュ上のデータが存在しない場合（ステップＳ１０３：ＮＯ）、又は、ステップＳ１０２で新規キャッシュ領域を確保した場合、そのキャッシュ領域にデータを転送するために、キャッシュ管理部１１０は、外部出力装置に対するデータ入力要求を入出力スケジューリング部３００へ発行する。その後、入出力要求スケジューリング部３００を経て、外部出力からデータの伝送が終了する応答が到着するまで、待機状態に入る（ステップＳ１０４）。
ステップＳ１０３にて、データ領域に対応するキャッシュ上にデータが存在した場合、もしくは、ステップＳ１０４にて、キャッシュ上へのデータの転送が完了した場合、キャッシュ管理部１１０は、該当キャッシュからプロセス空間（プログラム）へデータを転送する（ステップＳ１０５）。
これにて、データの入力処理が完了する。【００７０】
この入力処理は同一プロセスコンテキストで処理ため、入力要求したプロセスの入力処理として扱われる。なお、ステップＳ１０５後に、キャッシュ管理部１１０は、入力先のキャッシュ領域と入出力特定情報とを関連付けて、入出力特定情報記憶部１１１に記憶しても良い。【００７１】
次に、図７を参照して、プログラムからのデータの出力要求に対する動作について説明する。
データ出力要求がプログラムの入出力要求部２００から発行された場合、キャッシュ管理部１１０は、要求されたデータ領域が既に確保されているかどうかをチェックする（ステップＳ２０１）。
ステップＳ２０１において、キャッシュ上にデータ領域が存在しない場合（ステップＳ２０１：ＮＯ）、キャッシュ管理部１１０は空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域として管理情報に登録する（ステップＳ２０２）。ここで、管理情報は、対応表（マッピングテーブル）に例示される。キャッシュ管理部１１０は、新規キャッシュ領域を確保した後、必要に応じてデータ入力要求を発行し、キャッシュ上のデータを補完する（ステップＳ２０３）。
ステップＳ２０１において、キャッシュ上にデータ領域が存在している場合（ステップＳ２０１：ＹＥＳ）、または、ステップＳ２０２、Ｓ２０３を経てキャッシュ上にデータ領域を確保した場合、キャッシュ管理部１１０はデータをプロセス空間からキャッシュへ転送する（ステップＳ２０４）。
キャッシュ管理部１１０は、出力先のキャッシュ領域と入出力特定情報とを関連付けて、入出力特定情報記憶部１１１に記憶する（ステップＳ２０５）。
これにより、データの出力処理が完了する。【００７２】
ここで、データの補完とは、キャッシュで扱う領域単位において、データの出力範囲以外の場所に書込み前のデータを保持させておくことをいう。すなわち、必要に応じてデータの補完を行うとは、データ出力領域がキャッシュの領域単位の途中から始まったり、途中で終了したりするときに、その最初、または、最後のキャッシュ領域単位に対して、データ入力要求を発行し、データを保持させることをいう。例えば、Ｌｉｎｕｘの２．６バージョンでは、キャッシュ領域として、キャッシュをメモリのページ単位で扱っている。このとき、データ出力範囲がページ領域全体であれば、すべてのデータ領域を更新するため、データをあらかじめ保持しておく必要はない。しかしながら、データ出力範囲がページの一部である場合、キャッシュ上におけるデータ出力範囲でないデータをあらかじめ保持させておかないと、間違ったデータのままキャッシュとして管理され、外部記憶装置に記憶されている該当領域の本来のデータとの不整合を起こす。そのため、該当するページのデータを外部記憶装置から読み込むことにより、データをあらかじめ保持させることでデータの整合性を保つ。【００７３】
次に、図８を参照して、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理の動作について説明する。
ライトバック処理は、前述した種々のタイミングを契機に処理を開始する。更新データを反映させる容量などもタイミングに対する設定に従って決定する。ライトバック処理要求のタイミングを契機に、ライトバック部１２０は起動する（フローチャート開始）。
ライトバック部１２０は、キャッシュ管理部１１０の管理情報（例示：対応表（マッピングテーブル））を参照して、ＬＲＵなど前述の種々のポリシーに基づいて、キャッシュ上から更新すべきデータ領域を回収する（ステップＳ３０１）。このとき、入出力特定情報も入出力特定情報記憶部１１１で記憶しているため、入出力特定情報を参照して更新データ領域の回収に利用することも可能になる。例えば、特定のプロセスに関わるキャッシュ領域のみを回収するといったポリシーを持つことが可能になる。
ライトバック部１２０は、回収したキャッシュ領域に対するデータ出力要求を作成し、入出力特定情報復元部１３０へ渡す（ステップＳ３０２）。
入出力特定情報復元部１３０は、渡されたデータ出力要求に対して、入出力特定情報記憶部１１１の情報を参照し、入出力特定情報を復元する（ステップＳ３０３）。
例えば、このデータ出力要求を発行するプログラム（ライトバック部１２０）において、そのライトバック部１２０を示すプロセスやプロセスグループの識別子、または、入出力優先度を、復元された大元の出力要求元のプロセスの識別子等へ変更する。それにより、入出力スケジューリング部３００に対して、ライトバック部１２０からの出力要求ではなく、更新データを出力したプロセス（大元の出力要求元）からの出力要求であるかのように見せかける。また、別の例では、入出力スケジューリング部３００へのＡＰＩに対して、上記復元された入出力特定情報を見せかけるためのラッパーＡＰＩを設定する。
入出力特定情報復元部１３０は、入出力特定情報復元後に、入出力要求スケジューリング部３００へデータ出力要求を発行する（ステップＳ３０４）。それにより、入出力要求スケジューリング部３００は、復元された入出力特定情報に対応したプロセスによる出力要求として出力処理を実行する。従って、入出力要求スケジューリング部３００は、その所定のプロセスに対応した優先度等に基づく出力制御を実行することができる。
その後、入出力特定情報復元部１３０は、ステップＳ３０３にて行った入出力特定情報復元において、後の処理に影響する情報変換を元の情報へ戻す（ステップＳ３０５）。
例えば、データ出力要求を発行するプログラム（ライトバック部１２０）のプロセスの識別子を変更した場合、その後のプロセス管理において同一番号プロセスが存在するという悪影響を起こす。そのため、プロセスの識別子を元のデータ出力要求を発行するプログラム（ライトバック部１２０）のプロセスの識別子に戻すという後処理を行う。
ライトバック部１２０、および、入出力特定情報復元部１３０は、ステップＳ３０１乃至Ｓ３０５までを行い、最初に決定された容量のキャッシュからのデータ出力要求が行われているか否かを判断する（ステップＳ３０６）。そして、最初に決定された容量のキャッシュからのデータ出力要求が行われていない場合（ステップＳ３０６：ＮＯ）、再度、探索範囲を変える、各種パラメータを変更するなどして、外部出力装置へのデータ反映条件を変更してステップＳ３０１乃至Ｓ３０５を繰り返す。
ステップＳ３０６において、決定された容量のキャッシュからのデータ出力要求が行われた場合、更新データがキャッシュ上にない場合、又は、一定回数のキャッシュ領域の探索が終了した場合（ステップＳ３０６：ＹＥＳ）、繰り返しを終了する。
最後に、ライトバック部１２０は、データ出力に対する外部記憶装置の応答を待ち、更新フラグをクリアする（ステップＳ３０７）。
これにより、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理が完了する。【００７４】
次に、本実施例の効果について説明する。
本実施例では、入出力特定情報をキャッシュに関連付けて記憶し、キャッシュから外部記憶装置への反映時に復元するというように構成されているため、キャッシュを用いたデータの出力においても、入出力スケジューリング部へ正しく入出力特定情報を伝播することができる。これにより、キャッシュを用いた入出力においても設定した入出力スケジューリングの機能を提供でき、性能低下、応答性低下を回避することができる。【００７５】
（第３の実施例）
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第３の実施例について、添付図面を参照して説明する。図９は、本発明の入出力制御システムの第３の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部１４０と、ライトバック部１２０と、入出力特定情報復元部１３０とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム（入出力制御方法）がインストールされて、本発明の入出力制御システムとして機能する。【００７６】
キャッシュ管理部１４０は、従来のキャッシュ管理機構１３２０（図１）が有するキャッシュ管理機能に加え、入出力特定情報記憶部１４１とキャッシュ確保制御部１４２とを含む。キャッシュ管理部１４０は、入出力要求部２００及び入出力要求スケジューリング部３００と連係している。キャッシュ管理部１４０は、入出力要求部２００がキャッシュを利用したデータの入出力を要求するときに動作する。入出力要求部２００及び入出力要求スケジューリング部３００は、第２の実施例と同じであるのでその説明を省略する。【００７７】
本実施例は、第２の実施例と比較して、キャッシュ管理部１４０、入出力特定情報記憶部１４１及びキャッシュ確保制御部１４２が異なる。従って、キャッシュ管理部１４０、入出力特定情報記憶部１４１及びキャッシュ確保制御部１４２について説明する。なお、その他の点は、第２の実施例と同じであるのでその説明を省略する。【００７８】
キャッシュ管理部１４０は、入出力要求部２００からのデータの入出力要求に対して、キャッシュ領域を管理する。キャッシュ管理部１４０は、入出力要求部２００からのデータの入出力要求に対して、既にキャッシュ領域として確保していない場合、キャッシュ確保制御部１４２を用いて、新規キャッシュ領域を確保する。キャッシュ管理部１４０は、キャッシュ領域にデータが入出力された場合、入出力特定情報記憶部１４１に入出力特定情報を記憶する。【００７９】
入出力特定情報記憶部１４１は、入出力特定情報記憶部１１１と同様に、キャッシュ領域を表す情報と入出力特定情報とを関連付けて記憶し、管理する。
キャッシュ確保制御部１４２は、入出力特定情報記憶部１４１、および、キャッシュ管理部１４０に管理されているキャッシュに関する情報を参照して、キャッシュ領域の使用状況を把握する。キャッシュ領域の使用状況とは、キャッシュ領域をプロセスや外部記憶装置、またはその組合せや全体においてどのように利用しているかという情報である。キャッシュ領域の使用状況の情報としては、例えば、キャッシュ容量、使用キャッシュ容量、使用キャッシュ割合、予め確保されているキャッシュ領域、最大キャッシュ容量設定値、新規キャッシュとして確保できる容量などが挙げられる。特に、入出力特定情報記憶部１４１の入出力特定情報を参照すれば、キャッシュ領域とプロセスやプロセスグループとの関係が分かるので、プロセスごとやプロセスグループごとのキャッシュ領域の使用状況を把握することができる。【００８０】
キャッシュ確保制御部１４２は、キャッシュ管理部１４０からのキャッシュ確保要求に対して、キャッシュ領域の使用状況を参考にして、新規キャッシュ領域の確保の可否、および、確保領域または確保容量を決定し、キャッシュを確保して応答する。新規キャッシュ領域の確保の可否は、すなわち、以下のようにすることができる。プロセスに対して予め設定した最大キャッシュ容量設定値と、要求されている使用キャッシュ容量とを比較して、使用キャッシュ容量が最大キャッシュ容量設定値未満であれば、新規キャッシュ領域の確保を可能と判定する。一方、使用キャッシュ容量が最大キャッシュ容量設定値以上であれば、新規キャッシュ領域の確保を不可能と判定する。これらは、入出力特定情報に含まれるプロセスごとやプロセスグループごとに実行することができる。【００８１】
新規キャッシュ領域の確保の可否の別の例としては、以下のようにすることができる。プロセスが予め確保したキャッシュ領域において未使用状態であれば、その領域を優先的に確保することを前提に新規キャッシュ領域の確保を可能と判定する。一方、プロセスが予め確保したキャッシュ領域が使用状態であった場合、他プロセスの予約キャッシュ領域を除いて、さらに新規キャッシュとして確保できる共用キャッシュ領域が存在する場合に新規キャッシュ領域の確保を可能と判定し、それ以外の場合を新規キャッシュ領域の確保を不可能と判定する。これらも、入出力特定情報に含まれるプロセスごとやプロセスグループごとに実行することができる。【００８２】
この例では、プロセスごとやプロセスグループごとに最低限のキャッシュ領域を確保しているため、単一プロセスのキャッシュ独占などによる性能低下を避けることができる。更に、共有キャッシュ領域により拡充できるため、予め設定したキャッシュ領域による制限でなく、入出力の頻度により設定キャッシュ容量を超えて、性能を向上させることが可能になる。【００８３】
次に、本発明の出力制御システムの第３の実施例の動作（入出力制御方法、入出力制御プログラムの実施例）について、図９及び図１０を参照して説明する。ただし、図１０は、本発明の出力制御システムの第３の実施例の動作を示すフローチャートである。【００８４】
本実施例の動作は、第２の実施例におけるキャッシュ確保処理に関する動作、すなわち、図６のフローチャートのステップＳ１０２、及び、図７のフローチャートのステップＳ２０２の動作だけが異なる。従って、図１０のフローチャートを参照して、キャッシュ確保処理に関する動作について説明する。なお、キャッシュ確保処理以外の動作は、第２の実施例と同じであるのでその説明を省略する。【００８５】
キャッシュ管理部１４０がキャッシュ確保を要求された場合、キャッシュ確保制御部１４２は入出力特定情報記憶部１４１から入出力特定情報を取得し、キャッシュの使用状況を計算する（ステップＳ４０１）。
キャッシュ確保制御部１４２は、参照し、計算したキャッシュ使用状況を基に、新規キャッシュが確保できるかどうかを判定する（ステップＳ４０２）。
新規キャッシュ確保ができない場合（ステップＳ４０２：ＮＯ）、キャッシュ確保制御部１４２は、ライトバック部１２０へキャッシュ領域解放の契機を促す（ステップＳ４０３）。キャッシュ確保制御部１４２は、キャッシュ解放処理を待つ（ステップＳ４０４）。キャッシュ確保制御部１４２は、キャッシュ解放待機後、再び、キャッシュ使用状況を取得し、キャッシュ確保が可能かどうかの判定に移る（ステップＳ４０１、Ｓ４０２）。
新規キャッシュ確保ができる場合（ステップＳ４０２：ＹＥＳ）、対象キャッシュ領域に新規キャッシュ領域を確保する（ステップＳ４０５）。
以上の処理により、キャッシュ確保処理を実行する。【００８６】
次に、本実施例の効果について説明する。
本実施例では、キャッシュ確保処理に対して、キャッシュの使用状況を反映させることができる構成をとることで、第２の実施例の効果に加えて、前述した単一プロセスのキャッシュ占有による性能低下も防ぐことができる。【００８７】
（第４の実施例）
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第４の実施例について、添付図面を参照して説明する。【００８８】
図１１は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第４の実施例の概念を示す模式図である。図１１を参照すると、本発明における出力の場合、プロセス１、２、３のそれぞれに対応して設けられたＩ／Ｏ命令発行プロセス１７５０が、ライトバックプロセスの実行前に予め準備されている。そのため、ライトバックプロセス１７００は、プロセス１、２、３からの出力要求を入出力スケジューラ１４００へ発行するとき、それらＩ／Ｏ命令発行プロセス１７５０に出力要求を発行させる。それらＩ／Ｏ命令発行プロセス１７５０のプロセス識別子は、出力要求の大元の要求元であるプロセス識別子に対応しているので、実質的に出力要求の大元の要求元であるプロセスを特定することができる。従って、ライトバックプロセス１７００は、それらＩ／Ｏ命令発行プロセス１７５０を用いることで、出力を要求するプロセス（出力の要求元情報）がライトバック１７００ではなく大元のプロセス１、２、３であると入出力スケジューラ１４００に認識（特定）させることができる。それにより、入出力スケジューラ１４００は、プロセス識別子に応じた優先度等を用いた出力制御を実行することができる。この図では、出力制御として、出力処理を均等に割り振って行っている。
なお、上記技術は、入力の場合にも同様に適用できる。【００８９】
図１２は、本発明の入出力制御システムの第４の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部１５０と、ライトバック部１２０と、入出力特定プロセス選択部１６０と、プロセス生成部１７０と、入出力処理プロセス管理部１８０とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム（入出力制御方法）がインストールされて、本発明の入出力制御システムとして機能する。【００９０】
プロセス生成部１７０は、入出力処理プロセス生成部１７１を含む。キャッシュ管理部１５０は、従来のキャッシュ管理機構１３２０（図１）が有するキャッシュ管理機能に加え、入出力特定情報記憶部１５１を含む。
すなわち、本実施例は、第２の実施例と比較して、キャッシュ管理部１５０、入出力特定情報記憶部１５１、プロセス生成部１７０、入出力処理プロセス生成部１７１、及び、入出力処理プロセス管理部１８０が異なる。従って、それら各部について説明する。なお、その他の点は、第２の実施例と同じであるのでその説明を省略する。【００９１】
プロセス生成部１７０は、プロセス生成システムコールを、例えば、アプリケーションから受信したとき、プロセスの生成を制御する。プロセス生成部１７０は、その生成された既存のプロセス生成に加えて、入出力処理プロセス生成部１７１で入出力処理プロセスを対として生成する。入出力処理プロセスとは、既存のプロセスの入出力要求に対応して、ライトバック部１２０に代わって、外部記憶装置への入出力要求を発行するプロセスである。今後、既存のプロセスを処理プロセスと呼ぶことにする。【００９２】
ここで、入出力処理プロセスは、処理プロセス又は処理プロセスのグループごとに生成される。入出力処理プロセスは、図１１におけるＩ／Ｏ命令発行プロセス１７５０に対応する。処理プロセスは、図１１におけるプロセス１、２、３に対応する。ライトバック部１２０は、図１１におけるライトバックプロセス１７００に対応する。【００９３】
入出力処理プロセス生成部１７１は、プロセス生成部１７０による処理プロセスの生成に対応して、入出力処理プロセスを生成する。入出力処理プロセス生成部１７１は、入出力処理プロセスを生成したとき、入出力処理プロセス管理部１８０に入出力処理プロセスに関する情報を送信する。入出力処理プロセス管理部１８０は、送信された入出力処理プロセスに関する情報を管理する。入出力処理プロセスに関する情報は、入出力処理プロセスの識別子と対応する処理プロセスの識別子とを含む。管理方法としては、例えば、管理表にして記憶させることができる。管理表は、例えば、処理プロセスと、その処理プロセスの識別子又はその処理プロセスのプロセスグループの識別子と、入出力処理プロセスと、その入出力処理プロセスの識別子とを関連付けている。【００９４】
入出力処理プロセス管理部１８０は、入出力特定情報記憶部１５１を参照して入出力処理プロセスに関するキャッシュ使用状況を監視する。一方、処理の終了した処理プロセスが発生したとき、その情報をＯＳから受け取り、上記管理表の当該処理プロセスに関連付けて記憶する。そして、入出力処理プロセス管理部１８０は、管理表に記憶された入出力処理プロセスに関するキャッシュ使用状況と処理プロセスの終了状況とに基づいて、以下の動作を実行する。すなわち、対となる処理プロセスが終了し、入出力処理プロセスに関するキャッシュ使用が存在しない場合、もしくは、対となる処理プロセスが終了し、入出力処理プロセスに関する更新ありキャッシュ使用が存在しない場合、入出力処理プロセスを終了させる。
なお、処理の終了した処理プロセスの発生は、キャッシュ管理部１５０の有する対応表を参照して判断することも可能である。【００９５】
キャッシュ管理部１５０は、従来のキャッシュ管理機構１３２０（図１）が有するキャッシュ管理機能に加え、入出力特定情報記憶部１５１を含む。
入出力特定情報記憶部１５１は、入出力特定情報記憶部１１１と同様に、キャッシュ領域情報と入出力特定情報とを関連付けて記憶する。ここで、入出力特定情報として、処理プロセスの識別子の代わりに入出力処理プロセスの識別子を記憶することもできる。入出力処理プロセスの識別子を記憶させる場合、キャッシュ管理部１５０は、入出力処理プロセス管理部１８０へ処理プロセスの識別子に対する入出力処理プロセスの識別子を問い合わせる。【００９６】
入出力処理プロセス選択部１６０は、ライトバック部１２０からのデータ出力要求に対して適切な入出力プロセスを選択する。入出力処理プロセス選択部１６０は、ライトバック部１２０からデータ出力要求を受信したとき、入出力特定情報記憶部１５１を参照して、データ出力要求に含まれるキャッシュ領域の主要入出力特定情報を検出する。そして、その入出力特定情報に基づいて、入出力処理プロセス管理部１８０の管理表を参照して、その入出力特定情報に対応する入出力処理プロセスを動作させ、データ出力要求を入出力処理プロセスに発行させる。【００９７】
主要入出力特定情報の検出としては、例えば、出力キャッシュ領域に対して合計容量の割合の一番高い入出力特定情報を選択することができる。主要入出力特定情報検出の別の例として、出力キャッシュ領域に対して入出力優先度が一番高い、すなわち、一番優先する入出力特定情報を選択することができる。主要入出力特定情報検出の別の例として、出力キャッシュ領域に対して最後に更新したキャッシュ領域に対する入出力特定情報を選択することができる。このような入出力特定情報の検出により、優先度等を考慮した出力要求にすることができる。【００９８】
入出力処理プロセス選択部１６０は、入出力特定情報として入出力処理プロセスの識別子を記憶している場合、入出力特定情報記憶部１５１を参照するのではなく、記憶している入出力処理プロセスの識別子から主要入出力特定情報を検出する。【００９９】
入出力処理プロセス選択部１６０は、データ入力要求において、新規キャッシュ確保後、外部記憶装置からのデータ入力要求を発行するとき、同様に、データ入力要求に含まれるキャッシュ領域の入出力特定情報を入出力特定情報記憶部１５１から検出し、対応する入出力処理プロセスを動作させ、データ出力要求を入出力処理プロセスに発行させる。入出力特定情報として入出力処理プロセスの識別子を記憶している場合は、入出力特定情報記憶部１５１からの検出処理を省く。【０１００】
上記一連の機能は、通常の処理プロセスと入出力処理プロセスとを対にする代わりに、処理プロセスのプロセスグループに対して一つの入出力処理プロセスを作成し、対応付けて処理することも可能である。すなわち、入出力処理プロセス生成部１７１はプロセスグループを作成する入出力処理プロセスを作成し、それ以外では、処理プロセスのプロセスグループと入出力処理プロセスを対応付ける。【０１０１】
入出力処理プロセス管理部１８０は、プロセスグループと入出力処理プロセスの対応関係を監視すると同時に、プロセスグループに対して入出力処理プロセスの終了判定を行う。入出力特定情報記憶部１５１は、処理プロセスの識別子の代わりにプロセスグループの識別子として記憶することができる。【０１０２】
このように、入出力処理プロセス選択部１６０は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報（データ出力要求の大元の発生元）を、入出力特定情報記憶部１５１を参照して特定する入出力特定部１００と見ることができる。また、入出力スケジューリング部３００は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する入出力要求処理部１０１と見ることができる。【０１０３】
次に、本発明の出力制御システムの第４の実施例の動作（入出力制御方法、入出力制御プログラムの実施例）について、図１２〜図１６を参照して説明する。ただし、図１３乃至図１６は、本発明の出力制御システムの第４の実施例の動作を示すフローチャートである。【０１０４】
本実施例の動作は、第２の実施例における外部記憶装置への入出力要求をする部分、すなわち、図６のフローチャートで示す入力要求処理、及び、図８のフローチャートで示すライトバック処理が異なり、更に、入出力処理プロセス生成処理が加わっている点で異なる。なお、出力要求処理の動作は、第２の実施例と同じであるのでその説明を省略する。【０１０５】
図１３を参照して、処理プロセスからのデータの入力要求に対する動作について説明する。
データ入力要求が処理プロセスの入出力要求部２００から発行された場合、キャッシュ管理部１５０は、要求されたデータ領域が既に確保されているかどうかをチェックする（ステップＳ５０１）。
ステップＳ５０１にて、キャッシュ上にデータ領域が未だ確保されていない場合（ステップＳ５０１：ＮＯ）、キャッシュ管理部１５０は、空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域としてキャッシュ管理情報（例示：対応表（マッピングテーブル））に登録する（ステップＳ５０２）。
ステップＳ５０１にて、キャッシュ上にデータ領域が既に確保されている場合（ステップＳ５０１：ＹＥＳ）、キャッシュ管理部１５０は当該キャッシュ上に既にデータが存在するかどうかをチェックする（ステップＳ５０３）。
ステップＳ５０３にて、データ領域に対応するキャッシュ上のデータが存在しない場合（ステップＳ５０３：ＮＯ）、又は、ステップＳ５０２で新規キャッシュ領域を確保した場合、そのキャッシュ領域にデータを転送するために、キャッシュ管理部１５０は、外部出力装置に対するデータ入力要求を作成し、入出力処理プロセス選択部１６０へ発行する（ステップＳ５０４）。
入出力処理プロセス選択部１６０は、外部出力装置に対するデータ入力要求を受信した場合、処理プロセスの識別子に基づいて、入出力処理プロセス管理部１８０へ、対応する入出力処理プロセスの識別子を問い合わせる（ステップＳ５０５）。
入出力処理プロセス管理部１８０は、管理表を参照して、処理プロセスの識別子に対応する入出力処理プロセスの識別子を入出力処理プロセス選択部１６０へ回答する。入出力処理プロセス選択部１６０は、入出力処理プロセス管理部１８０から回答された入出力処理プロセスの識別子の入出力処理プロセスへ、外部出力装置に対するデータ入力要求を発行する（ステップＳ５０６）。
入出力処理プロセスは、受信した外部出力装置に対するデータ入力要求を、自身からの入力要求として発行する。それにより、入出力要求スケジューリング部３００は、入出力処理プロセスによる入力要求として入力処理を実行する。そのとき、入出力処理プロセスが所定の処理プロセスに対応しているので、入出力要求スケジューリング部３００は、その所定の処理プロセスに対応した優先度等に基づく入力制御を実行することができる。その後、入出力要求スケジューリング部３００を経て、外部出力からデータの伝送が終了する応答が到着するまで、待機状態に入る（ステップＳ５０７）。
ステップＳ５０３にて、データ領域に対応するキャッシュ上にデータが存在した場合（ステップＳ５０３：ＹＥＳ）、もしくは、ステップＳ５０７にて、キャッシュ上へのデータの転送が完了した場合、キャッシュ管理部１５０は、該当キャッシュからプロセス空間へデータを転送する（ステップＳ５０８）。
キャッシュ管理部１５０は、キャッシュ領域と入出力特定情報を、入出力特定情報記憶部１５１を介して記憶する。入出力特定情報として入出力処理プロセスの識別子を記憶する場合は、Ｓ５０５のステップと同じ処理を行い、入出力処理プロセスの識別子に変換する（ステップＳ５０９）。
以上で、データの入力処理が完了する。【０１０６】
次に、図１４を参照して、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理の動作について説明する。
ライトバック処理要求のタイミングを契機に、ライトバック部１２０は起動する（フローチャート開始）。
ライトバック部１２０は、キャッシュ管理部１５０の管理情報を参照して、前述の種々のポリシーを基に、キャッシュ上から更新すべきデータ領域を回収する（ステップＳ６０１）。ライトバック部１２０は、回収したキャッシュ領域に対するデータ出力要求を作成し、入出力処理プロセス選択部１６０へ発行する（ステップＳ６０２）。
入出力処理プロセス選択部１６０は、受信したデータ出力要求に対して、入出力特定情報記憶部１５１の情報を参照し、データ出力要求に対する主要処理プロセスを特定する。そして、処理プロセスの識別子に基づいて、入出力処理プロセス管理部１８０へ、対応する入出力処理プロセスの識別子を問い合わせる。入出力処理プロセス管理部１８０は、管理表を参照して、処理プロセスの識別子に対応する入出力処理プロセスの識別子を入出力処理プロセス選択部１６０へ回答する。一方、入出力特定情報として入出力処理プロセスの識別子が記憶されている場合、入出力特定情報記憶部１５１の情報を参照し、主要な入出力処理プロセスを決定する（ステップＳ６０３）。
入出力処理プロセス選択部１６０は、回答、または、決定された入出力処理プロセスの識別子の入出力処理プロセスへ外部出力装置に対するデータ出力要求を発行する（ステップＳ６０４）。
入出力処理プロセスは、受信した外部出力装置に対するデータ入力要求を、自身からの出力要求として発行する（ステップＳ６０５）。それにより、入出力要求スケジューリング部３００は、入出力処理プロセスによる出力要求として出力処理を実行する。そのとき、入出力処理プロセスが所定の処理プロセスに対応しているので、入出力要求スケジューリング部３００は、その所定の処理プロセスに対応した優先度等に基づく出力制御を実行することができる。
ライトバック部１２０、および、入出力処理プロセス選択部１６０は、ステップＳ６０１乃至Ｓ６０５までを行い、最初に決定された容量分のキャッシュからのデータ出力要求が行われていない場合（ステップＳ６０６：ＮＯ）、再度、探索範囲を変える、各種パラメータを変更する等をして、外部出力装置へのデータ反映条件を変更してステップＳ３０１乃至Ｓ３０５を繰り返す。
ステップＳ６０６において、決定された容量のキャッシュからのデータ出力要求が行われた場合、更新データがキャッシュ上にない場合、又は、一定回数のキャッシュ領域の探索が終了した場合（ステップＳ６０６：ＹＥＳ）、繰り返しを終了する。
最後に、ライトバック部１２０は、データ出力に対する外部記憶装置の応答を待ち、更新フラグをクリアする（ステップＳ６０７）。
以上により、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理が完了する。【０１０７】
次に、図１５を参照して、プロセス生成の動作について説明する。
プロセス生成部１７０は、プロセス生成システムコールを、例えば、アプリケーションから受信したとき、既存のプロセス生成処理、すなわち、処理プロセスの生成を行う。（ステップＳ７０１）
プロセス生成部１７０は、入出力処理プロセス生成部１７１を呼び出し、入出力処理プロセス生成に入る。入出力処理プロセス生成部１７１は、生成された処理プロセスに対して、対となる入出力処理プロセスが生成されていないかチェックする（ステップＳ７０２）。これは、プロセスグループごとに入出力処理プロセスが生成される場合に起こりうる。一つの入出力処理プロセスは、複数の処理プロセスに対して生成されるからである。処理プロセスに対して、必ず対となる入出力処理プロセスが生成される場合、ステップＳ７０２を省略しても良い。
対となる入出力処理プロセスが生成されていない場合（ステップＳ７０２：ＮＯ）、入出力処理プロセス生成部１７１は入出力処理プロセスを生成する。（ステップＳ７０３）
入出力処理プロセス生成部１７１は、処理プロセスと対となる入出力処理プロセスの識別情報を入出力処理プロセス管理部１８０へ発行し、入出力処理プロセス管理部１８０は、処理プロセスと、対となる入出力処理プロセスの識別情報との対応関係を記録する（ステップＳ７０４）。
以上により、プロセス生成処理が完了する。【０１０８】
次に、図１６を参照して、入出力処理プロセスの終了判定、および、終了の動作について説明する。
入出力処理プロセス終了の判定は、何らかのイベントが発生じたときに動作する。発生イベントの例としては、時間間隔、入出力特定情報の変更、キャッシュ情報の変更、処理プロセスの終了等が挙げられる。イベント発生を契機に、入出力処理プロセス管理部１８０は、入出力処理プロセスに対して、対となる処理プロセスが１つでも存在するかどうかを管理表によりチェックする（ステップＳ８０１）。
対となる処理プロセスが１つも存在しない場合、入出力処理プロセス管理部１８０は、入出力処理プロセスに対して、関係があるキャッシュ領域が存在するかどうかを対応表によりチェックする（ステップＳ８０２）。関係があるキャッシュ領域とは、例えば、入出力処理プロセスの対となる処理プロセスが入出力要求を行ったキャッシュ領域のことである。関係があるキャッシュ領域の別の例としては、入出力処理プロセスの対となる処理プロセスが入出力要求を行ったキャッシュ領域で、更新データを保存している領域のことである。
対となる処理プロセスが１つも存在しなく、関係があるキャッシュ領域が存在しない場合は、入出力処理プロセスを終了する（ステップＳ８０３）。
ステップＳ８０１、および、ステップＳ８０２において、対となる処理プロセスが１つも存在した場合、または、関係があるキャッシュ領域が存在した場合は、何も処理しない。
以上により、入出力処理プロセスの終了判定、および、終了処理が完了する。【０１０９】
次に、本実施例の効果について説明する。
本実施例では、処理プロセスに対応した入出力処理用のプロセスを明示的に生成させ、必ず入出力処理用のプロセスにより命令を発行させることで、入出力スケジューリング部３００へプロセスに対する一定の入出力特定情報を伝播することができる。これにより、キャッシュを用いた入出力においても設定された入出力スケジューリングの機能を提供でき、性能低下、応答性低下を回避することができる。
更に、追加の効果として、入出力処理に対してプロセス情報等の変更を行わないため、一貫したプロセス情報管理下での動作を保証することができる。例えば、プロセスの識別子を変更する必要もなく、入出力スケジューリング部の情報取得ＡＰＩに対する変更を必要としないため、一貫したプロセスの識別子の管理と、その下での無修正の入出力スケジューリング部で実現することが可能になる。【０１１０】
上記第４の実施例においても、第２の実施例から第３の実施例に拡張したように、第２の実施例を適用することが可能である。すなわち、第３の実施例にキャッシュ確保部１４２を導入し、キャッシュ領域の確保の可否を決定付けることができる。【０１１１】
上記第２の実施例から第４の実施例では、入出力要求処理部１０１として、入出力スケジューリング部３００を例に挙げて説明している。しかし、入出力要求処理部１０１として、入出力の監視、制御を行う入出力要求管理部を用いることも可能である。【０１１２】
入出力要求管理部が入出力の監視を行う場合の例としては、モニタの機能を果たす入出力モニタ部として動作することができる。例えば、プロセス、プロセスグループ、入出優先度、又は、外部記憶装置ごとの入出力回数や入出力データ量、スループットを監視し、統計データとして計測することができる。この場合にも、本発明の入出力特定情報記憶部１１１、１５１と入出力特定情報復元部１３０、又は、入出力処理プロセス選択部１６０の機能により、正しく大元のプロセス、もしくは、対応する入出力プロセスを特定することが可能であり、プロセスごとの入出力を識別することが可能となるためである。【０１１３】
入出力要求管理部が入出力の制御を行う場合の例としては、入出力要求の処理の可否を決定する入出力アクセスコントロール部として動作することができる。例えば、プロセス、プロセスグループと外部記憶装置との関係から、正常動作か異常動作かの判定に基づき、アクセスの可否を決定することができる。この場合にも、本発明の入出力特定情報記憶部１１１、１５１と入出力特定情報復元部１３０、又は、入出力処理プロセス選択部１６０の機能により、正しく大元のプロセス、もしくは、対応する入出力プロセスを特定することが可能であり、プロセスごとの入出力を識別することが可能となるためである。【０１１４】
（具体例１）
次に、本発明の第１具体例について説明する。図１７は、本発明の入出力制御システムとしての計算機システム装置の具体例を示すブロック図である。入出力制御システムとしての計算機システム装置は、入主記憶装置１、主記憶制御装置２、演算装置３、入出力制御部４、外部記憶装置５及びバス６を具備する。【０１１５】
第２の実施例におけるキャッシュ管理部１１０、ライトバック部１２０、出力特定情報復元部１３０、第３の実施例におけるキャッシュ管理部１４０、ライトバック部１２０、入出力特定情報復元部１３０、第４の実施例におけるキャッシュ管理部１５０、ライトバック部１２０、入出力処理プロセス選択部１６０、プロセス生成部１７０、入出力処理プロセス管理部１８０は、入出力情報特定プログラム１２として、例えば外部記憶装置５に記憶されている。そして、その入出力情報特定プログラム１２は、動作時に、外部記憶装置５から読み出されて主記憶装置１上に展開され、演算装置３により実行される。
計算機システム装置を動作させる基盤プログラムであるオペレーティングシステム（ＯＳ）１１といくつかのプロセス（ＡＰ）１３とは、例えば外部記憶装置５に記憶されている。そして、それらＯＳ１１やＡＰ１３は、動作時に、外部記憶装置５から読み出されて主記憶装置１上に展開され、演算装置３により実行される。なお、入出力要求部２００はＡＰ１３が有している。
キャッシュ１４は、主記憶装置１の未使用領域に、キャッシュ領域として確保され、利用される。【０１１６】
入出力情報特定プロセス１２は、図６乃至図８、図１０、又は、図１３乃至図１６のフローチャートの動作により、キャッシュ１４を用いた入出力において、入出力情報を管理、監視し、入出力スケジューリング部３００へと入出力特定情報を伝達する。
なお、図においては、ＯＳ１１と入出力情報特定プログラム１２とを分けているが、入出力情報特定プログラム１２はＯＳ１１内部に取り込まれ、ＯＳ１１と一体に動作するものであっても良い。【０１１７】
第１乃至第４の実施例において、入出力スケジューリング部３００は、例えば、ＯＳ１１の一機能と実施することができる。入手力スケジューリング部３００は、外部記憶装置へのデータの入出力要求に対して、入出力特定情報を基に要求順序の入れ替え、統合、分割を行い、スループットと応答性と向上させるように動作する。入れ替えられた順序に基づき、入出力制御装置４を通して発行され、外部記憶装置５へ入出力が行われる。【０１１８】
また別の例として、入出力スケジューリング部３００は、入出力制御装置４の機能として実施することができる。入出力制御装置４において、入出力特定情報を基に最終的な要求順序の入れ替え、統合、分割を行い、スループットと応答性と向上させるように動作する。【０１１９】
次に、従来の入出力要求の受理と本発明の具体例における入出力要求の受理の違いの例を、図面を参考にして説明する。図１８は、本発明におけるキャッシュを用いた入出力を説明する概念図である。
図１８に示される例では、データの入出力要求の表現は、図１の場合と同様に“ｘ−ｙ”、“ＲＢ（ｘ−ｙ）”の表現を用いる。また、入出力スケジューラ１４００、１５００はＯＳ１１の機能として実現され、プロセスあたり１要求ごとに均等に処理をする。更に、キャッシュ１３００、外部記憶装置１７００は、それぞれキャッシュ１４、外部記憶装置５に対応する。【０１２０】
更に、ライトバックの方法としてはアクセスが古いものほど最初に処理する方法をとる。また、各プロセスの入出力は、説明を簡単にするために、書込みのみとし、プロセスが切り替わるたびにキャッシュへの書き込みは２要求分を要求することとする。【０１２１】
キャッシュ１３００には、プロセス１から開始され、２要求分（“１−１”、“１−２”）が書き込まれる。続いて、プロセス２へと切り替わり、２要求分（“２−１”、“２−２”）が書き込まれる。これが繰り返されて、図１５キャッシュ１３００のようにキャッシュ領域が利用される。【０１２２】
これに対して、ライトバック部１２０は、ライトバックプロセス（ＲＢ）１６００として動作し、古い順番、すなわち、キャッシュの左端（“１−１”）からライトバックする。すなわち、キャッシュ領域“１−１”の外部記憶装置１７００へのデータ出力要求を生成し、入出力スケジューラ部３００へと発行する。【０１２３】
ここで、従来の入出力要求の発行方法では、入出力スケジューラ１４００ではすべてライトバックプロセスからのデータ出力要求、すなわち、同一プロセスからのデータ出力要求と判定される。すなわち、同一プロセスからのデータの出力要求のため、スケジューリングによる入れ替えは発生せず、入出力スケジューラ内の処理順番は図１８に示される入出力スケジューラ１４００の内部の入出力要求１４１０の列のように、プロセスあたり２要求分ずつ処理することになる。これでは、本来の入出力スケジューラのポリシーのとおりに、プロセスあたり１要求ごとに均等に処理をすることが満たされない。【０１２４】
本発明を適用すると、入出力特定情報としてプロセスを識別する情報を伝達するため、“ＲＢ（ｘ−ｙ）”として発行されていたデータ出力要求は、元のプロセスｘからのデータ出力要求であると伝達する。そのため、各プロセスに均等に処理するように入出力スケジューラにより順序変更がなされ、図１８の入出力スケジューラ１５００の内部の入出力要求１５１０の列のように、プロセスあたり１要求分ずつ処理することができる。これにより、本来の入出力スケジューラのポリシーのとおりに動作することができる。【０１２５】
第４の実施例では、入出力要求の情報が元のプロセス識別子に変更されるわけでなく、対になる入出力処理プロセスからの要求になるだけである。例えば、プロセス１に対して入出力処理プロセス３、プロセス２に対して入出力処理プロセス４を生成した場合、プロセスｘのｙ番目に対応するデータ要求を入出力処理プロセスｚが発行したときを“ｚ（ｘ−ｙ）”と表現すると、入出力スケジューラ１５００の処理順番は“３（１−１）、４（２−１）、３（１−２）、４（２−２）、…”となる。【０１２６】
キャッシュ容量において、領域制限しても同様のことがいえる。
キャッシュ領域を制限したとしても、データ出力要求はライトバックプロセスから出力され、入出力スケジューラの段階では一元化され順番に処理されることに変わりはなく、ライトバックプロセスの動作やスケジューリングに大きく影響する。すなわち、制限したキャッシュ領域に対して初期の書込みはキャッシュとして未使用状態であるため、キャッシュ確保問題における性能低下を防ぐことにつながる。しかし、キャッシュ領域を使用しつくした状態からは、すべて外部記憶装置への入出力を伴うことになる。ライトバックプロセスによりデータ出力要求は一元化されて動作することにより、入出力スケジューラが既に保持している他プロセスに対する出力要求を処理しなければ、新たな出力要求に応答することはできない。そのため、キャッシュのときと同様の性能低下、応答性低下を招くことになる。これに対して、本発明を適用すると、従来技術のキャッシュ制限によるキャッシュ領域確保時の他のプロセスからの影響を避けると同時に、入出力スケジューラにおける他のプロセスからの影響を防ぐことができる。【０１２７】
（具体例２）
本発明は、２種類の速度の異なる記憶装置が存在する場合に、高速な記憶装置をキャッシュとして利用し、低速な記憶装置に対する入出力を高速化する計算機システムにおいても実現できる。例えば、高速な記憶装置としてＵＳＢメモリやフラッシュメモリなどを利用し、それらをＨＤＤやＤＶＤ装置の低速な記憶装置のためのキャッシュとして利用することがあげられる。この場合、第１具体例において、主記憶装置上に確保されていたキャッシュ領域が、高速な記憶装置上に確保されていることに相当する。【０１２８】
図１９を参照して、第２具体例を説明する。図１９は、本発明の入出力制御システムとしての計算機システム装置の第２具体例を示すブロック図である。入出力制御システムとしての計算機システム装置は、主記憶装置１、主記憶制御装置２、演算装置３、低速な外部記憶装置５、低速な外部記憶装置５のための入出力制御装置４、高速な外部記憶装置９、高速な外部記憶装置９のための入出力制御装置８、及び、バス６を具備する。【０１２９】
第２の実施例におけるキャッシュ管理部１１０、ライトバック部１２０、入出力特定情報復元部１３０、第３の実施例におけるキャッシュ管理部１４０、ライトバック部１２０、入出力特定情報復元部１３０、第４の実施例におけるキャッシュ管理部１５０ライトバック部１２０、入出力処理プロセス選択部１６０、プロセス生成部１７０、入出力処理プロセス管理部１８０は、入出力情報特定プログラム１２として、主記憶装置１上に展開され、演算装置３により実行される。なお、入出力要求部２００はＡＰ１３が有している。
キャッシュ１４は、高速な外部記憶装置９に、キャッシュ領域として確保され、利用される。【０１３０】
入出力情報特定プロセス１２は、プロセス（ＡＰ）１３が低速な外部記憶装置５への入出力を要求するとき、図６乃至図８、図１０、又は、図１３乃至図１６のフローチャートの動作により、キャッシュ１４を用いた入出力において、入出力情報を管理、監視し、入出力スケジューリング部３００へと入出力情報を伝達する。【０１３１】
また、図１９において、主記憶装置１と高速な外部記憶装置９の間で、キャッシュを用いた入出力の高速化を実施することができる。すなわち、多段のキャッシュ機構を構築できる。このような場合であっても、第１具体例と同様なことを主記憶装置１と高速な外部記憶装置９の間で実施し、かつ、高速な外部記憶装置９と低速な外部記憶装置５の間で第２具体例を実現することで、入出力特定情報を伝達し、各入出力を制御する様々な入出力スケジューリング部３００にて入出力を制御することが可能になる。【０１３２】
同様に、速度の異なる複数の記憶装置が存在し、より高速な記憶装置をより低速な記憶装置の入出力を高速化するためのキャッシュとして利用する計算機システムにおいて、それぞれのキャッシュ管理機構に本発明を適用することができる。【０１３３】
また、本発明の第１乃至第３の実施例は、図１７の入出力制御装置４の内部で実現することができる。例えば、ＩＤＥ制御チップや、ＳＣＳＩカード、ＲＡＩＤカードなどで実現できる。例えば、図２０に示すように、図１７の入出力制御装置４に相当する入出力制御装置２０は、キャッシュメモリ２１と、入出力要求制御回路２２と、入出力特定情報伝達回路２３と、計算機システムのバスと接続するインタフェース２４と外部記憶装置と接続するインタフェース２５を備える。【０１３４】
キャッシュメモリ２１は、高速な入出力が可能な記憶装置である。例えば、ＮＡＮＤフラッシュメモリなどで実現される。入出力の一時貯蓄場所となる。入出力要求制御回路２２は、計算機システムのバスからインタフェース２４を介して伝達される入出力要求を、対応する外部記憶装置へインタフェース２５を介して発行する。このとき、キャッシュメモリ２１をキャッシュ領域として使用し、入出力の高速化を図る。ＲＡＩＤカードなどでは、１つの入出力要求を同時に対応する複数の外部記憶装置へ発行し、外部記憶装置との入出力を並列化することで高速化することができる。このときも、キャッシュメモリ２１を一時記憶場所として利用する。【０１３５】
入出力要求制御回路２２に、本発明の第２の実施例におけるキャッシュ管理部１１０、ライトバック部１２０、入出力特定情報復元部１３０、第３の実施例におけるキャッシュ管理部１４０、ライトバック部１２０、入出力特定情報復元部１３０を実現する入出力特定情報伝達回路を組み込ことで、入出力要求制御回路２２は図６乃至図８、又は、図１０のフローチャートの動作により入出力スケジューリング部３００へ入出力特定情報を伝達する。【０１３６】
回路の実現方法としては、例えば、ＲＡＭを用いて入出力特定情報を記憶する入出力記憶回路と、本発明のフローチャートの動作を実現する入出力情報伝達回路とを、電気素子を用いて実現できる。これらをシステムＬＳＩとして一つのチップ内に組み込んで実現することもできる。
また、別の回路の実現方法として、プログラミング可能なＬＳＩを用いて、本発明のフローチャートの動作するプログラムと入出力特定情報を記憶する記憶スペースをプログラミングすることで実現することができる。例えば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などが挙げられる。
入出力スケジューリング部３００は、例えば、入出力要求制御回路に組み込まれており、インタフェース２４を介して計算機システムから要求された外部記憶装置への入出力を、入出力特定情報を基に要求順序を入れ替えたりすることができる。
また、別の例として、外部記憶装置５の機能として実施することができる。【０１３７】
同様に、キャッシュメモリを保有し、キャッシュを利用した入出力の高速化を実現している外部記憶装置においても、外部記憶装置内部のキャッシュ管理回路に本発明を実施ことができる。
同様に、記憶媒体を一時記憶場所として利用する全ての入出力装置において、管理部に本発明を実施することができる。【０１３８】
本発明によれば、パーソナルコンピュータ（ＰＣ）や端末機器で多くのプロセスを起動したときの入出力の制御装置のような用途に適用できる。また、仮想計算機技術を用いる仮想化ソリューションやシンクライアントソリューションにおいて、それぞれの仮想計算機やクライアントの入出力の制御装置のような用途に適用できる。また、ＲＡＩＤなどの複数の外部記憶装置を制御するための入出力制御装置のような用途に適用できる。
本発明におけるプログラムは、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。【０１３９】
本発明により、キャッシュによる入出力機構において、入出力スケジューラがスケジューリングを適切に実行可能となる。【０１４０】
本発明は上記各実施例に限定されず、本発明の技術思想の範囲内において、各実施例は適宜変形又は変更され得ることは明らかである。【０１４１】
この出願は、２００７年６月５日に出願された特許出願番号２００７−１４９４８９号の日本特許出願に基づいており、その出願による優先権の利益を主張し、その出願の開示は、引用することにより、そっくりそのままここに組み込まれている。
【図１】
2008149657.tif 000003
【図２Ａ】
2008149657.tif 000004
【図２Ｂ】
2008149657.tif 000005
【図３】
2008149657.tif 000006
【図４】
2008149657.tif 000007
【図５】
2008149657.tif 000008
【図６】
2008149657.tif 000009
【図７】
2008149657.tif 000010
【図８】
2008149657.tif 000011
【図９】
2008149657.tif 000012
【図１０】
2008149657.tif 000013
【図１１】
2008149657.tif 000014
【図１２】
2008149657.tif 000015
【図１３】
2008149657.tif 000016
【図１４】
2008149657.tif 000017
【図１５】
2008149657.tif 000018
【図１６】
2008149657.tif 000019
【図１７】
2008149657.tif 000020
【図１８】
2008149657.tif 000021
【図１９】
2008149657.tif 000022
【図２０】
2008149657.tif 000023
【手続補正書】
【提出日】平成21年4月3日(2009.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１記憶部及び第２記憶部を具備し、前記第１記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御システムであって、
前記第２記憶部に入出力するデータを第前記キャッシュ領域へ記憶するキャッシュ管理部と、
前記キャッシュ領域に記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて記憶する入出力特定情報記憶部と、
前記キャッシュ領域前記データ領域から前記第２記憶部への前記データの出力要求を生成するライトバック部と、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定記憶部を参照して、特定し、前記ライトバック部の動作により欠落する入出力に関する情報を前記第２記憶部の入出力処理部へ伝達する入出力特定部とを備える
入出力制御システム。
【請求項２】
請求の範囲１に記載の入出力制御システムにおいて、
前記入出力特定部が、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記ライトバック部の動作により欠落する入出力に関する情報を復元する入出力特定情報復元部であり、
前記入出力に関する情報を復元することで伝達する
入出力制御システム。
【請求項３】
請求の範囲２に記載の入出力制御システムにおいて、
復元方法が、関連処理部の情報取得時に前記出力要求に入出力に関する情報を一時的に変更する、または、変換処理を加えることで実現する
入出力制御システム。
【請求項４】
請求の範囲２又は３記載の入出力制御システムにおいて、
前記出力要求を、前記復元された入出力に関する情報を参照して、管理する入出力要求管理部を更に備え、
前記入出力特定部は、前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定する
入出力制御システム。
【請求項５】
請求の範囲４に記載の入出力制御システムにおいて、
前記入出力要求管理部が、入出力をスケジューリングする入出力スケジューリング部、入出力の監視、及び統計をとる入出力モニタ部、入出力のアクセスを制御する入出力アクセスコントロール部のいずれか一つの機能を少なくとも含む
入出力制御システム。
【請求項６】
請求の範囲２乃至５のいずれか一項に記載の入出力制御システムにおいて、
前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第２記憶部へ出力するデータ領域を決定する
入出力制御システム。
【請求項７】
請求の範囲２乃至６のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度のいずれか一つを少なくとも含む
入出力制御システム。
【請求項８】
請求の範囲７記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第２記憶部のいずれか一つを少なくとも含む
入出力制御システム。
【請求項９】
請求の範囲１に記載の入出力制御システムにおいて、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成する入出力処理プロセス生成部と、
前記プロセスと前記入出力処理プロセスとを関連付けて管理する入出力処理プロセス管理部とを更に備え、
前記入出力特定部が、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力処理プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部であり、
選択された前記入出力処理プロセスが、前記出力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
入出力制御システム。
【請求項１０】
請求の範囲９に記載の入出力制御システムにおいて、
前記入出力特定部が、
前記プロセスによる入力要求の応答に関しても、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部であり、
選択された前記入出力処理プロセスが、前記入力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
入出力制御システム。
【請求項１１】
請求の範囲９又は１０に記載の入出力制御システムにおいて、
前記入出力要求を、前記選択された入出力処理プロセスの処理として管理する入出力要求管理部を更に備え、
前記入出力要求管理部は、前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理することが可能である
入出力制御システム。
【請求項１２】
請求の範囲９乃至１１のいずれか一項に記載の入出力制御システムにおいて、
前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第２記憶部へ出力する記憶領域を決定する
入出力制御システム。
【請求項１３】
請求の範囲９乃至１２のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度のいずれか一つを少なくとも含む
入出力制御システム。
【請求項１４】
請求の範囲１３に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第２記憶部のいずれか一つを少なくとも含む
入出力制御システム。
【請求項１５】
請求の範囲９乃至１２のいずれか一項に記載の入出力制御システムにおいて、
前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
入出力制御システム。
【請求項１６】
請求の範囲１５記載の入出力制御システムにおいて、
前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
入出力制御システム。
【請求項１７】
請求の範囲２乃至１６に記載の入出力制御システムにおいて、
前記キャッシュ管理部は、前記キャッシュ領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定する
入出力制御システム。
【請求項１８】
第１記憶部及び第２記憶部を具備し、前記第１記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御方法であって、
前記第２記憶部に入出力するデータを、前記キャッシュ領域へ記憶するステップと、
前記キャッシュ領域へ記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
前記キャッシュ領域のデータ領域から前記第２記憶部への前記データの出力要求を生成するステップと、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定し、前記出力要求を生成するステップにより欠落する入出力に関する情報を前記第２記憶部の入出力処理ステップへ伝達するステップとを備える
入出力制御方法。
【請求項１９】
請求の範囲１８に記載の入出力制御方法において、
前記出力要求を生成するステップにより欠落する入出力に関する情報を第２記憶部の入出力処理ステップへ伝達するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記出力要求を生成するステップにより欠落する入出力に関する情報を復元するステップであり、
前記入出力に関する情報を復元することで伝達する
入出力制御方法。
【請求項２０】
請求の範囲１９に記載の入出力制御システムにおいて、
復元方法が、関連処理部の情報取得時に前記出力要求に入出力に関する情報を一時的に変更する、または、変換処理を加えることで実現する
入出力制御方法。
【請求項２１】
請求の範囲１８乃至２０記載の入出力制御方法において、
前記出力要求を、前記復元された入出力に関する情報を参照して、管理するステップを更に備え、
前記特定するステップは、
前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定するステップを更に有する
入出力制御方法。
【請求項２２】
請求の範囲１８乃至２１に記載の入出力制御方法において、
前記管理するステップは、
入出力をスケジューリングする、入出力の監視及び統計をとる、入出力のアクセスを制御する、のいずれか一つを少なくとも実行するステップを有する
入出力制御方法。
【請求項２３】
請求の範囲１８乃至２２のいずれか一項に記載の入出力制御方法において、
前記生成ステップは、
前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第２記憶部へ出力するデータ領域を決定するステップを有する
入出力制御方法。
【請求項２４】
請求の範囲１８乃至２３のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の優先度のいずれか一つを少なくとも含む
入出力制御方法。
【請求項２５】
請求の範囲２４記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第２記憶部のいずれか一つを少なくとも含む
入出力制御方法。
【請求項２６】
請求の範囲１８に記載の入出力制御方法において、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
前記出力要求を生成するステップにより欠落する入出力に関する情報を第２記憶部の入出力処理ステップへ伝達するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、かつ、選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有し、
選択された前記入出力処理プロセスが、前記出力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
入出力制御方法。
【請求項２７】
請求の範囲２６に記載の入出力制御方法において、
前記入出力処理プロセスを選択するステップが、
前記プロセスによる入力要求の応答に関しても、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、
選択された前記入出力処理プロセスが、前記入出力要求を発行するステップとを更に備える
入出力制御方法。
【請求項２８】
請求の範囲２６又は２７記載の入出力制御方法において、
前記入出力要求を、前記選択された入出力処理プロセスの処理として管理するステップを更に備え、
前記入出力要求を管理するステップは、
前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理するステップを有する
入出力制御方法。
【請求項２９】
請求の範囲２６乃至２８のいずれか一項に記載の入出力制御方法において、
前記生成するステップは、
前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第２記憶部へ出力する記憶領域を決定するステップを有する
入出力制御方法。
【請求項３０】
請求の範囲２６乃至２９のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力の発行元を特定する情報のいずれか一つを少なくとも含む
入出力制御方法。
【請求項３１】
請求の範囲３０に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第２記憶部のいずれか一つを少なくとも含む
入出力制御方法。
【請求項３２】
請求の範囲２６乃至２９のいずれか一項に記載の入出力制御方法において、
前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
入出力制御方法。
【請求項３３】
請求の範囲３２記載の入出力制御方法において、
前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
入出力制御方法。
【請求項３４】
請求の範囲１８又は３３に記載の入出力制御方法において、
前記データを前記キャッシュ領域へ記憶するステップは、
前記キャッシュ領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定するステップを有する
入出力制御方法。
【請求項３５】
第１記憶部及び第２記憶部を具備し、前記第１記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御方法をコンピュータに実行させるプログラムであって、
前記第２記憶部に入出力するデータを、第１記憶部前記キャッシュ領域へ記憶するステップと、
前記キャッシュ領域へ記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
前記キャッシュ領域のデータ領域から前記第２記憶部への前記データの出力要求を生成するステップと、
前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定し、前記出力要求を生成するステップにより欠落する入出力に関する情報を前記第２記憶部の入出力処理ステップへ伝達するステップと
を備える入出力制御方法をコンピュータに実行させるプログラム。
【請求項３６】
請求の範囲３５に記載のプログラムにおいて、
前記出力要求を生成するステップにより欠落する入出力に関する情報を第２記憶部の入出力処理ステップへ伝達するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記出力要求を生成するステップにより欠落する入出力に関する情報を復元するステップをである
プログラム。
【請求項３７】
請求の範囲３５に記載のプログラムにおいて、
プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
前記出力要求を生成するステップにより欠落する入出力に関する情報を第２記憶部の入出力処理ステップへ伝達するステップは、
前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記出力要求を生成するステップにより欠落する入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、かつ、選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有する
プログラム。
【国際調査報告】
2008149657.tif 000024
2008149657.tif 000025