(57)【要約】【課題】メモリ上のディスクキャッシュそのものを再起動後のＯＳが引き継ぐことができるようにする。【解決手段】主記憶装置１００上に展開されたＯＳ２００の再起動手段２０１がＯＳ２００を再起動する前に、ディスクキャッシュ情報作成手段２０２がディスクキャッシュ情報３０１を作成し、ディスクキャッシュ情報退避領域３００に格納する。ＯＳ２００が再起動されメモリの初期化が開始されるとディスクキャッシュ保護手段２０３が呼び出され、ディスクキャッシュ情報３０１に含まれるメモリフレーム管理情報８０４に基づいて、ディスクキャッシュ８０６として利用されているメモリフレーム８０５は初期化せず保護し、他は初期化する。ディスクキャッシュ情報復元手段は２０４はディスクキャッシュ情報３０１に基づいて、再起動前に利用していたディスクキャッシュの情報をＯＳ２００内に復元する。【選択図】図１
2010191549.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域とを備えるディスクキャッシュシステムであって、
前記主記憶装置上に、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域をさらに備え、
前記オペレーティングシステムは、
電源を切断することなく前記オペレーティングシステムを再起動させる再起動手段と、
前記再起動手段による再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成手段と、
前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動手段によって再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護手段と、
前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元手段と、
を備えることを特徴とするディスクキャッシュシステム。
【請求項２】
前記ディスクキャッシュ情報は、再起動された前記オペレーティングシステムが前記主記憶装置の初期化を行う前に、再起動前の前記オペレーティングシステムによって前記主記憶装置内の任意の領域に確保された前記ディスクキャッシュ退避領域に格納され、前記ディスクキャッシュ情報が格納される前記ディスクキャッシュ退避領域は、再起動された前記オペレーティングシステムによる初期化の対象とされない
ことを特徴とする請求項１に記載のディスクキャッシュシステム。
【請求項３】
前記ディスクキャッシュ情報は、ファイル識別情報と、前記ディスクキャッシュ領域の総メモリフレーム数と、ディスクのブロック番号および前記メモリフレームのメモリフレーム番号とを対応付けた情報と、メモリフレーム毎の使用または未使用を示す情報とを含む、
ことを特徴とする請求項１または２に記載のディスクキャッシュシステム。
【請求項４】
ディスク上のファイルにアクセスするファイルアクセス手段をさらに備え、
前記ディスクキャッシュ情報復元手段は、前記ファイルアクセス手段が前記ファイルにアクセスする毎に、前記ファイルに対応する前記ディスクキャッシュ情報を前記オペレーティングシステム内に復元する、
ことを特徴とする請求項１乃至３のいずれかに記載のディスクキャッシュシステム。
【請求項５】
前記ディスクキャッシュ情報作成手段は、前記オペレーティングシステムが再起動される直前に１回だけ、または再起動されるまで定期的に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納する、
ことを特徴とする請求項４に記載のディスクキャッシュシステム。
【請求項６】
前記ディスクキャッシュのメモリフレーム毎に、そのメモリフレームのデータがディスクに書き込まれているか否かを示すディスク書込済フラグが記憶され、
障害発生時に、前記ディスク書込済フラグの値に応じて、前記メモリフレームのデータを前記ディスクに書き戻す書き戻し手段をさらに備える、
ことを特徴とする請求項１乃至５のいずれか１項に記載のディスクキャッシュシステム。
【請求項７】
主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域とを備えるディスクキャッシュシステムにおけるディスクキャッシュ再利用方法であって、
前記主記憶装置上に、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域をさらに備え、
前記オペレーティングシステムは、
電源を切断することなく前記オペレーティングシステムを再起動させる再起動ステップと、
前記再起動ステップにおける再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成ステップと、
前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動ステップにおいて再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護ステップと、
前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元ステップと、
を備える、ことを特徴とするディスクキャッシュ再利用方法。
【請求項８】
主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域と、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域を有するディスクキャッシュシステムを備えるコンピュータに、
電源を切断することなく前記オペレーティングシステムを再起動させる再起動手順と、
前記再起動手順による再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成手順と、
前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動手順によって再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護手順と、
前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元手順と、
を実行させるためのディスクキャッシュ再利用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクキャッシュ再利用システム、ディスクキャッシュ再利用方法およびディスクキャッシュ再利用プログラムに関し、特にシステムを再起動する際に、再起動前のシステムが作成したディスクキャッシュを再起動後のシステムが引き継ぐことのできるディスクキャッシュシステム、ディスクキャッシュ再利用方法およびディスクキャッシュ再利用プログラムに関する。
【背景技術】
【０００２】
ディスクキャッシュとは、ハードディスク等の不揮発性記憶装置に格納されているデータのコピーを格納しているメモリ領域のことである。あるプログラムがハードディスクに格納されているデータを参照する場合、最初にハードディスクから当該データがメモリ上にコピーされる。そして、そのメモリ上のデータをプログラムが参照する。その後、当該データにアクセスがあった場合は、メモリ上のデータが参照されることになる。
【０００３】
もちろん、当該データに対して変更が加えられた場合は、変更部分をハードディスクに書き戻す必要がある。ハードディスクとメモリはアクセス速度が数十から数百倍は違う（メモリに対するアクセス速度の方がハードディスクに対するアクセス速度より速い）ため、ディスクキャッシュを用いることによってハードディスク上のデータへのアクセス速度を向上させることができる。
【０００４】
図１５にディスクキャッシュを含むコンピュータシステムの一般的な構成要素を示す。コンピュータシステムは、図示しないハードディスクに格納されているファイルＡ７００と、図示しないメモリ上に存在するファイルオープン情報８００、ファイル状態８０１、ディスクキャッシュ管理情報８０２、ディスクキャッシュ検索情報８０３、メモリフレーム管理情報８０４、メモリフレーム８０５、およびディスクキャッシュ８０６と、から構成される。
【０００５】
ファイルオープン情報８００は、ファイルアクセスの状況を示すテーブルである。図１６にファイルオープン情報８００の例を示す。ファイルオープン情報８００は、プログラムがファイル（例えば、ファイルＡ７００等）にアクセスするときに作成される。ファイルオープン情報８００は、ファイル名８０９、プロセスからのファイル参照数８１０、ファイルにアクセスしたときのアクセスモード（読み込みのみ、書き込みのみ、または両方など）８１１、ファイルオフセット８１２などから構成される。この例では、ファイル名として「ｆｉｌｅ１」、ファイル参照数として値１、アクセスモードとして「ｒｅａｄ（読み込みのみ）」、ファイルオフセットとして値１５がそれぞれ格納されている。
【０００６】
ファイル状態８０１は、ファイル（例えば、ファイルＡ７００等）の現在の状態を示すテーブルである。図１７にファイル状態８０１の例を示す。ファイル状態８０１は、ファイルＩＤ（Identification）８１３、ファイルの更新日時８１４、ファイルの長さ８１５、ディスクキャッシュ管理情報のアドレス８１６などから構成される。ファイル状態８０１は、ファイルの特性情報としてファイル（例えば、ファイルＡ７００等）と共にハードディスクに格納されている。この例では、ファイルＩＤとして「１」、ファイルの更新日時として、「２００８／１／１」、ファイルの長さとして「１０２４Ｍｂｙｔｅ（メガバイト）」、ディスクキャッシュ管理情報のアドレスとして値１００３がそれぞれ格納されている。
【０００７】
当該ファイル（例えば、ファイルＡ７００等）にアクセスがあった場合、ハードディスクからファイル状態８０１が取り出され、ディスクキャッシュ管理情報のアドレス８１６などのファイルアクセスの実行時情報がファイル状態８０１に追加されてメモリに保持される。ファイル状態８０１は、ディスクキャッシュの一種であり、一度アクセスされたファイルのファイル状態８０１は、メモリに空きがある限りファイルアクセスが終了した後もメモリ上に保持される。
【０００８】
ディスクキャッシュ管理情報８０２は、ディスクキャッシュ８０６の状態を示すテーブルである。図１８にディスクキャッシュ管理情報８０２の例を示す。ディスクキャッシュ管理情報８０２は、ファイル状態のアドレス（ファイル状態８０１のアドレス）８１７、ディスクキャッシュの総メモリフレーム数（ディスクキャッシュ８０６の総メモリフレーム数）８１８、ディスクキャッシュ検索情報のアドレス（ディスクキャッシュ検索情報８０３のアドレス）８１９など、ディスクキャッシュ８０６に関するあらゆる情報から構成されている。このディスクキャッシュ管理情報８０２は、ファイル状態８０１の１エントリとして存在する。この例では、ファイル状態のアドレスとして値１００２、ディスクキャッシュの総メモリフレーム数として値１３２７、ディスクキャッシュ検索情報のアドレスとして値１００４がそれぞれ格納されている。
【０００９】
ディスクキャッシュ検索情報８０３は、ディスクキャッシュ８０６を検索する情報を提供するテーブルである。図１９にディスクキャッシュ検索情報８０３の例を示す。ディスクキャッシュ検索情報８０３は、ブロック番号８０７とメモリフレーム番号８０８から構成される。ブロック番号８０７は、ハードディスク上の位置を示す番号であり、ファイルの構成要素である。ファイルは複数のブロックから構成される。各ブロックに対してそれぞれ１つずつブロック番号８０７が割り振られている。
【００１０】
通常、プログラムからファイルにアクセスする際は、アクセスするファイルのファイル名８０９とそのファイル内のオフセット（ファイルオフセット）８１２が図示しないＯＳ（Operating System）に渡される。ＯＳはファイル内のオフセット（ファイルオフセット）８１２をブロック番号８０７に変換して、目的のデータを取り出す。
【００１１】
ＯＳは、ディスクキャッシュ８０６が存在する場合、即ち、ディスクキャッシュ管理情報８０２内のディスクキャッシュの総メモリフレーム数８１８が１以上の場合、ディスクキャッシュ検索情報８０３を用いて、ブロック番号８０７をメモリフレーム番号８０８に変換することにより、目的のデータが格納されているメモリフレーム８０５からデータを取り出す。ディスクキャッシュ管理情報８０２には、ディスクキャッシュ検索情報のアドレス８１９が格納されている。
【００１２】
メモリフレーム管理情報８０４は、メモリフレーム８０５の利用状況を示すテーブルである。図２０にメモリフレーム管理情報８０４の例を示す。メモリフレーム管理情報８０４は、メモリフレーム番号８０８、使用フラグ（使用中か未使用かを示すフラグ）８４１、メモリフレームの被参照数（当該メモリフレーム８０５の被参照数）８４２、ディスクキャッシュ管理情報のアドレス８１６、ファイル状態のアドレス８１７等から構成される。
【００１３】
メモリフレーム管理情報８０４は、各メモリフレーム８０５に対してそれぞれ１つずつ作成される。メモリフレーム管理情報８０４は、ＯＳがメモリ領域を初期化する際に作成され、ＯＳ内のメモリフレーム管理情報８０４のための配列に格納される。メモリフレーム番号８０８は、当該配列の添え字となる。
【００１４】
メモリフレーム８０５は、メモリを管理する際の単位である。プログラムへのメモリの割り当てや、ディスクからメモリへのコピーは、メモリフレーム８０５単位で行われる。
【００１５】
従来のディスクキャッシュシステムの一例が、特許文献１に記載されている。特許文献１には、不揮発性の半導体ディスク８２５（図２１）を上述したキャッシュディスクとして用いる技術が開示されている。図２１に示すように、この従来のディスクキャッシュシステムは、アプリケーションプログラム８２０、ＯＳ２００、キャッシュシステムドライバ８２１、フラッシュメモリドライバ８２４、ハードディスクドライバ８２２、半導体ディスク８２５、ＨＤＤ（Hard Disk Drive）８２３から構成されている。
【００１６】
このような構成を有する従来のディスクキャッシュシステムは次のように動作する。即ち、ＨＤＤ８２３に対する一連のデータの読み出し要求が発生した場合は、ＨＤＤ８２３から読み出されたデータがＯＳ２００、アプリケーションプログラム８２０に渡され、かつ半導体ディスク８２５にも格納される。
【００１７】
次に、ＨＤＤ８２３に対して一連のデータの読み出し要求が発生した場合において、同一のデータが半導体ディスク８２５に存在するときは、そのデータの読み出しは半導体ディスク８２５から行われる。このため、高速の読み出しが可能となる。半導体ディスク８２５に保存されているキャッシュデータは、電源切断やＯＳの再起動を経ても有効となる。よって、システム電源がオフされても、それまでに構築されたヒット率の高いディスクキャッシュの内容を有効に維持することができる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開平１０−０４０１７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
このように、特許文献１では、ハードディスクから読み出したデータが半導体ディスク８２５にコピーされるため、電源切断やＯＳの再起動を経ても半導体ディスク８２５に保存されているデータは有効となる。しかしながら、上述した特許文献１が開示する技術には次のような問題点がある。すなわち、電源が切断されないような場合でも、ディスクアクセスの速度がキャッシュディスクとして揮発性の半導体メモリを用いた場合より遅くなるということである。その理由は、どのような場合においてもディスクの内容を半導体ディスク８２５へコピーするためである。特許文献１では、ディスクアクセスが発生した場合、ディスクの内容をメモリに読み込むとともに、半導体ディスク８２５へも読み込む。よって、ディスクの内容を単にメモリへ読み込む処理に比べて、半導体ディスク８２５への読み込み完了を待つ分だけディスクアクセスの速度が遅くなってしまう。
【００２０】
また、メモリは電源が切断されると、それまで蓄えていたデータを消失してしまう。従って、電源が切断されるような状況でディスクキャッシュのデータを再利用するためには、ディスクキャッシュを半導体ディスク８２５等の不揮発性記憶装置で構成する必要がある。
【００２１】
しかし、Ｗｉｎｄｏｗｓ（登録商標）やＬｉｎｕｘのような一般的なＯＳでは、システムのシャットダウンとは違い、システムの再起動によって電源が切断されるということはないため、このような場合（システムが再起動された場合）にはメモリ上のデータが消えるということはない。従って、再起動後もメモリ上のディスクキャッシュのデータを再利用すれば、半導体ディスク８２５へディスクキャッシュのデータをコピーする必要はない。
【００２２】
本発明の目的は、メモリ上に存在するディスクキャッシュのデータを再起動後のシステムが引き継ぐことのできるディスクキャッシュシステムを提供することにある。
【課題を解決するための手段】
【００２３】
上記目的を達成するため、本発明の第１の観点に係るディスクキャッシュシステムは、主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域とを備えるディスクキャッシュシステムであって、前記主記憶装置上に、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域をさらに備え、前記オペレーティングシステムは、電源を切断することなく前記オペレーティングシステムを再起動させる再起動手段と、前記再起動手段による再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成手段と、前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動手段によって再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護手段と、前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元手段とを備えることを特徴とする。
【００２４】
また、本発明の第２の観点に係るディスクキャッシュ再利用方法は、主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域とを備えるディスクキャッシュシステムにおけるディスクキャッシュ再利用方法であって、前記主記憶装置上に、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域をさらに備え、前記オペレーティングシステムは、電源を切断することなく前記オペレーティングシステムを再起動させる再起動ステップと、前記再起動ステップにおける再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成ステップと、前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動ステップにおいて再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護ステップと、前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元ステップとを備えることを特徴とする。
【００２５】
また、本発明の第３の観点に係るディスクキャッシュ再利用プログラムは、主記憶装置上に、オペレーティングシステムが展開される領域と、ディスクキャッシュ領域と、前記ディスクキャッシュ領域に関するディスクキャッシュ情報が退避され保持されるディスクキャッシュ情報退避領域を有するディスクキャッシュシステムを備えるコンピュータに、電源を切断することなく前記オペレーティングシステムを再起動させる再起動手順と、前記再起動手順による再起動前に、前記ディスクキャッシュ領域に関する前記ディスクキャッシュ情報を作成し、前記ディスクキャッシュ情報退避領域に格納するディスクキャッシュ情報作成手順と、前記ディスクキャッシュ領域に記憶されているデータのうち前記オペレーティングシステムが再起動される前に利用されていたものが、前記再起動手順によって再起動された前記オペレーティングシステムによって初期化されないよう保護するディスクキャッシュ保護手順と、前記オペレーティングシステムが再起動された後、前記ディスクキャッシュ退避領域に保持されている前記ディスクキャッシュ情報に基づいて、再起動前に前記オペレーティングシステムが利用していた前記ディスクキャッシュ領域に関する情報を前記オペレーティングシステム内に復元するディスクキャッシュ情報復元手順と、を実行させる。
【発明の効果】
【００２６】
本発明によれば、電源が切断されないような状況で、再起動後のシステムがディスクキャッシュのデータを再利用することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施の形態に係るコンピュータの主記憶装置の構成例を示すブロック図である。
【図２】ディスクキャッシュ情報退避領域とディスクキャッシュ情報の構造例を示す図である。
【図３】ディスクキャッシュ情報作成手段の動作を説明するためのフローチャートである
【図４】再起動手段とディスクキャッシュ保護手段の動作を説明するためのフローチャートである。
【図５】ディスクキャッシュ情報復元手段の動作を説明するためのフローチャートである。
【図６】第１の実施の形態の変形例２におけるディスクキャッシュ情報復元手段の動作を説明するためのフローチャートである。
【図７】本発明の第２の実施の形態に係るコンピュータの主記憶装置の構成例を示すブロック図である。
【図８】本発明の第２の実施の形態におけるディスクキャッシュ情報復元手段の処理手順を説明するためのフローチャートである。
【図９】ディスクキャッシュのＬｉｎｕｘＯＳ上における具体的な構成要素を示す図である。
【図１０】本発明の具体的な実施例に係る主記憶装置（メモリ）の構成例を示すブロック図である。
【図１１】ディスクキャッシュ情報退避領域とディスクキャッシュ情報の具体例を示す図である。
【図１２】ディスクキャッシュ情報作成手段の動作を説明するためのフローチャートである。
【図１３】ｋｅｘｅｃとディスクキャッシュ保護手段の動作を説明するためのフローチャートである。
【図１４】ディスクキャッシュ情報復元手段の動作を説明するためのフローチャートである。
【図１５】ディスクキャッシュを含むコンピュータシステムの一般的な構成要素を示す図である。
【図１６】ファイルオープン情報の構造を示す図である。
【図１７】ファイル状態の構造を示す図である。
【図１８】ディスクキャッシュ管理情報の構造を示す図である。
【図１９】ディスクキャッシュ検索情報の構造を示す図である。
【図２０】メモリフレーム管理情報の構造を示す図である。
【図２１】従来のディスクキャッシュシステムの構成例を示すブロック図である。
【発明を実施するための形態】
【００２８】
次に、本発明の実施の形態について図面を参照して詳細に説明する。図１に示すように、本発明の第１の実施の形態に係るコンピュータの主記憶装置（メモリ）１００上には、ＯＳ（Operating System）２００が展開され、ディスクキャッシュ情報退避領域３００と、ディスクキャッシュ領域４００とが確保されている。
【００２９】
ＯＳ２００上では、再起動手段２０１と、ディスクキャッシュ情報作成手段２０２と、ディスクキャッシュ保護手段２０３と、ディスクキャッシュ情報復元手段２０４等のプログラムが各種処理を実行するようになっている。また、ディスクキャッシュ情報退避領域３００には、ディスクキャッシュ情報３０１が記憶される。また、ディスクキャッシュ領域４００にメモリフレーム８０５が設けられ、メモリフレーム８０５内にディスクキャッシュ８０６が設けられる。
【００３０】
再起動手段２０１は、再起動手段２０１が実行されるまでＯＳ２００が利用していた領域に、新たにＯＳ２００をロードし、ロードしたＯＳ２００の実行を開始する（再起動する）。この再起動手段２０１は、ハードウェアのリセットスイッチを利用せずに、再起動前のＯＳ２００から再起動後のＯＳ２００を直接呼び出すことによって、電源切断やメモリ１００に蓄えられているデータの初期化を防ぐようになっている。
【００３１】
ディスクキャッシュ情報作成手段２０２は、ファイル状態８０１、ディスクキャッシュ管理情報８０２、ディスクキャッシュ検索情報８０３、メモリフレーム管理情報８０４などに基づいてディスクキャッシュ情報３０１を作成し、作成したディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００へ格納する。
【００３２】
ディスクキャッシュ保護手段２０３は、再度新たにロードしたＯＳ２００によるディスクキャッシュ領域４００の初期化を防ぐようになっている。ディスクキャッシュ保護手段２０３は、再度ロードしたＯＳ２００がメモリ１００のディスクキャッシュ領域４００等のメモリ領域を初期化する際に呼び出される。そして、初期化しようとしているメモリフレーム８０５が、再起動前のＯＳ２００によって作成されたディスクキャッシュ領域４００上で利用されていたものか否かを識別し、初期化しようとしているメモリフレーム８０５が再起動前のＯＳ２００によって作成されたディスクキャッシュ領域４００上で利用されていたものであるなら、ＯＳ２００にメモリ領域（ディスクキャッシュ領域４００）の初期化をスキップさせ、当該メモリフレーム８０５のメモリフレーム管理情報８０４をＯＳ２００に設定する。
【００３３】
つまり、ＯＳ２００が有するメモリフレーム管理情報８０４の配列に、ディスクキャッシュ情報３０１から取得したメモリフレーム管理情報８０４をコピーするということである。メモリ領域の初期化とは、メモリフレーム管理情報８０４を作成して、メモリフレーム８０５の内容をクリアすることである。
【００３４】
ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報退避領域３００に格納されているディスクキャッシュ情報３０１を用いて、ＯＳ２００内にディスクキャッシュに関する情報を設定する。ディスクキャッシュに関する情報とは、ファイル状態８０１、ディスクキャッシュ管理情報８０２、ディスクキャッシュ検索情報８０３等を指す。
【００３５】
ディスクキャッシュ情報退避領域３００は、ディスクキャッシュ情報作成手段２０２によって作成されたディスクキャッシュ情報３０１を格納しておくための領域である。ディスクキャッシュ情報退避領域３００は、メモリ１００上の任意の場所に作成することができる。ディスクキャッシュ情報退避領域３００は、ＯＳ２００がメモリ１００を初期化する前にＯＳ２００によって確保され、ＯＳ２００によるメモリ領域初期化の対象とはならない。
【００３６】
ディスクキャッシュ情報３０１は、ＯＳ２００が所有しているディスクキャッシュに関する情報である。図２にディスクキャッシュ情報退避領域３００とディスクキャッシュ情報３０１の構造を示す。具体的には、ファイル名（ファイルＩＤ）８２６、ディスクキャッシュ管理情報８０２（図１８）、ディスクキャッシュ検索情報８０３（図１９）、メモリフレーム管理情報８０４（図２０）から構成される。ファイル名８２６はファイル状態８０１（図１７）から取得する（例えば、ファイル状態８０１のファイルＩＤ８１３をファイル名８２６として取得する）。
【００３７】
図１に示すディスクキャッシュ領域４００は、ディスクキャッシュ８０６を格納している領域である。ディスクキャッシュ領域４００はＯＳ２００によって作成される。
【００３８】
メモリフレーム８０５は、メモリ１００を管理する際の単位である。プログラムへのメモリ１００の割り当てや、ディスクからメモリ１００へのデータ等のコピーは、メモリフレーム８０５単位で行われる。
【００３９】
次に、図３、図４および図５のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。本実施の形態は、図３、図４、図５の各フローチャートに示した順番で動作する。
【００４０】
最初に、図３のフローチャートを参照して、ディスクキャッシュ情報作成手段２０２の動作について説明する。
【００４１】
まず、ディスクキャッシュ情報作成手段２０２は、ファイル状態８０１（図１７）を取得する（ステップＳ１）。ファイル状態８０１は、ファイルに対してプログラムが読み書きを行う際に作成される。従って、ファイルに対して全く読み書きがなされていないなら、ファイル状態８０１は存在しない（ステップＳ２のＹＥＳ）ので、そのまま処理を終了する。一方、ファイル状態８０１が存在する（ステップＳ２のＮＯ）なら、ファイル状態８０１からファイル名８２６を取得する（ステップＳ３）。ファイル名８２６は当該ファイルの固有値を表すものならファイルＩＤ８１３（図１７）のようなものでもよい。
【００４２】
次に、ディスクキャッシュ情報作成手段２０２は、ディスクキャッシュ管理情報８０２を取得する（ステップＳ４）。ディスクキャッシュ管理情報８０２は、ファイル状態８０１にディスクキャッシュ管理情報のアドレス８１６によって紐付けられているので、ファイル状態８０１からディスクキャッシュ管理情報のアドレス８１６を取得することによってディスクキャッシュ管理情報８０２を取得することができる。
【００４３】
次に、ディスクキャッシュ情報作成手段２０２は、ディスクキャッシュ検索情報８０３を取得する（ステップＳ５）。ディスクキャッシュ検索情報８０３は、ディスクキャッシュ検索情報のアドレス８１９によってディスクキャッシュ管理情報８０２に紐付けられているので、ディスクキャッシュ管理情報８０２からディスクキャッシュ検索情報のアドレス８１９を取得することによってディスクキャッシュ検索情報８０３を取得することができる。
【００４４】
次に、ディスクキャッシュ情報作成手段２０２は、メモリフレーム管理情報８０４を取得する（ステップＳ６）。メモリフレーム管理情報８０４の位置情報は、ディスクキャッシュ検索情報８０３のメモリフレーム番号８０８と一致する。つまり、ＯＳ２００内のメモリフレーム管理情報８０４の配列の添え字がメモリフレーム番号８０８である。
【００４５】
よって、メモリフレーム管理情報８０４の位置情報は、ディスクキャッシュ検索情報８０３のエントリを逐次検索することによって取得することができ、これらの位置情報を使ってメモリフレーム管理情報８０４を取得することができる。ディスクキャッシュ情報作成手段２０２は、ディスクキャッシュ検索情報８０３のすべてのエントリを検索し、すべてのメモリフレーム管理情報８０４の取得が終了するまでステップＳ５およびステップＳ６の処理を繰り返し行う。
【００４６】
次に、ディスクキャッシュ情報作成手段２０２は、ディスクキャッシュ情報３０１を作成し（ステップＳ７）、ディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００へ保存する（ステップＳ８）。その後、ステップＳ１に戻り、ステップＳ１以降の処理が繰り返し実行される。即ち、ステップＳ１において、次のファイル状態８０１を取得し、ステップＳ２に進む。
【００４７】
次に、図４のフローチャートを参照して、再起動手段２０１とディスクキャッシュ保護手段２０３の動作を説明する。
【００４８】
まず、再起動手段２０１はＯＳ２００をロードする（ステップＳ２１）、ＯＳ２００のロードが終了すると、ＯＳ２００によってメモリ１００の初期化が開始される。メモリ１００の初期化が開始される時点でディスクキャッシュ保護手段２０３が呼び出されることになる。
【００４９】
次に、ディスクキャッシュ保護手段２０３は、ディスクキャッシュ情報退避領域３００の位置を取得する（ステップＳ２２）。ディスクキャッシュ情報退避領域３００の位置は、ＯＳ２００をロードする際にＯＳ２００を実行するときの引数として受け渡す方法でもよいし、ディスクキャッシュ情報退避領域３００をメモリの固定位置に配置し、その位置を予めＯＳ２００のデータとして保持しておくのでもよい。
【００５０】
次に、ディスクキャッシュ保護手段２０３は、メモリフレーム管理情報８０４を新規作成する（例えば、メモリフレーム管理情報８０４の配列をメモリ１００内に新規作成する）（ステップＳ２３）。次に、ディスクキャッシュ情報退避領域３００のディスクキャッシュ情報３０１の中から、先ほど作成したメモリフレーム管理情報８０４と同一のメモリフレーム番号８０８のメモリフレーム管理情報８０４（例えば、メモリフレーム管理情報８０４の配列の添え字と同一の番号のメモリフレーム番号８０８のメモリフレーム管理情報８０４）（以下では、該当するメモリフレーム管理情報８０４と記載する）を取得する（ステップＳ２４）。
【００５１】
該当するメモリフレーム管理情報８０４を取り出すには、ディスクキャッシュ情報３０１に含まれるすべてのメモリフレーム管理情報８０４を検索することになる。該当するメモリフレーム管理情報８０４がディスクキャッシュ情報３０１の中に含まれているのであれば（ステップＳ２５のＹＥＳ）、当該メモリフレーム８０５は、ディスクキャッシュ８０６として利用されている領域なので、そのメモリフレーム８０５の初期化は行わずに、取り出したメモリフレーム管理情報８０４の内容を、ステップＳ２３で作成したメモリフレーム管理情報８０４の配列の対応するものに上書きする（ステップＳ２６）。
【００５２】
該当するメモリフレーム管理情報８０４がディスクキャッシュ情報３０１の中に含まれていないのであれば（ステップＳ２５のＮＯ）、対応するメモリフレーム８０５を初期化する（ステップＳ２７）。
【００５３】
ステップＳ２６またはステップＳ２７の処理が終了すると、ディスクキャッシュ保護手段２０３は、すべてのメモリフレーム管理情報８０４を作成したか否かを確認する（ステップＳ２８）。この確認は、すべてのメモリフレーム８０５を初期化したか否かを確認することを目的としている。すべてのメモリフレーム管理情報８０４を作成したのであれば（ステップＳ２９のＹＥＳ）、ディスクキャッシュ保護手段２０３の処理を終了する。
【００５４】
一方、すべてのメモリフレーム管理情報８０４を作成していないのであれば（ステップＳ２９のＮＯ）、ステップＳ２３に戻り、ステップＳ２３以降の処理が繰り返し実行される。即ち、ステップＳ２３において、次のメモリフレーム管理情報８０４を新規作成する。例えば、メモリフレーム管理情報８０４の配列の添え字を１だけ増加させ、その添え字に対応する配列の各要素にメモリフレーム番号および初期値等を格納する。例えば、使用数や被参照数には初期値０が格納される。その後、ステップＳ２４に進む。
【００５５】
最後に、図５のフローチャートを参照して、ディスクキャッシュ情報復元手段２０４の動作を説明する。
【００５６】
まず、ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００から１つ取り出す（ステップＳ３１）。ディスクキャッシュ情報３０１を取り出すことができた（ディスクキャッシュ情報３０１の残りがあった）場合（ステップＳ３２のＮＯ）、ファイル状態８０１を作成する（ステップＳ３３）。
【００５７】
ファイル状態８０１は、次のように作成する。まず、ディスクキャッシュ情報３０１からファイル名（ファイルＩＤ）８２６を取り出し、そのファイル名８２６と同一のファイル名のファイルをディスクから検索する。そして、ディスクから検索されたファイルと共に格納されているそのファイルの特性情報をファイル状態８０１としてメモリ１００に読み込む。
【００５８】
次に、ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報３０１から、ディスクキャッシュ管理情報８０２を取り出して、ディスクキャッシュ管理情報のアドレス８１６をファイル状態８０１に登録する（ステップＳ３４）。ディスクキャッシュ管理情報８０２はファイル状態８０１の１エントリとして存在している。
【００５９】
次に、ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報３０１から、ディスクキャッシュ検索情報８０３を取り出し、ディスクキャッシュ検索情報のアドレス８１９をディスクキャッシュ管理情報８０２へ登録する（ステップＳ３５）。ディスクキャッシュ検索情報８０３は、ディスクキャッシュ管理情報８０２の１エントリとして存在する。
【００６０】
最後に、ディスクキャッシュ情報復元手段２０４は、メモリフレーム管理情報８０４にディスクキャッシュ管理情報のアドレス８１６とディスクキャッシュ検索情報のアドレス８１９を追加する（ステップＳ３６）。ディスクキャッシュ検索情報のアドレス８１９の代わりにファイル状態のアドレス８１７としてもよい。
【００６１】
ディスクキャッシュ８０６として登録されているメモリフレーム８０５は複数存在するので、各々に対してこれらの位置情報を登録することになる。即ち、各メモリフレーム８０５に対してメモリフレーム管理情報８０４がそれぞれ作成される。ディスクキャッシュ８０６に該当するメモリフレーム管理情報８０４は、ディスクキャッシュ検索情報８０３を検索することによって得られる。このようにして、ディスキャッシュ情報復元手段２０４は、ＯＳ２００の再起動前に利用していたディスクキャッシュの情報をＯＳ２００内に復元し、ディスクキャッシュ８０６が復元される。
【００６２】
次に、本実施の形態の効果について説明する。本実施の形態では、再起動前に、ディスクキャッシュ情報作成手段２０２がディスクキャッシュ情報３０１を作成し、ディスクキャッシュ情報退避領域３００に格納し、ＯＳ２００の再起動後に、ディスクキャッシュ保護手段２０３が、再起動前にＯＳ２００によって利用されていたディスクキャッシュ領域４００が、再起動後のＯＳ２００によって初期化されないように保護し、ディスクキャッシュ情報復元手段２０４が、ディスクキャッシュ情報退避領域３００に格納されているディスクキャッシュ情報３０１に基づいて、再起動前にＯＳ２００が利用していたディスクキャッシュの情報を、再起動後のＯＳ２００内に復元するよう動作する。
【００６３】
これにより、メモリ１００上のディスクキャッシュ領域４００を保護するとともに、メモリ１００上のディスクキャッシュ領域４００に蓄えられたディスクキャッシュ８０６を再起動後のＯＳ２００が再利用することができる。即ち、電源が切断されないような状況でも半導体ディスク８２５へディスクキャッシュ８０６をコピーすることがないので、ディスクアクセス速度が劣化しない。
【００６４】
（第１の実施の形態の変形例１）
ディスクキャッシュ情報作成手段２０２は、再起動前の任意の時間に処理を実行することができる。再起動直前に一度だけ処理を実行する場合と、再起動前に定期的に処理を実行する場合が考えられる。再起動直前に一度だけ処理を実行する場合は、定期的に処理を実行する場合と比較して、ディスクキャッシュ再利用処理にかかる処理負荷は低いが、再起動時間がディスクキャッシュ情報作成手段２０２を実行する分だけ長くなってしまう。一方、再起動前に定期的に処理を実行する場合は、再起動直前に一度だけ処理を実行する場合と比較して、処理負荷が高いが、再起動を開始してから再起動が完了するまでの時間を短縮することができる。
【００６５】
（第１の実施の形態の変形例２）
変形例２は、ディスクキャッシュ情報作成手段２０２を再起動前に定期的に実行しているという前提のもとで、ＯＳ２００に障害が発生した場合に、データの復旧方法を提供するというものである。ここでの障害は、ＯＳ２００内部のデータを破壊し、障害発生以降のＯＳ２００の実行が継続困難な状態を指す。データは、ＯＳ２００の実行状態を指す。つまり、プログラム（テキスト）は破壊されず、変数の内容が破壊されている状態をここでの障害と呼ぶ。
【００６６】
一般的に、このような障害が発生した後、ＯＳ２００は再度新たにＯＳ２００をロードする。ＯＳ２００のロード後、メモリ初期化処理においてディスクキャッシュ情報復元手段２０４が呼び出される。ディスクキャッシュ情報作成手段２０２を再起動前に定期的に実行しているため、ディスクキャッシュ情報退避領域３００には、ディスクキャッシュ情報３０１が格納されている。
【００６７】
図６のフローチャートを参照して、第１の実施の形態の変形例２におけるディスクキャッシュ情報復元手段２０４の動作を説明する。ステップＳ４１からメモリフレーム管理情報８０４に当該情報を追加するステップＳ４６までの処理は、第１の実施の形態のステップＳ３１乃至ステップＳ３６の処理と同様であるのでその説明は省略する。
【００６８】
ステップＳ４６の処理が終了すると、次に、メモリフレーム管理情報８０４のダーティーフラグを確認する（ステップＳ４７）。ダーティーフラグとは、メモリフレーム管理情報８０４が指し示すメモリフレーム８０５内のデータが、ディスク（ハードディスク等の大容量の不揮発性記憶装置）に書き込まれているか否かを示すフラグである。
【００６９】
このダーティーフラグがある場合、当該メモリフレーム８０５内のデータはディスクに書き込まれていないことを示す。一方、このダーティーフラグがない場合、当該メモリフレーム８０５内のデータがディスクに書き込み済みであることを示す。ダーティーフラグのあり、なしは、メモリデータの値１（あり）と値０（なし）で表すことができる。
【００７０】
ダーティーフラグがある場合（値１の場合）（ステップＳ４８のＹＥＳ）、メモリフレーム８０５の内容をディスクに書き出す（ステップＳ４９）。その後、ダーティーフラグの値を０にし、ステップＳ４１に戻り、ステップＳ４１以降の処理が繰り返し実行される。
【００７１】
一方、ダーティーフラグがない場合（値０の場合）（ステップＳ４８のＮＯ）、ステップＳ４１に戻り、ステップＳ４１以降の処理が繰り返し実行される。即ち、ステップＳ４１では、次のディスクキャッシュ８０６に関するディスクキャッシュ情報３０１を１つ取り出す。その後、ステップＳ４２に進む。
【００７２】
本発明が適用されていない場合は、ディスクキャッシュ８０６に蓄えられている更新情報は、上記障害によって紛失してしまうことになる。第１の実施の形態の変形例２では、障害発生後に、ディスクキャッシュ８０６の内容をディスクに書き戻す。これにより、ディスクキャッシュ８０６にしかないディスク更新情報の紛失を防ぐことができるという効果がある。
【００７３】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。図７に示すように、本発明の第２の実施の形態に係るコンピュータの主記憶装置（メモリ）１０１は、第１の実施の形態の構成に加えて、ＯＳ２００内にファイルアクセス手段２０５を備える。
【００７４】
ファイルアクセス手段２０５は、ＯＳ２００によって実行されているプログラムがファイルにアクセスするための手段を提供する。
【００７５】
次に、図８のフローチャートを参照して、第２の実施の形態におけるディスクキャッシュ情報復元手段２０４の処理手順を詳細に説明する。第２の実施の形態におけるディスクキャッシュ情報復元手段２０４は、ＯＳ２００によって実行されているプログラムがファイルにアクセスしたときに実行される。
【００７６】
まず、プログラムがファイルアクセス手段２０５を使ってファイルにアクセスする（ステップＳ５１）。ファイルアクセス手段２０５は、ファイル状態８０１を作成するので、第１の実施の形態のように、ディスクキャッシュ情報復元手段２０４がファイル状態８０１を作成する（図５のステップＳ３３）必要はない。
【００７７】
次に、アクセスされているファイルのディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００から取り出す（ステップＳ５２）。もし、どのディスクキャッシュ情報３０１とも一致しない、即ち、再起動前に利用していたファイル以外のファイルにアクセスしようとしている場合（ステップＳ５３のＹＥＳ）は、そのまま処理を終了する。
【００７８】
一方、アクセスしようとしているファイルのファイル名と一致するファイル名８２６を有するディスクキャッシュ情報３０１がある場合（ステップＳ５３のＮＯ）は、ディスクキャッシュ情報３０１に含まれるディスクキャッシュ管理情報８０２のアドレス（ディスクキャッシュ管理情報のアドレス８１６）をファイル状態８０１に登録する（ステップＳ５４）。
【００７９】
次に、ディスクキャッシュ検索情報８０３のアドレス（ディスクキャッシュ検索情報のアドレス８１９）をディスクキャッシュ管理情報８０２に登録する（ステップＳ５５）。最後に、メモリフレーム管理情報８０４に当該情報を追加する（ステップＳ５６）。当該情報とは、ディスクキャッシュ管理情報のアドレス８１６とディスクキャッシュ検索情報のアドレス８１９である。ディスクキャッシュ８０６として登録されているメモリフレーム８０５は複数存在するので、各メモリフレーム８０５に対してメモリフレーム管理情報８０４がそれぞれ作成されることになる。このようにしてディスクキャッシュ８０６が復元される。
【００８０】
次に、本発明の第２の実施の形態の効果について説明する。本発明の第２の実施の形態では、ファイルアクセス毎に、ディスクキャッシュ８０６が復元されるため、再起動直後にすべてのディスクキャッシュ８０６を復元する第１の実施の形態と比較して、再起動時間を短縮することができる。
【００８１】
（実施例）
次に、具体的な実施例の構成および動作について、図９と図１０を参照して説明する。
【００８２】
図９に示すように、ＬｉｎｕｘＯＳ５００上には、ファイルオープン情報８００の具体例としてファイル構造体８２７、ファイル状態８０１の具体例としてｉノードオブジェクト８２８、ディスクキャッシュ管理情報８０２の具体例としてアドレス空間オブジェクト８２９、ディスクキャッシュ検索情報８０３の具体例として基数ツリー８３０、メモリフレーム管理情報８０４の具体例としてページディスクリプタ８３１、メモリフレームの具体例としてページフレーム８３２、ディスクキャッシュ８０６の具体例としてページキャッシュ８３３がそれぞれ配置されている。
【００８３】
また、図１０に示すように、主記憶装置（メモリ）１０２には、ディスクキャッシュ情報作成手段２０２、ディスクキャッシュ保護手段２０３、ディスクキャッシュ情報復元手段２０４、ディスクキャッシュ情報退避領域３００、ディスクキャッシュ情報３０１が配置される。さらに、再起動手段の具体例としてｋｅｘｅｃ５０１、ディスクキャッシュ領域４００の具体例としてページキャッシュ領域６００、メモリフレーム８０５の具体例としてページフレーム８３２、ディスクキャッシュ８０６の具体例としてページキャッシュ８３３がそれぞれ配置されている。
【００８４】
次に、図１１を参照して、ディスクキャッシュ情報退避領域３００とディスクキャッシュ情報３０１の具体例について説明する。ファイル名８０９の具体例としてファイル名８０９の他にｉノード番号８３４が配置される。ｉノード番号８３４は、ディスク上のファイルを一意に識別するための識別子である。ｉノード番号８３４は、ｉノードオブジェクト８２８（図９）に格納されている。
【００８５】
ｋｅｘｅｃ５０１は、Ｌｉｎｕｘカーネルにおける再起動機能である。これを使うと現在実行中のＬｉｎｕｘカーネルから別のＬｉｎｕｘカーネルを直接ブートして移ることができるようになる。ｋｅｘｅｃ５０１は、ハードウェア・リセットもなく、ファームウェア操作もなく、ブートローダは全く関係しない。
【００８６】
これによる大きな利点は、システム・リブートが非常に速くなることである。また、ハードウェア・リセットやファームウェア操作を介在させないので、再起動前のメモリ状態が再起動後もそのまま残ることになる。
【００８７】
次に、図１２、図１３および図１４のフローチャートを参照して本実施例の動作について詳細に説明する。
【００８８】
最初に、図１２のフローチャートを参照して、ディスクキャッシュ情報作成手段２０２の動作について説明する。
【００８９】
まず、ディスクキャッシュ情報作成手段２０２は、ｉノードオブジェクト８２８を取得する（ステップＳ６１）。ｉノードオブジェクト８２８は、ファイルに対してプログラムが読み書きを行う際に作成される。従って、ファイルに対して全く読み書きがなされていないならｉノードオブジェクト８２８は存在しない（ステップＳ６２のＹＥＳ）ので、そのまま処理を終了する。
【００９０】
一方、ｉノードオブジェクト８２８が存在する（ステップＳ６２のＮＯ）なら、ｉノードオブジェクト８２８からファイル名８０９を取得する（ステップＳ６３）。ファイル名８０９は当該ファイルのｉノード番号８３４でもよい。
【００９１】
次に、ディスクキャッシュ情報作成手段２０２は、アドレス空間オブジェクト８２９を取得する（ステップＳ６４）。アドレス空間オブジェクト８２９は、ｉノードオブジェクト８２８に紐付けられているので、ｉノードオブジェクト８２８からアドレス空間オブジェクト８２９の位置を取得することによってアドレス空間オブジェクト８２９を取得することができる。
【００９２】
次に、ディスクキャッシュ情報作成手段２０２は、基数ツリー８３０を取得する（ステップＳ６５）。基数ツリー８３０は、アドレス空間オブジェクト８２９に紐付けられているので、アドレス空間オブジェクト８２９から基数ツリー８３０の位置を取得することによって、基数ツリー８３０を取得することができる。
【００９３】
次に、ディスクキャッシュ情報作成手段２０２は、ページディスクリプタ８３１を取得する（ステップＳ６６）。ページディスクリプタ８３１の位置情報はページフレーム番号と一致する。つまり、ＬｉｎｕｘＯＳ５００内のページディスクリプタ８３１の配列の添え字がページフレーム番号である。よって、ページディスクリプタ８３１の位置情報は、基数ツリー８３０のエントリを逐次検索することによって取得することができ、これらの位置情報を使ってページディスクリプタ８３１を取得することができる。
【００９４】
ディスクキャッシュ情報作成手段２０２は、基数ツリー８３０のすべてのエントリを検索し、すべてのページディスクリプタ８３１の取得が終了するまで繰り返し行う。次に、ディスクキャッシュ情報３０１を作成し（ステップＳ６７）、ディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００へ保存する（ステップＳ６８）。その後、ステップＳ６１に戻り、ステップＳ６１以降の処理が繰り返し実行される。即ち、ステップＳ６１において、次のｉノードオブジェクト８２８を取得する。その後、ステップＳ６２に進む。
【００９５】
次に、図１３のフローチャートを参照して、ｋｅｘｅｃ５０１とディスクキャッシュ保護手段２０３の動作について説明する。
【００９６】
まず、ｋｅｘｅｃ５０１を実行し、ｋｅｘｅｃ５０１がＬｉｎｕｘＯＳ５００をロードする（ステップＳ７１）。ＬｉｎｕｘＯＳ５００のロードが終了すると、ＬｉｎｕｘＯＳ５００によってメモリ１０２の初期化が開始される。メモリ１０２の初期化が開始される時点でディスクキャッシュ保護手段２０３が呼び出されることになる。
【００９７】
次に、ディスクキャッシュ保護手段２０３は、ディスクキャッシュ情報退避領域３００の位置を取得する（ステップＳ７２）。ディスクキャッシュ情報退避領域３００の位置は、ＬｉｎｕｘＯＳ５００をロードする際にＬｉｎｕｘＯＳ５００実行の引数として受け渡す方法でもよいし、ディスクキャッシュ情報退避領域３００をメモリの固定位置に配置し、その位置を予めＬｉｎｕｘＯＳ５００のデータとして保持しておく方法でもよい。
【００９８】
次に、ディスクキャッシュ保護手段２０３は、ページディスクリプタ８３１を新規作成する（ステップＳ７３）、次に、ディスクキャッシュ情報退避領域３００の中から先ほど作成したページディスクリプタ８３１と同じページフレーム番号のページディスクリプタ８３１を取得する（ステップＳ７４）。該当するページディスクリプタ８３１を取り出すには、ディスクキャッシュ情報３０１に含まれるすべてのページディスクリプタ８３１を検索することになる。
【００９９】
該当するページディスクリプタ８３１がディスクキャッシュ情報３０１の中に含まれているのであれば（ステップＳ７５のＹＥＳ）、当該ページフレーム８３２はページキャッシュ８３３として利用されている領域なので、ページフレーム８３２の初期化は行わずに、取り出したページディスクリプタ８３１の内容を、ステップＳ７３で作成したページディスクリプタ８３１に上書きする（ステップＳ７６）。
【０１００】
該当するページディスクリプタ８３１がディスクキャッシュ情報３０１の中に含まれていないのであれば（ステップＳ７５のＮＯ）、ページフレーム８３２を初期化する（ステップＳ７７）。
【０１０１】
ステップＳ７６またはステップＳ７７の処理が終了すると、すべてのページディスクリプタ８３１を作成したか否かを確認する（ステップＳ７８）。この確認はすべてのページフレーム８３２を初期化したか否かを確認することを目的としている。すべてのページディスクリプタ８３１を作成したのであれば（ステップＳ７９のＹＥＳ）、ディスクキャッシュ保護手段２０３の処理を終了する。
【０１０２】
一方、すべてのページディスクリプタ８３１を作成していないのであれば（ステップＳ７９のＮＯ）、ステップＳ７３に戻り、ステップＳ７３以降の処理が繰り返し実行される。即ち、ステップＳ７３において、次のページディスクリプタ８３１を新規作成する。その後、ステップＳ７４に進む。
【０１０３】
最後に、図１４のフローチャートを参照して、ディスクキャッシュ情報復元手段２０４の動作について説明する。
【０１０４】
まず、ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報３０１をディスクキャッシュ情報退避領域３００から１つ取り出す（ステップＳ８１）。ディスクキャッシュ情報３０１を取り出すことができたら（ステップＳ８２のＮＯ）、ｉノードオブジェクト８２８を作成する（ステップＳ８３）。ｉノードオブジェクト８２８は、次のように作成する。
【０１０５】
まず、ディスクキャッシュ情報３０１からファイル名８０９を取り出し、そのファイル名８０９と同一のファイル名のファイルをディスクから検索する。そして、検索されたファイルと共に格納されているｉノード情報をｉノードオブジェクト８２８としてメモリに読み込む。次に、ディスクキャッシュ情報３０１から、アドレス空間オブジェクト８２９を取り出して、ｉノードオブジェクト８２８に登録する（ステップＳ８４）。アドレス空間オブジェクト８２９は、ｉノードオブジェクト８２８の１エントリとして存在している。
【０１０６】
次に、ディスクキャッシュ情報復元手段２０４は、ディスクキャッシュ情報３０１から、基数ツリー８３０を取り出して、アドレス空間オブジェクト８２９へ登録する（ステップＳ８５）。基数ツリー８３０は、アドレス空間オブジェクト８２９の１エントリとして存在する。
【０１０７】
最後に、ディスクキャッシュ情報復元手段２０４は、ページディスクリプタ８３１にアドレス空間オブジェクト８２９の位置情報と基数ツリー８３０の位置情報を追加する（ステップＳ８６）。ページキャッシュ８３３として登録されているページフレーム８３２は複数存在するので、それら１つ１つに対してこれらの位置情報を登録することになる。ページキャッシュ８３３に該当するページディスクリプタ８３１は、基数ツリー８３０を検索することによって得られる。
【０１０８】
以上説明したように、本実施の形態によれば、電源が切断されないような状況で、再起動後もディスクキャッシュ８０６のデータを再利用する際に、ディスクアクセスの速度が劣化しないという効果が得られる。その理由は、半導体ディスク８２５等の不揮発性記憶装置へデータをコピーしないためである。即ち、メモリ上のディスクキャッシュ８０６のデータをそのまま再利用することによって、不揮発性記憶装置へデータをコピーしなくても、再起動後のＯＳが再起動前に利用していたメモリ上のディスクキャッシュ８０６のデータをそのまま再利用することができるからである。このため、ディスクアクセス速度を劣化させることがない。
【０１０９】
なお、本発明は上記実施形態に限定されず、種々の変形および応用が可能である。
【０１１０】
上記実施の形態に係る主記憶装置（メモリ）を備えるコンピュータは、専用のハードウェアに限られるものではなく、通常のコンピュータによっても実現することができる。具体的には、上記実施の形態では、プログラムが、ＲＯＭ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto-Optical disk）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、コンピュータに上記動作を実行させるように構成してもよい。
【０１１１】
また、プログラムをインターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するようにしてもよい。さらに、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。
【０１１２】
また、上述の機能を、ＯＳ（Operating System）が分担又はＯＳとアプリケーションの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【産業上の利用可能性】
【０１１３】
本発明によれば、パーソナルコンピュータのファイルアクセス処理の高速化といった用途に適用できる。
【符号の説明】
【０１１４】
１００，１０１，１０２  主記憶装置（メモリ）
２００  ＯＳ
２０１  再起動手段
２０２  ディスクキャッシュ情報作成手段
２０３  ディスクキャッシュ保護手段
２０４  ディスクキャッシュ情報復元手段
２０５  ファイルアクセス手段
３００  ディスクキャッシュ情報退避領域
３０１  ディスクキャッシュ情報
４００  ディスクキャッシュ領域
５００  ＬｉｎｕｘＯＳ
５０１  ｋｅｘｅｃ
６００  ページキャッシュ領域
７００  ファイルＡ
８００  ファイルオープン情報
８０１  ファイル状態
８０２  ディスクキャッシュ管理情報
８０３  ディスクキャッシュ検索情報
８０４  メモリフレーム管理情報
８０５  メモリフレーム
８０６  ディスクキャッシュ
８０７  ブロック番号
８０８  メモリフレーム番号
８０９  ファイル名
８１０  ファイル参照数
８１１  アクセスモード
８１２  ファイルオフセット
８１３  ファイルＩＤ
８１４  ファイルの更新日時
８１５  ファイルの長さ
８１６  ディスクキャッシュ管理情報のアドレス
８１７  ファイル状態のアドレス
８１８  ディスクキャッシュの総メモリフレーム数
８１９  ディスクキャッシュ検索情報のアドレス
８２０  アプリケーションプログラム
８２１  キャッシュシステムドライバ
８２２  ハードディスクドライバ
８２３  ＨＤＤ
８２４  フラッシュメモリドライバ
８２５  半導体ディスク
８２６  ファイル名（ファイルＩＤ）
８２７  ファイル構造体
８２８  ｉノードオブジェクト
８２９  アドレス空間オブジェクト
８３０  基数ツリー
８３１  ページディスクリプタ
８３２  ページフレーム
８３３  ページキャッシュ
８３４  ファイル名（ｉノード番号）
【図１】
2010191549.tif 000003
【図２】
2010191549.tif 000004
【図３】
2010191549.tif 000005
【図４】
2010191549.tif 000006
【図５】
2010191549.tif 000007
【図６】
2010191549.tif 000008
【図７】
2010191549.tif 000009
【図８】
2010191549.tif 000010
【図９】
2010191549.tif 000011
【図１０】
2010191549.tif 000012
【図１１】
2010191549.tif 000013
【図１２】
2010191549.tif 000014
【図１３】
2010191549.tif 000015
【図１４】
2010191549.tif 000016
【図１５】
2010191549.tif 000017
【図１６】
2010191549.tif 000018
【図１７】
2010191549.tif 000019
【図１８】
2010191549.tif 000020
【図１９】
2010191549.tif 000021
【図２０】
2010191549.tif 000022
【図２１】
2010191549.tif 000023