(57)【特許請求の範囲】
【請求項１】
単一のロードモジュールとして生成されているモノリシックカーネルを採用する仮想記憶計算システムにおいて、
システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページをスワップデバイスから物理メモリにスワップインするカーネルデマンドページング部と、
システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択して前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト部と、
カーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト部を呼び出して、前記カーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト部と
を含むことを特徴とするカーネル空間のデマンドページング・スワップアウト方式。
【請求項２】
前記カーネルデマンドページング部が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング手段と、このページフォルトハンドリング手段により特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算手段と、前記ページフォルトハンドリング手段により特定されたフォルト発生ページに対する前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング手段とを備えることを特徴とする請求項１記載のカーネル空間のデマンドページング・スワップアウト方式。
【請求項３】
前記カーネルスワップアウト部が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択手段と、このスワップアウトページ選択手段により選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ手段と、前記スワップアウトページ選択手段により選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト手段とを備えることを特徴とする請求項１記載のカーネル空間のデマンドページング・スワップアウト方式。
【請求項４】
前記立ち上げ時カーネルスワップアウト部が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化手段と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング部スワップアウト抑止手段と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト部を呼び出すカーネルスワップアウト部呼出し手段とを備えることを特徴とする請求項１記載のカーネル空間のデマンドページング・スワップアウト方式。
【請求項５】
前記スワップアウト優先度再計算手段が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする請求項２記載のカーネル空間のデマンドページング・スワップアウト方式。
【請求項６】
前記カーネルスワップアウト部が、スワップアウトページ選択手段をさらに備え、
前記スワップアウト優先度再計算手段は、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択手段は、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする請求項５記載のカーネル空間のデマンドページング・スワップアウト方式。
【請求項７】
カーネルが単一のロードモジュールとして生成されている仮想記憶オペレーティングシステムにおいて、システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページを前記スワップデバイスから物理メモリにスワップインするカーネルデマンドページング処理と、
システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択し前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト処理と、
カーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト処理を呼び出して、前記カーネルデマンドページング処理を行うカーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト処理とを含むことを特徴とするカーネル空間のデマンドページング・スワップアウト方法。
【請求項８】
前記カーネルデマンドページング処理が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング工程と、このページフォルトハンドリング工程で特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算工程と、前記ページフォルトハンドリング工程で特定されたフォルト発生ページに対して前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング工程とからなることを特徴とする請求項７記載のカーネル空間のデマンドページング・スワップアウト方法。
【請求項９】
前記カーネルスワップアウト処理が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択工程と、このスワップアウトページ選択工程で選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ工程と、前記スワップアウトページ選択工程で選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト工程とからなることを特徴とする請求項７記載のカーネル空間のデマンドページング・スワップアウト方法。
【請求項１０】
前記立ち上げ時カーネルスワップアウト処理が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化工程と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング処理スワップアウト抑止工程と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト処理を呼び出すカーネルスワップアウト処理呼出し工程とを備えることを特徴とする請求項７記載のカーネル空間のデマンドページング・スワップアウト方法。
【請求項１１】
前記スワップアウト優先度再計算工程が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする請求項８記載のカーネル空間のデマンドページング・スワップアウト方法。
【請求項１２】
前記カーネルスワップアウト処理が、スワップアウトページ選択工程をさらに含み、
前記スワップアウト優先度再計算工程では、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択工程では、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする請求項１１記載のカーネル空間のデマンドページング・スワップアウト方法。
【請求項１３】
コンピュータを、システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページをスワップデバイスから物理メモリにスワップインするカーネルデマンドページング部，システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択して前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト部，およびカーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト部を呼び出して、前記カーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト部として機能させるためのプログラム。
【請求項１４】
前記カーネルデマンドページング部が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング手段と、このページフォルトハンドリング手段により特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算手段と、前記ページフォルトハンドリング手段により特定されたフォルト発生ページに対する前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング手段とを備えることを特徴とする請求項１３記載のプログラム。
【請求項１５】
前記カーネルスワップアウト部が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択手段と、このスワップアウトページ選択手段により選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ手段と、前記スワップアウトページ選択手段により選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト手段とを備えることを特徴とする請求項１３記載のプログラム。
【請求項１６】
前記立ち上げ時カーネルスワップアウト部が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化手段と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング部スワップアウト抑止手段と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト部を呼び出すカーネルスワップアウト部呼出し手段とを備えることを特徴とする請求項１３記載のプログラム。
【請求項１７】
前記スワップアウト優先度再計算手段が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする請求項１４記載のプログラム。
【請求項１８】
前記カーネルスワップアウト部が、スワップアウトページ選択手段をさらに備え、
前記スワップアウト優先度再計算手段は、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択手段は、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする請求項１７記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はカーネル空間のデマンドページング・スワップアウト方式および方法に関し、特にカーネルが単一のロードモジュールとして生成されている仮想記憶オペレーティングシステムにおけるカーネル空間のデマンドページング・スワップアウト方式および方法に関する。
【０００２】
【従来の技術】
現在、世の中に存在する一般的なカーネルは、その構造面に着目すると、単一のロードモジュールとして生成される伝統的なモノリシックカーネルと、機能単位のスレッドの集合により実現されるマイクロカーネルとの２種類に分類することができる。
【０００３】
たとえば、特開平８−１６４１２号公報には、マイクロカーネル，パーソナリティ・ニュートラル・サービスおよびパーソナリティ・サーバからなるマイクロカーネルシステムが開示されている。しかし、マイクロカーネルでは、メモリ管理機能，プロセス管理機能，実行管理機能，ファイル管理機能，ドライバ機能などの個々の実行単位が互いに疎結合されて、カーネル全体の機能が実現されるので、カーネル全体が物理メモリ上に展開されＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を占有するのではなく、必要な機能単位のみが物理メモリに展開され、個別にＣＰＵ資源を確保することで、メモリ資源やＣＰＵ資源を有効かつ円滑に利用することができる。反面、機能単位間のインターフェイスが抽象化され、疎結合しているために機能の相互呼び出しにオーバヘッドが生じ、カーネルの全体機能の性能低下を招くという問題がある。
【０００４】
一方、従来のモノリシックカーネルでは、全ての機能が単一のロードモジュールとして蜜結合されているため、機能間のインターフェイスが最適化され、機能の相互呼び出しのオーバヘッドを最小に抑えることができる。反面、カーネルの全機能（通常必要なのは全体の内のごく一部にしかすぎない）が物理メモリ上に展開されることで必要以上にメモリ資源を消費し、さらに一度カーネルモードに移行すると、本来独立に実行可能なカーネルの複数機能をまたいでユーザモードに抜けるまでＣＰＵ資源を独占することになり、資源が有効に利用できないという問題がある。特に、モノリシックカーネルでは、カーネル空間が全て物理メモリ上に展開されていることを前提としていたが、システム運用において実際に必要とされるカーネル機能は限られており、カーネル全体のごく一部である場合が多い。たとえば、立ち上げ／立ち下げシーケンスは高々一度しか実行されず、また多くのドライバ類は対応するデバイスが実装されていなければ決して実行されない。また、実装されていたとしても実行されるとは限らない。さらに、カーネルテキストの多くを占める異常系処理も、実行されることはまれである。したがって、カーネルが実装されている物理メモリを有効に活用するために、通常使用されることのないこれらの物理メモリを有効に使用するための仕組みが必要であった。
【０００５】
この問題を解決するために、たとえば、特開平２−１７８７４７号公報には、スワップアウトできないカーネルコードであっても、物理メモリの空き記憶領域が不足している場合には、スワッピングに関するデータベースを参照して、参照結果に応じて物理メモリを解放できるようにした仮想記憶計算システムのメモリ管理方式が開示されている。
【０００６】
【発明が解決しようとする課題】
しかし、従来の技術では、機能単位による分割にとどまり、それぞれ専用の処理が必要である割に物理メモリの使用効率にさほどの改善が見られるものではないという問題点があった。
【０００７】
本発明の目的は、機能間の相互呼び出し時のオーバヘッドが少ないモノリシックカーネルにおいて、通常のオペレーティングシステム一般に広く見られるデマンドページングおよびスワップアウトをカーネル空間に適用し、メモリ資源を有効に活用するカーネル空間のデマンドページング・スワップアウト方式および方法を提供することにある。
【０００８】
また、本発明の他の目的では、さらにスワップアウト時間からスワップアウト優先度を決定する手法を導入し、容易にメモリ資源の利用効率を上げることができるカーネル空間のデマンドページング・スワップアウト方式および方法を提供することにある。
【０００９】
【課題を解決するための手段】
本発明のカーネル空間のデマンドページング・スワップアウト方式は、単一のロードモジュールとして生成されているモノリシックカーネルを採用する仮想記憶計算システムにおいて、システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページをスワップデバイスから物理メモリにスワップインするカーネルデマンドページング部と、システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択して前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト部と、カーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト部を呼び出して、前記カーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト部とを含むことを特徴とする。
【００１０】
また、本発明のカーネル空間のデマンドページング・スワップアウト方式は、前記カーネルデマンドページング部が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング手段と、このページフォルトハンドリング手段により特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算手段と、前記ページフォルトハンドリング手段により特定されたフォルト発生ページに対する前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング手段とを備えることを特徴とする。
【００１１】
さらに、本発明のカーネル空間のデマンドページング・スワップアウト方式は、前記カーネルスワップアウト部が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択手段と、このスワップアウトページ選択手段により選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ手段と、前記スワップアウトページ選択手段により選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト手段とを備えることを特徴とする。
【００１２】
さらにまた、本発明のカーネル空間のデマンドページング・スワップアウト方式は、前記立ち上げ時カーネルスワップアウト部が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化手段と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング部スワップアウト抑止手段と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト部を呼び出すカーネルスワップアウト部呼出し手段とを備えることを特徴とする。
【００１３】
また、本発明のカーネル空間のデマンドページング・スワップアウト方式は、前記スワップアウト優先度再計算手段が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする。
【００１４】
さらに、本発明のカーネル空間のデマンドページング・スワップアウト方式は、前記カーネルスワップアウト部が、スワップアウトページ選択手段をさらに備え、
前記スワップアウト優先度再計算手段は、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択手段は、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする。
【００１５】
一方、本発明のカーネル空間のデマンドページング・スワップアウト方法は、カーネルが単一のロードモジュールとして生成されている仮想記憶オペレーティングシステムにおいて、システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページを前記スワップデバイスから物理メモリにスワップインするカーネルデマンドページング処理と、
システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択し前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト処理と、
カーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト処理を呼び出して、前記カーネルデマンドページング処理を行うカーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト処理とを含むことを特徴とする。
【００１６】
また、本発明のカーネル空間のデマンドページング・スワップアウト方法は、前記カーネルデマンドページング処理が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング工程と、このページフォルトハンドリング工程で特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算工程と、前記ページフォルトハンドリング工程で特定されたフォルト発生ページに対して前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング工程とからなることを特徴とする。
【００１７】
さらに、本発明のカーネル空間のデマンドページング・スワップアウト方法は、前記カーネルスワップアウト処理が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択工程と、このスワップアウトページ選択工程で選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ工程と、前記スワップアウトページ選択工程で選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト工程とからなることを特徴とする。
【００１８】
さらにまた、本発明のカーネル空間のデマンドページング・スワップアウト方法は、前記立ち上げ時カーネルスワップアウト処理が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化工程と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング処理スワップアウト抑止工程と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト処理を呼び出すカーネルスワップアウト処理呼出し工程とを備えることを特徴とする。
【００１９】
また、本発明のカーネル空間のデマンドページング・スワップアウト方法は、前記スワップアウト優先度再計算工程が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする。
【００２０】
さらに、本発明のカーネル空間のデマンドページング・スワップアウト方法は、前記カーネルスワップアウト処理が、スワップアウトページ選択工程をさらに含み、
前記スワップアウト優先度再計算工程では、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択工程では、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする。
【００２１】
一方、本発明のプログラムは、コンピュータを、システム運用時にカーネル空間でページフォルトが発生した場合にスワップイン対象ページをスワップデバイスから物理メモリにスワップインするカーネルデマンドページング部，システム運用時にユーザプロセスが前記物理メモリのページ確保に失敗した場合にスワップアウト優先度が最も高いページを選択して前記物理メモリから前記スワップデバイスにスワップアウトするカーネルスワップアウト部，およびカーネルの立ち上げシーケンスの終了直後に前記カーネルスワップアウト部を呼び出して、前記カーネルデマンドページング部が存在するページを除く、カーネル空間の残余のページを前記物理メモリから前記スワップデバイスにスワップアウトさせる立ち上げ時カーネルスワップアウト部として機能させる。
【００２２】
また、本発明のプログラムは、前記カーネルデマンドページング部が、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング手段と、このページフォルトハンドリング手段により特定されたフォルト発生ページのタイムスタンプ値およびスワップアウト優先度に基づいてスワップアウト優先度の再計算を行うスワップアウト優先度再計算手段と、前記ページフォルトハンドリング手段により特定されたフォルト発生ページに対する前記物理メモリの再ページ確保およびカーネル空間へのマッピングを行い、前記物理メモリが足りない場合にはメモリ確保アルゴリズムを呼び出して前記物理メモリのページ確保を試みるメモリマッピング手段とを備えることを特徴とする。
【００２３】
さらに、本発明のプログラムは、前記カーネルスワップアウト部が、各ページのスワップアウト優先度に基づいてスワップアウト対象ページを選択するスワップアウトページ選択手段と、このスワップアウトページ選択手段により選択されたスワップアウト対象ページのタイムスタンプ値に現在時刻を設定するタイムスタンプ手段と、前記スワップアウトページ選択手段により選択されたスワップアウト対象ページを前記物理メモリから前記スワップデバイスにスワップアウトするスワップアウト手段とを備えることを特徴とする。
【００２４】
さらにまた、本発明のプログラムは、前記立ち上げ時カーネルスワップアウト部が、カーネル空間の各ページのタイムスタンプ値およびスワップアウト優先度を初期化するタイムスタンプ値・スワップアウト優先度初期化手段と、前記カーネルデマンドページング部が存在するページのスワップアウト優先度にスワップアウト抑止値を設定するカーネルデマンドページング部スワップアウト抑止手段と、カーネル空間のページ数と前記カーネルデマンドページング部のページ数との差を要求ページ数として前記カーネルスワップアウト部を呼び出すカーネルスワップアウト部呼出し手段とを備えることを特徴とする。
【００２５】
また、本発明のプログラムは、前記スワップアウト優先度再計算手段が、同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎを、前回までのスワップアウト優先度Ｐｎ−１およびスワップアウト時間Ｔｎに基づいて、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）として計算することを特徴とする。
【００２６】
さらに、本発明のプログラムは、前記カーネルスワップアウト部が、スワップアウトページ選択手段をさらに備え、
前記スワップアウト優先度再計算手段は、前記スワップアウト優先度Ｐｎを、スワップアウト時間Ｔの平均値Ｐｎ＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎとして再計算するものであり、
前記スワップアウトページ選択手段は、前記スワップアウト優先度Ｐｎの値の大きなページをスワップアウト対象ページとして選択するものである、ことを特徴とする。
【００２７】
本発明の特徴は、単一のロードモジュールとして生成されているモノリシックカーネルで、カーネル空間の全てのページが物理メモリ上に展開されていることを保証せず、必要とするカーネル機能のページが物理メモリに展開されていなかった場合に発生するページフォルトをきっかけとして、当該ページをスワップデバイスから物理メモリへスワップインするデマンドページングを適用することで、メモリ資源を有効に活用するというものである。また、使用されていない、あるいは使用頻度の低いカーネル機能のページを物理メモリからスワップデバイスにスワップアウトすることで、メモリ資源を有効に活用するというものである。
【００２８】
ここで、本発明の作用を、図１および図２を参照して説明する。
【００２９】
通常、モノリシックカーネルはファイル記憶装置（図示せず）上に単一のファイル（ロードモジュール）として存在し、ブートストラップ機能により、ファイル記憶装置から物理メモリ５に展開され、特定のポイントより実行が開始される。
【００３０】
本発明では、ブートストラップ機能により一度カーネルの全てのテキストおよびデータ領域を物理メモリ５に展開するが、立ち上げシーケンスの終了直後に、カーネルスワップアウト部３によりカーネルデマンドページング部２が存在するページを除く、カーネル空間４ａの残余のページを物理メモリ５からスワップデバイス６に一旦スワップアウトする。その後、ページフォルトが発生するたびにカーネルデマンドページング部２を使用して、スワップイン対象ページをスワップデバイス６から物理メモリ５にスワップインしてページフォルト地点から実行を再開する。また、各ページは属性値としてスワップアウト優先度４２を保持し、ユーザプロセスによるメモリ要求時に、ＬＲＵ（Ｌｅａｓｔ  ＲｅｃｅｎｔｌｙＵｓｅｄ）等のメモリ確保アルゴリズムによる物理メモリ５のページ確保に失敗した場合、スワップアウト優先度４２の高い順にページを物理メモリ５からスワップデバイス６にスワップアウトして、物理メモリ５のページ確保を試みる。
【００３１】
詳しくは、立ち上げ時カーネルスワップアウト部１は、タイムスタンプ値・スワップアウト優先度初期化手段１１により、まずタイムスタンプ値４１およびスワップアウト優先度４２の初期化（ゼロクリア）を行う。次に、カーネルデマンドページング部スワップアウト抑止手段１２により、カーネルデマンドページング部２が存在するページのスワップアウト優先度４２にスワップアウト抑止値を設定する。カーネル自身は、カーネルデマンドページング部２のテキストの開始アドレスおよび終了アドレスを知り得るので、カーネルデマンドページング部２が存在するページを特定することが可能である。スワップアウト抑止値は、スワップアウト優先度４２の再計算式の結果として得られることのない任意の値である必要がある。たとえば、０または負の値をスワップアウト抑止値として使用できる。最後に、カーネルスワップアウト部呼出し手段１３により、要求するスワップアウトサイズ（要求ページ数）として（カーネル空間４ａのページ数−カーネルデマンドページング部２のページ数）を指定してカーネルスワップアウト部３を呼び出す。
【００３２】
カーネルスワップアウト部３は、スワップアウトページ選択手段３１により、スワップアウト優先度４２に基づいてスワップアウト対象ページを選択するが、このとき、スワップアウト抑止値が設定されているカーネルデマンドページング部２のページはスワップアウト対象ページとして選択しない。
【００３３】
以上により、立ち上げ時カーネルスワップアウト部１は、カーネルデマンドページング部２が存在するページを除く、カーネル空間４ａの残余のページを物理メモリ５からスワップデバイス６にスワップアウトすることができる。
【００３４】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００３５】
（１）第１の実施の形態
図１は、本発明の第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の構成を示すブロック図である。本実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式は、立ち上げ時カーネルスワップアウト部１と、カーネルデマンドページング部２と、カーネルスワップアウト部３と、カーネル空間４ａおよびユーザ空間４ｂ（図２参照）からなる仮想空間４（図２参照）と、主記憶である物理メモリ５と、磁気ディスク装置等でなるスワップデバイス６とから、その主要部が構成されている。
【００３６】
立ち上げ時カーネルスワップアウト部１は、カーネル空間４ａの各ページのタイムスタンプ値４１およびスワップアウト優先度４２を初期化するタイムスタンプ値・スワップアウト優先度初期化手段１１と、カーネルデマンドページング部２が存在するページのスワップアウト優先度４２にスワップアウト抑止値を設定するカーネルデマンドページング部スワップアウト抑止手段１２と、カーネル空間４ａのページ数とカーネルデマンドページング部２のページ数との差を要求ページ数としてカーネルスワップアウト部３を呼び出すカーネルスワップアウト部呼出し手段１３とから構成されている。
【００３７】
カーネルデマンドページング部２は、フォルト発生ページおよびフォルト要因を特定するページフォルトハンドリング手段２１と、フォルト発生ページのタイムスタンプ値４１およびスワップアウト優先度４２に基づいてスワップアウト優先度４２の再計算を行うスワップアウト優先度再計算手段２２と、物理メモリ５の再ページ確保およびカーネル空間４ａへのマッピングを行い、要求ページ数に満たない場合にはメモリ確保アルゴリズムを呼び出して物理メモリ５のページ確保を試みるメモリマッピング手段２３とから構成されている。
【００３８】
カーネルスワップアウト部３は、各ページのスワップアウト優先度４２に基づいてスワップアウト対象ページを選択するスワップアウトページ選択手段３１と、スワップアウト対象ページのタイムスタンプ値４１に現在時刻を設定するタイムスタンプ手段３２と、カーネル空間４ａのスワップアウト対象ページを物理メモリ５からスワップデバイス６にスワップアウトするスワップアウト手段３３とから構成されている。
【００３９】
仮想空間４を構成する各ページには、属性値として、タイムスタンプ値４１と、スワップアウト優先度４２とを付属する。
【００４０】
図３は、タイムスタンプ値４１およびスワップアウト優先度４２を、通常の仮想記憶で用いられるページテーブル４３に保持させるようにした一例を示す。ページテーブル４３の各エントリは、有効フラグ，タイムスタンプ値４１，スワップアウト優先度４２，および物理ページまたはディスクアドレスからなる。有効フラグがオン（”１”）のときに物理ページアドレスが格納され、有効フラグがオフ（”０”）のときにディスクアドレスが格納される。
【００４１】
図４を参照すると、第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の初期化処理は、カーネル立ち上げステップＳ１０１と、タイムスタンプ値・スワップアウト優先度初期化ステップＳ１０２と、カーネルデマンドページング部スワップアウト抑止ステップＳ１０３と、カーネルスワップアウト部呼出しステップＳ１０４と、ユーザプロセス移行ステップＳ１０５とからなる。
【００４２】
図５を参照すると、カーネルデマンドページング部２の処理は、ページフォルトハンドリングステップＳ２０１と、タイムスタンプ値・スワップアウト優先度取得ステップＳ２０２と、スワップアウト優先度再計算ステップＳ２０３と、スワップアウト優先度設定ステップＳ２０４と、メモリマッピングステップＳ２０５とからなる。
【００４３】
同じく、図５を参照すると、カーネルスワップアウト部３の処理は、スワップアウト優先度順ページ選択ステップＳ３０１と、抑止ページ判定ステップＳ３０２と、タイムスタンプ値設定ステップＳ３０３と、スワップアウトステップＳ３０４と、要求ページ数判定ステップＳ３０５とからなる。
【００４４】
次に、このように構成された第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の動作について、図１ないし図５を参照しながら説明する。
【００４５】
まず、カーネルの立ち上げシーケンスが終了すると（ステップＳ１０１）、立ち上げ時カーネルスワップアウト部１が実行される。
【００４６】
立ち上げ時カーネルスワップアウト部１は、タイムスタンプ値・スワップアウト優先度初期化手段１１により、カーネル空間４ａの各ページのタイムスタンプ値４１およびスワップアウト優先度４２を初期化（ゼロクリア）する（ステップＳ１０２）。
【００４７】
次に、立ち上げ時カーネルスワップアウト部１は、カーネルデマンドページング部スワップアウト抑止手段１２により、カーネルデマンドページング部２が存在するページのスワップアウト優先度４２に、たとえば０または負の値でなるスワップアウト抑止値を設定する（ステップＳ１０３）。
【００４８】
続いて、立ち上げ時カーネルスワップアウト部１は、カーネルスワップアウト部呼出し手段１３により、（カーネル空間４ａのページ数−カーネルデマンドページング部２のページ数）を要求ページ数としてカーネルスワップアウト部３を呼び出す（ステップＳ１０４）。
【００４９】
カーネルスワップアウト部３は、スワップアウトページ選択手段３１により、カーネル空間４ａ中のページをスワップアウト優先度４２の高い順に選択し（ステップＳ３０１）、スワップアウト優先度４２がスワップアウト抑止値（たとえば０または負の値）であるかどうかに基づいてカーネルデマンドページング部２が存在するページであるかどうかを判定する（ステップＳ３０２）。カーネルデマンドページング部２が存在するページであれば、ステップＳ３０１に制御を戻し、次にスワップアウト優先度４２の高いページを選択する。
【００５０】
カーネルデマンドページング部２が存在するページでなければ、カーネルスワップアウト部３は、タイムスタンプ手段３２により、現在時刻をタイムスタンプ値４１に設定する（ステップＳ３０３）。
【００５１】
続いて、カーネルスワップアウト部３は、スワップアウト手段３３により、物理メモリ５上のページをスワップデバイス２にスワップアウトし（ステップＳ３０４）、要求ページ数に達したか否か、つまりカーネルデマンドページング部２が存在するページを除く、カーネル空間４ａの残余のページを物理メモリ５からスワップデバイス６にスワップアウトし終えたかどうかを判定する（ステップＳ３０５）。要求ページ数に達していなければ、ステップＳ３０１に制御を戻し、次にスワップアウト優先度４２の高いページを選択する。要求ページ数に達していれば、ユーザプロセス（通常はｉｎｉｔプロセス）に移行する（ステップＳ１０５）。
【００５２】
システム運用時に、カーネル空間４ａ内のページでページフォルトが発生すると、カーネルデマンドページング部２が起動される。
【００５３】
カーネルデマンドページング部２は、ページフォルトハンドリング手段２１により、フォルトが発生したページ（フォルト発生ページ）やフォルトの要因（フォルト要因）を特定する（ステップＳ２０１）。
【００５４】
次に、カーネルデマンドページング部２は、スワップアウト優先度再計算手段２２により、フォルト発生ページのタイムスタンプ値４１およびスワップアウト優先度４２を取得し（ステップＳ２０２）、スワップアウト優先度４２を再計算し（ステップＳ２０３）、これをスワップアウト優先度４２に再設定する（ステップＳ２０４）。
【００５５】
詳しくは、各ページは、スワップアウト時からページフォルト発生時までのスワップアウトされていた時間（スワップアウト時間）Ｔを統計的に保持し、これをスワップアウト優先度４２として、スワップアウトの可否の判断材料として使用する。すなわち、スワップアウト時間Ｔは、スワップアウト発生時間とページフォルト発生時間との差で与えられる。同一ページに対するｎ回目のページフォルト発生時のスワップアウト優先度Ｐｎは、前回までのスワップアウト優先度Ｐｎ−１とスワップアウト時間Ｔｎとを使用し、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）で表される。
【００５６】
例として、Ｆ（Ｐｎ−１，Ｔｎ）＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎであった場合、スワップアウト優先度Ｐｎは、スワップアウト時間Ｔの平均値として表され、スワップアウト優先度Ｐｎの値の大きなページからスワップアウト対象ページとして選択するなどの手法が可能である。
【００５７】
最後に、カーネルデマンドページング部２は、メモリマッピング手段２３により、物理メモリ５の再ページ確保およびカーネル空間４ａへのマッピングを行う（ステップＳ２０５）。この際、要求ページ数に満たない場合は、メモリ確保アルゴリズムを呼び出し、物理メモリ５のページ確保を試みる。
【００５８】
システム運用時に、ユーザプロセス（図示せず）が物理メモリ５のページ確保に失敗した場合、メモリ確保アルゴリズムに従い、まずユーザ空間４ｂのページを物理メモリ５からスワップデバイス６にスワップアウトする。
【００５９】
ユーザ空間４ｂのページを物理メモリ５からスワップデバイス６にスワップアウトしても要求ページ数に満たない場合、従来は物理メモリ５の容量不足としてユーザプロセスがエラーとなっていたが、本実施の形態では、カーネルスワップアウト部３が呼び出される。
【００６０】
カーネルスワップアウト部３は、スワップアウトページ選択手段３１により、カーネル空間４ａ中のスワップアウト優先度４２の高い順にページを選択し（ステップＳ３０１）、スワップアウト優先度４２がスワップアウト抑止値（たとえば０または負の値）であるカーネルデマンドページング部２が存在するページであるかどうかを判定する（ステップＳ３０２）。カーネルデマンドページング部２が存在するページであれば、ステップＳ３０１に制御を戻し、次にスワップアウト優先度４２の高いページを選択する。
【００６１】
カーネルデマンドページング部２が存在するページでなければ、カーネルスワップアウト部３は、タイムスタンプ手段３２により、現在時刻をタイムスタンプ値４１に設定する（ステップＳ３０３）。
【００６２】
続いて、カーネルスワップアウト部３は、スワップアウト手段３３により、物理メモリ５上のページをスワップデバイス２にスワップアウトし（ステップＳ３０４）、要求ページ数に達したか否かを判定する（ステップＳ３０５）。要求ページ数に達していなければ、ステップＳ３０１に制御を戻し、次にスワップアウト優先度４２の高いページを選択する。要求ページ数に達していれば、ユーザプロセスに制御を戻す。
【００６３】
このように、第１の実施の形態によれば、従来、カーネルが常駐していた物理メモリ５のページのうち、ほとんど使用されることのない物理メモリ５のページをユーザプロセス等に解放することで、メモリ資源を有効に活用することができる。
【００６４】
（２）第２の実施の形態
図６は、本発明の第２の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の構成を示すブロック図である。本実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式は、図１に示した第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式に比べて、コンピュータ１００に仮想記憶オペレーティングシステム２００をプログラムとして備える点が異なっている。
【００６５】
仮想記憶オペレーティングシステム２００は、コンピュータ１００に読み込まれ、当該コンピュータ１００の動作を、立ち上げ時カーネルスワップアウト部１（タイムスタンプ値・スワップアウト優先度初期化手段１１，カーネルデマンドページング部スワップアウト抑止手段１２，およびカーネルスワップアウト部呼出し手段１３），カーネルデマンドページング部２（ページフォルトハンドリング手段２１，スワップアウト優先度再計算手段２２，およびメモリマッピング手段２３），およびカーネルスワップアウト部３（スワップアウトページ選択手段３１，タイムスタンプ手段３２，およびスワップアウト手段３３）として制御する。仮想記憶オペレーティングシステム２００の制御によるカーネル空間のデマンドページング・スワップアウト方式の動作は、第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式における立ち上げ時カーネルスワップアウト部１（タイムスタンプ値・スワップアウト優先度初期化手段１１，カーネルデマンドページング部スワップアウト抑止手段１２，およびカーネルスワップアウト部呼出し手段１３），カーネルデマンドページング部２（ページフォルトハンドリング手段２１，スワップアウト優先度再計算手段２２，およびメモリマッピング手段２３），およびカーネルスワップアウト部３（スワップアウトページ選択手段３１，タイムスタンプ手段３２，およびスワップアウト手段３３）の動作と全く同様になるので、その詳しい説明を割愛する。
【００６６】
なお、上記各実施の形態では、スワップアウト優先度４２の再計算式が、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）＝Ｐｎ−１＋（Ｔｎ−Ｐｎ−１）／ｎである場合を例示して説明したが、スワップアウト優先度４２の再計算式は上式に限られるわけではなく、Ｐｎ  ＝Ｆ（Ｐｎ−１，Ｔｎ）で表せる全ての式で、本発明のカーネル空間のデマンドページング・スワップアウト方式および方法が適用可能であることはいうまでもない。
【００６７】
【発明の効果】
第１の効果は、従来はカーネルが常駐していた物理メモリのページのうち、ほとんど使用されることのなかった物理メモリのページをユーザプロセスに解放することで、メモリ資源を有効に活用できることである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の構成を示すブロック図である。
【図２】第１の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式におけるカーネルデマンドページングおよびカーネルスワップアウトを説明する図である。
【図３】図１中のタイムスタンプ値およびスワップアウト優先度をページテーブルに格納するようにした一例を示す図である。
【図４】図１中の立ち上げ時カーネルスワップアウト部の処理を示すフローチャートである。
【図５】図１中のカーネルデマンドページング部およびカーネルスワップアウト部の処理を示すフローチャートである。
【図６】本発明の第２の実施の形態に係るカーネル空間のデマンドページング・スワップアウト方式の構成を示すブロック図である。
【符号の説明】
１  立ち上げ時カーネルスワップアウト部
２  カーネルデマンドページング部
３  カーネルスワップアウト部
４  仮想空間
４ａ  カーネル空間
４ｂ  ユーザ空間
５  物理メモリ
６  スワップデバイス
１１  タイムスタンプ値・スワップアウト優先度初期化手段
１２  カーネルデマンドページング部スワップアウト抑止手段
１３  カーネルスワップアウト部呼出し手段
２１  ページフォルトハンドリング手段
２２  スワップアウト優先度再計算手段
２３  メモリマッピング手段
３１  スワップアウトページ選択手段
３２  タイムスタンプ手段
３３  スワップアウト手段
４１  タイムスタンプ値
４２  スワップアウト優先度
４３  ページテーブル
１００  コンピュータ
２００  仮想記憶オペレーティングシステム
Ｓ１０１  カーネル立ち上げステップ
Ｓ１０２  タイムスタンプ値・スワップアウト優先度初期化ステップ
Ｓ１０３  カーネルデマンドページング部スワップアウト抑止ステップ
Ｓ１０４  カーネルスワップアウト部呼出しステップ
Ｓ１０５  ユーザプロセス移行ステップ
Ｓ２０１  ページフォルトハンドリングステップ
Ｓ２０２  タイムスタンプ値・スワップアウト優先度取得ステップ
Ｓ２０３  スワップアウト優先度再計算ステップ
Ｓ２０４  スワップアウト優先度設定ステップ
Ｓ２０５  メモリマッピングステップ
Ｓ３０１  スワップアウト優先度順ページ選択ステップ
Ｓ３０２  抑止ページ判定ステップ
Ｓ３０３  タイムスタンプ値設定ステップ
Ｓ３０４  スワップアウトステップ
Ｓ３０５  要求ページ数判定ステップ
【図１】
0003726701.tif 000002
【図２】
0003726701.tif 000003
【図３】
0003726701.tif 000004
【図４】
0003726701.tif 000005
【図５】
0003726701.tif 000006
【図６】
0003726701.tif 000007