(57)【特許請求の範囲】
【請求項１】
複数のエリアに区分された物理メモリと、
前記複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグを記憶するフラグ記憶部と、
前記複数のエリアに記憶された記憶情報が書き込まれる記憶装置と、
仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置と、
プロセッサと、を備え、
前記プロセッサは、
障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第１の処理と、前記保存装置に前記更新済みエリアに記憶された記憶情報を保存するとともに前記更新済みの設定がされたフラグをクリアする処理と、を実行し、
障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理を実行する情報処理システム。
【請求項２】
前記プロセッサは、
フラグの設定値の履歴を保存する処理をさらに実行し、
前記フラグの履歴を読み出し、前記フラグの履歴によって更新の頻度が所定限度を超えると判定されるエリアに対して、前記第１の処理を実行しない請求項１に記載の情報処理システム。
【請求項３】
前記プロセッサは、前記第１の処理の１回の実行による負荷が所定の限度となるように、前記第１の処理を前記物理メモリの１または複数のエリアごとに順次実行する請求項１または２に記載の情報処理システム。
【請求項４】
前記プロセッサは、仮想記憶方式の仮想メモリのエリアに対応する前記物理メモリのエリアを確保し、前記保存装置に保存された前記仮想メモリのエリアに対応する記憶情報を前記確保した物理メモリのエリアに読み出す処理の実行時に、前記読み出した記憶情報を前記記憶装置に書き込むとともに前記物理メモリのエリアに対応するフラグをクリアする請求項１から３のいずれか１項に記載の情報処理システム。
【請求項５】
複数のエリアに区分された物理メモリと、
前記複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグを記憶するフラグ記憶部と、
プロセッサと、を備え、
前記プロセッサは、
障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエリアに記憶された記憶情報を記憶装置に書き込む第１の処理と、仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置に前記更新済みエリアに記憶された記憶情報を保存するとともに前記更新済みの設定がされたフラグをクリアする処理と、を実行し、
障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理を実行する情報処理装置。
【請求項６】
複数のエリアに区分された物理メモリを有するコンピュータが、
前記複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグの少なくとも１つを参照する処理を実行し、
障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエ
リアに記憶された記憶情報を記憶装置に書き込む第１の処理と、仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置に前記更新済みエリアに記憶された記憶情報を保存するとともに前記更新済みの設定がされたフラグをクリアする処理と、を実行し、
障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理を実行する情報処理方法。
【請求項７】
複数のエリアに区分された物理メモリを有するコンピュータに、
前記複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグの少なくとも１つを参照する処理を実行させ、
障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエリアに記憶された記憶情報を記憶装置に書き込む第１の処理と、仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置に前記更新済みエリアに記憶された記憶情報を保存するとともに前記更新済みの設定がされたフラグをクリアする処理と、を実行させ、
障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
障害の発生による中断や停止が発生した場合に影響の大きいシステム、例えば、基幹業務遂行のために使用されるシステム等はミッション・クリティカル・システムと呼ばれる。また、ミッション・クリティカル・システムが利用される分野はミッション・クリティカル分野と呼ばれる。このようなシステムで稼働するサーバ等の情報処理装置、あるいは情報処理装置上で稼働するＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）等では、発生頻度の異なる様々な障害に対応できるようにメモリダンプ機能が設けられている。
【０００３】
ところで、近年のＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）とメモリ技術の発達により、メモリ最大搭載容量が１２ＴＢに達する情報処理装置も提供されている。今後もＤｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ（ＤＩＭＭ）容量の増加に伴って、メモリ搭載容量の増加が見込まれる。さらに、インメモリデータベースのように、メモリを有効に利用するためのソフトウェアが普及し、さらに、情報処理装置でのメモリ積載容量が増加する見込みである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２０５２５４号公報
【特許文献２】特開平４−１９５５６５号公報
【特許文献３】特開２００２−７３３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
今後、メモリ搭載容量の増加に伴って、メモリダンプのための時間が増加することが予想される。その結果、情報処理装置で障害が発生した後、情報処理装置が再起動するまでの時間が増加する。このため、従来、高速なハードウェアを用いることでメモリダンプのための時間の短縮が試みられてきた。また、例えば、まず、ＯＳ中核部のメモリ領域をダンプし、ＯＳを再ロード後、ダンプ済みでないメモリ領域を順次ダンプすることでシステム再立ち上げまでの時間を短縮する方法も提案されている。
【０００６】
しかし、高速なハードウェアの採用はコスト上昇の要因となりえる。また、上記ＯＳ中核部のメモリ領域をダンプし、ＯＳを再ロード後、ダンプ済みでないメモリ領域をダンプする方法では、最終的にダンプの結果が得られるまでに時間を要するため、メモリダンプの高速化がなされていない。
そこで、本実施形態は、ハードウェアの性能向上に頼らないで、メモリダンプ処理を高速化することを目的とする。
【課題を解決するための手段】
【０００７】
開示の技術の一側面は、次の情報処理装置によって例示される。本情報処理装置は、複数のエリアに区分された物理メモリと、前記複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグを記憶するフラグ記憶部と、プロセッサと、を備える。このプロセッサは、障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエリアに記憶された記憶情報を記憶装置
に書き込む第１の処理と、仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置に前記更新済みエリアに記憶された記憶情報を保存するとともに前記更新済みの設定がされたフラグをクリアする処理と、を実行する。さらに、障害が発生したときに、プロセッサは、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理を実行する。
【発明の効果】
【０００８】
本情報処理装置によれば、ハードウェアの性能向上に頼らないで、メモリダンプ処理を高速化することができる。
【図面の簡単な説明】
【０００９】
【図１】比較例に係るサーバの構成を例示する図である。
【図２】比較例におけるダンププログラムの処理を例示するフローチャートである。
【図３】比較例のサーバにおける障害発生から再起動までのシーケンスの例である。
【図４】ダンププログラムを事前実行する処理を例示するフローチャートである。
【図５】実施形態１に係るサーバの構成を例示する図である。
【図６】サーバにおける障害のない正常時の動作シーケンスの例である。
【図７】変更ビットに関連するＣＰＵのハードウェア回路の処理を例示する図である。
【図８】タイマー割り込みによる事前のダンプ処理および障害発生時のダンプ処理のシーケンスの例である。
【図９】ページ変換テーブルの構成を例示する図である。
【図１０】ページ変換結果テーブルの構成を例示する図である。
【図１１】実施形態１のＯＳブート処理（図６のＳ１）の詳細を例示するフローチャートである。
【図１２】ＯＳ初期化処理（図６のＳ２）の詳細を例示するフローチャートである。
【図１３】ページ割当処理（図６のＳ４、Ｓ６）の詳細を例示するフローチャートである。
【図１４】タイマー割り込みの処理（図８のＡ１１およびＳ１１）の詳細を例示するフローチャートである。
【図１５】ダーティページ書込み処理（図１４のＤ１１の詳細）を例示するフローチャートである。
【図１６】変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2の遷移を例示する表である。
【図１７】実施形態１における障害発生時のメモリダンプ処理を例示するフローチャートである。
【図１８】実施形態２に係るサーバの構成を例示する図である。
【図１９】ダーティビット（Ｄ）に関連するＣＰＵのハードウェア回路の処理を例示する図である。
【図２０】ページ変換テーブルの構成を例示する図である。
【図２１】実施形態２におけるページ割当処理を例示するフローチャートである。
【図２２】実施形態２のダーティページ書込み処理を例示するフローチャートである。
【図２３】実施形態２における障害発生時のメモリダンプ処理を例示するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、一実施形態に係る情報処理システムについて説明する。以下の実施形態の構成は例示であり、本情報処理システムは実施形態の構成には限定されない。本情報処理システムは、仮想記憶方式を採用し、メモリ領域に対応するスワップファイル１５（図５）を有する。また、本情報処理システムは、障害発生時に障害解析のため、メ
モリ領域に記憶された情報をダンプ領域に書き込む処理、いわゆるメモリダンプを実行する。本実施の形態では、以下の処理を実行する情報処理システムが例示される。（１）本情報処理システムは、障害発生前の通常動作中に物理メモリにロードされたデータを予めダンプ領域に書き込んでおく。より具体的には、本情報処理システムは、物理メモリの領域が更新された否かを判定し、更新された物理メモリの領域を定期的にダンプ領域に書き込むとともに、スワップファイル１５にも書き込む。この処理により、本情報処理システムは、メモリ領域とスワップファイル１５を一致させ、物理メモリの領域を更新のない状態に戻す。（２）本情報処理システムは、障害発生時には、更新されている領域を選択して、ダンプ領域に書き込む。以上の手順によって、本情報処理システムは、障害発生時にダンプ領域に書き込む量を削減する。この場合に、障害発生時に選択されなかった物理メモリの領域の情報は初期状態の情報か、あるいは、スワップファイル１５に保存された後更新されていない情報であって、すでにダンプ領域に書き込み済みの情報である。したがって、本情報処理システムの手順によれば、障害発生時に、更新されている領域を選択してダンプ領域に書き込むことで、事前にダンプ領域に書き込み済みの情報を含めて障害解析のための情報を早期に取得できる。
【００１１】
［比較例］
図１から図４を参照して、比較例に係る処理を説明する。図１に、比較例に係る情報処理システムの一例として、サーバ５０１の構成を例示する。サーバ５０１は、ＣＰＵ５１１と物理メモリ５１２と、入出力部（Ｉ／Ｏ）５１４を有する。また、入出力部５１４には、スワップファイル５１５およびダンプ用ストレージ５１６が接続される。物理メモリ５１２は、ページと呼ばれるエリアに区切られている。物理メモリ５１２は、スワップファイル５１５とともに、仮想記憶方式の主記憶を形成する。物理メモリ５１２のページは、スワップファイル５１５の対応するページとの間で、スワップアウトおよびスワップインと呼ばれる保存処理および読み出し処理が実行される。仮想記憶方式で物理メモリ上のページを物理ページとも呼ぶ。ダンプ用ストレージ５１６は、ダンプ領域を有する。ダンプ領域は、物理メモリ５１２のページに対応するダンプデータのエリアに分割されている。
【００１２】
図２は、比較例におけるダンププログラムの処理を例示する。ダンププログラムは、サーバ５０１等の情報処理システムにおいて障害が発生すると起動される。ダンププログラムを実行するＣＰＵ５１１は、まず、ページカウンタを初期化する（Ｄ５２１）。そして、ＣＰＵ５１１はページカウンタに対応する物理メモリ５１２のページを読み出す（Ｄ５２２）。そして、ＣＰＵ５１１は、読み出したページをダンプ用ストレージ５１６に書き込む（Ｄ５２３）。そして、ＣＰＵ５１１は、ページカウンタをカウントアップする（Ｄ５２４）。そして、ＣＰＵ５１１は、全ページの書き込みが終了したか否かを判定する（Ｄ５２５）。全ページの書き込みが終了していない場合、ＣＰＵ５１１は、Ｓ５２２の処理に戻る。一方、ページカウンタが物理メモリ５１２の末尾のページに達し、全ページの書き込みが終了した場合、ＣＰＵ５１１は、ダンププログラムを終了する。
【００１３】
図３に、比較例のサーバ５０１における障害発生から再起動までのシーケンスを例示する。サーバ５０１のＣＰＵ５１１は、様々なアプリケーションプログラム等を実行し、サービスを提供してユーザの業務を支援する。サーバ５０１に障害が発生すると、ＣＰＵ５１１のハードウェアが検知し、ＯＳに通知する。すると、ＯＳは、ダンププログラムを起動する（Ｓ５００）。ダンププログラムは、ダンプ処理を実行する（Ｄ５００）。ダンププログラム終了後、ＯＳに制御が戻り、ＯＳはハードウェアをリセットし、再起動を指示する（Ｓ６００）。そして、サーバ５０１は、再起動を開始する（Ａ５００）。再起動が完了すると、サーバ５０１はユーザの業務支援を再開する。
【００１４】
以上の処理では、物理メモリ５１２のページ数が増加すると、ダンププログラムの実行
が長時間となり、障害発生から再起動が完了するまでの業務支援の停止時間が長くなる。そのため、障害発生後に起動されていたダンププログラムを、業務中に常時動作するプロセスとして実行することが考えられる。ダンププログラムを事前実行するプロセスによって、サーバ５０１がメモリの内容をダンプ用ストレージ５１６に予め書き込んでおく。このプロセスによって、サーバ５０１は障害発生時のダンププログラムの処理を軽減するのである。さらに、事前実行のためのプロセスが業務用のアプリケーションプログラムの実行に影響を与えないように、タイマーで一定時間毎に起動されるようにする。すなわち、ダンププログラムの１回の実行で書き込む量が制限されるようにする。
【００１５】
図４に、ダンププログラムを事前実行する処理を例示する。事前実行のプロセスはタイマー割り込みで起動される。事前実行のプロセスでは、ＣＰＵ５１１は、まず、前回実行終了時のページカウンタの値を読み出す（Ｄ５４１）。そして、ＣＰＵ５１１はページカウンタに対応する物理メモリ５１２のページを読み出す（Ｄ５４２）。そして、ＣＰＵ５１１は、読み出したページをダンプ用ストレージ５１６に書き込む（Ｄ５４３）。そして、ＣＰＵ５１１は、ページカウンタをカウントアップする（Ｄ５４４）。そして、ＣＰＵ５１１は、全ページの書き込みが終了したか否かを判定する（Ｄ５４５）。全ページの書き込みが終了した場合、ＣＰＵ１１は、ページカウンタの値を初期化し、次回の実行で、物理メモリ５１２の先頭から処理を開始するように設定する。一方、全ページの書き込みが終了していない場合、つまり、ページカウンタが物理メモリ５１２の末尾のページに達していない場合、ＣＰＵ１１は、そのままダンププログラムを終了する。
【００１６】
しかし、図４で例示したような単純な事前実行のダンププログラムでは、すでにダンプ用ストレージ５１６に書き込んだメモリの内容が、障害発生時点までに書き換えられる可能性を低減できない。また、障害発生時点で物理メモリ５１２のどの部分がダンプ済みであるかの判断ができない。したがって、図４のような単純な事前処理ではメモリダンプとしての実用性が十分ではない。
【００１７】
［比較例に対する改善例］
ところで、障害調査のためにメモリダンプの対象となる処理において、処理の実行によって実際に書き換えられているメモリは搭載メモリのすべてとは限らない。つまり、様々な処理の実行に伴って書き換えられるメモリ量の搭載メモリ容量に対する比率はある程度の範囲に収まっている。したがって、書き換えられていない物理メモリ５１２のページ、あるいは、書き換えられる可能性の低い物理メモリのページを選択して、ダンプ処理すれば、効率的な事前ダンプが可能となる。
【００１８】
一部のメインフレームのアーキテクチャでは、物理メモリ５１２の各ページに対応したキー記憶という部分に変更ビット（Ｃ）が存在する。このアーキテクチャを採用する情報処理システムは、物理メモリ５１２の書き換えが発生すると、変更ビット（Ｃ）を０→１に書き換えるハードウェアを有している。この機構を利用してキー記憶の変更ビット（Ｃ）＝１のページを選択してダンプ領域に書き込むことで、障害時点のダンプ用ストレージ５１６のダンプ領域への書き込み量を削減することができる。
【００１９】
Ｕｎｉｘ（登録商標）サーバ等で利用されるメインフレーム以外のプロセッサ、あるいはＸｅｏｎ（登録商標）アーキテクチャの場合は、メインフレームのキー記憶の変更ビットがない。すなわち、他のアーキテクチャのプロセッサ場合には、キー記憶の変更ビットにあたる情報は、物理メモリ５１２のページに直接１対１で対応するように構成されてはいない。Ｕｎｉｘ（登録商標）サーバやＸｅｏｎ（登録商標）アーキテクチャの場合は、仮想アドレスから物理アドレスに変換するためのページ変換テーブル内にＤｉｒｔｙビット（Ｄ）が実装されている。このＤｉｒｔｙビット（Ｄ）はＣＰＵ内のＴｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ（ＴＬＢ）内にもコピーが存在し、ＣＰＵの
書込み命令のたびにページ変換テーブル内のＤｉｒｔｙビット（Ｄ）の更新をしないためのフィルタとしても利用されている。
【００２０】
そこで、Ｄｉｒｔｙビット（Ｄ）が実装されているアーキテクチャのプロセッサは、障害の発生時にページ変換テーブルのＤｉｒｔｙビットを参照しながら、Ｄｉｒｔｙビット（Ｄ）＝１のページを選択してダンプ領域に書き込むようにすればよい。このＤｉｒｔｙビットの利用により、物理メモリ５１２の各ページに対応した変更ビット（Ｃ）を用いた処理と同様のダンプ処理が実現可能となる。したがって、メインフレーム以外の情報処理装置においても、障害時点のダンプ用ストレージ５１６への書き込み量を削減することができる。
【００２１】
そして、ＣＰＵ５１１は、物理メモリ５１２のページがダンプ用ストレージ５１６への書き込まれたとき、当該物理メモリ５１２のページをスワップファイル５１５にも保存する。このようにすることで、ＣＰＵ５１１は、変更ビット（Ｃ）あるいはＤｉｒｔｙビットをクリアし、書込み無し、あるいはクリーンな状態にする。このようにすることで、仮に、その後物理ページが書き換えられたとしても、変更ビット（Ｃ）を設定するハードウェア回路によって変更ビット（Ｃ）が書込み済みに変更される。また、ページ変換テーブルを管理するハードウェアによってＤｉｒｔｙビットがクリーン（０）からダーティ（１）に変更される。すなわち、改善案では、サーバ５０１は、変更ビット（Ｃ）あるいはＤｉｒｔｙビットをダンプ済み否かを判断するためのフラグとして流用すればよい。
【００２２】
さらに、ＣＰＵ５１１がＤｉｒｔｙビット（Ｄ）の過去の更新情報を記憶しておき、連続して更新されていたページを更新頻度が高い情報が記憶されていると判断するようにしてもよい。ＣＰＵが障害発生前の事前のダンプ処理の対象から更新頻度が高い物理ページを除外すればよい。更新頻度が高い物理ページは、事前ダンプしたとしても、その後更新される可能性が高く、事前ダンプの効果が低下する可能性があるからである。このように、ダンプ処理の対象を選択することで、障害発生前の通常状態での事前ダンプ処理の負荷を軽減することができる。以上のような改善例として、以下、実施形態１、および２を説明する。
【００２３】
［実施形態１］
図５から図１７を参照して、実施形態１に係る情報処理システムを説明する。
【００２４】
＜構成＞
図５は、実施形態１に係る情報処理システムの一例であるサーバ１の構成を例示する図である。サーバ１は、ＣＰＵ１１と物理メモリ１２と、キー記憶１３と、入出力部（Ｉ／Ｏ）１４と、を有する。また、入出力部１４には、スワップファイル１５およびダンプ用ストレージ１６の記憶装置が接続される。ＣＰＵ１１はプロセッサの一例である。ＣＰＵ１１と物理メモリ１２と、キー記憶１３と、入出力部（Ｉ／Ｏ）１４とが情報処理装置の一例である。ＣＰＵ１１は、物理メモリ１２およびスワップファイル１５によって提供される仮想メモリ上に実行可能に展開されたコンピュータプログラムにより、情報処理システムあるいは情報処理装置の処理である情報処理方法を実行する。
【００２５】
物理メモリ１２は、ページと呼ばれるエリアに区切られている。物理メモリ１２は、複数のエリアに区分された物理メモリの一例である。物理メモリ１２は、スワップファイル１５とともに、仮想記憶方式の主記憶を形成する。物理メモリ１２は、例えば、ＯＳ領域、プログラムデータ領域、未使用等の領域に分割される。
【００２６】
サーバ１は、物理メモリ１２のページに対応して、キー記憶１３と呼ばれる記憶部を有する。キー記憶１３は、Ｋｅｙと変更ビット（Ｃ）を有する。Ｋｅｙは、ページに格納さ
れた情報保護のために使用される。変更ビット（Ｃ）は、ページの書き換え、更新の有無を示す。メインフレームで用いられるアーキテクチャでは、サーバ１は、変更ビット（Ｃ）を更新するハードウェア（制御回路）を有している。すなわち、この制御回路は、物理メモリ１２の書き換えが発生すると、変更ビット（Ｃ）を０から１に書き換える。なお、ＣＰＵ１１内のＴＬＢ１１１にも変更ビット（Ｃ）のコピーが存在しており、ＣＰＵ１１は、同一ページへの書き込みに対して無駄な変更ビット（Ｃ）の更新を行わないように制御している。キー記憶１３は、複数のエリアにそれぞれ記憶された記憶情報が更新されたときにそれぞれ更新済みの設定がされる複数のフラグを記憶するフラグ記憶部の一例である。キー記憶１３は、ＯＳによってクリア可能である。また、キー記憶１３の変更ビット（Ｃ）は、物理メモリ１２への書込みアクセスに連動するハードウェアの制御回路によって書込み済みに設定される。
【００２７】
さらに、物理メモリ１２には、ページ変換結果テーブル１２１が格納されている。ページ変換結果テーブル１２１は、物理メモリ１２のページに対応するエントリを有し、物理アドレスで特定されるページに格納された情報の更新頻度情報Ｗを有する。更新頻度情報Ｗは、例えば、ＣＰＵ１１が事前のダンプ処理を実行するときに、キー記憶１３の変更ビット（Ｃ）を読み出した値の履歴である。ＣＰＵ１１があるページのキー記憶１３の変更ビット（Ｃ）を読み出すごとに、その同一ページの変更ビット（Ｃ）が例えば、複数回連続して、変更を示している場合には、当該ページは変更頻度が高く、今後も書き換え、更新が行われる可能性が高い。したがって、ＣＰＵ１１は、変更ビット（Ｃ）の履歴を参照し、各物理ページの更新頻度を判定し、ダンプ処理の対象を選択する。
【００２８】
入出力部１４に接続されるスワップファイル１５およびダンプ用ストレージ１６は比較例の構成と同様である。スワップファイル１５には、仮想記憶空間のページで、物理メモリ１２からスワップアウトされたページのデータが格納される。スワップファイル１５は、仮想記憶方式の仮想メモリとして、前記物理メモリに記憶された記憶情報が保存される保存装置の一例である。ダンプ用ストレージ１６には、ダンプ処理で物理メモリ１２から読み出されたページが書き込まれる。スワップファイル１５を格納するストレージと、ダンプ用ストレージ１６とは、同一の記憶装置でも、異なる記憶装置でもよい。ダンプ用ストレージ１６は、複数のエリアに記憶された記憶情報が書き込まれる記憶装置の一例である。
【００２９】
＜シーケンス＞
図６を参照して、サーバ１における障害のない正常時の動作シーケンスを説明する。図６では、主としてＣＰＵ１１のハードウェアの処理が「ＣＰＵの処理」の列に記載され、ＯＳによる処理がＯＳの列に記載され、ダンププログラムの実行による処理がダンプ処理の列に記載されている。
【００３０】
サーバ１は、電源投入等により起動されるとＯＳブートを実行する（Ｓ１）。ＯＳは、ブートを完了すると、ＯＳ初期化を実行する（Ｓ２）。本実施形態では、ＯＳ初期化において、ページ変換テーブル１２０が設定される。さらに、本実施形態では、ＯＳ起動完了後、ＯＳはダンプ処理を起動し、ＯＳが動作するために割り当てた物理メモリ１２をダンプ用ストレージ１６のダンプ領域に書き込む（Ｄ１）。
【００３１】
その後、サーバ１は、初期化処理を終了し（Ｓ３）、アプリケーションプログラムを起動する（Ａ１）。アプリケーションプログラムが起動されると、アプリケーションプログラムを実行中のＣＰＵ１１は、ＯＳに主記憶の仮想記憶上のページ（仮想ページという）を要求する（Ａ２）。ＯＳは、要求された仮想ページに対応する物理ページを割り当てる割当処理を実行する（Ｓ４）。要求されたページが新規のページであり、仮想記憶のスワップファイル１５からの読み込みがない場合、ＯＳは、ダンププログラムにページクリア
処理を実行させる（Ｄ２）。ページクリア処理では、ＣＰＵ１１は、割り当てられた物理ページに０を書き込む（以下、「０」クリアという）。また、ＣＰＵ１１は、割り当てた物理ページに対応するキー記憶１３の変更ビット（Ｃ）を０にする。本実施形態では、この時、ＣＰＵ１１は、さらに、割り当てたページのダンプ領域を「０」クリアする。また、ＣＰＵ１１は、ページ変換結果テーブル１２１にも、対応ページの変換情報を書き込む。ページクリア処理の後、制御は、ＯＳへ復帰し（Ｓ５）、さらにＣＰＵ１１のアプリケーションプログラムに復帰する（Ａ３）。
【００３２】
アプリケーションプログラムを実行中のＣＰＵ１１は、例えば、さらに、ＯＳに主記憶の仮想ページを要求する（Ａ４）。すると、ＯＳは、要求された仮想ページに対応する物理ページを割り当てる割当処理を実行する（Ｓ６）。要求された仮想ページがすでに仮想記憶空間で使用されスワップファイル１５に保存されているページの場合、ＯＳは、スワップファイル１５から該当仮想ページを読み込む（Ｓ７）。Ｓ７の処理はスワップインと呼ばれる。そして、ＯＳは、割り当てた物理ページに読み込んだ仮想ページの情報を書き込む。そして、ＯＳは、ダンププログラムを起動し、ＣＰＵ１１にスワップファイル１５から読み込んだページのダンプ処理を実行させる（Ｄ３）。また、ＣＰＵ１１は、割り当てた物理ページに対応するキー記憶１３の更新ビット（Ｃ）を０にする。以上の処理によって、スワップファイル１５から読み出された情報が物理ページに格納される。すなわち、物理ページに格納された情報は、スワップファイル１５の情報と一致し、未更新の状態となる。さらに、物理ページが未更新の状態で、物理ページのダンプが完了していることになる。したがって、このまま障害発生まで、物理ページへの更新がない場合には、当該物理ページは、障害発生時のダンプ処理から除外されることになる。そして、Ｄ３のダンプ処理の後、制御は、ＯＳへ復帰し（Ｓ８）、さらにアプリケーションプログラムに復帰する（Ａ５）。
【００３３】
図７は、変更ビット（Ｃ）に関連するＣＰＵ１１の制御回路（図５）の処理を例示する。ＣＰＵ１１の制御回路は、アプリケーションプログラム等の処理を実行中、物理メモリ１２への書き込みが発生すると、まず、ＴＬＢ１１１にコピーされた変更ビット（Ｃ）の複製情報を参照する（Ａ６）。そして、ＴＬＢ１１を参照した結果、変更ビット（Ｃ）の複製情報が１、つまり、変更済みとなっている場合には、ＣＰＵ１１は、そのまま物理メモリ１２への書き込みを実行する（Ａ７）。一方、ＴＬＢ１１を参照した結果（Ａ８）、変更ビット（Ｃ）の複製情報が０、つまり未書き込みの場合には、ＣＰＵ１１は、まず、制御回路により、キー記憶１３の変更ビット（Ｃ）を書き込み済み（＝１）に設定するとともに、メモリに書き込みを行う。ここで、変更ビット（Ｃ）の複製情報が０の場合とは、変更ビット（Ｃ）に対応する当該物理ページが初期化されたまま、あるいは、スワップファイル１５と一致したままとなっており、その後の物理メモリ１２への書き込みが実行されていない場合である。
【００３４】
このとき、ＣＰＵ１１は、ＴＬＢ１１１にコピーされた変更ビット（Ｃ）の複製情報も書き込み済み（＝１）に設定する（Ａ１１）。ただし、変更ビット（Ｃ）の複製情報を書き込み済みに設定するタイミングは、図７のＡ１１のときに限定されない。例えば、図７のＴＬＢ１１を参照する処理（Ａ８）の直後に、変更ビット（Ｃ）の複製情報を書き込み済みに設定してもよい。
【００３５】
すなわち、キー記憶１３を具備したアーキテクチャのＣＰＵ１１は、ＣＰＵ１１がメモリに書き込みを行うとき、キー記憶１３の更新ビット（Ｃ）を１にする機能を具備しているので、ＣＰＵ１１がメモリに書き込みを行うと、キー記憶の更新ビット（Ｃ）は１に書き換えられる。なお、ＣＰＵ１１は、ＴＬＢ１１１にコピーされた変更ビット（Ｃ）の複製情報を参照することで、変更ビット（Ｃ）へのアクセス回数、変更回数を低減できる。
【００３６】
図８は、タイマー割り込みによる事前のダンプ処理および障害発生時のダンプ処理のシーケンスを例示する。ＯＳは、ＣＰＵ１１にタイマー割り込みを発生させ（Ａ１１）、タイマー割り込みを受けて（Ｓ１１）、定期的に「ダーティページ書込み処理」を呼び出す（Ｄ１１）。「ダーティページ書込み処理」では、ＣＰＵ１１は、キー記憶１３の更新ビット（Ｃ）により、更新された物理ページを選択する。ただし、本実施形態では、ＣＰＵ１１は、ページ変換結果テーブル１２１に記録している更新ビットの履歴を基に、更新された物理ページの更新頻度を判定する。そして、ＣＰＵ１１は、更新された物理ページのうち、更新の頻度が基準より高いページを除外し、スワップファイル１５に書き込む物理ページを選択する。そして、ＣＰＵ１１は、選択した物理ページをスワップファイル１５に書き込むとともに、当該物理ページをダンプ用ストレージ１６にも書き込む。このようにして、物理ページとスワップファイル１５とが一致した状態で、当該物理ページがダンプ用ストレージ１６にも書き込まれる。さらに、ＣＰＵ１１はスワップファイル１５と物理メモリ１２の内容が一致した後、キー記憶１３の更新ビット（Ｃ）を０にセットする。キー記憶１３の更新ビット（Ｃ）は、物理メモリ１２の当該物理ページが書き換えられたときに、キー記憶１３の更新ビット（Ｃ）が１に設定される。したがって、キー記憶１３の更新ビット（Ｃ）が０の場合には、物理ページとスワップファイル１５とが一致し、かつ、当該物理ページがダンプ領域にも書き込まれた状態が維持されていることを示す。ＣＰＵ１１は、更新された物理ページのうち、更新の頻度が基準より高いページを除外しているので、キー記憶１３の更新ビット（Ｃ）が０のまま維持される可能性が高まる。
【００３７】
次に、ＣＰＵ１１は、ＣＰＵ１１内のＴＬＢ１１１を無効化する。そして、ＣＰＵ１１は、ページ変換結果テーブル１２１に記録している更新ビットの履歴を更新する。その後、制御は、ＯＳに復帰し（Ｓ１２）、さらに、アプリケーションの通常処理に復帰する（Ａ１２）。
【００３８】
ＣＰＵ１１において、アプリケーションプログラム実行中に障害が発生すると、まず、ＯＳは、ＯＳに組み込まれたダンプ機能を起動する（Ｓ１３）。本実施形態のダンプ機能（ＯＳ組み込み）は、キー記憶１３の更新ビット（Ｃ）が１（更新済み）の物理ページを探してダンプ処理の対象とする（Ｄ１２）。更新ビット（Ｃ）が１（更新済み）に対応する物理ページは未ダンプの物理ページである。その後、制御は、ＯＳが再起動され（Ｓ１４）、さらに、アプリケーションが再起動される（Ａ１３）。
【００３９】
本実施形態では、更新ビット（Ｃ）＝０は、Ｄ１１のダーティページ書き込み処理によって、スワップファイル１５と物理ページの内容とが一致し、かつ、事前に物理ページがダンプ領域に書き込まれていることを示す。ダンプ処理では、更新ビット（Ｃ）＝０に対応する物理ページは除外される。そのため、障害発生時のダンプ処理は事前にダンプされなかった物理ページか、事前にダンプされた後に書き換えられた物理ページに対して限定的に実行されることになる。以上のように、事前に書き換えの頻度が低い物理ページが選択され、更新ビット（Ｃ）がクリアされるとともに、スワップファイル１５に書き込まれるとともに、当該物理ページがダンプ用ストレージ１６に書き込まれる。そして、障害発生時には、未ダンプ部分の処理が実行されるので、実効的にダンプ処理が高速化される。その結果、障害発生からサーバ１のＯＳおよびアプリケーションプログラムが再起動するまでの時間が短縮される。
【００４０】
＜アドレス変換とテーブルの構成＞
図９は、仮想アドレス（Linear Addressともいう）を物理アドレス（Physical Address）に変換するページ変換テーブル１２０の構成を例示する図である。図９のように、仮想アドレスは、例えば、４８ビット（４７ビット目〜０ビット）であり、Ｐａｇｅ−Ｍａｐ
Ｌｅｖｅｌ−４（ＰＭＬ４）、Ｄｉｒｅｃｔｏｒｙ  Ｐｔｒ、およびＯｆｆｓｅｔの各フィールドを有している。
【００４１】
仮想アドレスのうち、ＰＭＬ４は、ＰＭＬ４テーブル上のオフセット値である。ＰＭＬ４テーブルのベースアドレスは、コントロールレジスタ（ＣＲ３）によって指定される。ＣＲ３とＰＭＬ４で指定されるＰＭＬ４テーブルのエントリ（ＰＭＬ４Ｅ）には、Ｐａｇｅ−Ｄｉｒｅｃｔｏｒｙ−Ｐｏｉｎｔｅｒテーブル（ＰＤＰＴ）のベースアドレスが指定される。
【００４２】
また、仮想アドレスのうち、Ｄｉｒｅｃｔｏｒｙ  Ｐｔｒは、ＰＤＰＴのオフセット値である。ＰＭＬ４ＥによるベースアドレスとＤｉｒｅｃｔｏｒｙ  Ｐｔｒで指定されるＰＤＰＴのエントリ（ＰＤＰＴＥ）には、１−ＧＢｙｔｅ  Ｐａｇｅテーブルのベースアドレスが格納される。
【００４３】
さらに、仮想アドレスのうち、Ｏｆｆｓｅｔは、１−ＧＢｙｔｅ  Ｐａｇｅテーブルのオフセットである。ＰＤＰＴＥとＯｆｆｓｅｔで指定される１−ＧＢｙｔｅ  Ｐａｇｅテーブルのエントリには、物理アドレス（Ｐｈｙｓｉｃａｌ  Ａｄｄｒ）が格納される。以上のように、ページ変換テーブル１２０は、仮想アドレスから、この仮想アドレスに対して割り当てられている物理アドレスに変換するための情報が格納される。なお、ＣＰＵ１１は、ページ変換テーブル１２０のコピー（ＴＬＢ）をキャッシュに保持している。
【００４４】
図１０は、ページ変換結果テーブル１２１の構成を例示する図である。ページ変換結果テーブル１２１は、各物理ページと仮想ページの組に対して、変更ビット（Ｃ）の履歴を保持する。変更ビット（Ｃ）の履歴は、本実施形態のダンプ処理において、ＣＰＵ１１が変更ビット（Ｃ）を読み出すごとに記録される。すなわち、変更ビット（Ｃ）の履歴は、ダンプ処理が繰り返し実行された場合において、各ページが変更ありとなっていたか否かの記録の列である。物理ページに対応するキー記憶１３の現在の変更ビット（Ｃ）を履歴Ｄ0とし、前回ダンプ処理時の同一ページの変更ビットをＤ-1とし、前々回ダンプ処理時
の同一ページの変更ビットをＤ-2とする。
【００４５】
図１０のように、ページ変換結果テーブル１２１の各行は、各物理ページの先頭アドレス（ＰＡ（４７：３０））に対応して設けられる。ここで、ＰＡ（４７：３０）は物理アドレスのオフセットを除く、上位１８ビットであり、物理ページに対応する。したがって、ページ変換結果テーブル１２１の行数は、物理ページのページ数と同数である。
【００４６】
図１０の例では、ページ変換結果テーブル１２１の各行は、ＰＭＬ４Ｔのベースアドレス（ＣＲ３）、仮想アドレスのＰＭＬ４、仮想アドレスのＤｉｒｅｃｔｏｒｙ  Ｐｔｒ、ＰＤＰＴのベースアドレス（ＰＭＬ４Ｅ）、変更ビット（Ｃ）の履歴Ｄ-1、およびＤ-2の各フィールドを有する。
【００４７】
なお、実施形態１では、ダンプ処理実行時、物理ページは、物理ページ順に処理されるので、ＰＭＬ４Ｔのベースアドレス（ＣＲ３）、仮想アドレスのＰＭＬ４、仮想アドレスのＤｉｒｅｃｔｏｒｙ  Ｐｔｒ、ＰＤＰＴのベースアドレス（ＰＭＬ４Ｅ）は記憶しなくてもよい。すなわち、図１０のように、各物理ページの変更ビット（Ｃ）の履歴Ｄ-1、およびＤ-2は、物理ページに対応して格納されている。そのため、ＣＰＵ１１は、物理ページのアドレスから、各物理ページの変更ビット（Ｃ）の履歴Ｄ-1、およびＤ-2を読み出すことができる。したがって、実施形態１では、図１０のページ変換結果テーブル１２１の代わりに、物理ページのアドレスと各物理ページの変更ビット（Ｃ）の履歴Ｄ-1、およびＤ-2とを対応づけた、変更ビット履歴テーブルがあれば十分である。
【００４８】
＜処理フロー＞
図１１は、実施形態１のＯＳブート処理（図６のＳ１）の詳細を例示するフローチャー
トである。この処理では、まず、ＣＰＵ１１は、オペレータ等によるリセットボタンの押下等によって、リセットの指示を受ける（Ｓ１１）。すると、ＣＰＵ１１は、物理メモリ１２をクリアする（Ｓ１２）。また、ＣＰＵ１１は、物理メモリ１２のクリアとともに、クリアされた物理メモリ１２の各物理ページに対応するキー記憶１３の変更ビット（Ｃ）をクリアする。
【００４９】
次に、ＣＰＵ１１は、Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ（ＰＯＳＴ）を実行する（Ｓ１３）。ＰＯＳＴでエラーが検出されると、ＣＰＵ１１は、エラーを表示し（Ｓ１８）、ＯＳブート処理を終了する。
【００５０】
ＰＯＳＴでエラーが検出されない場合、ＣＰＵ１１はブートローダを実行する（Ｓ１５）。そして、ＣＰＵ１１は、ＯＳカーネルをブート領域から読み込み、主記憶に展開する（Ｓ１６）。そして、ＣＰＵ１１は、ＯＳカーネルの処理を開始する（Ｓ１７）。
【００５１】
図１２は、ＯＳ初期化処理（図６のＳ２）の詳細を例示するフローチャートである。ＯＳ初期化処理では、ＣＰＵ１１は、各種の設定、例えば、ページ変換テーブル１２０の初期化を実行する（Ｓ２１）。次に、ＣＰＵ１１は、ＯＳ領域をダンプ用ストレージ１６に書き込む（Ｓ２２）。次に、ＣＰＵ１１は、ＯＳ領域のうち、非常駐領域をスワップファイル１５に書き込み、変更フラグ（Ｃ）を０クリアする（Ｓ２３）。
【００５２】
図１３は、ページ割当処理（図６のＳ４、Ｓ６）の詳細を例示するフローチャートである。図１３の処理は、ＯＳのコードを実行するＣＰＵ１１の処理であるが、ＯＳが実行するものとして説明する。ＯＳは、ページ割当要求を受けると（図６のＳ４）、未使用の物理ページの有無を判定する（Ｓ４１）。未使用の物理ページがない場合、ＯＳはスワップアウトする物理ページを選択する（Ｓ４２）。そして、ＯＳは、スワップアウトする物理ページをスワップファイル１５に書き込む（Ｓ４３）。さらに、ＯＳは、スワップアウトした物理ページを０クリアする（Ｓ４４）。そして、ＯＳは、割り当てる物理ページを選択する（Ｓ４５）。Ｓ４１で未使用の物理ページがなかった場合には、ＯＳは、スワップアウトした物理ページを選択する。
【００５３】
次に、ＯＳは、割り当てた物理ページによって、ページ変換結果テーブル１２１のエントリにアクセスし、変更ビット（Ｃ）の履歴Ｄ-1、Ｄ-2を更新する（Ｓ４６）。次に、ＯＳは、仮想メモリに保持するデータのスワップファイル１５からの読み込みの有無を判定する（Ｓ４７）。スワップファイル１５からの読み込みがある場合とは、当該仮想ページが新規の仮想ページではない場合である。つまり、スワップファイル１５からの読み込みは、スワップファイル１５に保存済みの仮想ページを読み込む処理である。Ｓ４７の判定が「無」の場合、ＯＳは、割り当てた物理ページに対応するダンプ領域を０クリアする（Ｓ４８）。一方、Ｓ４７の判定が「有」の場合、ＯＳは、スワップインする仮想ページをスワップファイル１５から読み込む（Ｓ４９）。そして、読み込んだ仮想ページのデータをダンプ用ストレージ１６に書き込む（Ｓ５０）。そして、ＯＳは、キー記憶１３の変更ビット（Ｃ）をクリアする（Ｓ５１）。少なくとも、Ｓ５１の処理の時点で、物理ページと、スワップファイル１５内の対応するページとで、データが一致しているからである。Ｓ４９からＳ５１の処理は、「仮想記憶方式の仮想メモリのエリアに対応する前記物理メモリのエリアを確保し、前記保存装置に保存された前記仮想メモリのエリアに対応する記憶情報を前記確保した物理メモリのエリアに読み出す処理（Ｓ４９）の実行時に、前記読み出した記憶情報を前記記憶装置に書き込む（Ｓ５０）とともに前記物理メモリのエリアに対応するフラグをクリアする」ことの一例である。
【００５４】
図１４は、タイマー割り込みの処理（図８のＡ１１およびＳ１１）の詳細を例示するフローチャートである。この処理では、ＣＰＵ１１にタイマー割り込みが発生し（Ｓ１１）
、ＯＳは、ダーティページ書込み処理を起動する（Ｄ１１）。
【００５５】
図１５は、ダーティページ書込み処理（図１４のＤ１１の詳細）を例示するフローチャートである。図１５のダーティページ書込み処理は、図１４のタイマー割り込みにより起動されるので、障害が発生していないときに実行される処理である。この処理では、ＣＰＵ１１は、物理ページを順次参照するダーティページ処理ポインタを用いて処理を実行する。ダーティページ書込み処理が起動されると、ＣＰＵ１１は、ダーティページ処理ポインタを更新する（Ｄ１１１）。なお、初回のダーティページ書込み処理の実行では、ダーティページ処理ポインタは、初期値（物理ページの先頭アドレス）に初期化されているものとする。そして、ＣＰＵ１１は、ダーティページ処理ポインタの指すページ変換結果テーブル１２１のエントリを参照する（Ｄ１１２）。
【００５６】
次に、ＣＰＵ１１は、キー記憶１３の変更ビット（Ｃ）およびページ変換結果テーブル１２１のＤ―1／Ｄ-2を参照する（Ｄ１１４）。そして、ＣＰＵ１１は、ダーティページ
処理ポインタの更新回数が基準値（Ｎ１）を以上か否かを判定する（Ｄ１１５）。更新回数が基準値未満の場合、ＣＰＵ１１は、変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2を判定する（Ｄ１１６）。ここで、Ｄ0は現在の変更ビット（Ｃ）そのものである。変更ビット
（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０以外の場合、ＣＰＵ１１は、ページ変換結果テーブル１２１のＤ―1／Ｄ-2を更新し（Ｄ１１７）、処理をＤ１１１に戻す。
【００５７】
変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０以外の場合とは、現在の変更ビット（Ｃ）の値である履歴Ｄ0が書き換え済みでない場合か、現在の変更ビット（Ｃ）
および過去２回のダーティページ書込み処理において変更ビット（Ｃ）の値（３回の変更ビットの履歴）のうち、２回以上が換え済みである場合である。現在の変更ビット（Ｃ）が書き換え済みでない場合には、キー記憶１３に対応する物理ページをダンプ用ストレージ１６にダンプしなくてもよい。また、現在及び過去２回の変更ビット（Ｃ）の履歴で、少なくとも２回の変更の履歴がある場合には、キー記憶１３に対応する物理ページは、書き換えの頻度が高く、将来も書き換えられる可能性が高いといえる。そこで、ＣＰＵ１１は、ダンプ処理を実行せず、ページ変換結果テーブル１２１のＤ―1／Ｄ-2の更新を実行
して、処理をＤ１１１に戻すのである。変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０以外の場合が、フラグの履歴によって更新の頻度が所定限度を超えると判定されるエリアである。また、履歴Ｄ0／Ｄ―1／Ｄ-2の変更ビット（Ｃ）に対応する物理ページがフラグの履歴によって更新の頻度が所定限度を超えると判定されるエリアの一例である。Ｄ１１６の判定で、ＣＰＵ１１が処理をＤ１１１に戻すことは、フラグの履歴を読み出し、前記フラグの履歴によって更新の頻度が所定限度を超えると判定されるエリアに対して、前記第１の処理を実行しないことの一例である。
【００５８】
なお、図１５の処理では、更新の頻度が所定限度を超えるか否かが、履歴Ｄ0／Ｄ―1／Ｄ-2が１／０／０であるか否かによって判定された。つまり、現在の履歴Ｄ0に加えて、
過去２回の履歴Ｄ―1／Ｄ-2のいずれか一方が変更を示している場合に、更新の頻度が所
定限度を超えると判定された。しかし、本実施形態において、更新の頻度が所定限度を超えるか否かが、上記判定に限定される訳ではない。例えば、ＣＰＵ１１は、現在の履歴Ｄ0に加えて、過去１回の履歴Ｄ―1を用いて、更新の頻度が所定限度を超えるか否かを判断してもよい。また、ＣＰＵ１１は、過去３回以上の履歴を用いて、更新の頻度が所定限度を超えるか否かを判断してもよい。
【００５９】
一方、Ｄ１１６の判定で、変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０の場合、ＣＰＵ１１は、物理ページの内容をダンプ領域に書き込む（Ｄ１１８）。変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０の場合とは、現在の変更ビット（Ｃ）の値が物理ページの書き換え済みを示し、かつ、過去２回のダーティページ書込み処理にお
いて変更ビット（Ｃ）の値が書き換え済みでなかった場合である。変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０の場合には、書き換え頻度が比較的低い物理ページが現在書き換えられた状態であることを示す。そこで、ＣＰＵ１１は、物理ページの内容をダンプ用ストレージ１６に書き込むのである。
【００６０】
次に、ＣＰＵ１１は、物理ページの内容をスワップファイル１５に書き込む（Ｄ１１９）。すなわち、ＣＰＵ１１は、スワップファイル１５と物理メモリ１２の内容を一致させる。次に、ＣＰＵ１１は、対象物理ページのＣＰＵ１１内のＴＬＢのエントリを無効化するためＩｎｖａｌｉｄａｔｅ  ＴＬＢ  Ｅｎｔｒｉｅｓ命令を発行する（Ｄ１２０）。さらに、ＣＰＵ１１は、キー記憶１３の更新ビット（Ｃ）＝Ｄ0を０クリアして（Ｄ１２１
）、ページ変換結果テーブル１２１に記録している更新ビットの履歴も更新する（Ｄ１２２）。Ｄ１１８の処理は、障害が発生していないときには、更新済みの設定がされたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第１の処理の一例である。Ｄ１１９の処理は、保存装置に前記更新済みエリアに記憶された記憶情報を保存することの一例である。Ｄ１２０の処理は、更新済みの設定がされたフラグをクリアする処理の一例である。また、Ｄ１１７およびＤ１１２の処理は、フラグの設定値の履歴を保存する処理の一例である。
【００６１】
Ｄ１１８からＤ１２２までの処理は、Ｄ１１７の処理と比較して、負荷が高い。そこで、ＣＰＵ１１は、Ｄ１１８からＤ１２２までの処理を実行すると、ダーティページ書込み処理を終了する。したがって、次回のタイマによるダーティページ書込み処理の起動まで、負荷が低減される。図１５の処理をタイマー割り込みで間隔を置いて起動し、さらに、Ｄ１１８からＤ１２２までの処理を実行すると、ダーティページ書込み処理を終了することは、第１の処理の１回の実行による負荷が所定の限度となるように、前記第１の処理を前記物理メモリの１または複数のエリアごとに順次実行することの一例である。
【００６２】
図１６は、変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2の遷移を例示する表である。表では、タイマー割り込み時、ダーティページ書込み処理時（図１６では、「ダーティ後」）、および、業務用アプリケーションプログラム実行中の変更ビット（Ｃ）の履歴Ｄ0／Ｄ
―1／Ｄ-2の遷移が例示されている。なお、図１６の表では、「ダーティページ書込み処
理時」、「ダーティ後」という文字列で、「業務用アプリケーションプログラム」は、「業務」という文字列で示されている。
【００６３】
表のように、ダーティページ書込み処理の対象になる物理ページは、タイマー割り込み時に、変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０の場合である。いずれにしても、タイマー割り込み時の変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1が、ダーティページ書込み処理後には履歴Ｄ―1／Ｄ-2に遷移することが分かる。また、業務用アプリケーショ
ンプログラム実行中は、履歴Ｄ0の値が物理ページへのアクセス状況に応じて変化する。
【００６４】
図１７は、障害発生時の処理を例示するフローチャートである。この処理は、Ｄ１２１Ａの判定処理が追加されている点以外は、比較例の図２と同様である。すなわち、本実施形態では、ＣＰＵ１１は、ページカウンタ初期化（Ｄ１２１）の後、物理ページに対応するキー記憶１３の変更ビット（Ｃ）が１（変更あり）か否かを判定する（Ｄ１２１Ａ）。そして、物理ページの変更ビット（Ｃ）が１、すなわち、変更ありの場合、ＣＰＵ１１は、図２と同様にダンプ処理を実行する（Ｄ１２２、Ｄ１２３）。Ｄ１２２およびＤ１２３の処理は、障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理の一例である。キー記憶１３の変更ビット（Ｃ）が変更ありの場合には、物理ページは初期化された後にデータが書き込まれたか、または、物理ページのデータが一旦ダンプ用ストレージにダンプされるとともにスワップファイル１５に書き込まれた後、再度書き換えられた状態である。本実施
形態では、障害発生時に、ＣＰＵ１１は、物理ページに対応するキー記憶１３の変更ビット（Ｃ）が変更ありに設定されているときに、当該物理ページを選択してダンプ処理するのである。一方、物理ページの変更ビット（Ｃ）が０、すなわち、変更無しの場合、物理ページは変更されていないか、すでに、スワップファイル１５に書込み済みであるので、ＣＰＵ１１は、処理をＤ１２４に進める。Ｄ１２４以降の処理は、図２のＤ５２４以降の処理と同様であるので、説明を省略する。
【００６５】
＜実施形態１の効果＞
以上述べたように、サーバ１は、ＯＳブート処理時に物理メモリ１２をクリアするとと
もに、キー記憶１３の変更ビット（Ｃ）をクリアする（図１１のＳ１２）。また、サーバ１は、ＯＳ起動後の初期状態で、少なくともＯＳ領域をダンプ用ストレージ１６に書き込むとともに、非常駐領域を記憶する物理ページをスワップファイル１５に書き込み、物理ページに対応するキー記憶１３の変更ビット（Ｃ）をクリアする（図１２のＳ２３）。さらに、サーバ１は、ページ割り当て時に、物理ページのデータとスワップファイル１５内の対応ページのデータが一致すると、物理ページに対応するキー記憶１３の変更ビット（Ｃ）をクリアする（図１３のＳ５１）。また、ＣＰＵ１１は新規なページ割当時、キー記憶１３の変更ビット（Ｃ）をクリアする。したがって、物理ページとスワップファイル１５とで、データが一致している場合には、変更ビット（Ｃ）は未更新（０）が維持される。また、ＣＰＵ１１は、ページ割当時、スワップファイル１５から仮想メモリにデータを読み込んだ場合に、読み込んだデータをダンプ用ストレージ１６に書き込む。このため、未更新（０）の変更ビット（Ｃ）に対応する物理ページは、ＯＳ起動時の０クリアされた初期状態であるか、物理ページの内容がダンプ用ストレージ１６に書込み済みであることになる。
【００６６】
そして、障害が発生していない通常運用時、ＣＰＵ１１がタイマーにより、ダーティページ書込み処理を実行する。ダーティページ書込み処理では、ＣＰＵ１１は、変更ビット（Ｃ）の値＝１である書き換えられた物理ページを選択して、スワップファイル１５への書込み、ダンプ用ストレージ１６への書込みを実行し、さらに変更ビット（Ｃ）の０クリアを実行する。したがって、本実施形態では、障害発生前のサーバ１の運用時、物理ページ未更新（０）を示す変更ビット（Ｃ）に対応する物理ページについては、ＯＳ起動時の０クリアされた初期状態であるか、物理ページの内容がダンプ用ストレージ１６に書込み済みであることになる。したがって、この状態で、仮に、障害発生し、ダンプ処理が実行されたとしても、ＣＰＵ１１は、変更ビット（Ｃ）が更新（１）に設定された物理ページを選択して、ダンプ処理を実行すればよい（図１７）。したがって、サーバ１は、障害発生前に、事前に可能な範囲でダンプ処理を実行できるので、障害発生時には、実効的に、高速にダンプ処理を実行できる。
【００６７】
また、サーバ１では、ＣＰＵ１１は、物理ページの内容をダンプ領域に書き込むとともに、物理ページの内容とスワップファイル１５の内容を一致させる（図１５のＤ１１８、Ｄ１１９）。そして、ＣＰＵ１１は、変更ビット（Ｃ）をクリアする（同図Ｄ１２１）。したがって、変更ビット（Ｃ）が変更なし（０）の場合には、物理ページが初期状態であるか、すでにスワップファイル１５に書込み済みとなり、障害発生時には、ＣＰＵ１１は、変更ビット（Ｃ）が変更あり（１）の物理ページを選択してダンプ処理すればよいことを判定できる。
【００６８】
また、サーバ１では、ＣＰＵ１１は、変更ビット（Ｃ）の履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０の物理ページを選択して、事前のダンプを実施する。履歴Ｄ0／Ｄ―1／Ｄ-2が、１／０／０以外の物理ページは、書き換え頻度が高く、仮に、事前にダンプしたとしても、その後、書き換えられる可能性がある。そこで、サーバ１のＣＰＵ１１は、事前にダンプした後、ダンプした結果が物理ページに維持される可能性のある物理ページに限定して
、事前のダンプ処理を実行する。即ち、ダーティページ書き込み処理による事前ダンプの段階で、ＣＰＵ１１は、無駄なダンプ処理を回避し、ダンプ処理の効率を向上し、事前のダンプ処理に伴うシステムの負荷を低減できる。
【００６９】
また、本実施形態のダーティページ書込み処理では、ＣＰＵ１１は、ダンプ処理伴う負荷が大きくならないように、１回のタイマー起動におけるダンプ処理の処理負荷を制限する。例えば、ＣＰＵ１１は、物理ページの変更ビット（Ｃ）が変更されているか否かの判定回数を基準値（Ｎ１）に限定する。また、ＣＰＵ１１が図１５のように一度ダンプ用ストレージ１６のダンプ領域への書込み処理を実行すると、ダーティページ書込み処理を終了し、次のタイマー起動まで待つ。このようにして、ＣＰＵ１１は、１回のタイマー起動によるダンプ処理の処理負荷を制限し、サーバ１を安定して稼働させることができる。
【００７０】
また、本実施形態では、サーバ１は、スワップインの処理のときに、スワップインされたページをダンプ用ストレージ１６に書き出し、変更ビット（Ｃ）をクリアする（図１３のＳ４９からＳ５１）。したがって、サーバ１は、スワップインの処理とともに、事前ダンプを実行できる。
【００７１】
［実施形態２］
図１８から図２３の図面を参照して、実施形態２に係る情報処理システムであるサーバ１Ａについて説明する。上記実施形態１では、サーバ１は、メインフレーム等のアーキテクチャのプロセッサで採用される物理ページに対応するキー記憶１３の変更ビット（Ｃ）を用いていることでダンプ処理を高速化した。すなわち、サーバ１のＣＰＵ１１は、キー記憶１３の変更ビット（Ｃ）を基に、物理ページの変更の有無およびスワップファイル１５への書込みが終了しているか否かを判定し、ダンプ用ストレージ１６に書き込まれていない物理ページを選択して、ダンプ処理を実行した。実施形態２では、物理ページに対応するキー記憶１３の変更ビット（Ｃ）を有しないアーキテクチャのプロセッサにおいて、実施形態１と同様のダンプ処理を実行する。プロセッサのアーキテクチャの違い以外は、実施形態２のサーバ１Ａは、実施形態１のサーバと同様である。そこで、実施形態２の構成要素のうち、実施形態１の構成要素と同一の構成要素については、同一の符合を付してその説明を省略する。
【００７２】
図１８は、実施形態２に係る情報処理システムの一例であるサーバ１Ａの構成を例示する図である。サーバ１Ａは、サーバ１のキー記憶１３がないこと、および、ページ変換テーブル１２０Ａにダーティビット（Ｄ）が設定される点で実施形態１のサーバ１とは異なる。また、ダーティビット（Ｄ）は、ＴＬＢ１１１の一部としてＣＰＵ１１内にも保持される。サーバ１Ａの他の構成要素は、実施例１のサーバ１と同様である。
【００７３】
図１９は、ダーティビット（Ｄ）に関連するＣＰＵ１１のハードウェアの制御回路の処理を例示する。なお、Ａ１６およびＡ１７は、実施形態１（図７）のＡ６およびＡ７と同様であるので、その説明を省略する。そして、ＴＬＢ１１を参照した結果（Ａ１８）、ダーティビット（Ｄ）の複製情報が０の場合には、ＣＰＵ１１は、まず、ＯＳに対して割り込み等により、ＰＴＤＴＥのダーティビット（ＰＴＤＴＥ（Ｄ））を書き込み済み（＝１）に設定するように依頼する。そして、ＯＳから制御が戻ると、ＣＰＵ１１は、ＴＬＢ上のダーティビットの複製（Ｄ）を書き込み済み（＝１）に設定する（Ａ１９）。そして、ＣＰＵ１１は、物理メモリ１２への書き込みを実行する（Ａ２０）。
【００７４】
すなわち、キー記憶１３を具備していないアーキテクチャのＣＰＵ１１は、ＣＰＵ１１が物理メモリ１２に書き込みを行うとき、ページ変換テーブル１２０Ａのダーティビット（ＰＴＤＴＥ（Ｄ））を１にするようにＯＳに依頼する。ＣＰＵ１１は、ＴＬＢ１１１にコピーされたダーティビット（Ｄ）の複製情報を参照することで、ダーティビット（ＰＴ
ＤＴＥ（Ｄ））の変更回数、ＯＳへの変更依頼回数を低減できる。
【００７５】
図２０は、ページ変換テーブル１２０Ａの構成を例示する図である。ページ変換テーブル１２０Ａは、ＰＤＰＴＥの下から７番目のビット（矢印でさされる、ビット６のエントリ）が、ダーティビット（Ｄ）として使用される。ページ変換テーブル１２０Ａの他の構成要素は、実施形態１のページ変換テーブル１２０の構成要素と同様である。
【００７６】
図２１は、実施形態２におけるページ割当処理を例示するフローチャートである。実施形態２では、実施形態１のサーバ１が有していたキー記憶１３が存在しないため、図１３のＳ５１の処理、すなわち、キー記憶１３の変更ビット（Ｃ）をクリアする処理がない。このＳ５１の処理に代えて、実施形態２のページ割当処理では、割当ページの選択（Ｓ４
５）の後、ページ変換テーブル１２０Ａが更新され、ダーティビット（Ｄ）がクリアされる（Ｓ４６Ａ）。実施形態２のページ割当処理（図２１）の他の処理は、実施形態１の図１３であるので、その説明を省略する。Ｓ４６Ａ、Ｓ４９、およびＳ５０の処理は、「仮想記憶方式の仮想メモリのエリアに対応する前記物理メモリのエリアを確保し、前記保存装置に保存された前記仮想メモリのエリアに対応する記憶情報を前記確保した物理メモリのエリアに読み出す処理（Ｓ４９）の実行時に、前記読み出した記憶情報を前記記憶装置に書き込むとともに前記物理メモリのエリアに対応するフラグをクリアする」ことの一例である。
【００７７】
図２２に、実施形態２のダーティページ書込み処理を例示する。実施形態２のダーティページ書込み処理は、Ｄ１１３Ａ、Ｄ１１４Ａ、およびＤ１２１Ａの処理を除いて、実施形態１のページ書込み処理（図１５）と同様である。すなわち、実施形態２においては、ＣＰＵ１１は、ダーティページ処理ポインタから、ページ変換結果テーブル１２１を参照し（図１０参照）、例えば、ページ変換テーブル１２０のうち、ダーティビット（Ｄ）が格納されているＰＤＰＴＥのアドレスを生成する（Ｄ１１３Ａ）。そして、ＣＰＵ１１は、ＰＤＰＴＥからダーティビット（Ｄ）を取得するとともに、ページ変換結果テーブルの履歴Ｄ-1／Ｄ-2を取得する（Ｄ１１４Ａ）。
【００７８】
また、実施形態２においては、ＣＰＵ１１は、物理ページの内容をダンプ用ストレージ１６のダンプ領域に書き出し（Ｄ１１８）、スワップファイル１５と一致させた後（Ｄ１１９）、ページ変換テーブル１２０のＰＤＰＴＥのダーティビットをクリアする（Ｄ１２１Ａ）。実施形態２のダーティページ書込み処理（図２２）のうち、Ｄ１１３Ａ、Ｄ１１４Ａ、およびＤ１２１Ａ以外の処理は実施形態１の図１５と同様であるので、その説明を省略する。Ｄ１２１Ａの処理は、更新済みの設定がされたフラグをクリアする処理の一例である。
【００７９】
図２３に、実施形態２におけるメモリダンプ処理を例示する。この処理では、ＣＰＵ１１は、まず、ダーティページ処理ポインタを更新する（Ｄ１３１）。次に、ＣＰＵ１１は、ダーティページ処理ポインタの指す物理ページに対応するページ変換結果テーブル１２１のエントリから、ページ変換テーブル１２０ＡのＰＤＰＴＥのアドレスを生成する（Ｄ１３３）。そして、ＣＰＵ１１は、ページ変換テーブル１２０ＡのＰＤＰＴＥから、ダーティビットを参照する（Ｄ１３４）。そして、ＣＰＵ１１は、ダーティビットが１（書き換えあり）か否かを判定する（Ｄ１３５）。ダーティビットが１であり、物理ページの書き換えがある場合には、ＣＰＵ１１は、その物理ページの内容をダンプ用ストレージ１６のダンプ領域に書き込む（Ｄ１３６）。そして、ＣＰＵ１１は、ページ変換テーブル１２０ＡのＰＤＰＴＥのダーティビットを０クリアする（Ｄ１３７）。そして、ＣＰＵ１１は、全物理ページを終了したか否かを判定する（Ｄ１３８）。ＣＰＵ１１は、全物理ページを終了していない場合、Ｄ１３１の処理に戻る。一方、ＣＰＵ１１は、全物理ページを終了した場合には、処理を終了する。Ｄ１３５およびＤ１３６の処理は、障害が発生したときに、更新済みの設定されたフラグに対応する更新済みエリアに記憶された記憶情報を前記記憶装置に書き込む第２の処理の一例である。
【００８０】
以上のように、プロセッサのアーキテクチャにキー記憶１３の変更ビット（Ｃ）がない場合でも、ページ変換テーブル１２０Ａのダーティビットを用いることで、実施形態２のサーバ１Ａは、実施形態１のサーバ１と同等の処理を実行し、＜実施形態１の効果＞に記載した効果と同様の効果を達成できる。例えば、サーバ１Ａも、サーバ１と同様、障害発生時のダンプを高速化できる。
【００８１】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００８２】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ
等に固定された記録媒体としても利用可能である。
【符号の説明】
【００８３】
１    サーバ
１１    ＣＰＵ
１２    物理メモリ
１３    キー記憶
１４    入出力部
１５    スワップファイル
１６    ダンプ用ストレージ
１２０    ページ変換テーブル
１２１    ページ変換結果テーブル
【図１】
0006604241.tif 000002
【図２】
0006604241.tif 000003
【図３】
0006604241.tif 000004
【図４】
0006604241.tif 000005
【図５】
0006604241.tif 000006
【図６】
0006604241.tif 000007
【図７】
0006604241.tif 000008
【図８】
0006604241.tif 000009
【図９】
0006604241.tif 000010
【図１０】
0006604241.tif 000011
【図１１】
0006604241.tif 000012
【図１２】
0006604241.tif 000013
【図１３】
0006604241.tif 000014
【図１４】
0006604241.tif 000015
【図１５】
0006604241.tif 000016
【図１６】
0006604241.tif 000017
【図１７】
0006604241.tif 000018
【図１８】
0006604241.tif 000019
【図１９】
0006604241.tif 000020
【図２０】
0006604241.tif 000021
【図２１】
0006604241.tif 000022
【図２２】
0006604241.tif 000023
【図２３】
0006604241.tif 000024