(57)【特許請求の範囲】
【請求項１】
仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うコンピュータシステムであって、
前記イベント受信プロセスは、
前記イベント送信プロセスからのイベントを受信するイベント受信手段と、
前記イベント受信プロセスの動作に用いられ、一時的なデータを格納するスタックと、
前記スタックに格納されたデータに基づき、当該スタック以外のページをページインするミッシングページ例外解決手段とを備え、
前記イベント送信プロセスは、
前記イベント受信プロセスへイベントを送信するイベント送信手段を備え、
前記コンピュータシステムは、
メモリ上に存在しないページへ参照された場合に発生するミッシングページ例外を検出し、前記ミッシングページ例外を表わす情報を前記スタックに格納し、前記ミッシングページ例外解決手段を起動するミッシングページ例外検出手段をさらに備え、
前記イベント送信プロセスは、
前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出手段と、
前記長時間待ち検出手段により前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスの前記スタックをページインするスタックページイン手段と、
をさらに備えるコンピュータシステム。
【請求項２】
前記イベント受信プロセスは、
前記イベント受信プロセスの最終動作時刻を記憶する最終動作時刻記憶部をさらに備え、
前記長時間待ち検出手段は、
前記最終動作時刻記憶部から前記最終動作時刻を取得し、前記長時間待ち状態であるかを検出する、請求項１に記載のコンピュータシステム。
【請求項３】
前記長時間待ち検出手段は、
前記最終動作時刻と現在時刻との差分から、前記長時間待ち状態であるかを検出する、請求項２に記載のコンピュータシステム。
【請求項４】
前記イベント受信プロセスは、
前記イベント受信プロセスの動作開始時に、前記最終動作時刻記憶部へ前記イベント受信プロセスの処理開始の旨を格納し、前記イベント受信プロセスの最終動作の終了後に、前記最終動作時刻記憶部へ前記最終動作時刻を格納する最終動作時刻格納手段をさらに備える、請求項２又は３に記載のコンピュータシステム。
【請求項５】
前記コンピュータシステムは、
前記スタックをページインするスタックページイン代行プロセスをさらに備え、
前記ミッシングページ例外検出手段は、
メモリ上に存在しない前記スタックへ参照された場合に発生するスタックにおけるミッシングページ例外を検出し、前記スタックページイン代行プロセスへ通知し、前記スタックページイン代行プロセスを起動する、請求項１乃至４のいずれか１項に記載のコンピュータシステム。
【請求項６】
仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うコンピュータシステムの仮想記憶制御方法であって、
前記イベント送信プロセスが、前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出ステップと、
前記イベント送信プロセスが、前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスのスタックをページインするスタックページインステップと、
前記イベント送信プロセスが、前記イベント受信プロセスへイベントを送信するイベント送信ステップと、
前記コンピュータシステムのミッシングページ例外検出手段が、メモリ上に存在しないページへ参照された場合に発生するミッシングページ例外を検出するステップと、
前記ミッシングページ例外検出手段が、前記ミッシングページ例外が検出された場合に、前記ミッシングページ例外を表わす情報を前記スタックに格納するステップと、
前記コンピュータシステムのミッシングページ例外解決手段が、前記スタックに格納されたデータに基づき、当該スタック以外のページをページインするステップと、
を含む仮想記憶制御方法。
【請求項７】
前記仮想記憶制御方法は、
前記イベント受信プロセスが、前記イベント受信プロセスの最終動作時刻を最終動作時刻記憶部に格納する最終動作時刻格納ステップをさらに含み、
前記長時間待ち検出ステップは、
前記イベント送信プロセスが、前記最終動作時刻を取得し、前記長時間待ち状態であるかを検出する、請求項６に記載の仮想記憶制御方法。
【請求項８】
前記長時間待ち検出ステップは、
前記イベント送信プロセスが、前記最終動作時刻と現在時刻との差分から、前記長時間待ち状態であるかを検出する、請求項７に記載の仮想記憶制御方法。
【請求項９】
前記最終動作時刻格納ステップは、
前記イベント受信プロセスが、前記イベント受信プロセスの動作開始時に、前記最終動作時刻記憶部へ前記イベント受信プロセスの処理開始の旨を格納し、前記イベント受信プロセスの最終動作の終了後に、前記最終動作時刻記憶部へ前記最終動作時刻を格納する、請求項７又は８に記載の仮想記憶制御方法。
【請求項１０】
仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うコンピュータに仮想記憶の制御処理を実行させるためのプログラムであって、
前記制御処理は、
前記イベント送信プロセスが、前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出処理と、
前記イベント送信プロセスが、前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスのスタックをページインするスタックページイン処理と、
前記イベント送信プロセスが、前記イベント受信プロセスへイベントを送信するイベント送信処理と、
前記コンピュータのミッシングページ例外検出手段が、メモリ上に存在しないページへ参照された場合に発生するミッシングページ例外を検出し、前記ミッシングページ例外を表わす情報を前記スタックに格納するミッシングページ例外検出処理と、
前記コンピュータのミッシングページ例外解決手段が、前記スタックに格納されたデータに基づき、当該スタック以外のページをページインするミッシングページ例外解決処理と、
を含むプログラム。
【請求項１１】
前記プログラムは、
前記イベント受信プロセスが、前記イベント受信プロセスの最終動作時刻を記憶する最終動作時刻記憶部をさらに含み、
前記長時間待ち検出処理は、
前記イベント送信プロセスが、前記最終動作時刻記憶部から前記最終動作時刻を取得し、前記長時間待ち状態であるかを検出する、請求項１０に記載のプログラム。
【請求項１２】
前記長時間待ち検出処理は、
前記イベント送信プロセスが、前記最終動作時刻と現在時刻との差分から、前記長時間待ち状態であるかを検出する、請求項１１に記載のプログラム。
【請求項１３】
前記プログラムは、
前記イベント受信プロセスが、前記イベント受信プロセスの動作開始時に、前記最終動作時刻記憶部へ前記イベント受信プロセスの処理開始の旨を格納し、前記イベント受信プロセスの最終動作の終了後に、前記最終動作時刻記憶部へ前記最終動作時刻を格納する最終動作時刻格納処理をさらに備える、請求項１１又は１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、仮想記憶制御方法、及びプログラムに関し、特にプロセスの実行情報を格納するスタックにおけるミッシングページ例外の発生を防ぐことのできるコンピュータシステム、仮想記憶制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、仮想記憶を採用する多くのコンピュータシステムでは、ＬＲＵ（Least Recently Used）等のページ置換アルゴリズムに基づいて、使用頻度の低いページをページアウトする。したがって、イベント受信待ちの時間が所定時間以上である長時間待ち状態であったプロセスがイベント受信などを契機に突然動き出す場合、メモリ上に存在しないページへの参照であることを示すミッシングページ例外が、高い確率で発生する。
【０００３】
なお、一般的なコンピュータシステムは、使用頻度が低いとメモリ上からページアウトされるページング対象のページと、使用頻度に関わらず常にメモリ上に存在するページング対象外のページとを備える。メモリを効率的に利用するという観点では、ページング対象外のページを少なくすることが好ましい。
【０００４】
特許文献１に記載の技術は、共有リソースに変更を行わない時には、排他制御によるプロセス待ち状態を回避し、システムの処理性能の低下を防止する共有リソースの排他制御を行うものである。
【０００５】
特許文献１に記載の共有リソースの排他制御装置は、情報処理を行う複数のプロセスと、その複数のプロセスによって共有される共有リソースと、プロセスの共有リソースへのアクセスの排他制御を行い、共有リソースへのアクセスが同時に複数のプロセスで処理が行われないようにする共有リソースアクセス排他手段と、共有リソースの内容を変更する共有リソース変更手段と、共有リソースの内容を変更する必要が生じた場合に、共有リソース変更手段からの要求に基づいて、プロセスに対し、共有リソースアクセス排他手段を使用して共有リソースへのアクセスに排他制御を行うように要求する共有リソースアクセス方法変更手段と、を有する。
【０００６】
しかしながら、特許文献１では、解放されたプロセスの処理の再開に伴う、システムの処理性能の低下については、考慮されていない。
【０００７】
特許文献２に記載のコンピュータシステムは、ページミッシング時に該当するページを二次記憶から主記憶にページインし、ページ置換アルゴリズムとして主記憶に存在する各プロセスのページの使用頻度を管理している使用頻度表に基づくＬＲＵを採用するデマンドページング方式による仮想記憶管理機構を有するものである。
【０００８】
特許文献２に記載のコンピュータシステムは、システムの負荷状況に応じ、待ち状態に入るプロセスに含まれ、かつ、主記憶に存在しているページについて前記使用頻度表で管理されている使用頻度を下げる待ち状態突入時使用頻度変更手段と、システムの負荷状況に応じ、待ち状態の解除されたプロセスに含まれ、かつ、主記憶に存在しているページについて前記使用頻度表で管理されている使用頻度を上げる待ち解除時使用頻度変更手段とを有する。
【０００９】
しかしながら、特許文献２では、ページイン処理を行う場合に主記憶上に、プロセスの実行情報を格納するスタックの領域が存在することを前提としているが、スタック自体が主記憶上に存在しない場合については、考慮されていない。
【００１０】
特許文献３に記載の技術は、不必要なイベントを無効にすることができ、またイベントの受信順序を自由に変更できるイベント送受信装置に関するものである。
【００１１】
特許文献３に記載のイベント送受信装置は、イベント名と、送受信回数を関連付けて登録する受信イベント管理テーブルと非受信イベント管理テーブルを設け、送信側プロセスは、イベントキューに格納する際に、いずれかのテーブルに登録されたそのイベントについての送信回数を更新する。受信側プロセスは、受信イベント管理テーブルの送信回数と受信回数を比較し、送信回数の方が大きい時はイベント受信回数を更新して、イベントキューからイベントを読み込む。イベント名を登録する受信イベント管理テーブルと非受信イベント管理テーブルとの間でそのイベントを相手側のテーブルに移し替えることにより、受信順序を入れ替え、受信回数を大きくすることにより、不要なものを受信しないで済む。
【００１２】
しかしながら、特許文献３では、イベントを受信する回数を減らすことはできるが、イベントを受信する処理の１回当たりのシステムの処理性能の低下については、考慮されていない。
【００１３】
特許文献４に記載の技術は、仮想記憶システムにおいて、仮想空間上のプログラムを実行する場合、プログラムのページの実行と並行してプリページングを行うことにより、プログラムローディング時間を短縮するものである。
【００１４】
特許文献４に記載のプログラムローディング方式は、プロセッサにプログラムを二次記憶装置から全ページロードし、プログラムを実行し、この時参照したページを記憶しておく。実行後のプログラムはページファイルへページアウトする。ページファイルへページアウトしたプログラムをロードする場合、プログラムの１ページをプロセッサにページインし、実行している間に、以前に参照したページは続いて実行する可能性が高いとして、そのページの近くで以前参照された数ページのページインを行う。
【００１５】
これにより、ページファイルからプロセッサへのプログラムのローディングにおいて、プログラム実行時のページイン待ちを減らすことで、プログラム実行時間の短縮を図ることができる。
【００１６】
しかしながら、特許文献４では、関連性の高いページを連続してページインする際に効果を発揮するが、関連性の低いページを複数、または、同時にページインする際には、効果が発揮されない。
【００１７】
ここで、ミッシングページ例外が発生する仕組みと、ページ、及びスタックでのミッシングページ例外を解決する仕組みとして考え得るものとを挙げる。
【００１８】
図７は、ミッシングページ例外を解決するためにミッシングページ例外検出手段とミッシングページ例外解決手段を用いたコンピュータシステム１００ａの構成及び動作を示す図である。図７に示すコンピュータシステム１００ａは、仮想記憶を採用しており、ＬＲＵ等のページ置換アルゴリズムに基づいて、使用頻度の低いページをページアウトするものである。コンピュータシステム１００ａは、イベント送信プロセス１０ａと、イベント受信プロセス２０ａと、ミッシングページ例外検出手段５１ａとを含む。
【００１９】
イベント送信プロセス１０ａは、イベント受信プロセス２０ａへイベントの送信を行うプロセスである。イベント送信プロセス１０ａは、イベント送信機能１１ａ、イベント送信手段１４を含む。イベント送信機能１１ａは、イベント送信手段１４を実行し、イベント受信プロセス２０ａへイベントを送信する。
【００２０】
イベント受信プロセス２０ａは、イベント受信機能２１ａ、イベント受信手段２３、ミッシングページ例外解決手段２４、スタック２６、その他のページ２７を含む。
【００２１】
イベント受信機能２１ａは、イベント受信手段２３により、イベント送信プロセス１０ａからのイベントを受信する。また、イベント受信手段２３は、イベントを受信した後、次のイベントの受信を待ち受ける受信待ち状態となる。また、イベント受信手段２３は、他のプロセスからのイベントを受信することができる。
【００２２】
ミッシングページ例外解決手段２４は、ページ２７でミッシングページ例外が発生したときにページインを行う手段である。ミッシングページ例外解決手段２４は、ソフトウェアとして実装されたものであればよい。
【００２３】
スタック２６は、イベント受信プロセス２０ａでミッシングページ例外が発生した時に、ミッシングページ例外情報を一時的に格納し、また、イベント受信プロセス２０ａ上で動作する各手段が一時的なデータを格納するテーブルである。尚、ミッシングページ例外情報とは、ミッシングページ例外発生時のプログラムカウンタ（命令カウンタ値、例外を引き起こした命令のアドレス）の値、レジスタの値、対象ページのアドレスなどから構成される。
【００２４】
ページ２７は、イベント受信プロセス２０ａに属し、かつ、ページング対象であるメモリ領域を示す。
【００２５】
ミッシングページ例外検出手段５１ａは、イベント受信プロセス２０ａで発生するミッシングページ例外を検出し、ミッシングページ例外解決手段２４を起動する手段である。ミッシングページ例外検出手段５１ａは、ハードウェアとして実装されたものであればよい。
【００２６】
次に、コンピュータシステム１００ａがミッシングページ例外を解決する例を説明する。前提として、イベント受信プロセス２０ａは、長時間待ち状態であり、ページ２７がメモリ上に存在しないものとする。
【００２７】
まず、イベント送信プロセス１０ａのイベント送信手段１４は、イベント受信プロセス２０ａへイベントを送信する（Ｄ２０１）。次に、イベント受信プロセス２０ａのイベント受信手段２３は、当該イベントを受信し、イベント受信プロセス２０ａの動作を開始する。
【００２８】
イベント受信プロセス２０ａにおいて、イベント受信手段２３、イベント受信機能２１ａ、あるいは、その他の手段は、ページ２７を参照／更新する。このとき、ページ２７がメモリ上に存在しないため、イベント受信プロセス２０ａにおいて、ミッシングページ例外が発生する。そして、ミッシングページ例外検出手段５１ａは、ページ２７のミッシングページ例外を検出する（Ｄ２０２）。
【００２９】
その後、ミッシングページ例外検出手段５１ａは、イベント受信プロセス２０ａに割り込みをかけ、ページ２７がミッシングページであることを示すミッシングページ例外情報をスタック２６に格納する（Ｄ２０３）。ミッシングページ例外検出手段５１ａは、ミッシングページ例外解決手段２４を起動する（Ｄ２０４）。ミッシングページ例外解決手段２４は、スタック２６からミッシングページ例外情報を取り出す（Ｄ２０５）。ミッシングページ例外解決手段２４は、取り出したミッシングページ例外情報を基にページ２７のページイン処理を行う（Ｄ２０６）。
【００３０】
このようにして、上述したコンピュータシステム１００ａでは、ミッシングページ例外を解決することができる。しかしながら、上述したコンピュータシステム１００ａでは、スタック２６自体がページング対象である場合、スタック２６を構成するページがページアウトされ、ミッシングページ例外が発生する可能性がある。そのため、前記処理だけでは不十分である。なぜなら、スタック２６がページアウトされると、ミッシングページ例外検出手段５１は、ミッシングページ例外情報をスタック２６に格納することができないからである。そこで、上記問題に対する一つの解決案として、以下に示すスタックページイン代行プロセスを導入することが考えられる。
【００３１】
図８は、スタックページイン代行プロセスを用いたコンピュータシステム１００ｂの構成及び動作を示す図である。コンピュータシステム１００ｂは、図７のコンピュータシステム１００ａに対して、ミッシングページ例外検出手段５１ａがミッシングページ例外検出手段５１ｂに置き換わり、スタックページイン代行プロセス３０がさらに追加されたものである。また、それ以外の構成についても、図７と同等のため、説明を省略する。
【００３２】
ミッシングページ例外検出手段５１ｂは、ミッシングページ例外検出手段５１ａの機能に加え、検出したミッシングページ例外がスタックに関する場合、後述するスタックページイン代行プロセス３０を起動する手段である。
【００３３】
スタックページイン代行プロセス３０は、スタックページイン手段３１、メッセージ登録テーブル３５を含む。スタックページイン代行プロセス３０は、コンピュータシステム１００ｂ内に一つだけ存在し、ページング対象外のプロセスである。
【００３４】
スタックページイン手段３１は、プロセスのスタックにおいてミッシングページ例外が発生した場合に、当該プロセスのスタックをページインする手段である。
【００３５】
メッセージ登録テーブル３５は、スタックに関するミッシングページ例外情報を一時的に格納するテーブルである。メッセージ登録テーブル３５は、常にページング対象外である。メッセージ登録テーブル３５へのアクセスでミッシングページ例外を発生させないためである。
【００３６】
次に、コンピュータシステム１００ｂがスタック２６におけるミッシングページ例外を解決する例を説明する。前提として、イベント受信プロセス２０ａは、長時間待ち状態であり、ページ２７及びスタック２６がメモリ上に存在しないものとする。
【００３７】
まず、イベント送信プロセス１０ａのイベント送信手段１４は、イベント受信プロセス２０ａへイベントを送信する（Ｄ３０１）。次に、イベント受信プロセス２０ａのイベント受信手段２３は、当該イベントを受信し、イベント受信プロセス２０ａの動作を開始する。
【００３８】
イベント受信プロセス２０ａにおいて、イベント受信手段２３、イベント受信機能２１ａ、あるいは、その他の手段は、ページ２７を参照／更新する。このとき、ページ２７がメモリ上に存在しないため、イベント受信プロセス２０ａにおいて、ミッシングページ例外が発生する。そして、ミッシングページ例外検出手段５１ｂは、ページ２７のミッシングページ例外を検出する（Ｄ３０２）。
【００３９】
その後、ミッシングページ例外検出手段５１ｂは、イベント受信プロセス２０ａに割り込みをかけ、ページ２７がミッシングページであることを示すミッシングページ例外情報をスタック２６に格納することを試みる（Ｄ３０３）。このとき、スタック２６がメモリ上に存在しないため、ミッシングページ例外検出手段５１ｂは、ミッシングページ例外情報の格納に失敗する。そこで、ミッシングページ例外検出手段５１ｂは、スタックページイン代行プロセス３０のメッセージ登録テーブル３５に、スタック２６がミッシングページであることを示すミッシングページ例外情報を格納する（Ｄ３０４）。ミッシングページ例外検出手段５１ｂは、スタックページイン代行プロセス３０のスタックページイン手段３１を起動する（Ｄ３０５）。
【００４０】
スタックページイン手段３１は、メッセージ登録テーブル３５からミッシングページ例外情報を取得する（Ｄ３０６）。スタックページイン手段３１は、取得したミッシングページ例外情報を基に、イベント受信プロセス２０ａのスタック２６をページインする（Ｄ３０７）。その後、スタックページイン手段３１は、イベント受信プロセス２０ａを起動する。
【００４１】
イベント受信プロセス２０ａにおいて、イベント受信手段２３、イベント受信機能２１ａ、あるいは、その他の手段は、再び、ページ２７を参照／更新する。このとき、ページ２７がメモリ上に存在しないため、イベント受信プロセス２０ａにおいて、ミッシングページ例外が発生する。そして、ミッシングページ例外検出手段５１ｂは、ページ２７のミッシングページ例外を再び検出する（Ｄ３０８）。
【００４２】
その後、ミッシングページ例外検出手段５１ｂは、イベント受信プロセス２０ａに割り込みをかけ、ページ２７がミッシングページであることを示すミッシングページ例外情報をスタック２６に格納することを試みる（Ｄ３０９）。このとき、スタック２６がメモリ上に存在するため、ミッシングページ例外検出手段５１ｂは、ミッシングページ例外情報の格納に成功する。ミッシングページ例外検出手段５１ｂは、ミッシングページ例外解決手段２４を起動する（Ｄ３１０）。ミッシングページ例外解決手段２４は、スタック２６からミッシングページ例外情報を取り出す（Ｄ３１１）。ミッシングページ例外解決手段２４は、取り出したミッシングページ例外情報を基にページ２７のページイン処理を行う（Ｄ３１２）。
【００４３】
このように、上述したコンピュータシステム１００ｂでは、スタックにおけるミッシングページ例外を解決することができる。また、上述したコンピュータシステム１００ｂでは、スタックページイン代行プロセス３０以外のプロセスのスタックをページング対象にすることが可能であり、プロセス数が多い場合であっても、スタックページイン代行プロセス３０のみをメモリ上に常駐させればよく、必要メモリ量を少なくすることができる。
【特許文献１】特開２０００−００３２８７号公報
【特許文献２】特開平０２−２１９１４８号公報
【特許文献３】特開平１０−００３３９３号公報
【特許文献４】特開平０７−１５２５７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００４４】
しかしながら、上述したコンピュータシステム１００ｂでは、イベント送信プロセス１０ａからイベント受信プロセス２０ａへのイベントの送信が、短時間に大量に動作すると、スタックページイン代行プロセス３０に処理が集中し、スタックページイン代行プロセス３０がボトルネックとなることによって、システム全体の性能が低下するという問題がある。
【００４５】
本発明は、このような問題点を解決するためになされたものであり、スタックにおけるミッシングページ例外の発生を防ぐことのできるコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００４６】
本発明にかかるコンピュータシステムは、仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うものである。前記イベント受信プロセスは、前記イベント送信プロセスからのイベントを受信するイベント受信手段と、前記イベント受信プロセスの動作に用いられ、一時的なデータを格納するスタックと、を備える。前記イベント送信プロセスは、前記イベント受信プロセスへイベントを送信するイベント送信手段と、前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出手段と、前記長時間待ち検出手段により前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスの前記スタックをページインするスタックページイン手段と、を備える。
【００４７】
本発明にかかる仮想記憶制御方法は、仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うコンピュータシステムにおけるものである。前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出ステップと、前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスのスタックをページインするスタックページインステップと、前記イベント受信プロセスへイベントを送信するイベント送信ステップと、を含む。
【００４８】
本発明にかかるプログラムは、仮想記憶を採用し、イベント送信プロセスとイベント受信プロセスの間でイベントの送受信を行うコンピュータの仮想記憶の制御処理を実行させるものである。前記制御処理は、前記イベント受信プロセスのイベント受信待ちの時間が所定時間以上である長時間待ち状態かどうかを検出する長時間待ち検出処理と、前記イベント受信プロセスが長時間待ち状態であると検出された場合、前記イベント受信プロセスのスタックをページインするスタックページイン処理と、前記イベント受信プロセスへイベントを送信するイベント送信処理と、を含む。
【発明の効果】
【００４９】
本発明により、スタックにおけるミッシングページ例外の発生を防ぐことのできるコンピュータシステムを提供することができる。
【発明を実施するための最良の形態】
【００５０】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００５１】
発明の実施例１．
図１は、本発明の実施例１にかかるコンピュータシステム１００の全体構成を示すブロック図である。コンピュータシステム１００は、仮想記憶を採用しており、ＬＲＵ等のページ置換アルゴリズムに基づいて、使用頻度の低いページをページアウトするものである。コンピュータシステム１００は、イベント送信プロセス１０と、イベント受信プロセス２０と、ミッシングページ例外検出手段５１とを含む。
【００５２】
イベント送信プロセス１０は、イベント受信プロセス２０へイベントの送信を行うプロセスである。イベント送信プロセス１０は、イベント送信機能１１、長時間待ち検出手段１２、スタックページイン手段１３、イベント送信手段１４を含む。イベント送信機能１１は、長時間待ち検出手段１２、スタックページイン手段１３、イベント送信手段１４を順次実行し、イベント受信プロセス２０へイベントを送信する。
【００５３】
長時間待ち検出手段１２は、イベント受信プロセス２０のイベント受信待ちの時間を算出し、イベント受信プロセス２０のスタック２６がページアウトされているか検出する手段である。例えば、イベント受信待ちの時間の算出は、後述する最終動作時刻記憶テーブル２５から最終動作時刻を取得して算出するとよい。
【００５４】
スタックページイン手段１３は、イベント受信プロセス２０のスタック２６をページインする手段である。
【００５５】
イベント送信手段１４は、イベント受信プロセス２０へイベントを送信する手段である。
【００５６】
イベント受信プロセス２０は、イベント受信機能２１、最終動作時刻格納手段２２、イベント受信手段２３、ミッシングページ例外解決手段２４、最終動作時刻記憶テーブル２５、スタック２６、その他のページ２７を含む。
【００５７】
イベント受信機能２１は、イベント受信手段２３、最終動作時刻格納手段２２を順次実行し、イベント送信プロセス１０からのイベントを受信する。
【００５８】
最終動作時刻格納手段２２は、イベント受信プロセス２０が最終動作の終了時に、最終動作時刻記憶テーブル２５へイベント受信プロセス２０の最終動作時刻を格納する手段である。また、最終動作時刻格納手段２２は、プロセス動作の開始時に、最終動作時刻記憶テーブル２５へ０を格納する。
【００５９】
イベント受信手段２３は、イベント送信プロセス１０からのイベントを受信する手段である。イベント受信手段２３は、イベントを受信した後、次のイベントの受信を待ち受ける受信待ち状態となる。また、イベント受信手段２３は、他のプロセスからのイベントを受信することができる。
【００６０】
ミッシングページ例外解決手段２４は、ページ２７でミッシングページ例外が発生したときにページインを行う手段である。ミッシングページ例外解決手段２４は、ソフトウェアとして実装されたものであればよい。
【００６１】
最終動作時刻記憶テーブル２５は、イベント受信プロセス２０の最終動作の終了時の時刻、または、０を格納するテーブルである。
【００６２】
スタック２６は、イベント受信プロセス２０でミッシングページ例外が発生した時に、ミッシングページ例外情報を一時的に保持し、また、イベント受信プロセス２０上で動作する各手段が一時的なデータを格納するテーブルである。尚、ミッシングページ例外情報とは、ミッシングページ例外発生時のプログラムカウンタ（命令カウンタ値、例外を引き起こした命令のアドレス）の値、レジスタの値、対象ページのアドレスなどから構成される。
【００６３】
ページ２７は、イベント受信プロセス２０に属し、かつ、ページング対象であるメモリ領域を示す。
【００６４】
ミッシングページ例外検出手段５１は、イベント受信プロセス２０で発生するミッシングページ例外を検出し、ミッシングページ例外解決手段２４を起動する手段である。ミッシングページ例外検出手段５１は、ハードウェアとして実装されたものであればよい。
【００６５】
尚、イベント受信プロセス２０は、最終動作時刻送信手段を備えているとよい。最終動作時刻送信手段は、イベント送信プロセス１０からの要求に応じ、最終動作時刻記憶テーブル２５を参照して最終動作時刻を返信するようにすればよい。
【００６６】
図２は、本発明の実施例１にかかるイベント受信プロセス２０が、イベントの受信待ちの状態に遷移するときの動作を表わすフローチャート図である。
【００６７】
イベント受信プロセス２０におけるイベント受信に伴う各種処理の最終動作の終了時に、最終動作時刻格納手段２２は、最終動作時刻記憶テーブル２５へ最終動作時刻として現在時刻を格納する（Ｓ１０１、図１のＤ１０１）。イベント受信手段２３は、任意のプロセスから次のイベントの受信を待ち受ける受信待ち状態となる（Ｓ１０２）。
【００６８】
この後、イベント受信プロセス２０における受信待ち状態が、予め定めたページアウト対象となるか否かの閾値の時間であるページアウト時間以上続く場合、スタック２６及びその他のページ２７は、コンピュータシステム１００における仮想記憶管理によりページアウトされる。尚、ページアウト時間は、コンピュータシステム１００におけるページ置換アルゴリズムに依存した固定値であり、コンピュータシステム１００が記憶している。
【００６９】
図３は、本発明の実施例１にかかるイベント送信プロセス１０の動作を表わすフローチャート図である。ここでは、図２に引き続き、処理が行われるものとして説明する。また、イベント受信プロセス２０における受信待ち状態が、ページアウト時間以上続いているものとする。
【００７０】
まず、イベント送信プロセス１０におけるイベント送信機能１１は、イベント受信プロセス２０へイベントを送信するために、長時間待ち検出手段１２を起動する。長時間待ち検出手段１２は、最終動作時刻記憶テーブル２５からイベント受信プロセス２０の最終動作時刻を取得する（Ｓ２０１、図１のＤ１０２）。
【００７１】
引き続き、長時間待ち検出手段１２は、取得した最終動作時刻が０か否かを判定する（Ｓ２０２）。最終動作時刻が０と判定される場合、ステップＳ２０６へ進む。最終動作時刻が０以外と判定される場合、ステップＳ２０３へ進む。ここでは、図２で説明したように、イベント受信プロセス２０におけるイベント受信に伴う各種処理の最終動作の終了時点の時刻が格納されているため、ステップＳ２０３へ進む。
【００７２】
長時間待ち検出手段１２は、（１）式によりイベント受信プロセス２０の待ち時間を算出する（Ｓ２０３）。
待ち時間  ＝  現在時刻  −  最終動作時刻  ・・・（１）
【００７３】
長時間待ち検出手段１２は、待ち時間と待ち時間の閾値であるページアウト時間とを比較し、待ち時間が閾値より大きいか否かを判定する（Ｓ２０４）。待ち時間が、閾値より小さい場合、ステップＳ２０６へ進む。待ち時間が閾値を超えている場合、ステップＳ２０５へ進む。ここでは、待ち時間が閾値を超えており、スタック２６がページアウトされているため、ステップＳ２０５へ進む。
【００７４】
スタックページイン手段１３は、イベント受信プロセス２０のスタック２６をページインする（Ｓ２０５、図１のＤ１０３）。
【００７５】
イベント送信手段１４は、イベント受信プロセス２０に送信対象のイベントを送信する（Ｓ２０６、図１のＤ１０４）。
【００７６】
図４は、本発明の実施例１にかかるイベント受信プロセス２０の動作を表わすフローチャート図である。ここでは、図３に引き続き、処理が行われるものとして説明する。イベント受信プロセス２０は、受信待ち状態であるため、イベント受信機能２１が稼働しており、イベント受信手段２３によりイベントを受信可能である。
【００７７】
イベント受信プロセス２０のイベント受信手段２３は、イベント送信手段１４からのイベントを受信する（Ｓ３０１）。
【００７８】
その後、最終動作時刻格納手段２２は、最終動作時刻記憶テーブル２５に最終動作時刻を０に更新する（Ｓ３０２）。そして、イベント受信プロセス２０ａは、動作を開始する。
【００７９】
これにより、この後、他のプロセスがイベント送信前に、最終動作時刻記憶テーブル２５を参照する際、長時間待ち状態でないと判定される。
【００８０】
図５は、本発明の実施例１にかかるミッシングページ例外検出手段５１の動作を表わすフローチャート図である。ここでは、図４に引き続き、処理が行われるものとして説明する。
【００８１】
イベント受信プロセス２０において、イベント受信手段２３、イベント受信機能２１、あるいは、その他の手段は、ページ２７を参照／更新する。このとき、ページ２７がメモリ上に存在しないため、イベント受信プロセス２０において、ミッシングページ例外が発生する。そして、ミッシングページ例外検出手段５１は、ページ２７のミッシングページ例外を検出する（Ｓ４０１、図１のＤ１０５）。
【００８２】
その後、ミッシングページ例外検出手段５１は、イベント受信プロセス２０に割り込みをかけ、ページ２７がミッシングページであることを示すミッシングページ例外情報をスタック２６に格納する（Ｓ４０２、図１のＤ１０６）。このとき、図３で説明したように、スタックページイン手段１３により、イベント受信プロセス２０において、スタック２６がページインされているため、ミッシングページ例外検出手段５１は、ミッシングページ例外情報を格納することができる。ミッシングページ例外検出手段５１は、ミッシングページ例外解決手段２４を起動する（Ｓ４０３、図１のＤ１０７）。
【００８３】
図６は、本発明の実施例１にかかるイベント受信プロセス２０の動作を表わすフローチャート図である。ここでは、図５に引き続き、処理が行われるものとして説明する。
【００８４】
イベント受信プロセス２０におけるミッシングページ例外解決手段２４は、スタック２６からミッシングページ例外情報を取得する（Ｓ５０１、図１のＤ１０８）。
【００８５】
ミッシングページ例外解決手段２４は、取得したミッシングページ例外情報を基にページ２７のページイン処理を行う（Ｓ５０２、図１のＤ１０８）。
【００８６】
以上のように本発明の実施例では、図２乃至図６の処理により、スタックにおけるミッシングページ例外を解決することができる。
【００８７】
本発明の実施例では、イベント受信プロセス２０が長時間待ち状態のため、スタック２６がページアウトされている場合に、スタックページイン手段１３によりスタック２６をページインすることで、イベント受信プロセス２０がイベント受信後の処理において、スタックにおけるミッシングページ例外を未然に防ぐことができる。これにより、長時間待ち状態のプロセスの処理の再開に伴うシステムの処理性能の低下を抑えることができる。
【００８８】
また、本発明の実施例では、イベント送信手段１４によるイベント送信前に、長時間待ち検出手段１２においてイベント受信プロセス２０が長時間待ち状態であるか否かを検出することにより、イベント受信プロセス２０が長時間待ち状態でない場合には、イベント送信プロセス１０は、スタックページイン手段１３を実行しない。これにより、イベント送信プロセス１０の１回当たりの処理性能の低下を抑えることができる。
【００８９】
さらに、長時間待ち状態である多数のプロセスに対して処理が集中した場合、関連性の低いページを関連性の低いページを複数、または、同時にページインすることとなる。しかし、本発明の実施例では、プロセスごとに長時間待ち状態であるかを検出するため、ページごとの関連性の有無に影響を受けず、ミッシングページ例外を解決することができる。
【００９０】
その他の発明の実施例.
尚、本発明の活用例として、仮想記憶採用するマルチプロセッサのコンピュータシステムなどが挙げられる。
【００９１】
尚、イベント受信プロセス２０が長時間待ち状態であるか否かの判定は、長時間待ち検出手段１２にて行うものを説明したが、これに限定されるものではない。すなわち、当該判定処理自体は、イベント受信プロセス２０において実施されても構わない。例えば、イベント受信プロセス２０は、長時間待ち検出手段１２から要求があった場合に、最終動作時刻記憶テーブル２５に格納された最終動作時刻を取得し、（１）式により待ち時間を算出し、長時間待ち状態か否かを判定し、判定結果を長時間待ち検出手段１２へ返信すればよい。これにより、長時間待ち検出手段１２は、受信した判定結果を基に、長時間待ち状態であるか否かの検出をすることができる。
【００９２】
また、本発明の実施例１にかかるコンピュータシステム１００は、上述したスタックページイン代行プロセス３０をさらに加えてもよい。これにより、イベント送信プロセス１０及びイベント受信プロセス２０以外のプロセス間のイベント送受信において、スタックにおけるミッシングページ例外の発生に対応することができる。また、本発明を用いずにスタックページイン代行プロセス３０のみを適用した場合に比べ、スタックページイン代行プロセス３０への負荷を軽減し、システム全体の性能低下を抑えることができる。
【００９３】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施例１にかかるコンピュータシステム１００の全体構成を示すブロック図である。
【図２】本発明の実施例１にかかるイベント受信プロセス２０が、イベントの受信待ちの状態に遷移するときの動作を表わすフローチャート図である。
【図３】本発明の実施例１にかかるイベント送信プロセス１０の動作を表わすフローチャート図である。
【図４】本発明の実施例１にかかるイベント受信プロセス２０の動作を表わすフローチャート図である。
【図５】本発明の実施例１にかかるミッシングページ例外検出手段５１の動作を表わすフローチャート図である。
【図６】本発明の実施例１にかかるイベント受信プロセス２０の動作を表わすフローチャート図である。
【図７】ミッシングページ例外を解決するためにミッシングページ例外検出手段とミッシングページ例外解決手段を用いたコンピュータシステム１００ａの構成及び動作を示す図である。
【図８】スタックページイン代行プロセスを用いたコンピュータシステム１００ｂの構成及び動作を示す図である。
【符号の説明】
【００９５】
１０、１０ａ    イベント送信プロセス    １１、１１ａ    イベント送信機能
１２    長時間待ち検出手段    １３    スタックページイン手段
１４    イベント送信手段    ２０、２０ａ    イベント受信プロセス
２１、２１ａ    イベント受信機能    ２２    最終動作時刻格納手段
２３    イベント受信手段    ２４    ミッシングページ例外解決手段
２５    最終動作時刻記憶テーブル    ２６    スタック    ２７    ページ
３０    スタックページイン代行プロセス    ３１    スタックページイン手段
３５    メッセージ登録テーブル
５１、５１ａ、５１ｂ    ミッシングページ例外検出手段
１００、１００ａ、１００ｂ    コンピュータシステム
【図１】
0005029333.tif 000002
【図２】
0005029333.tif 000003
【図３】
0005029333.tif 000004
【図４】
0005029333.tif 000005
【図５】
0005029333.tif 000006
【図６】
0005029333.tif 000007
【図７】
0005029333.tif 000008
【図８】
0005029333.tif 000009