(57)【要約】【課題】  より一般的なデマンドページング方式のメモリ管理技術を提供する。【解決手段】  関数ポインタテーブル経由で関数呼び出しを行うプログラムを実行し、デマンドページングのメモリ管理方式を採用したシステムにおいて、関数が配置されるメモリと、プログラムの関数呼び出し時に呼び出し回数をカウントし、この呼び出し回数を定期的に監視し、この呼び出し回数に合わせて前記関数の前記メモリ配置を変更する制御部を備え、前記制御部は前記呼び出し回数の相対的に少ない前記関数がデマンドページングにより前記メモリより追い出されるよう働くことを特徴とする情報処理装置。【選択図】      図３
2009288849.tif 000002
【特許請求の範囲】
【請求項１】
関数ポインタテーブル経由で関数呼び出しを行うプログラムを実行し、デマンドページングのメモリ管理方式を採用したシステムにおいて、
関数が配置されるメモリと、
プログラムの関数呼び出し時に呼び出し回数をカウントし、この呼び出し回数を定期的に監視し、この呼び出し回数に合わせて前記関数の前記メモリ配置を変更する制御部を備え、
前記制御部は前記呼び出し回数の相対的に少ない前記関数がデマンドページングにより前記メモリより追い出されるよう働くことを特徴とする情報処理装置。
【請求項２】
前記制御部内の呼び出し回数カウント部がプログラム起動後、一定時間間隔Nで、関数の呼出回数の変化を参照し、呼び出しカウントの変化がない場合、関数をメモリ最後尾へ再配置し、関数テーブルの関数ポインタを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
呼出回数カウントデータが呼出回数Sと呼出回数Lから構成され、前記呼出回数Sは呼出ごとにカウントアップされ、一定時間間隔Nで前記呼出回数Sが1以上ならば前記呼出回数Lをカウントアップし、前記呼出回数Sはクリアされさらに、Nより長い一定時間Mで呼出回数Lがクリアされ、関数再配置時に前記呼出回数Sを評価してから前記呼出回数Lを評価することにより、長時間呼び出されない関数がより後方に配置されるよう働くことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
関数ポインタテーブル経由で関数呼び出しを行うプログラムを実行し、デマンドページングのメモリ管理方式を採用したシステムにおいて、
プログラムの関数呼び出し時に呼び出し回数をカウントし、この呼び出し回数を定期的に監視し、この呼び出し回数に合わせて前記関数のメモリ配置を変更し、呼び出し回数の少ない関数がデマンドページングにより前記メモリより追い出されるよう動作することを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に係わり、特にそのメモリ管理方法に関する。
【背景技術】
【０００２】
情報処理装置における制御方法のうち、装置のメモリ管理方法は重要な役割を担っているが、一般的なデマンドページング方式のメモリ管理では、同じページに読み出し回数の少ない関数と多い関数が混在していた場合に、読み出し回数の少ない関数は必要ないにも関わらず、ページアウトされず、メモリ使用効率が悪い。
【０００３】
対して特許文献１には概要として、デマンドページング・スワップアウト方式において、各ページのスワップアウト優先度に基づいてスワップアウトページ選択手段と対象ページのタイムスタンプ値（現在時刻）、優先度Pから平均スワップアウト時間を計算して、メモリ資源の有効活用を狙った方式なるものが記載されている。しかしながら、カーネル空間のデマンドページング・スワップアウト方式であって、単一のロードモジュールとして生成されているモノリシックカーネルを採用する仮想記憶計算システムにおける技術という制約のあるものであった。
【特許文献１】特許第３７２６７０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、より一般的なデマンドページング方式のメモリ管理技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の情報処理装置は、関数ポインタテーブル経由で関数呼び出しを行うプログラムを実行し、デマンドページングのメモリ管理方式を採用したシステムにおいて、関数が配置されるメモリと、プログラムの関数呼び出し時に呼び出し回数をカウントし、この呼び出し回数を定期的に監視し、この呼び出し回数に合わせて前記関数の前記メモリ配置を変更する制御部を備え、前記制御部は前記呼び出し回数の相対的に少ない前記関数がデマンドページングにより前記メモリより追い出されるよう働くことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、より効果的なデマンドページング方式のメモリ管理技術が得られる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施形態を説明する。
【実施例１】
【０００８】
本発明による実施形態１を図１乃至図７を参照して説明する。まず、図６ および図７ を参照して、本発明の一実施形態に係る情報処理装置の構成について一般的に説明する。この情報処理装置は、例えば、ノートブック型パーソナルコンピュータ１０として実現されている。
【０００９】
図６ はノートブック型パーソナルコンピュータ１０のディスプレイユニットを開いた状態における正面図である。本コンピュータ１ ０ は、コンピュータ本体１ １ と、ディスプレイユニット１２ とから構成されている。ディスプレイユニット１２ には、Ｌ Ｃ Ｄ （ Liquid Crystal Display） １ ７ から構成される表示装置が組み込まれており、そのＬ Ｃ Ｄ １ ７ の表示画面はディスプレイユニット１ ２ のほぼ中央に位置されている。
【００１０】
ディスプレイユニット１ ２ は、コンピュータ本体１ １ に対して開放位置と閉塞位置との間を回動自在に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１ ３ 、本コンピュータ１ を電源オン／ オフするためのパワーボタン１４ 、入力操作パネル１ ５ 、およびタッチパッド１ ６ などが配置されている。
【００１１】
入力操作パネル１ ５ は、押されたボタンに対応するイベントを入力する入力装置であり、複数の機能をそれぞれ起動するための複数のボタンを備えている。これらボタン群には、ＴＶ起動ボタン１ ５ Ａ 、Ｄ Ｖ Ｄ ／ Ｃ Ｄ 起動ボタン１ ５ Ｂ も含まれている。Ｔ Ｖ 起動ボタン１ ５ Ａ は、Ｔ Ｖ 放送番組データの再生及び記録を行うためのＴＶ 機能を起動するためのボタンである。Ｔ Ｖ 起動ボタン１ ５ Ａ がユーザによって押下された時、ＴＶ 機能を実行するためのＴ Ｖ アプリケーションプログラムが自動的に起動される。
【００１２】
本コンピュータにおいては、汎用の主オペレーティングシステムの他に、Ａ Ｖ （ オーディオ・ビデオ） データを処理するための専用の副オペレーティングシステムがインストールされている。Ｔ Ｖ アプリケーションプログラムは、副オペレーティングシステム上で動作するプログラムである。
【００１３】
パワーボタン１ ４ がユーザによって押下された時、主オペレーティングシステムが起動される。一方、Ｔ Ｖ 起動ボタン１ ５ Ａ がユーザによって押下された時は、主オペレーティングシステムではなく、副オペレーティングシステムが起動され、そしてＴ Ｖ アプリケーションプログラムが自動的に実行される。副オペレーティングシステムはＡ Ｖ 機能を実行するための最小限の機能のみを有している。このため、副オペレーティングシステムのブートアップに要する時間は、主オペレーティングシステムのブートアップに要する時間に比べて遙かに短い。よって、ユーザは、ＴＶ起動ボタン１ ５ Ａ を押すだけで、Ｔ Ｖ 視聴／録画を即座に行うことが出来る。
【００１４】
Ｄ Ｖ Ｄ ／ Ｃ Ｄ 起動ボタン１ ５ Ｂ は、Ｄ Ｖ Ｄ またはＣ Ｄ に記録されたビデオコンテンツを再生するためのボタンである。Ｄ Ｖ Ｄ ／ Ｃ Ｄ 起動ボタン１ ５ Ｂ がユーザによって押下された時、ビデオコンテンツを再生するためのビデオ再生アプリケーションプログラムが自動的に起動される。このビデオ再生アプリケーションプログラムも、副オペレーティングシステム上で動作するアプリケーションプログラムである。ＤＶＤ ／ Ｃ Ｄ 起動ボタン１ ５ Ｂがユーザによって押下された時は、主オペレーティングシステムではなく、副オペレーティングシステムが起動され、そしてビデオ再生アプリケーションプログラムが自動的に実行される。
【００１５】
次に、図７ を参照して、本コンピュータ１０のシステム構成について説明する。
本コンピュータ１ ０ は、図７ に示されているように、Ｃ Ｐ Ｕ １ １ １ 、ノースブリッジ１１ ２ 、主メモリ１ １ ３ 、グラフィクスコントローラ１ １ ４ 、サウスブリッジ１ １ ９ 、Ｂ ＩＯ Ｓ − Ｒ Ｏ Ｍ １ ２ ０ 、ハードディスクドライブ（ＨＤ Ｄ ） １ ２ １ 、光ディスクドライブ（Ｏ Ｄ Ｄ ） １ ２ ２ 、Ｔ Ｖ チューナ１ ２ ３ 、エンベデッドコントローラ／ キーボードコントローラＩＣ （ Ｅ Ｃ ／ Ｋ Ｂ Ｃ ） １ ２ ４ 、およびネットワークコントローラ１２ ５ 等を備えている。
【００１６】
Ｃ Ｐ Ｕ １ １ １ は本コンピュータ１ ０ の動作を制御するために設けられたプロセッサであり、ハードディスクドライブ（ Ｈ Ｄ Ｄ ） １ ２ １ から主メモリ１ １ ３ にロードされる、主オペレーティングシステム（ 主Ｏ Ｓ ） ／ 副オペレーティングシステム（ 副Ｏ Ｓ ） 、および各種アプリケーションプログラムを実行する。
【００１７】
また、Ｃ Ｐ Ｕ １ １ １ は、Ｂ Ｉ Ｏ Ｓ − Ｒ Ｏ Ｍ １ ２ ０ に格納されたシステムＢ Ｉ Ｏ Ｓ （ Basic Input Output System） も実行する。システムＢＩＯ Ｓ はハードウェア制御のためのプログラムである。
【００１８】
ノースブリッジ１ １ ２ はＣ Ｐ Ｕ １ １ １ のローカルバスとサウスブリッジ１ １ ９ との間を接続するブリッジデバイスである。ノースブリッジ１ １ ２ には、主メモリ１ １ ３ をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１１２ は、Ａ Ｇ Ｐ （ Accelerated Graphics Port） バスなどを介してグラフィクスコントローラ１１ ４ との通信を実行する機能も有している。
【００１９】
グラフィクスコントローラ１ １ ４ は本コンピュータ１ ０ のディスプレイモニタとして使用されるＬ Ｃ Ｄ １ ７ を制御する表示コントローラである。このグラフィクスコントローラ１ １ ４ はビデオメモリ（ Ｖ Ｒ Ａ Ｍ ） １ １ ４ Ａ を有しており、Ｏ Ｓ ／ アプリケーションプログラムによってビデオメモリに書き込まれた表示データから、ＬＣＤ １ ７ に表示すべき表示イメージを形成する映像信号を生成する。
【００２０】
サウスブリッジ１ １ ９ は、Ｌ Ｐ Ｃ （ Low Pin Count） バス上の各デバイス、およびＰ Ｃ Ｉ （ Peripheral Component Interconnect） バス上の各デバイスを制御する。また、サウスブリッジ１１９ は、Ｈ Ｄ Ｄ １ ２ １ 、Ｏ Ｄ Ｄ １ ２ ２ を制御するためのＩ Ｄ Ｅ （ Integrated Drive Electronics） コントローラを内蔵している。さらに、サウスブリッジ１１ ９ は、Ｔ Ｖ チューナ１ ２ ３ を制御する機能、およびＢ Ｉ Ｏ Ｓ − Ｒ Ｏ Ｍ １ ２ ０ をアクセス制御するための機能も有している。
【００２１】
Ｈ Ｄ Ｄ １ ２ １ は、各種ソフトウェア及びデータを格納する記憶装置である。このＨ Ｄ Ｄ １ ２ １ はＡ Ｔ Ａ コマンドに従って動作するように構成されており、ＡＴＡ − ５ コマンドセットをサポートする。Ｈ Ｄ Ｄ １ ２ １ は、主Ｏ Ｓ 領域１ ２ １ Ａ と副Ｏ Ｓ 領域１ ２ １ Ｂ とを有している。主Ｏ Ｓ 領域１ ２ １ Ａ には、上述の主Ｏ Ｓ およびその主Ｏ Ｓ 上で動作するアプリケーションプログラム群がインストールされている。主ＯＳ 領域１ ２ １ Ａ は、主Ｏ Ｓ によって管理されている。副Ｏ Ｓ 領域１ ２ １ Ｂ には、上述の副Ｏ Ｓ 、Ｔ Ｖ アプリケーションプログラム、およびビデオ再生アプリケーションプログラムがインストールされている。副ＯＳ領域１ ２ １ Ｂ は副Ｏ Ｓ によって管理されている。副Ｏ Ｓ 領域１ ２ １ Ｂ は副Ｏ Ｓ によって管理されることによって、主ＯＳ からは隠蔽されている。Ｈ Ｄ Ｄ １ ２ １ は、外付けタイプの形態のものでも差し支えない。
【００２２】
光ディスクドライブ（ Ｏ Ｄ Ｄ ） １ ２ ３ は、ビデオコンテンツが格納されたＤ Ｖ Ｄ 、Ｃ Ｄなどの記憶メディアを駆動するためのドライブユニットである。Ｔ Ｖ チューナ１ ２ ３ は、Ｔ Ｖ 放送番組のような放送番組データを外部から受信するための受信装置である。
【００２３】
エンベデッドコントローラ／ キーボードコントローラＩＣ（ Ｅ Ｃ ／ Ｋ Ｂ Ｃ ） １ ２ ４ は、電力管理のためのエンベデッドコントローラと、キーボード（Ｋ Ｂ ） １ ３ およびタッチパッド１ ６ を制御するためのキーボードコントローラとが集積された１ チップマイクロコンピュータである。このエンベデッドコントローラ／キーボードコントローラＩ Ｃ （ Ｅ Ｃ ／Ｋ Ｂ Ｃ ） １ ２ ４ は、ユーザによるパワーボタン１４ の操作に応じて本コンピュータ１０ をパワーオン／パワーオフする機能を有している。さらに、エンベデッドコントローラ／キーボードコントローラＩ Ｃ （ Ｅ Ｃ ／ Ｋ Ｂ Ｃ ） １ ２ ４ は、ユーザによるＴ Ｖ 起動ボタン１ ５Ａ 、Ｄ Ｖ Ｄ ／ Ｃ Ｄ 起動ボタン１ ５ Ｂ の操作に応じて、本コンピュータ１０ をパワーオンすることもできる。
【００２４】
ネットワークコントローラ１ ２ ５ は、例えばインターネットなどの外部ネットワークとの通信を実行する通信装置である。
さて図１は、実施形態の機能ブロック構成図を示している。
CPU１１１とRAM１１３と外部記憶装置１２１を持つシステムで、外部記憶装置１２１の中に格納されたプログラムがRAM１１３へコピーされて実行される。メモリ管理の機能としてデマンドページングを行うため、例えば4KBサイズのページごとに、必要なページのみがコピーされて実行される。また、しばらく実行されないページは、RAM１１３上からは削除され、再度実行されるタイミングで外部記憶装置１２１からコピーされることで、RAM１１３を効率的に利用する。
【００２５】
この実施形態のシステムでは、プログラムは関数テーブル経由で関数を呼び出す。図2のように、関数FuncAから関数FuncBを呼び出すときに共通関数呼び出しコード（アプリケーションプログラムの一種）であるStat_Callへジャンプし、関数テーブルの呼び出し回数1をインクリメントしてから、関数テーブル中のFuncBの関数ポインタの指すアドレスへジャンプする構成となっている。FuncBの実行後には、FuncAまで戻る。
【００２６】
関数テーブルにある呼出回数Sは一定時間N（例えば１秒程度）内に呼び出される回数のカウントに使用する。短期的な呼び出し状態を把握するのに使用する。
呼出回数Lは、一定時間Nの間に1度でも呼び出されるとインクリメントするカウンタで長期的な呼出状態の把握に使用する。
オフセットとサイズは、プログラムファイル上のオフセットと関数のサイズを示し、ページリンクは、同じページ内の関数を接続するリンクとなっている。ページフォルト処理でのコードの再ロードで利用する。
【００２７】
図３はプログラムの実行と並行して、OSによって処理される関数呼び出し回数監視処理のフローチャートである。プログラム起動後、一定時間Nで（ステップＳ３０１）、対象とする全ての関数について関数テーブル内の呼び出し回数情報を参照し、一定時間内の呼出回数Sをチェックする。呼出回数Sが０で（ステップＳ３０２のＹＥＳ）、かつその関数の実行中でない場合は該当関数をコード領域の最後尾に再配置し（ステップＳ３０３）、関数テーブルの関数ポインタを再配置後のアドレスに更新する（ステップＳ３０４）。呼出回数Sが０以外の場合は（ステップＳ３０２のＮＯ）、呼出回数Lをインクリメントし（ステップＳ３０５）、呼出回数Sをゼロクリアする（ステップＳ３０６）。
【００２８】
また一定時間Nよりも長い間隔M（例えば数分程度）で（ステップＳ３０７）、呼出回数Lをゼロクリアする（ステップＳ３０８）。
図４はプログラムのコード領域の関数再配置処理を示す図である。再配置前には、呼び出し回数Sが0回のFuncDと4回のFuncCが同じページに含まれていたため、関数FuncDがページアウトされる可能性が低かった。再配置後には、関数FuncDが別のページに配置されるため、ページアウトされる可能性が高くなる。呼出回数Sが0回の関数が複数存在した場合には、関数テーブルの呼出回数Lの少ない方を後方に配置することでより効率的に動作させることができる。
【００２９】
また、呼出回数０回の関数群の先頭がページ境界となるように配置することで、効率的にページアウトされることが可能となる。
図５はページエントリと関数テーブルの関係を示す図である。物理メモリを管理するページテーブル情報に、実際の物理アドレスを指すページアドレスＡｄと関数テーブルのエントリを指す関数エントリＥｎが含まれる。
【００３０】
ページフォルトが発生したときは、ページテーブルから関数テーブルをたどり該当関数のオフセットとサイズ情報を参照し、外部記憶装置から関数のコードをＲＡＭへコピーする。
【００３１】
一般に同じページに読み出し回数の少ない関数と多い関数が混在していた場合に、読み出し回数の少ない関数は必要ないにも関わらず、ページアウトされず、メモリ使用効率が悪いが、上記のように本実施形態では、関数の読み出し回数に応じて関数を再配置するため、読み出し回数の低い関数が同じページにまとまり、ページアウトされやすくなり、メモリ使用効率が向上する。
【００３２】
プログラム実行後に、呼出回数情報を外部に吐き出し、その情報を元に最適な関数配置にプログラムを再リンクすることにより、共通関数呼び出しコードのオーバヘッドの必要なく、最適化されたプログラムを実行することが可能となる。
【００３３】
即ち関数の呼び出す回数に応じて関数のメモリ上の配置を動的に変更することにより、呼び出し回数の少ない関数の存在するページがメモリから追い出され易くなり、メモリが効率的に利用できる。関数の読み出し回数に応じて関数を再配置するため、読み出し回数の低い関数が同じページにまとまり、ページアウトされやすくなり、メモリ使用効率が向上する。
【００３４】
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。ＰＣではなくＤＴＶ（Ｄｉｇｉｔａｌ  Ｔｅｌｅｖｉｓｉｏｎ）で実施してもよい。
【００３５】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良いものである。
【図面の簡単な説明】
【００３６】
【図１】この発明の一実施形態の装置（システム）を示す概略ブロック図。
【図２】実施例の関数呼び出し手順を示すブロック図。
【図３】実施例の関数呼び出し回数監視処理のフローチャート図。
【図４】プログラムのコード領域の関数再配置処理を示す図
【図５】ページ管理構造を示す図
【図６】本発明の一実施形態に係るコンピュータの概観を示す斜視図。
【図７】図６ のコンピュータのシステム構成を示すブロック図。
【符号の説明】
【００３７】
１ ０ … コンピュータ、１ １ １ … Ｃ Ｐ Ｕ 、１ １ ３ … Ｒ Ａ Ｍ、１ ２ １ … Ｈ Ｄ Ｄ。
【図１】
2009288849.tif 000003
【図２】
2009288849.tif 000004
【図３】
2009288849.tif 000005
【図４】
2009288849.tif 000006
【図５】
2009288849.tif 000007
【図６】
2009288849.tif 000008
【図７】
2009288849.tif 000009