(57)【要約】ページングによる仮想記憶管理を行っているコンピュータにおいて、訂正が困難なメモリエラーが発生した場合に障害を復旧させてプロセスの実行を継続させる。訂正が困難なメモリエラーが発生したとき、エラー検出装置１０３から出力される割り込み信号１０７により、ＣＰＵ１０１は実行中のプロセスを中断し、制御をＯＳに移す。ＯＳは、メモリエラーが発生したページ枠に格納されているページの属性をページ表２０２から参照し、読み込み専用ならば、物理メモリ管理表２０１を更新してエラーの生じたページ枠を使用禁止状態に設定し、エラーの生じたページ枠に格納されていた仮想ページが何れのページ枠にも割り当てられていないようにページ表２０２を更新し、プロセスの実行を再開させる。プロセスの実行再開後、ページフォルト処理が引き起こされ、メモリエラーに遭遇した仮想ページが正常な他のページ枠に格納される。
2008099786.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置が行うメモリ障害復旧方法において、
プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とするメモリ障害復旧方法。
【請求項２】
前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする請求項１記載のメモリ障害復旧方法。
【請求項３】
前記発生したメモリエラーが自動訂正可能なメモリエラーであれば、メモリエラーを検出したエラー検出装置で自動訂正を行い、訂正が困難なメモリエラーであれば、前記情報処理装置が前記割り込みを行うことを特徴とする請求項１または２記載のメモリ障害復旧方法。
【請求項４】
仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置において、
主記憶装置のメモリエラーを検出し、割り込み信号を発生するエラー検出装置と、
前記割り込み信号を受信するＣＰＵと、を備え、
前記ＣＰＵは、プロセスの実行中に前記割り込み信号を受信したとき前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする情報処理装置。
【請求項５】
前記ＣＰＵは、前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記エラー検出装置は、前記発生したメモリエラーが自動訂正可能なメモリエラーであれば自動訂正を行い、訂正が困難なメモリエラーであれば前記割り込み信号を出力することを特徴とする請求項４または５記載の情報処理装置。
【請求項７】
仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式のコンピュータに、プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断するステップと、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップと、を実行させるためのプログラム。
【請求項８】
前記コンピュータに、前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップをさらに実行させることを特徴とする請求項７記載のプログラム。
【請求項９】
前記メモリエラーは、エラー検出装置で自動訂正が困難なメモリエラーであることを特徴とする請求項７または８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置におけるメモリ障害復旧方法に関し、特にプロセスの実行中に訂正が困難なメモリエラーが発生したときのメモリ障害復旧方法、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
情報処理装置におけるメモリ障害復旧方法の一例が、特開２０００−１３２４６２号公報（以下、文献１と称する）に記載されている。以下、図１および図２を参照して、文献１に記載のメモリ障害復旧方法を説明する。【０００３】
図１を参照すると、文献１に記載の情報処理装置は、ＣＰＵ１０１、主記憶装置１０２、エラー検出装置（ＥＣＣ）１０３、サービスプロセッサ１０４、サービスプロセッサ用記憶装置（ＲＯＭ）１０５、補助記憶装置１０９及びそれらを接続するデータバス１０８から構成されている。【０００４】
このような構成を有する情報処理装置において、システム運転中の主記憶装置１０２のプログラムエリアにエラーが発生した場合、図２に示される処理が実行される。最初にエラー検出装置１０３がメモリエラーの発生を検出し、メモリエラーの内容を確認する（Ｓ１０１）。エラー検出装置１０３は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）と呼ばれる回路が用いられている。ＥＣＣは、メモリに誤った値が記録されていることを検出し、正しい値に訂正することができるエラー検出および訂正回路である。通常のＥＣＣで訂正することのできるエラービット数は１ビットのみであるが、他の種類のＥＣＣであれば、２ビットないし多ビットエラーを訂正できるものもある。文献１では、通常のＥＣＣ（１ビットのみの訂正機能）を使用している。１ビットのエラーであれば（Ｓ１０２のＮＯ）、ＥＣＣによるエラー訂正を実行し（Ｓ１０３）、処理を終了する。【０００５】
２ビット以上のエラーであれば、エラー検出装置１０３はＣＰＵ１０１およびサービスプロセッサ１０４に向けて割り込み信号１０６、１０７を発生し、ＣＰＵ１０１を一時停止させ（Ｓ１０４）、またサービスプロセッサ１０４に復旧処理を依頼する。サービスプロセッサ１０４は、補助記憶装置１０９内にあるバックアップファイルからメモリエラーが発生したアドレスのデータとその一つ前のアドレスのデータとを取得し（Ｓ１０５）、主記憶装置１０２上の修復エリアにこれらのデータを書き込む（Ｓ１０６）。次に、エラーの発生したメモリアドレスの一つ前のアドレスに修復エリアに書き込んだデータに分岐するための分岐命令を書き込み、また修復エリアに書き込んだデータの直後に、主記憶装置１０２のメモリエラーが発生したアドレスの次のアドレスに分岐するための分岐命令を書き込む（Ｓ１０７）。そして、プログラムカウンタの値をメモリエラーが発生したアドレスの一つ前のアドレス（書き込んだ分岐命令のアドレス）に変更し（Ｓ１０８）、ＣＰＵ１０１に対する一時停止命令を解除する（Ｓ１０９）。【０００６】
ＣＰＵ１０１の実行が再開されると、メモリエラーが発生したアドレスの一つ前のアドレスに設定された分岐命令が実行されるため、主記憶装置１０２におけるメモリエラーが発生したアドレスのデータとその一つ前のアドレスのデータの代わりに、修復エリアに書き込まれたこれらのバックアップデータが実行され、その後に主記憶装置１０２におけるメモリエラーが発生したアドレスの一つ後のデータに分岐する。これによって、訂正が困難なメモリエラーが発生した場合でも、プログラムを継続して実行することができる。
【発明の開示】
【０００７】
上述した従来のメモリ障害復旧方法では、訂正が困難なメモリエラーが発生した主記憶装置のメモリ素子をアクセスする代わりに分岐命令によって修復エリアがアクセスされるように実行プログラムを書き換えているため、マルチタスクのように実行プログラムが複数動作する場合や、障害の発生しているメモリ領域にアクセスする命令が実行プログラム内に複数存在している場合は、アクセスがある都度、余分な分岐命令を実行しなければならず、オーバヘッドが大きくなるという課題がある。特に、ページングによる仮想記憶管を採用したパーソナルコンピュータ等のコンピュータに上述した技術を適用した場合、訂正が困難なメモリエラーが発生したメモリ素子を含むページフレームに或るプログラムの或るページが格納され、そのメモリ素子のアクセスによりメモリエラーが発生して上記方法で障害を復旧したとしても、そのページがそのページフレームから掃き出され、別のプログラムや同じプログラムの別のページが新たに格納された場合には、再度同じような復旧方法を実行する必要があるため、オーバヘッドがより一層大きくなる。
【０００８】
また上述したメモリ障害復旧方法では、サービスプロセッサ１０４やサービスプロセッサ用記憶装置１０５という、一般のパーソナルコンピュータには余り使われない特殊な装置が必要になるという課題もある。
【０００９】
さらに上述したメモリ障害復旧方法では、読み込みのみ可能なプログラムエリアに発生したメモリエラーを対象としており、書き込み可能なデータエリアに発生した訂正が困難なメモリエラーについてはその障害を復旧することができなかった。
【００１０】
本発明の目的は、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることができるようにすることにある。
【００１１】
上記目的を達成するための本発明のメモリ障害復旧方法は、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置におけるメモリ障害復旧方法において、プロセスの実行中に訂正が困難なメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させる。
【００１２】
また、上記目的を達成するための本発明の情報処理装置は、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置において、主記憶装置のメモリエラーを検出し、割り込み信号を発生するエラー検出装置と、前記割り込み信号を受信するＣＰＵとを備え、前記ＣＰＵは、プロセスの実行中に前記割り込み信号を受信したとき前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させる。
【００１３】
また、上記目的を達成するための本発明のプログラムは、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式のコンピュータに、プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断するステップと、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップと、を実行させるためのプログラムである。
【００１４】
本発明によれば、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることが可能となる。その理由は、メモリエラーが発生したページフレームに格納されているページの属性が読み込み専用ならば、そのページフレームを使用禁止状態に設定すると共に、仮想ページが何れのページフレームにも割り当てられていないようにページ表を更新してプロセスの実行を再開させることで、ページフォルト処理を意図的に引き起こし、ページフォルト処理により、メモリエラーに遭遇した仮想ページをメモリ障害の無い別のページフレームに割り当てるようにしているためである。
【図面の簡単な説明】
【００１５】
【図１】文献１に記載の情報処理装置の構成を示すブロック図である。
【図２】文献１に記載の情報処理装置による障害復旧手順を示すフローチャートである。
【図３】スワップ処理を行う情報処理装置の構成の一例を示すブロック図である。
【図４】ページ表エントリの構成図である。
【図５】物理メモリ管理表エントリの構成図である。
【図６】スワップ処理の手順を示すフローチャートである。
【図７】ページフォルト処理を行う情報処理装置の構成の一例を示すブロック図である。
【図８】ＴＬＢエントリの構成図である。
【図９】ファイル参照エントリの構成図である。
【図１０】ページフォルト処理の手順を示すフローチャートである。
【図１１】本発明の第１の実施形態のブロック図である。
【図１２】本発明の第１の実施形態の動作手順を示すフローチャートである。
【図１３】本発明の第１の実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順を示すフローチャートである。
【図１４】本発明の第２の実施の形態のブロック図である。
【図１５】スワップ情報格納部エントリの構成図である。
【図１６】本発明の第２の実施形態の動作手順を示すフローチャートである。
【図１７】本発明の第２の実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順を示すフローチャートである。
【図１８】本発明の実施例のブロック図である。
【図１９】本発明の実施例の動作手順を示すフローチャートである。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態について説明するが、それに先立ってページング方式による仮想記憶方式について、特にスワップ機能ならびにページフォルト機能を中心に説明する。【００１７】
ページング方式による仮想記憶方式は、計算機のアーキテクチャが提供する論理的なアドレス空間（仮想アドレス空間）をページと呼ばれる固定長の領域に分割すると共に主記憶も同じ大きさのページフレーム（ページ枠）に分割し、仮想アドレスと主記憶アドレスとの対応をページ表によってページ単位で管理し、プロセス実行時にアドレス変換機構によって仮想アドレスを物理アドレスに動的に変換する方式である。ページ表内の各ページに対応するエントリには、そのページの属性、そのページが主記憶装置に存在しているか否かを示すプレゼントビット、主記憶装置に存在している場合にはそのページフレーム番号（存在していない場合には補助記憶装置上のスワップ領域に退避されているページのアドレス）が含まれている。【００１８】
アドレス変換機構によるアドレス変換の過程において、プレゼントビットが１（ページが主記憶装置に有る状態）ならば仮想アドレスから物理アドレスの変換がそのまま行われるが、プレゼントビットが０（ページが主記憶装置に無い状態）ならばページフォルト割り込みが発生し、制御は基本ソフトウェア（以下、ＯＳと称す）に移る。ＯＳはページフォルト処理において、必要なページを補助記憶装置から主記憶装置の未使用のページフレームに転送し、それに合わせてページ表を書き換える。主記憶装置に未使用のページフレームが存在しないときは、所定のページ置き換えアルゴリズムに従って主記憶装置上の何れかのページを補助記憶装置上のスワップ領域に書き出した後、ページの読み込みを行う。ページをスワップ領域に書き出す処理をスワップ処理と呼ぶ。【００１９】
スワップ処理について図３を参照して説明する。図３はスワップ処理を行う情報処理装置の構成の一例を示すブロック図であり、この情報処理装置は、ＣＰＵ１０１と主記憶装置１０２と補助記憶装置１０９とから構成される。ＣＰＵ１０１は、スワップ処理手段２０５がある。主記憶装置１０２には、物理メモリ管理表２０１、ページ表２０２及び複数のページフレーム２０３がある。補助記憶装置１０９には、スワップ領域２０６がある。【００２０】
物理メモリ管理表２０１は、ページフレーム２０３がどのような状態にあるのかを管理するための表である。ページ表２０２は、仮想メモリアドレスを物理メモリアドレスに変換するための表であり、プロセス毎に生成される。プロセスは仮想メモリアドレスを指定することによってデータを読み書きする。プロセスが仮想メモリアドレスを指定してデータにアクセスした場合は、ＯＳがページ表２０２を用いて仮想メモリアドレスを物理メモリアドレスに変換する。これによりプロセスは、物理メモリアドレスが示す主記憶（物理メモリとも称す）領域にアクセスすることができる。物理メモリはページと同じ大きさのブロック単位で管理されており、１ページに相当する物理メモリ領域がページフレーム２０３となる。スワップ領域２０６は、補助記憶装置１０９に設置された一時記憶領域であり、物理メモリの内容が一時的に退避される領域である。スワップ領域２０６へのアクセスはページフレーム単位である。【００２１】
ページ表２０２は、図４に示すページ表エントリ３０１から構成される。ページ表エントリ３０１は、保護ビット３０２、プレゼントビット３０３、ページフレーム番号３０４から構成される。仮想メモリアドレスは、ページ表エントリ３０１のエントリ番号（仮想ページ番号）とオフセットの２つの部分に論理的に分割される。仮想メモリアドレスを物理メモリアドレスに変換する際は、まず仮想メモリアドレスのページ番号を確認して、それに対応するページ表エントリ３０１を取得する。そして、ページ表エントリ３０１中のページフレーム番号３０４を取得し、そのページフレーム番号３０４にオフセットを結合して、物理メモリアドレスを生成する。保護ビット３０２は、アクセスするページの属性を記述する。ページの属性には、「読み込みのみ可能」、「書き込み可能」あるいは「読み込み書き込み可能」の種類がある。プレゼントビット３０３は、アクセスするページが物理メモリ上にあるのかどうかを判別するためのビットである。物理メモリにない場合は、スワップ処理によってスワップ領域２０６へ一時的に内容が退避されている場合がある。【００２２】
物理メモリ管理表２０１は、図５に示す物理メモリ管理表エントリ４０１から構成される。物理メモリ管理表エントリ４０１は、状態フラグ４０２、修正ビット４０７、参照頻度４０４、プロセス番号４０５、仮想ページ番号４０３から構成される。各ページフレーム２０３にはページフレーム番号が一意につけられている。ページフレーム番号は、物理メモリ管理表２０１のエントリ位置と一致する。すなわち、物理メモリ管理表２０１の１番目のエントリはページフレーム番号１のページフレーム２０３のための管理情報となる。【００２３】
状態フラグ４０２は、「使用中」「未使用」「使用禁止」など、当該ページフレーム２０３の状態を表すフラグである。参照頻度４０４は、当該ページフレームに格納されているデータが使われている頻度を表す数値であり、通常は最後のアクセスからの経過時間を格納している。修正ビット４０７は、当該ページフレーム２０３の内容が書き換えられているかどうかを示すビットである。書き換えられているなら「１」に、書き換えられていないなら「０」に設定される。修正ビット４０７の利用方法を以下に例示する。まず、プロセスへ物理メモリ領域（ページフレーム）が割り当てられる。割り当てられた時点で、物理メモリ領域には何も書き込みが行われていないので修正ビット４０７は０のままである。そして、プロセスが何らかのデータを当該メモリ領域に書き込んだ時点で修正ビット４０７は１に変わる。そして、そのデータがファイルに保存されると修正ビット４０７は０に戻る。つまり、修正ビット４０７は、物理メモリ上のデータと同一のデータが、ディスクなどその他の装置上に存在するときに０、存在しないときに１を示す。物理メモリ管理表エントリ４０１中のプロセス番号４０５と仮想ページ番号４０３は、当該ページフレーム２０３を参照しているプロセスおよびその仮想ページの番号を示す。【００２４】
スワップ処理の手順を図６に示す。前述したように、スワップ処理は、新たなページを読み込むための未使用のページフレームが主記憶装置に存在しなかった場合に開始される。最初に参照頻度４０４の最も低い物理メモリ管理表エントリ４０１を取得する（Ｓ２０１）。次に、当該物理メモリ管理表エントリ４０１の状態フラグ４０２を「未使用」状態にする（Ｓ２０２）。次に、当該物理メモリ管理表エントリ４０１の修正ビット４０７を確認する（Ｓ２０３）。修正ビットが１（修正あり）ならば（Ｓ２０４のＹＥＳ）、当該ページフレーム２０３の内容（ページ）をスワップ領域２０６にコピーする（Ｓ２０５）。【００２５】
次に、物理メモリ管理表エントリ４０１中のプロセス番号４０５と仮想ページ番号４０３とを参照し、当該プロセス番号および仮想ページ番号に対応するページ表エントリ３０１を取得する（Ｓ２０８）。そして、当該ページ表エントリ３０１のプレゼントビット３０３を０にし（Ｓ２０９）、且つページフレーム番号３０４をコピーしたスワップ領域２０６のアドレスに変更する（Ｓ２１０）。【００２６】
修正ビットが０ならば（Ｓ２０４のＮＯ）、スワップ領域にデータをコピーする必要がないので、Ｓ２０６とＳ２０７の処理を実行する。Ｓ２０６とＳ２０７の処理は、Ｓ２０８とＳ２０９の処理と同じである。【００２７】
以上のスワップ処理によって、ページフレーム２０３の内容がディスクに一時退避させられる。【００２８】
次にページフォルト処理について説明する。ページフォルト処理は、プロセスが仮想メモリアドレスを使用してデータにアクセスする際、ページ表エントリ３０１のプレゼントビット３０３が０になっていた場合に起きる割り込みによって開始される。プレゼントビット３０３が０になるのは、アクセスしようとしたページフレーム２０３が、次の３つの場合である。【００２９】
（１）スワップ処理によって内容がディスクに退避させられている。【００３０】
（２）スワップ処理によって、テキストマッピングが行われているページフレームの内容が消されている。【００３１】
（３）まだ、物理メモリが割り当てられていない。【００３２】
上記（１）は、前述のスワップ処理で説明したとおりである。上記（２）は、スワップ処理において、スワップ領域２０６への退避の必要がなかった場合に発生する。ディスクに格納されている実行プログラムファイル６０３の内容を「読み込みのみ可能」の状態で、任意のページフレーム２０３にコピーすることをテキストマッピングと呼ぶ。テキストマッピングは、当該ページフレーム２０３がスワップ処理の対象となった場合、書き換えを行っていない、すなわち、ページフレーム２０３の内容は実行プログラムファイル６０３に存在するので、ページフレーム２０３の内容をスワップ領域２０６にコピーする必要はない。上記（３）は、ＯＳによってメモリ割り当てが遅延させられている場合である。ユーザからメモリ割り当て要求があっても、そのユーザのためにメモリ領域をすぐには用意しない。実際には、ユーザが確保したメモリ領域にデータを書き込もうとした時点で割り当てられることになる。以下に具体的なページフォルト処理の動作を説明する。【００３３】
図７は、ページフォルト処理を行う情報処理装置の構成の一例を示すブロック図であり、この情報処理装置は、ＣＰＵ１０１と主記憶装置１０２と補助記憶装置１０９とから構成される。ＣＰＵ１０１には、ページフォルト処理手段６０１がある。主記憶装置１０２には、物理メモリ管理表２０１、ページ表２０２、複数のページフレーム２０３およびファイル参照表６０５がある。補助記憶装置１０９には、スワップ領域２０６および実行プログラムファイル６０３がある。また、ＣＰＵ１０１には、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）６０２が設けられている。【００３４】
ＴＬＢ６０２は、仮想ページ番号と主記憶ページフレーム番号との変換早見表である。主記憶装置１０２にあるページ表２０２を使用して仮想メモリアドレスを物理メモリアドレスに変換する処理は負荷が高いので、一度変換した仮想ページ番号と主記憶ページフレーム番号との対はＴＬＢ６０２に保存しておき、次にアクセスする際は、ＴＬＢ６０２を用いて仮想メモリアドレスを物理メモリアドレスに変換する。ＴＬＢ６０２はプロセス切り替え毎に内容がすべて消される。ＴＬＢ６０２は少なくとも１つのＴＬＢエントリ７０１から構成される。図８にＴＬＢエントリ７０１の構成を示す。ＴＬＢエントリ７０１は仮想ページ番号７０３と物理メモリアドレス（ページフレーム番号）７０２の組である。【００３５】
ファイル参照表６０５は、プロセスの使用する各仮想ページがどのファイルのどのページをファイルマッピングの際に利用していたかを示す表である。ファイル参照表６０５は、図９に示されるようなファイル参照エントリ８０１から構成される。ファイル参照エントリ８０１は、仮想ページ番号８０４、ファイル名８０２、オフセット８０３から構成される。オフセット８０３は、実行プログラムファイル６０３先頭からのオフセットをさしている。ファイル参照表６０５はプロセス毎に作成される。【００３６】
ページフォルト処理の手順を図１０に示す。ページフォルト処理は、仮想メモリアドレスを物理メモリアドレスに変換する際に、仮想メモリアドレスに関連するページ表エントリ３０１のプレゼントビット３０３が０であった時点で開始される。最初に物理メモリ管理表２０１から「未使用」のページフレーム２０３を取得する（Ｓ３０１）。このとき未使用のページフレーム２０３が一つもなければ、前述したスワップ処理が行われて、未使用のページフレームが生成される。【００３７】
次にページ表エントリ３０１の保護ビット３０２から、テキスト領域か（読み込みのみ可能か）、データ領域か（読み込みおよび書き込み可能か）を判別する（Ｓ３０２）。テキスト領域であれば（Ｓ３０３のＹＥＳ）、ファイル参照表６０５内で、当該仮想ページ番号と一致するエントリを取得して、ファイル名８０２とオフセット８０３を取得する（Ｓ３０４）。そして、ファイル名８０２とオフセット８０３を使って、補助記憶装置１０９の該当する実行プログラムファイル６０３から該当する内容を取得して、ページフレーム２０３にコピーする（Ｓ３０５）。次に、物理メモリ管理表エントリ４０１の状態フラグ４０２を「使用中」にして（Ｓ３０６）、ページ表エントリ３０１のプレゼントビット３０３を１にする（Ｓ３０７）。次に、ＴＬＢ６０２内の仮想ページ番号７０３と一致するエントリを消去する（Ｓ３０８）。そして、ページフォルト処理を終了する。【００３８】
もし、テキスト領域でなければ（Ｓ３０３のＮＯ）、スワップ領域アドレスがページ表エントリ３０１に格納されているかを確認する。ページ表エントリ３０１のページフレーム番号３０４の箇所には、プレゼントビット３０３が０の場合、一度でもスワップ処理が行われていれば、スワップ領域アドレスが格納されている。従って、もし格納されていれば（Ｓ３１０のＹＥＳ）、スワップ領域アドレスを取得して（Ｓ３１１）、スワップ領域２０６の内容を当該ページフレーム２０３にコピーし（Ｓ３１２）、ステップＳ３０６からＳ３０８までの処理を実行する。スワップ領域アドレスが格納されていなければ（Ｓ３１０のＮＯ）、まだ割り当てられていない領域へのアクセスとなるので、Ｓ３１１とＳ３１２のステップは実行せず、ステップＳ３０６からステップＳ３０８までの処理を実行する。【００３９】
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。【００４０】
（第１の実施形態）
図１１を参照すると、本発明の第１の実施形態にかかる情報処理装置は、ＣＰＵ１０１、主記憶装置１０２、エラー検出装置１０３、補助記憶装置１０９およびＴＬＢ６０２を含んで構成される。ＣＰＵ１０１には、ページフォルト処理手段６０１、復旧判定手段９０１および復旧実行手段９０２が設けられる。主記憶装置１０２には、物理メモリ管理表２０１、ページ表２０２、複数のページフレーム２０３およびファイル参照表６０５が配置される。補助記憶装置１０９には、実行プログラムファイル６０３が格納されている。これらの構成要素のうち、復旧判定手段９０１および復旧実行手段９０２以外のものは上述したものと同じである。【００４１】
復旧判定手段９０１および復旧実行手段９０２は、ページフォルト処理手段６０１と共にＯＳの一機能として実装されている。【００４２】
復旧判定手段９０１は、エラー検出装置１０３から送信された割り込み信号１０７を受け取って、検出されたエラーが復旧可能かどうかを判定する手段である。この復旧判定手段９０１は、メモリエラーが発生したページフレームに格納されているページの属性が読み込み専用ならば復旧可能と判断し、それ以外は復旧不可能と判断する。エラー検出装置１０３から送られてくる割り込み信号１０７には、エラーの発生した物理メモリアドレスが含まれている。復旧判定手段９０１は、その物理メモリアドレスから該当するページフレーム２０３を特定し、さらにそのページフレームに格納されている仮想ページの情報（プロセス番号と仮想ページ番号）を特定し、当該仮想ページがどのようなページ属性であるかを確認する。具体的には、該当するページ表エントリ３０１の保護ビット３０２を参照し、読み込みのみ可能、つまりテキストマッピングに当該ページフレーム２０３を使用しているのであれば、復旧可能であると判断し、復旧を実行するように復旧実行手段９０２へ命令する。読み込みのみ可能でなく、書き込みも可能なページ属性であれば、本実施の形態による復旧は不可能と判断する。この場合のその後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。【００４３】
復旧実行手段９０２は、復旧判定手段９０１からの復旧実行命令を受け取って、エラーの復旧を行う。具体的には、エラーの発生した物理メモリアドレスを含むページフレームの状態を管理する物理メモリ管理表エントリ４０１を参照し、当該ページフレームを使用しているプロセスの情報（プロセス番号と仮想ページ番号）を取得する。そして、取得したプロセス番号および仮想ページ番号に対応するページ表２０２の該当ページ表エントリ３０１を取得し、当該ページ表エントリ３０１のページフレーム番号３０４の内容を消去すると共に、プレゼントビット３０３を０にする。さらに、テキストマッピングの際にエラーの検出されたページフレーム２０３を再度使用しないように、当該ページフレーム２０３のために物理メモリ管理表エントリ４０１の状態フラグ４０２を「使用不可」にしておく。これらの処理を施した後、エラーに遭遇したプロセスの実行を再開させると、上述したページフォルト処理が発生し、保護ビット３０２の状態からテキスト領域であることが判明するので、テキストマッピングが実行される。【００４４】
次に、図１２に示すフローチャートを参照して本実施形態の動作について詳細に説明する。【００４５】
或るプロセスの実行中に主記憶装置１０２上でメモリエラーが発生すると、エラー検出装置１０３によって当該メモリエラーが検出される（Ｓ４０１）。エラー検出装置１０３は、物理メモリのエラーを検出すると、エラーを検出した物理メモリアドレスを含む割り込み信号１０７をＣＰＵ１０１に送信する。ＣＰＵ１０１は、割り込み信号１０７を受信すると、実行中のプロセスを中断し、復旧判定手段９０１による処理を開始する。【００４６】
まず、復旧判定手段９０１は、エラーがテキスト領域で起きたかどうかを判別する（Ｓ４０２）。具体的には、エラーが検出された物理メモリアドレスから特定されるページフレーム２０３に対応する物理メモリ管理表エントリ４０１から、当該ページフレームを参照するプロセスの情報（プロセス番号４０５と仮想ページ番号４０３）を取得して、当該プロセス番号および仮想ページ番号に対応するページ表エントリ３０１を取得する。次に、このページ表エントリ３０１の保護ビット３０２を参照し、エラーの発生しているページフレーム２０３が、読み込みのみ可能なテキスト領域か、読み込みと書き込みの双方が可能なデータ領域かを判別する。【００４７】
次に、エラーが起きた領域がテキスト領域でなければ（Ｓ４０３のＮＯ）、エラー復旧は不可能と判断して図１２に示される処理を終了する。テキスト領域であれば、エラー復旧が可能と判断し、制御を復旧実行手段９０２に移す。【００４８】
復旧実行手段９０２は、取得されたページ表エントリ３０１のページフレーム番号３０４の内容を消去し（Ｓ４０４）、プレゼントビット３０３を０にする（Ｓ４０５）。次に、ＴＬＢ６０２の該当エントリ（前記エラーの発生した物理ページのアドレスと仮想ページのアドレスとの対応を保持するエントリ）の内容を消去し（Ｓ４０６）、当該物理メモリ管理表エントリ４０１の状態フラグ４０２を「使用不可」にする（Ｓ４０７）。そして、図１２に示した処理を終了し、中断したプロセスの実行を再開させる。【００４９】
プロセスの実行は、エラーが発生した仮想アドレスから再開される。このとき、ステップＳ４０６でＴＬＢ６０２の該当エントリ（エラーの発生している物理メモリアドレスを格納しているＴＬＢエントリ）が消去されているため、必ずページ表エントリ３０１を参照してアドレス変換が行われる。そして、ページ表エントリ３０１を参照すると、そのプレゼントビット３０３はステップＳ４０５で０にされているため、ページフォルト割り込みが発生し、再びプロセスの実行が中断され、ページフォルト処理手段６０１によるページフォルト処理が開始される。このページフォルト処理において、図１０に示すステップＳ３０１からステップＳ３０８までの処理が実行されることにより、実行プログラムファイル６０３の該当するページの内容が、エラー検出されたページフレーム以外の未使用のページフレームにコピーされると共に、ページ表エントリ３０１のプレゼントビット３０３を１に書き換え、またページフレーム番号３０４にページフレームの番号を設定し、プロセスの実行が再開される。これにより、当該ページ表エントリ３０１を使用したアドレス変換が実行され、エラーの発生した物理メモリの箇所とは別の箇所に対するメモリアクセスが行われ、プロセスの実行が継続される。【００５０】
次に、本実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順について説明する。【００５１】
図１３は、本実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順を示すフローチャートである。ここでは、エラー検出装置１０３に１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる。この場合、１ビットエラーはハードウェアで自動修正ができるため、エラー検出装置１０３によってＥＣＣエラーを検出すると（Ｓ５０１）、まず、検出したエラーが１ビットのエラーであれば（Ｓ５０２のＮＯ）、ＥＣＣによるエラー訂正を行って（Ｓ５０３）、図１３の処理を終了する。このとき、割り込み信号１０７は出力されない。２ビット以上のエラーであれば（Ｓ５０２のＹＥＳ）、割り込み信号１０７が出力されて、上述したステップＳ４０２からステップＳ４０７までの処理が実行される。【００５２】
上記では、エラー検出装置１０３が１ビットのエラーを自動修正できる機能を有する場合の処理手順について説明したが、２ビット以上のエラーを自動修正できるエラー検出装置１０３を用いることもできる。その場合、訂正可能なエラーであれば、エラー検出装置１０３内で訂正を行って処理を終了し、訂正が困難なエラーであれば、ステップＳ４０２以降の処理を実行する。【００５３】
本実施形態によれば、ページングによる仮想記憶管理を行っている情報処理装置において、読み込みのみ可能な属性を持つ仮想ページが割り当てられた主記憶ページフレームでメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊の装置を必要とせずに、メモリ障害を復旧させることができる。その理由は、ページフォルトの機構を利用して、エラー検出されたページフレームに格納されていた仮想ページを別のページフレームに復元することでメモリ障害を復旧するためである。【００５４】
（第２の実施形態）
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。【００５５】
図１４を参照すると、本発明の第２の実施形態にかかる情報処理装置は、ＣＰＵ１０１、主記憶装置１０２、エラー検出装置１０３、補助記憶装置１０９およびＴＬＢ６０２を含んで構成される。ＣＰＵ１０１には、ページフォルト処理手段６０１、スワップファイル保護手段１００１、復旧判定手段１００３および復旧実行手段１００４が設けられる。主記憶装置１０２には、物理メモリ管理表２０１、ページ表２０２、複数のページフレーム２０３、ファイル参照表６０５およびスワップ情報格納部１００２が配置される。補助記憶装置１０９には実行プログラムファイル６０３およびスワップ領域２０６が格納されている。これらの構成要素のうち、スワップファイル保護手段１００１、復旧判定手段１００３、復旧実行手段１００４およびスワップ情報格納部１００２以外のものは上述したものと同じである。【００５６】
スワップファイル保護手段１００１、復旧判定手段１００３および復旧実行手段１００４は、ページフォルト処理手段６０１と共にＯＳの一機能として実装されている。【００５７】
スワップファイル保護手段１００１は、スワップ処理によってスワップ領域２０６に格納されたデータを消さずに残しておく手段である。スワップ領域２０６に格納されたデータは、ページフォルト処理によって物理メモリに移動した後は不要なデータとして消去されていたが、本実施形態では、移動先の物理メモリのメモリ障害によってデータが破壊された場合に備えて消去しない。具体的には、スワップファイル保護手段１００１は、当該ページフレーム２０３を使用しているプロセスが終了するまでスワップ領域２０６に書き込まれたデータをそのまま保存しておく。また、ページフォルト処理によってデータが物理メモリに読み込まれると、ページ表エントリ３０１のページフレーム番号３０４に格納されていたスワップ領域アドレスがページフレーム番号により上書きされるので、当該スワップ領域アドレスをスワップ情報格納部１００２に格納しておく。【００５８】
スワップ情報格納部１００２は、図１５に示されるようなスワップ情報格納部エントリ１１０１から構成される。スワップ情報格納部エントリ１１０１は、仮想ページ番号１１０３およびスワップ領域アドレス１１０２から構成される。スワップ情報格納部１００２はプロセス毎に存在する。【００５９】
復旧判定手段１００３は、エラー検出装置１０３から送信された割り込み信号１０７を受け取って、検出されたエラーが復旧可能かどうかを判定する手段である。この復旧判定手段１００３は、メモリエラーが発生したページフレームに格納されている仮想ページの属性が読み込み専用ならば、第１の実施形態の復旧判定手段９０１と同様にテキストマッピングによる復旧が可能と判断する。さらに復旧判定手段１００３は、ページ属性が書き込み可能な属性の場合、そのページフレームの修正ビット４０７が０（修正無し）で且つ当該ページフレームに格納されていた仮想ページのスワップ領域アドレスがスワップ情報格納部１００２に格納されているときは（即ち、一度でもスワップ処理が行われていれば）、スワップファイルによる復旧が可能と判断し、それ以外のときは復旧不可能と判断する。復旧不可能と判断した場合のその後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。【００６０】
復旧実行手段１００４は、復旧判定手段１００３からの復旧実行命令を受け取って、エラーを復旧する。本実施形態では、第１の実施形態と異なり、復旧実行手段１００４は復旧判定手段１００３から「テキストマッピングによる復旧」と「スワップファイルによる復旧」の２種類の命令を受け取る。「テキストマッピングによる復旧」は第１の実施形態と同様の手順で行われる。「スワップファイルによる復旧」は、エラーの発生した物理メモリアドレスを含むページフレームの状態を管理する物理メモリ管理表エントリ４０１を参照し、当該ページフレームを使用しているプロセスのプロセス番号と仮想ページ番号を取得する。そして、取得したプロセス番号および仮想ページ番号に関連するページ表２０２の該当エントリ３０１を取得し、当該ページ表エントリ３０１のページフレーム番号３０４の内容を消去すると共に、プレゼントビット３０３を０にする。さらに、スワップ情報格納部１００２から、前回スワップされたスワップ領域アドレスを取得し、ページ表エントリ３０１のページフレーム番号３０４の箇所に書き込む。また、エラーの検出されたページフレーム２０３は再度使用しないように、当該ページフレーム２０３に対応する物理メモリ管理表エントリ４０１の状態フラグ４０２を「使用不可」にする。これらの処理を施した後に、メモリエラーに遭遇したプロセスの実行を再開させることによって、ページフォルト処理が発生し、スワップ領域２０６の内容を使って、物理メモリ上の当該ページフレーム２０３に格納されていたページがメモリ障害の無い別のページフレーム２０３に再現することができる。【００６１】
次に、図１６に示すフローチャートを参照して本実施形態の動作について詳細に説明する。【００６２】
或るプロセスの実行中に主記憶装置１０２上でメモリエラーが発生すると、エラー検出装置１０３によって当該メモリエラーが検出される（Ｓ６０１）。エラー検出装置１０３は、物理メモリのエラーを検出すると、エラー検出した物理メモリアドレスを含む割り込み信号１０７をＣＰＵ１０１に送信する。ＣＰＵ１０１は、割り込み信号１０７を受信すると、実行中のプロセスを中断し、復旧判定手段１００３による処理を開始する。【００６３】
まず、復旧判定手段１００３は、エラーがテキスト領域で起きたか、データ領域で起きたかを判別する（Ｓ６０２）。具体的には、エラー検出された物理メモリアドレスから特定されるページフレーム２０３に対応する物理メモリ管理表エントリ４０１から、当該ページフレームを参照するプロセスの情報（プロセス番号と仮想ページ番号）を取得して、当該プロセスおよび仮想ページ番号に対応するページ表エントリ３０１を取得する。次に、このページ表エントリ３０１の保護ビット３０２を参照し、エラーの発生しているページフレーム２０３が、読み込みのみ可能なテキスト領域か、読み込みと書き込みの双方が可能なデータ領域かを判別する（Ｓ６０２）。【００６４】
エラーの起きた領域がテキスト領域であれば、復旧実行手段１００４において、図１２に示す第１の実施形態におけるステップＳ４０４からステップＳ４０７までの処理と同様にしてステップＳ６０４からステップＳ６０７までの処理を実行することにより、テキストマッピングによる復旧を行う。【００６５】
エラーの起きた領域がテキスト領域でなくデータ領域であれば（Ｓ６０３のＮＯ）、復旧判定手段１００３は、当該物理メモリ管理表エントリ４０１の修正ビット４０７を確認する（Ｓ６０８）。修正ビットが０（修正無し）ならば（Ｓ６０９のＮＯ）、当該プロセスに対応するスワップ情報格納部１００２を参照して、当該仮想ページと対になるスワップ領域アドレスを取得する（Ｓ６１０）。そして、この取得に成功すれば（Ｓ６１１のＹＥＳ）、当該プロセスおよび仮想ページに対応するページ表エントリ３０１のページフレーム番号３０４の箇所にそのスワップ領域アドレスを格納し（Ｓ６１２）、ステップＳ６０５からステップＳ６０７までの処理を実行する。そして、図１６に示す処理を終えて、中断したプロセスの実行を再開させる。【００６６】
また、修正ビットが１（修正有り）であるか（Ｓ６０９のＹＥＳ）、スワップ領域アドレスの取得に失敗した場合（Ｓ６１１のＮＯ）、復旧判定手段１００３は、復旧は不可能と判断する。この場合、その後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。【００６７】
ステップＳ６１０からステップＳ６１２までの処理、およびステップＳ６０５からステップＳ６０７までの処理が行われた後に中断プロセスの実行が再開された場合には、次のような動作が行われる。プロセスの実行は、エラーが発生した仮想アドレスから再開される。このとき、ステップＳ６０６でＴＬＢ６０２の該当エントリ（エラーの発生している物理メモリアドレスを格納しているＴＬＢエントリ）が消去されているため、必ずページ表エントリ３０１を参照するアドレス変換が行われる。そして、ページ表エントリ３０１を参照すると、そのプレゼントビット３０３はステップＳ６０５で０にされているため、ページフォルト割り込みが発生し、再びプロセスの実行が中断され、ページフォルト処理手段６０１によるページフォルト処理が開始される。このページフォルト処理において、図１０に示すステップＳ３０１からステップＳ３０３までの処理、ステップＳ３０９からステップＳ３１２までの処理、およびステップＳ３０６からステップＳ３０８までの処理が実行されることにより、スワップ領域２０６に退避されていた該当するページの内容が、エラー検出されたページフレーム以外の未使用のページフレームにコピーされると共に、ページ表エントリ３０１のプレゼントビット３０３を１に書き換え、またページフレーム番号３０４にページフレームの番号を設定し、プロセスの実行が再開される。これにより、当該ページ表エントリ３０１を使用したアドレス変換が実行され、エラーの発生した物理メモリの箇所とは別の箇所に対するメモリアクセスが行われ、プロセスの実行が継続されていく。【００６８】
次に、本実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順について説明する。【００６９】
図１７は、本実施形態において、１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる場合の処理手順を示すフローチャートである。ここでは、エラー検出装置１０３に１ビットのエラーを訂正することのできるＥＣＣエラー検出装置を用いる。
この場合、１ビットエラーはハードウェアで自動修正ができるため、エラー検出装置１０３によってＥＣＣエラーを検出すると（Ｓ７０１）、まず、検出したエラーが１ビットのエラーであれば（Ｓ７０２のＮＯ）、ＥＣＣによるエラー訂正を行って（Ｓ７０３）、図１３の処理を終了する。このとき、割り込み信号１０７は出力されない。他方、２ビット以上のエラーであれば（Ｓ７０２のＹＥＳ）、割り込み信号１０７が出力されて、第２の実施の形態におけるＳ６０２〜Ｓ６１２のステップが実行される。【００７０】
上記では、エラー検出装置１０３が１ビットのエラーを自動修正できる機能を有する場合の処理手順について説明したが、２ビット以上のエラーを自動修正できるエラー検出装置１０３を用いることもできる。その場合、訂正可能なエラーであれば、エラー検出装置１０３内で訂正を行って処理を終了し、訂正が困難なエラーであれば、Ｓ６０２以降のステップを実行する。【００７１】
本実施形態によれば、第１の実施形態と同様の効果が得られると共に、さらに、データ領域であっても、一度スワップ処理が実行されており且つ前回のスワップ時から修正が行われていなければ、スワップ領域２０６のデータを利用して、再度別のページフレーム２０３に復元することによって、メモリ障害を復旧することができる。
【実施例１】
【００７２】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。実施例で使用するＯＳは、ＬｉｎｕｘＯＳである。図１８を参照すると、実施例を適用した情報処理装置は、ＣＰＵ１０１、主記憶装置１０２、エラー検出装置（ＥＣＣ）１０３、補助記憶装置１０９およびＴＬＢ６０２から構成され、ＣＰＵ１０１は、ページフォルトハンドラ６０１と、復旧判定手段９０１および復旧実行手段９０２を含む割り込みハンドラ１２０４と備え、主記憶装置１０２には、ページディスクリプタ１２０１、ページテーブル１２０２およびページフレーム２０３が配置され、補助記憶装置１０９には、実行プログラムファイル６０３が格納されている。【００７３】
ページディスクリプタ１２０１は、実施形態における物理メモリ管理表エントリ４０１に相当する。ページテーブル１２０２は、実施形態におけるページ表２０２に相当する。割り込みハンドラ１２０４は、ハードウェアから送られてきた割り込み信号１０７を受け取り、送られてきた割り込み信号１０７の種類に応じた割り込み処理を実行する。本発明に関しては、割り込みハンドラ１２０４が、復旧判定手段９０１と復旧実行手段９０２を含んでいる。【００７４】
次に、図１９に示すフローチャートを参照して実施例の動作について詳細に説明する。或るプロセスの実行中に主記憶装置１０２でメモリエラーが発生すると、エラー検出装置（ＥＣＣ）１０３がそのメモリエラーを検出する（Ｓ７０１）。メモリエラーが検出されると、ＣＰＵ１０１に対して割り込み信号１０７が送信される。割り込み信号１０７を受け取ったＣＰＵ１０１は、実行中のプロセスを中断し、ＯＳによって登録されている割り込みハンドラ１２０４を実行する。この割り込みハンドラ１２０４の実行過程において、復旧判定手段９０１と復旧実行手段９０２によって以下の処理を実行する。【００７５】
まず、ＴＬＢの該当エントリを消去する（Ｓ７０２）。次にページディスクリプタの状態フラグを「ＰＧ＿ｒｅｓｅｒｖｅｄ」にする（Ｓ７０３）。ＰＧ＿ｒｅｓｅｒｖｅｄは、ページフレームの状態を表すフラグの一つで、当該ページフレームを使用禁止にすることを意味している。次にページディスクリプタから当該ページフレームを参照するページテーブルエントリを取り出し（Ｓ７０４）、この取り出したページテーブルエントリに対してｐｔｅ＿ｗｒｉｔｅマクロを実行する（Ｓ７０６）。ｐｔｅ＿ｗｒｉｔｅマクロは、ページテーブルエントリがページフレーム番号を格納している場合、当該ページフレームが書き込み可能かを判定するプログラムである。書き込み可能であれば（Ｓ７０７のＹＥＳ）、復旧は不可能と判断し、図１９の処理を終了する。書き込み可能でなければ（Ｓ７０７）、復旧が可能と判断し、ページテーブルエントリのページフレーム番号を消去し（Ｓ７０９）、プレゼントビットを０にする（Ｓ７１０）。そして、図１９の処理を終了して、中断したプロセスの実行を再開する。【００７６】
以上、本発明の実施形態および実施例について説明したが、本発明は上述した内容にのみ限定されず、その他各種の付加変更が可能である。例えば、異なる複数のプロセスの仮想ページを同一の主記憶ページフレームにマッピングするプロセス間共有メモリ機能を有する情報処理装置に対しても適用可能である。この場合、図１２に示すステップＳ４０４、ステップＳ４０５、および図１６に示すステップＳ６１２では、メモリエラーが発生したページフレームを共有している全てのプロセスの該当仮想ページに対応するエントリのページフレーム番号が消去され、プレゼントビットが０に設定され、およびスワップ領域アドレスが設定される。【００７７】
本発明では、プロセスの実行中にＥＣＣ等のエラー検出装置によってメモリエラーが検出されると、訂正可能なエラーであれば自動修正され、訂正が困難なエラーであれば、ＣＰＵに割り込みがかけられる。この割り込みによってプロセスの実行が中断され、メモリ復旧の可能性が判定される。メモリエラーの起きた物理メモリ（ページフレーム）の領域が、実行プログラムのテキストマッピングによる領域で、読み込みのみ可能であれば、メモリ障害が復旧可能と判断される。これにより、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることが可能となる。【００７８】
また、本発明では、書き込み可能な領域であっても、前回物理メモリに格納されてから一度も修正されておらず、かつ一度スワップ処理されたメモリ領域であれば、メモリ障害が復旧可能と判断される。そして、ＣＰＵは、当該物理メモリ領域をＯＳのメモリ割り当て領域から除外し、ページ表のプレゼントビットを０にすることによって、プロセス実行再開後にページフォルト処理を意図的に引き起こす。ページフォルト処理により、障害の発生しているメモリ領域の内容がテキストマッピングであれば、ファイルから読み込まれ、スワップ処理されていれば、スワップ領域から復旧される。これにより、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域だけでなく書き込み可能な領域に訂正が困難なメモリエラーが発生した場合でも、その状況次第ではメモリ障害を復旧させることが可能となる。【００７９】
なお、この出願は、２００７年２月１３日に出願された日本出願特願２００７−０３１８８３号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００８０】
本発明は、ＥＣＣなど単純なエラー検出装置をもつ一般的なパーソナルコンピュータのためのメモリ障害復旧といった用途に適用できる。
【図１】
2008099786.tif 000003
【図２】
2008099786.tif 000004
【図３】
2008099786.tif 000005
【図４】
2008099786.tif 000006
【図５】
2008099786.tif 000007
【図６】
2008099786.tif 000008
【図７】
2008099786.tif 000009
【図８】
2008099786.tif 000010
【図９】
2008099786.tif 000011
【図１０】
2008099786.tif 000012
【図１１】
2008099786.tif 000013
【図１２】
2008099786.tif 000014
【図１３】
2008099786.tif 000015
【図１４】
2008099786.tif 000016
【図１５】
2008099786.tif 000017
【図１６】
2008099786.tif 000018
【図１７】
2008099786.tif 000019
【図１８】
2008099786.tif 000020
【図１９】
2008099786.tif 000021
【国際調査報告】
2008099786.tif 000022
2008099786.tif 000023