(57)【要約】【課題】  本発明は、複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置において、記憶装置それぞれに適したＩ／Ｏスケジューラの設定を行うことを目的とする。【解決手段】  複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置であって、前記複数の記憶装置の内、データの入出力要求を行う対象の記憶装置の情報を取得する取得手段と、前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定する設定手段と、を有することを特徴とする。【選択図】  図２
2015130096.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置であって、
前記複数の記憶装置の内、データの入出力要求を行う対象の記憶装置の情報を取得する取得手段と、
前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定する設定手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記複数の記憶装置それぞれの情報とＩ／Ｏスケジューラとの対応情報を保持する保持手段と、
前記設定手段は、前記対応情報に基づき、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の記憶装置それぞれの情報は、前記複数の記憶装置それぞれの種類を示す情報であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記複数の記憶装置それぞれの情報は、前記複数の記憶装置それぞれの性能を示す情報であることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記設定手段は、前記情報処理装置が起動した場合、前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記設定手段は、前記複数の記憶装置の内の少なくとも一つが前記情報処理装置に接続された場合、前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記取得手段は、前記データの入出力要求を行う対象の記憶装置の情報として、当該記憶装置の種類を取得し、
前記設定手段は、前記取得手段で取得された記憶装置の種類に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記取得手段は、前記データの入出力要求を行う対象の記憶装置の情報として、当該記憶装置の性能を取得し、
前記設定手段は、前記取得手段で取得された記憶装置の性能に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理方法であって、
取得手段が、前記複数の記憶装置の内、データの入出力要求を行う対象の記憶装置の情報を取得する取得工程と、
設定手段が、前記取得工程で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定する設定工程と、を有することを特徴とする情報処理方法。
【請求項１０】
コンピュータを、
複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置であって、
前記複数の記憶装置の内、データの入出力要求を行う対象の記憶装置の情報を取得する取得手段と、
前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定する設定手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
パーソナルコンピュータに代表される情報処理装置においては、様々な種類のコンピュータプログラムが用いられるようになってきている。例えば、データ入出力のスループットを重視するものや、一定時間内でデータ入出力が終了することを期待するものなど、二次記憶装置に入出力を行う様々なコンピュータプログラムがある。
【０００３】
このような多様化したコンピュータプログラムに対し、多くのシステムでは複数のＩ／Ｏスケジューラを備えるようになった。Ｉ／Ｏスケジューラとは、二次記憶装置に対して入出力操作をどの様に送信するのかを決定する仕組みである。
【０００４】
このＩ／Ｏスケジューラは、システム起動時あるいは二次記憶装置装着時に二次記憶装置毎に設定されている。
【０００５】
特許文献１には、二次記憶装置のアクセスパターン毎に入出力操作処理の前段階のキューを持ち、二次記憶装置へのアクセスが有るたびにそのパターンを解析して、入出力操作をシステム内の各キューに投入することが開示されている。その後、特許文献１に開示されている技術においては、二次記憶装置が、一定時間ごとに各キューの格納状況に応じてスケジューリングを実施する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２３９６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
二次記憶装置には、その種類や性能といった特徴に適したＩ／Ｏスケジューラが存在する。
【０００８】
しかし、特許文献１に開示されている技術では、二次記憶装置それぞれの種類・性能などの情報を考慮することはしておらず、二次記憶装置それぞれに適したＩ／Ｏスケジューラの設定を行うことは出来ない。そのため、二次記憶装置の種類によっては、Ｉ／Ｏ処理の低速化や非効率なブロック割り当てが発生する可能性があった。本発明は、上記課題を鑑みてなされたものであり、複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置において、記憶装置それぞれに適したＩ／Ｏスケジューラの設定を行うことを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置であって、前記複数の記憶装置の内、データの入出力要求を行う対象の記憶装置の情報を取得する取得手段と、前記取得手段で取得された記憶装置の情報に応じて、前記データの入出力要求を行う対象の記憶装置に対するＩ／Ｏスケジューラを設定する設定手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、複数の記憶装置に対してデータの入出力要求を行うことが可能な情報処理装置において、記憶装置それぞれに適したＩ／Ｏスケジューラの設定を行うことが出来る。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の構成を示す概略図である。
【図２】情報処理装置の機能構成を示す概略図である。
【図３】二次記憶装置の情報と情報に対応するＩ／Ｏスケジューラの組み合わせを設定する処理を示すフローチャートである。
【図４】二次記憶装置の情報と情報に対応するＩ／Ｏスケジューラの組み合わせを表す概略図である。
【図５】二次記憶装置の情報を検出する処理を示すフローチャートである。
【図６】Ｉ／Ｏスケジューラの管理情報ファイルを表す概略図である。
【図７】Ｉ／Ｏスケジューラの処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（Ｉ／Ｏスケジューラの概略）
まず、Ｉ／Ｏスケジューラの概略について説明する。Ｉ／Ｏスケジューラは、コンピュータプログラムが入出力を実施する際に動作するものである。
【００１３】
コンピュータプログラムが入出力を実施すると、最初に、システムに備わるファイルシステムで入出力処理が実施される。コンピュータファイルシステムは、受け取った入出力操作に含まれる入出力対象のファイル名と入出力データ、サイズ、ファイルのオフセットを元に、二次記憶装置のどの位置にファイルを入出力するかを決定する。
【００１４】
入出力の位置を決定した後、ファイルシステムは、決定した入出力位置と入出力データ、サイズを、入出力要求として纏めてＩ／Ｏスケジューラに送信する。
【００１５】
Ｉ／Ｏスケジューラは、この入出力要求をスケジューリングして、デバイスドライバに入出力要求を送信する。スケジューリングの方法は、Ｉ／Ｏスケジューラの種類によって異なる。Ｉ／Ｏスケジューラの種類には、ｎｏｏｐスケジューラ、ａｎｔｉｃｉｐａｔｏｒｙスケジューラ、ｃｆｑスケジューラなどがある。
【００１６】
ｎｏｏｐスケジューラは、Ｉ／Ｏスケジューラに到達した入出力要求を、そのままデバイスドライバに送信するスケジューラである。
【００１７】
ａｎｔｉｃｉｐａｔｏｒｙスケジューラは、将来の入出力要求を予測したスケジューリングを行うスケジューラである。予測方法としては、次の入出力要求が、前の入出力要求に近いディスクブロックへの要求だと予想して、次のブロックへの入出力要求をアプリケーションに出させる様に、強制的に遅延を入れるものである。
【００１８】
ｃｆｑスケジューラは、全てのコンピュータプログラムにＩ／Ｏキューを用意し、入出力要求を各Ｉ／Ｏキューに均等に入れる様にして、各コンピュータプログラム間で均等な入出力を実現するスケジューラである。
【００１９】
本実施例においては、使用するＩ／Ｏスケジューラは、システム起動時あるいは二次記憶装置装着時にシステムによって各二次記憶装置それぞれに設定される。設定後、システムがそのシステムのデフォルトとなるＩ／Ｏスケジューラの初期化を行い、二次記憶装置とそのＩ／Ｏスケジューラを関連付ける。
【００２０】
これにより、二次記憶装置にアクセスした際に、関連付けられたＩ／Ｏスケジューラが呼び出されるようになる。Ｉ／Ｏスケジューラは、コンピュータプログラムが仮想ファイルシステムにあるＩ／Ｏスケジューラを設定するファイルにＩ／Ｏスケジューラを書込むことで変更できる。
【００２１】
設定するファイルに書込みが行われると、システムが新しく使用するＩ／Ｏスケジューラの初期化を行い、二次記憶装置と新しいＩ／Ｏスケジューラを関連づける。その後、古いＩ／Ｏスケジューラを停止する。以上の処理により、新しいＩ／Ｏスケジューラが呼び出されるようになる。
【００２２】
従来のシステムでは、システムがそのシステムのデフォルトとなるＩ／Ｏスケジューラを設定していた。この方法では、各二次記憶装置に適したＩ／Ｏスケジューラが設定されない可能性が有った。
【００２３】
以下、図面を参照して第一実施例を詳細に説明する。本実施例では、システム起動時あるいは二次記憶装置時に、その二次記憶装置の情報を取得し、その情報に適したＩ／Ｏスケジューラを設定する。
【００２４】
（本実施例における情報処理装置の構成）
図１は、本実施例の情報処理装置の構成を示すブロック図である。
【００２５】
同図において、１００は情報処理装置である。１０１はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。１０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一次記憶装置である。
【００２６】
情報処理装置１００においては、通常１コアのＣＰＵ１０１であれば複数のコンピュータプログラムのうちの１つを処理して、処理は一定期間ごとに他のコンピュータプログラムに切り替えて実施される。ＣＰＵ１０１に、演算処理等を行うプロセッサコアを複数備えても良いし、ＣＰＵ１０１を情報処理装置１００に複数備えても良い。一次記憶装置１０２は、主に二次記憶装置から読込んだプログラムやデータを保持する。一次記憶装置１０２は、ＤＤＲ  ＳＤＲＡＭ等の揮発性メモリとしてのＤＲＡＭや、ブートプログラムを保持する不揮発性メモリとしてのマスクＲＯＭやフラッシュメモリ等を備えている。
【００２７】
１０３はＩ／Ｏコントローラ１０３である。１０４はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリなどを備える二次記憶装置である。ＳＳＤは不揮発性のフラッシュメモリを内蔵する不揮発性の記憶装置であり、ＨＤＤと同等の機能を実現可能に構成されている。
【００２８】
ファイルやディレクトリ等のファイルシステムに関わるデータは、二次記憶装置１０４に記録される。
【００２９】
なお、二次記憶装置１０４にあるファイルの操作は、ＣＰＵ１０１が一次記憶装置１０２上のプログラムを実行することで実現される、オペレーティングシステムからＩ／Ｏコントローラ１０３に対して、ＲＥＡＤ要求、ＷＲＩＴＥ要求を行うことで実現する。
【００３０】
（本実施例における情報処理装置の機能構成）
図２は、本実施例に係る情報処理装置の機能構成を示すブロック図である。同図において、情報処理装置１００は、複数種類の二次記憶装置１０４に対して出力要求が可能であり、１つ以上の二次記憶装置１０４を搭載しているものとする。
【００３１】
２０１は、二次記憶装置１０４の情報とＩ／Ｏスケジューラとの対応付けを設定する、情報対応付け設定部である。情報対応付け設定部２０１では、二次記憶装置１０４の情報とそれに対応付けるＩ／Ｏスケジューラを、Ｉ／Ｏスケジューラの情報対応付けファイル２０２に設定する。例えば、二次記憶装置１０４がＳＳＤの場合には、対応するＩ／Ｏスケジューラはｎｏｏｐであると設定する。このＩ／Ｏスケジューラの情報対応付けファイル２０２は、一次記憶装置１０２のメモリ上に作成しても良いし、二次記憶装置１０４に作成しても良い。
【００３２】
２０３は、情報処理装置１００起動時あるいは二次記憶装置１０４の装着時に、その二次記憶装置１０４の情報を取得する、記憶装置特徴検出部である。
【００３３】
記憶装置特徴検出部２０３は、上述の通り、記憶装置の情報を取得する取得手段として機能し、情報処理装置１００起動時に、情報処理装置１００に装着されている二次記憶装置１０４の認識を行う。二次記憶装置１０４の認識をするためには、まず、情報処理装置１００に接続された二次記憶装置１０４のハードウェア情報の取得を行う。ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｂｕｓ）やＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）以降の最近のバスやデバイスでは、統一されたＩＤを使用するようになっている。記憶装置特徴検出部２０３は、情報処理装置１００に接続された二次記憶装置１０４であれば、ハードウェア情報を取得して、このＩＤを取得できる。また、情報処理装置１００で利用可能な二次記憶装置１０４のＩＤも、情報処理装置１００内の一次記憶装置１０２に記録されている。よって、ハードウェア情報からＩＤを取得した後、そのＩＤと情報処理装置１００で利用可能な二次記憶装置１０４のＩＤを照合し、利用可能な二次記憶装置１０４であるかの認識を行う。その後、認識した二次記憶装置１０４の種類、性能といった情報を検出する。例えば、二次記憶装置１０４の種類は、ハードウェア情報から取得することができるＨＤＤ、ＳＳＤといった種類の情報である。性能は、読み書き性能の測定を実施する測定プログラムを実行して、シーケンシャルライトでのデータ転送速度などの結果を取得する。また、記憶装置特徴検出部２０３は、情報処理装置１００起動後にＵＳＢなどで外付けの二次記憶装置１０４が装着された場合にも、その二次記憶装置１０４の認識を行う。この場合、その二次記憶装置１０４が装着された時に、ハードウェア情報を取得して、利用可能な二次記憶装置１０４であるかの識別を行う。そして、利用可能な二次記憶装置１０４であれば、その二次記憶装置１０４の種類、性能といった情報を検出する。
【００３４】
記憶装置情報検出部２０３実行後に、Ｉ／Ｏスケジューラ設定部２０４を実行する。Ｉ／Ｏスケジューラ設定部２０４は、Ｉ／Ｏスケジューラ特徴対応付けファイル２０２から、記憶装置特徴検出部２０３で取得した二次記憶装置１０４の特徴を探索し、認識された二次記憶装置１０４で使用するＩ／Ｏスケジューラを取得する。その後、取得したＩ／Ｏスケジューラを二次記憶装置１０４に設定する。そして、設定した二次記憶装置１０４とＩ／Ｏスケジューラの組み合わせの情報を、Ｉ／Ｏスケジューラ管理情報ファイル２０５に記録する。このＩ／Ｏスケジューラ管理情報ファイル２０５は、一次記憶装置１０２のメモリ上に作成しても良いし、二次記憶装置１０４に作成しても良い。
【００３５】
Ｉ／Ｏスケジューラ処理部２０６は、ＣＰＵ１０１が一次記憶装置１０２上のコンピュータプログラムを実行することで実現されるデータ入出力のスケジューリングを行う。
【００３６】
データの入出力では、まず、二次記憶装置１０４に含まれる管理領域から、入出力対象のファイル名を検索する。この管理領域は、二次記憶装置１０４の固定領域に記録されており、この領域にはファイル名と実態の記録セクタ位置が記録されている。ファイル名から記録セクタ位置を特定すると、入出力操作に含まれるファイルのオフセットからファイル内のどの位置を入出力するかを決定する。そして、決定したセクタ位置、入出力する二次記憶装置１０４、入出力の種類（ＲＥＡＤまたはＷＲＩＴＥ）、入出力するサイズ、入出力するデータの開始位置を一つの入出力要求に纏めて、Ｉ／Ｏスケジューラ処理部２０６に送信する。
【００３７】
Ｉ／Ｏスケジューラ処理部２０６は、送られてきた入出力要求を受け取り、その入出力要求のデータから入出力対象の二次記憶装置１０４を選択する。その後、Ｉ／Ｏスケジューラ管理情報ファイル２０５を読込み、入出力対象の二次記憶装置１０４に設定されているＩ／Ｏスケジューラを取得する。そして、Ｉ／Ｏスケジューラ処理部２０６は、取得したＩ／Ｏスケジューラを使用して、入出力要求をスケジューリングする。
【００３８】
次に、図３〜図７を用いて、本実施例の情報処理装置１００による具体的な処理手順について説明する。
【００３９】
まず、図３を用いて、本実施例におけるプログラムが二次記憶装置１０４の情報と対応するＩ／Ｏスケジューラの対応付けを設定する（対応情報への書き込み処理）処理手順について説明する。
【００４０】
図３は情報処理装置１００において、二次記憶装置１０４の情報と対応するＩ／Ｏスケジューラの対応付けを設定するフローチャートである。
【００４１】
（二次記憶装置１０４の情報とＩ／Ｏスケジューラとの対応付けの設定）
（ステップＳ３００）ステップＳ３００では、ＣＰＵ１０１が二次記憶装置１０４の情報と情報処理装置１００に備わるＩ／Ｏスケジューラの組み合わせを指定する。組み合わせの指定後、ステップＳ３０１に移る。尚、本ステップにおける組み合わせの指定は、入力デバイスを介してのユーザからの指示に基づき行っても良い。
【００４２】
（ステップＳ３０１）ステップＳ３０１では、ＣＰＵ１０１が二次記憶装置１０４の情報とＩ／Ｏスケジューラの組み合わせをＩ／Ｏスケジューラ対応付けファイル２０２に書込む。具体的には、まず、ＣＰＵ１０１が、一次記憶装置１０２にＩ／Ｏスケジューラ対応付けファイル２０２を作成する。そして、ＣＰＵ１０１は、二次記憶装置１０４の情報とＩ／Ｏスケジューラの組み合わせを、Ｉ／Ｏスケジューラ対応付けファイル２０２に書込む。以上の処理によって、Ｉ／Ｏスケジューラ対応付けファイル２０２を作成することが出来る。
【００４３】
このＩ／Ｏスケジューラ対応付けファイル２０２の内容を、図４を用いて説明する。
【００４４】
図４は、Ｉ／Ｏスケジューラ対応付けファイル２０２の詳細を示す概念図である。
【００４５】
同図において、状態４００では、二次記憶装置１０４の情報とＩ／Ｏスケジューラの組み合わせを示す。状態４００では、二次記憶装置１０４の種類がＳＳＤの場合は、Ｉ／Ｏスケジューラはｎｏｏｐが対応する。二次記憶装置１０４の種類がＨＤＤの場合は、データ転送速度（シーケンシャルライト）で判断する。すなわち、二次記憶装置１０４のデータ転送速度（シーケンシャルライト）が５０ＭＢｙｔｅｓ／ｓｅｃ未満の時はａｎｔｉｃｉｐａｔｏｒｙ、５０ＭＢｙｔｅｓ／ｓｅｃ以上の時はｃｆｑが対応する。
【００４６】
また、ＣＰＵ１０１は、Ｉ／Ｏスケジューラ対応付けファイル２０２を二次記憶装置１０４に作成しても良い。この場合、ＣＰＵ１０１とＩ／Ｏコントローラ１０３の協働によって、二次記憶装置１０４の情報とＩ／Ｏスケジューラの組み合わせをＩ／Ｏスケジューラ対応付けファイル２０２に書込む。
【００４７】
（二次記憶装置１０４とＩ／Ｏスケジューラとの対応付けの設定）
次に、図５を用いて、本実施例におけるコンピュータプログラムが二次記憶装置１０４の情報を検出し、Ｉ／Ｏスケジューラを設定する処理手順について説明する。図５は、情報処理装置１００において、二次記憶装置１０４の情報を検出し、検出した情報に基づきＩ／Ｏスケジューラの設定を行うフローチャートである。
【００４８】
（ステップＳ５００）ステップＳ５００では、ＣＰＵ１０１が情報処理装置１００に備わる二次記憶装置１０４を認識する。そして、ステップＳ５０１に移る。 
【００４９】
（ステップＳ５０１）ステップＳ５０１では、ＣＰＵ１０１が認識した二次記憶装置１０４の種類、性能といった情報を検出する。そして、ステップＳ５０２に移る。
【００５０】
（ステップＳ５０２）ステップＳ５０２では、ＣＰＵ１０１がＩ／Ｏスケジューラ対応付けファイル２０２から、検出した二次記憶装置１０４の情報を探索し、その情報に対応するＩ／Ｏスケジューラを取得する。そして、ステップＳ５０３に移る。
【００５１】
（ステップＳ５０３）ステップＳ５０３では、ＣＰＵ１０１がステップＳ５０２で取得したＩ／Ｏスケジューラを二次記憶装置１０４に設定する。情報処理装置１００では、二次記憶装置１０４に対して入出力要求が発生し、その入出力要求をＩ／Ｏスケジューラに送信した場合、その二次記憶装置１０４に関連付けられているＩ／Ｏスケジューラのモジュールが呼び出され、実行される。そのため、ステップＳ５０２で選択したＩ／Ｏスケジューラのモジュールが呼び出される様に設定する。そして、ステップＳ５０４に移る。
【００５２】
（ステップＳ５０４）ステップＳ５０４では、ＣＰＵ１０１が、二次記憶装置１０４と設定したＩ／Ｏスケジューラの組み合わせの情報を、Ｉ／Ｏスケジューラ管理情報ファイル２０５に記録する。
【００５３】
図６は、Ｉ／Ｏスケジューラ管理情報ファイル２０５の詳細を示す概念図である。
【００５４】
図６において、状態６００では、二次記憶装置１０４とＩ／Ｏスケジューラの組み合わせを示す。状態６００では、デバイスＡのＩ／Ｏスケジューラはｎｏｏｐであり、デバイスＢのＩ／Ｏスケジューラはｃｆｑである。
【００５５】
（本実施例におけるＩ／Ｏスケジューラの処理）
次に、図７を用いて、本実施例におけるプログラムがデータ入出力を行った時に、Ｉ／ＯスケジューラでＩ／Ｏ処理を行う処理手順について説明する。図７は情報処理装置１００において、Ｉ／ＯスケジューラでＩ／Ｏ処理を実施するフローチャートである。
【００５６】
（ステップＳ７００）ステップＳ７００では、ＣＰＵ１０１がファイルへのデータ入出力操作を開始する。データ入出力は、ファイルからデータを読込む場合と、ファイルにデータを書込む場合の２通りが存在する。ファイルからデータを読込む場合は、読込むファイルの領域と読込むサイズを指定して、データ読込みを開始する。ファイルにデータを書込む場合は、書込むファイルの領域、書込むデータ、書込むデータのサイズを指定して、データ書込みを開始する。そして、ステップＳ７０１に移る。
【００５７】
（ステップＳ７０１）ステップＳ７０１では、ＣＰＵ１０１が、ステップＳ７００で指定したファイルやサイズを、入出力要求という形に纏めてＩ／Ｏスケジューラに送信する。具体的には、まず、入出力対象の二次記憶装置１０４に含まれる管理領域から、入出力対象のファイル名を検索する。そして、ファイル名から記録セクタ位置を特定すると、入出力操作に含まれるファイルのオフセットからファイル内のどの位置を入出力するかを決定する。その後、決定したセクタ位置、入出力する二次記憶装置１０４、入出力の種類、入出力するサイズ、入出力するデータの開始位置を一つの入出力要求に纏めて、Ｉ／Ｏスケジューラに送信する。そして、ステップＳ７０２に移る。
【００５８】
（ステップＳ７０２）ステップＳ７０２では、ＣＰＵ１０１がＩ／Ｏスケジューラで入出力要求を受け取り、ＣＰＵ１０１が二次記憶装置１０４に関連付けられているＩ／Ｏスケジューラを使用して、入出力要求をスケジューリングする。受信した入出力要求には、入出力する二次記憶装置１０４が含まれている。
【００５９】
（ステップ７０３）ステップＳ７０３では、ＣＰＵ１０１がＩ／Ｏスケジューラ管理情報ファイル２０５から、入出力対象の二次記憶装置１０４を探索し、その入出力対象の二次記憶装置１０４に設定されているＩ／Ｏスケジューラを取得する。そして、取得したＩ／Ｏスケジューラを使用して、入出力要求をスケジューリングする。
【００６０】
以上の様に、本実施例では、まず、図３のフローで示した通り、プログラムが情報対応付け設定部２０１を実行して、記憶装置の情報とそれに対応付けるＩ／ＯスケジューラをＩ／Ｏスケジューラ対応付けファイル２０２に設定する。
【００６１】
そして、図５のフローで示した通り、情報処理装置１００起動時あるいは二次記憶装置１０４装着時に、コンピュータプログラムが記憶装置情報検出部２０３を実行して、二次記憶装置１０４の情報を検出する。そして、コンピュータプログラムがＩ／Ｏスケジューラ設定部２０４を実行して、Ｉ／Ｏスケジューラ対応付けファイル２０２を読込む。このＩ／Ｏスケジューラ対応付けファイル２０２から、検出した二次記憶装置１０４の情報を探索し、設定するＩ／Ｏスケジューラを選択する。  設定するＩ／Ｏスケジューラを選択後、Ｉ／Ｏスケジューラ設定部２０４は二次記憶装置１０４に選択したＩ／Ｏスケジューラを設定する。そして、Ｉ／Ｏスケジューラ管理情報ファイル２０５に、設定した二次記憶装置１０４とＩ／Ｏスケジューラの組み合わせを記録する。
【００６２】
その後、図７のフローで示した通り、コンピュータプログラムがデータの入出力操作を開始する。データの入出力操作では、指定されたファイル名、ファイルのオフセットを元に二次記憶装置１０４内のどの位置を入出力するかを決定する。そして、決定した位置、入出力対象の二次記憶装置１０４、入出力の種類、入出力するサイズ、入出力するデータの開始位置を一つの入出力要求に纏めて、Ｉ／Ｏスケジューラに送信する。送信後、Ｉ／Ｏスケジューラ処理部２０６を実行する。Ｉ／Ｏスケジューラ処理部２０６は、Ｉ／Ｏスケジューラ管理情報ファイル２０５を読込み、入出力対象の二次記憶装置１０４に設定されているＩ／Ｏスケジューラを取得する。そして、取得したＩ／Ｏスケジューラを使用して、入出力要求をスケジューリングする。
【００６３】
これにより、二次記憶装置１０４について、二次記憶装置１０４毎に適したＩ／Ｏスケジューラに切り替わる為、Ｉ／Ｏ処理の高速化と効率的なブロック割り当てが実現する。例えば、ｎｏｏｐスケジューラは、入出力要求を溜めず、即座にデバイスドライバに渡すため、シーク時間が一定のＳＳＤや、オペレーティングシステムよりも上手くスケジューリングできるＲＡＩＤに有効である。
【００６４】
尚、ａｎｔｉｃｉｐａｔｏｒｙスケジューラは、次の入出力要求は、前の入出力要求に近いディスクブロックへの要求だと予想して、次のブロックへの入出力要求をアプリに出させる様に、強制的に遅延を入れるため、低速なＨＤＤに有効である。
【００６５】
即ち、上述した実施例の機能を実現するコンピュータプログラムを、ネットワークまたは各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータが、コンピュータが読み取り可能なコンピュータプログラムを読みだして実行する処理である。
【００６６】
コンピュータプログラムを供給するための記憶媒体としては、例えば、光ディスク、磁気ディスク、光磁気ディスク、磁気テープ、不揮発性のメモリカードなどを用いることが出来る。これらの記憶媒体は、上記実施例の機能を実現する二次記憶装置としても用いることが出来る。
【符号の説明】
【００６７】
１０１  ＣＰＵ
１０２  一次記憶装置
１０３  Ｉ／Ｏコントローラ
１０４  二次記憶装置
【図１】
2015130096.tif 000003
【図２】
2015130096.tif 000004
【図３】
2015130096.tif 000005
【図４】
2015130096.tif 000006
【図５】
2015130096.tif 000007
【図６】
2015130096.tif 000008
【図７】
2015130096.tif 000009