(57)【要約】【課題】複数のアプリケーションから参照されているメモリ領域をスワップ処理対象から除外することで、スワップ処理の効率化を図る、スワップ処理装置を提供すること。【解決手段】使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定部１０２と、複数のアプリケーションから参照されているメモリ領域を管理する共有情報管理部１０４と、スワップ対象記憶部１０２１が記憶する情報であるメモリ領域と、メモリ管理情報記憶部１０４１が記憶する情報である複数のアプリケーションが共有して使用するメモリ領域とを用いて、スワップ対象となるメモリ領域を選択するスワップ処理選択部１０５と備え、複数のアプリケーションから参照されているメモリ領域をスワップ処理の対象から除外する。【選択図】図２
2009020555.tif 000002
【特許請求の範囲】
【請求項１】
使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定手段と、
アプリケーションとプロセスに関係する情報を管理する情報管理手段と、
前記情報管理部が管理する情報を用いて、複数のアプリケーションが共有して使用するメモリ領域の情報を管理する共有情報管理手段と、
前記スワップ対象決定手段が決定したメモリ領域と、前記共有情報管理手段が管理する情報を用いて、スワップ対象となるメモリ領域を選択するスワップ処理選択手段と、
前記スワップ処理選択手段によって選択されたメモリ領域のスワップアウト処理を行うデバイス書込み手段とを備えたことを特徴とするスワップ処理装置。
【請求項２】
前記スワップ処理選択手段は、複数のアプリケーションが共有して使用するメモリ領域を除外して、スワップ対象となるメモリ領域を選択することを特徴とする請求項１記載のスワップ処理装置。
【請求項３】
前記情報管理手段は、アプリケーションとプロセスの対応関係を管理するプロセス管理情報を管理することを特徴とする請求項２記載のスワップ処理装置。
【請求項４】
前記情報管理手段は、プロセスとページの対応関係を管理するページ管理情報を管理することを特徴とする請求項２記載のスワップ処理装置。
【請求項５】
プロセスの優先度を管理するプロセス優先度管理手段を備え、
前記スワップ処理選択手段は、前記スワップ対象決定手段が決定したメモリ領域と、前記プロセス優先度管理手段が管理する情報を用いて、スワップが繰り返されるメモリ領域を不適切なメモリ領域としてスワップ対象から除外して、スワップ対象となるメモリ領域を選択することを特徴とする請求項２記載のスワップ処理装置。
【請求項６】
前記プロセス優先度管理手段は、メモリ領域の使用に対する情報について、プロセス毎にアプリケーションからの参照数を管理するプロセス参照管理情報を管理することを特徴とする請求項５記載のスワップ処理装置。
【請求項７】
前記プロセス優先度管理手段は、メモリ領域の使用に対する情報について、プロセス毎にスワップ処理の実行回数を管理するスワップ回数管理情報を管理することを特徴とする請求項５記載のスワップ処理装置。
【請求項８】
前記プロセス優先度管理手段は、メモリ領域の使用に対する情報について、スワップ処理を禁止するプロセスを管理するスワップ禁止プロセス管理情報を管理することを特徴とする請求項５記載のスワップ処理装置。
【請求項９】
前記プロセス管理情報は、アプリケーションの実行履歴を含み、
前記プロセス優先度管理手段は、前記プロセス管理情報のアプリケーションの実行履歴から、プロセス毎の優先度を決定し、前記決定した優先度をプロセス優先度管理情報として管理することを特徴とする請求項５記載のスワップ処理装置。
【請求項１０】
特定のポリシーに従って、使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定ステップと、
前記スワップ対象決定ステップで決定したメモリ領域に対し、複数のアプリケーションが共有して使用するメモリ領域を除外して、スワップ対象となるメモリ領域を選択するスワップ処理選択ステップと、
前記スワップ処理選択ステップによって選択されたメモリ領域の書き込み処理により、スワップアウト処理を行うデバイス書込みステップを有することを特徴とするスワップ処理方法。
【請求項１１】
特定のポリシーに従って、使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定ステップと、
前記スワップ対象決定ステップで決定したメモリ領域に対し、複数のアプリケーションが共有して使用するメモリ領域を除外して、スワップ対象となるメモリ領域を選択するスワップ処理選択ステップと、
前記スワップ処理選択ステップによって選択されたメモリ領域の書き込み処理により、スワップアウト処理を行うデバイス書込みステップを有することを特徴とするスワップ処理プログラム。
【請求項１２】
使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定手段と、
アプリケーションとプロセスに関係する情報を管理する情報管理手段と、
前記情報管理部が管理する情報を用いて、複数のアプリケーションが共有して使用するメモリ領域の情報を管理する共有情報管理手段と、
前記スワップ対象決定手段が決定したメモリ領域と、前記共有情報管理手段が管理する情報を用いて、スワップ対象となるメモリ領域を選択するスワップ処理選択手段と、
前記スワップ処理選択手段によって選択されたメモリ領域のスワップアウト処理を行うデバイス書込み手段とを備えたことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で実行される種々のプログラムが使用しているメモリ領域に対して実施されるスワップ処理のメモリ退避技術に関するものである。
【背景技術】
【０００２】
仮想メモリシステムにおいて、使用しているメモリ領域が主記憶装置内で逼迫した場合に、主記憶装置内の一部のメモリ領域を二次記憶装置内に退避することで、主記憶装置内の当該メモリ領域を開放し、主記憶装置に空きメモリ領域を確保するスワッピングという技術（スワップアウト・スワップイン）がある。スワッピングにおいては、スワップ処理（スワップアウト時の二次記憶装置への書込み処理や、スワップイン時の二次記憶装置から主記憶装置への読込み処理や、これにかかるソフトウェアの処理を言う）によるオーバーヘッドが発生することで、余分な時間が必要となり、システム全体の処理効率が低下することになる。そのため、当該処理を効率化しスワップ処理によるオーバーヘッドを削減するためのメモリ退避技術がある。
【０００３】
スワッピング技術に関連するメモリ退避技術に関するものとしては、スワップ処理によるオーバーヘッドにより実行中のアプリケーションへの影響が発生することを防ぐために、スワップ対象とするメモリ領域の選択について、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などのアルゴリズムを用いて効率化を図るものがある。
【０００４】
従来のスワップ処理装置としては、ページ単位のスワップアウトとタスク単位でのスワップアウトを選択することで、タスク単位でのスワップアウトが選択された場合に、タスクが使用するメモリ領域について平均的にＬＲＵのアルゴリズムを採用し、仮想記憶メモリシステムにおいて、時間的に効率的なスワップアウト処理を実施するものがあった（例えば、特許文献１参照）。タスク単位でのスワップアウトを選択可能にすることで、タスクを構成するページ単位でのスワップが繰り返されることになり、空間的に断続したメモリ領域がスワップアウトされることを回避し、空間的に効率的なスワップアウト処理を実施している。
【特許文献１】特開２０００−２００２１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前記従来の技術では、タスク単位（以下、タスク単位とアプリケーション単位は同義語とみなす）でスワップアウトを行うときに、タスクが使用しているメモリ領域の共有について考慮されておらず、多数のタスクから使用されているメモリ領域についてもスワップアウト対象となってしまい、多数のタスクから使用されているメモリ領域は、スワップアウト対象となったタスクとは別のタスクから参照された場合にスワップイン処理が必要となり、スワップ処理のオーバーヘッドがかかるという課題を有していた。
【０００６】
本発明は、前記従来の課題を解決するもので、複数のアプリケーションから参照されているメモリ領域をスワップ処理対象から除外することで、スワップ処理の効率化を図るスワップ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記従来の課題を解決するために、本発明のスワップ処理装置では、使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定するスワップ対象決定手段と、アプリケーションとプロセスに関係する情報を管理する情報管理手段と、前記情報管理部が管理する情報を用いて、複数のアプリケーションが共有して使用するメモリ領域の情報を管理する共有情報管理手段と、前記スワップ対象決定手段が決定したメモリ領域と、前記共有情報管理手段が管理する情報を用いて、スワップ対象となるメモリ領域を選択するスワップ処理選択手段と、前記スワップ処理選択手段によって選択されたメモリ領域のスワップアウト処理を行うデバイス書込み手段とを備えたことを特徴とする。
【０００８】
本構成により、スワップ対象として退避されるメモリ領域を選択する際に、複数のアプリケーションから共有で使用するメモリ領域をスワップ対象から除外することが可能となり、スワップ処理にかかるオーバーヘッドを削減することができる。
【発明の効果】
【０００９】
本発明のスワップ処理装置によれば、複数のアプリケーションから参照されているメモリ領域を管理し、当該メモリ領域をスワップ処理の対象から除外することで、スワップ処理にかかるオーバーヘッドを削減することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１１】
（実施の形態１）
図１は、本発明の実施の形態におけるスワップ処理装置を備えた情報処理装置の構成を示すハードウェア構成図である。この情報処理装置は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ；パーソナルコンピュータ或いはパソコン）等の汎用のコンピュータやＡＶ機器や通信機器、家電機器などの組み込み機器等である。
【００１２】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）１、メモリ装置２、通信装置３４、入力装置４０、表示装置４５、タイマー回路５１及び割込コントローラ５５を備えている。
【００１３】
これらの各構成要素は、バスライン５０を通じて互いに接続されている。また、必要に応じて、バスライン５０には、ハードディスク装置２５及び読取書込装置３２を接続することが可能となっている。ハードディスク装置２５、読取書込装置３２、入力装置４０及び表示装置４５は、それぞれ、インタフェース２６、３５、４１及び４６を通じてバスライン５０に接続される。
【００１４】
ＣＰＵ１は、単一のＣＰＵで構成されても良く、複数のＣＰＵで構成されても良い。一例として、情報処理装置１０００は、複数のＣＰＵ１１、１２、１３、・・・を有するものとする。ＣＰＵ１は、ＲＯＭ２１又はハードディスク装置２５が格納するコンピュータプログラムを、必要に応じてＲＡＭ２２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。
【００１５】
メモリ装置２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２を備えている。ＲＯＭ２１は、ＣＰＵ１の動作を規定するコンピュータプログラムを記憶している。コンピュータプログラムは、ハードディスク装置２５に記憶させることもできる。ＲＡＭ２２は、ＣＰＵ１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する（主記憶装置）。ＲＯＭ２１には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリや記憶媒体も含まれる。ＲＡＭ２２には、電源を切ると記憶内容が保持されない揮発性のメモリや記憶媒体が含まれる。
【００１６】
ハードディスク装置２５は、内蔵する不図示のハードディスクに対して、コンピュータプログラム、或いはデータを書き込み及び読み出す装置である（二次記憶装置）。
【００１７】
読取書込装置３２は、記録媒体３１（例えばＣＤやＤＶＤやＢＤ−ＲＯＭやメモリカードなど）に記録されたコンピュータプログラム、或いはデータを読取る装置である。また、読取書込装置３２は、記録媒体３１（例えばＣＤやＤＶＤやＢＤ−ＲＯＭやメモリカードなど）にプログラム或いはデータを書込む装置である。
【００１８】
通信装置３４は、電話回線やネットワーク線や無線や赤外線通信等の通信回線３３を通じて、外部と自身との間で、コンピュータプログラム、或いはデータを交換する装置である。
【００１９】
入力装置４０は、ユーザの操作によりデータ等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、或いは着脱自在のマウス、キーボードである。また、マイクなどの音声入力機器などであってもよい。
【００２０】
表示装置４５は、データ、画像等を画面に表示したり、データ等を音声で表示したりする装置であり、例えばＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）、ブラウン管、スピーカである。
【００２１】
タイマー回路５１は、一定の周期でタイマー割込信号を出力する装置である。割込コントローラ５５は、タイマー回路５１、入力装置４０、ＣＰＵ１のうちの処理実行中のＣＰＵ以外のＣＰＵ、ネットワークデバイスとしての通信装置３４、ハードディスク装置２５、読取書込装置３２等から送られる割込要求信号を、ＣＰＵ１へ中継する装置である。各装置からの割込要求には優先度が付けられている。
【００２２】
割り込みコントローラ５５は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
【００２３】
以上のように、情報処理装置１０００は、コンピュータとして構成されている。上記コンピュータプログラムは、ＲＯＭ２１、不図示のフレキシブルディスク、ＣＤ−ＲＯＭ等のプログラム記録媒体３１を通じて供給することも、電気通信回線３３等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体３１としてＣＤ−ＲＯＭに記録されたコンピュータプログラムは、読取書込装置３２を情報処理装置１０００へ接続することにより、読み出すことができ、更にＲＡＭ２２或いはハードディスク装置２５に格納することができる。
【００２４】
プログラム記録媒体としてＲＯＭ２１によってコンピュータプログラムが供給される場合には、当該ＲＯＭ２１を情報処理装置１０００に搭載することにより、ＣＰＵ１は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線３３等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置３４を通じて受信され、例えば、ＲＡＭ２２或いはハードディスク装置２５に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であっても良い。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００２５】
図２は、本実施の形態におけるスワップ処理装置の構成を示すブロック図である。このスワップ処理装置の実体は、メモリ装置２或いはハードディスク装置２５などの二次記憶装置に格納され、ＣＰＵ１と協働して実行することにより、スワップアウト処理の高速化を実現している。
【００２６】
図２に示すスワップ処理装置１０は、スワップ開始指示部１０１、スワップ対象決定部１０２、スワップ対象記憶部１０２１、情報管理部１０３、ページ管理情報記憶部１０３１、プロセス管理情報記憶部１０３２、共有情報管理部１０４、メモリ管理情報記憶部１０４１、スワップ処理選択部１０５、デバイス書込み部１０６を備えている。
【００２７】
スワップ開始指示部１０１は、スワップアウト処理の開始タイミングを判断し、スワップ対象決定部１０２に、開始指示を通知する。具体的には、主記憶装置上のメモリ領域の空きサイズと、前もって決められている閾値との比較を行い、空きサイズが閾値より小さい場合に、スワップアウト処理を開始すると判断する。また、デーモンから通知を受け取ることで、定期的に主記憶装置上の空きサイズの確保を行ってもよい。また、必要とする主記憶装置上の空きサイズに基づいて、スワップアウト処理により二次記憶装置に移動するデータのサイズ（メモリ領域サイズ）を決定し、スワップ対象決定部１０２に通知する。
【００２８】
スワップ対象決定部１０２は、スワップ開始指示部１０１からの通知を受け取り、特定のポリシー（例えば、ＬＲＵやラウンドロビンなどのアルゴリズムや、ランダムに選択するなど）に従って、使用しているメモリ領域の中からスワップ対象となるメモリ領域を決定する。特に、スワップ開始指示部１０１からサイズが指定されると、そのサイズに対応する個数のメモリ領域を、スワップ対象として決定する。また、スワップ対象決定部１０２は、決定したメモリ領域を特定する情報をスワップ対象記憶部１０２１に格納処理する。さらに、スワップ対象決定部１０２は、スワップ処理選択部１０５に、選択指示を通知する。
【００２９】
スワップ対象記憶部１０２１は、スワップ対象決定部１０２により決定されたスワップ対象となるメモリ領域を特定する情報を記憶する記憶部である。このメモリ領域を特定する情報とは、例えば、メモリ領域を識別するメモリＩＤや、メモリ領域に対応するページを識別するページＩＤなどである。また、メモリ領域の位置を示すアドレス情報であってもよい。なお、ページとは、ＯＳで管理されるメモリ領域の単位のことである。
【００３０】
情報管理部１０３は、アプリケーションに関係する情報を管理する。具体的には、情報管理部１０３は、ページ管理情報記憶部１０３１とプロセス管理情報記憶部１０３２に記憶されている情報の更新を行う。ページ管理情報記憶部１０３１は、プロセスとページとの対応（ここでいう対応とは、プロセスで使用されるページ群のことを指す）をページ管理情報として記憶する。ここでいうページとはＯＳで管理されるメモリ領域の単位のことである。またプロセスと当該プロセスが利用しているページは、一対一であるかもしれないし、一対多であるかもしれないし、多対多であるかもしれない。また、プロセス管理情報記憶部１０３２は、アプリケーションとプロセスとの対応（ここでいう対応とは、アプリケーションを構成するプロセス群のことを指す）をプロセス管理情報として記憶する。ここでいうプロセスとはＯＳのなかの一くくりの動作単位である。またアプリケーションと当該アプリケーションに対応するプロセスは一対一であるかもしれないし、一対多であるかもしれないし、多対多であるかもしれない。また、プロセス管理情報記憶部１０３２はアプリケーションが実行された順番をアプリケーション実行履歴として保持する。なお、情報管理部１０３がこれらの情報の更新を行うタイミングは、ＯＳからアプリケーション実行の通知を受け取った際や、アプリケーションの実行状態を格納するデータ領域を定期的に監視して変更を検知した際などがあげられる。
【００３１】
図５は、ページ管理情報記憶部１０３１が保持するページ管理情報の一例を示したものである。プロセスＩＤとは、プロセスを識別する識別子である。また、ページＩＤとはページを識別する識別子である。ページ管理情報記憶部１０３１のページ管理情報は、プロセスが起動した際や、当該プロセスが新規にメモリを確保した際や、プロセスが終了した際や、当該プロセスがメモリを解放した際に、情報管理部１０３がＯＳから通知を受け、更新される。
【００３２】
図６は、プロセス管理情報記憶部１０３２が保持するプロセス管理情報の一例を示したものである。アプリケーションＩＤとは、アプリケーションを識別する識別子である。また、プロセス管理部１０３２がアプリケーション実行履歴を管理する場合は、アプリケーションが実行された順番（起動された順番とは異なる）で実行履歴欄を更新し、現在実行されているアプリケーションが実行履歴「１」となるように管理する（ここでは、履歴の順番を管理する方法として、数字の「１」を現在実行中のアプリケーションの実行履歴としたが、他にも、実行履歴の順番でアプリケーションＩＤを並び替える方法などが考えられる）。また、プロセス管理情報記憶部１０３２のプロセス管理情報は、実行されるアプリケーションが変更されるたびに、情報管理部１０３がＯＳから通知を受け、更新される。
【００３３】
共有情報管理部１０４は、情報管理部１０３が管理する情報を用いて、複数のアプリケーションが共有して使用するメモリ領域を管理する。具体的には、共有情報管理部１０４は、ページ管理情報記憶部１０３１とプロセス管理情報記憶部１０３２が記憶する情報を用いて、メモリ管理記憶部１０４１に記憶されている情報の更新を行う。
【００３４】
図１０は、複数のアプリケーションが共有して使用するメモリ領域を管理するテーブルの一例を示したものである。メモリ領域を識別するメモリＩＤと、そのメモリ領域の状態（参照フラグ）とを対応付けて管理している。各メモリ領域について、複数のアプリケーションが使用しているメモリ領域については参照フラグを立て（フラグを「１」に設定し）、参照フラグが立っているメモリ領域について、複数のアプリケーションが共有して使用するメモリ領域として管理する。図１０における、メモリ領域はページＩＤと一対一、もしくは、一対多に対応するものである。当該テーブルの情報は、新規にアプリケーションが起動される際やアプリケーションを終了する際に、ＯＳにより更新される。
【００３５】
スワップ処理選択部１０５は、スワップ対象記憶部１０２１が記憶する情報であるメモリ領域と、メモリ管理情報記憶部１０４１が記憶する情報である複数のアプリケーションが共有して使用するメモリ領域とを用いて、スワップ対象となるメモリ領域を選択する。具体的には、スワップ対象記憶部１０２１が記憶するメモリ領域のうち、メモリ管理情報記憶部１０４１にて複数アプリケーションからの参照フラグが「１」のメモリ領域を、スワップ処理の対象から除く。一方、スワップ対象記憶部１０２１が記憶するメモリ領域のうち、メモリ管理情報記憶部１０４１にて複数アプリケーションからの参照フラグが「０」のメモリ領域を、スワップ対象と選択する。また、スワップ処理選択部１０５は、選択したメモリ領域をデバイス書込み部１０６に通知する。また、スワップ処理選択部１０５は、選択したメモリ領域についてその都度デバイス書込み部１０６に通知することで、デバイス書込み部１０６と並列して動作することが可能であり、これによりシステム全体のスワップ処理完了までの時間を、スワップ処理選択部１０５とデバイス書込み部１０６がシーケンシャルに動作するときよりも削減できる。なお、スワップ処理選択部１０５は、スワップ対象決定部１０２からの選択指示を受け取り、処理を行ってもよいし、ＯＳやアプリケーションからの任意のトリガーを受け取り、処理を行ってもよいし、定期的に、処理を行ってもよいし、スワップ対象記憶部１０２１への格納状況を監視して一定サイズを超えると、処理を行うなどでもよい。
【００３６】
デバイス書込み部１０６は、スワップ処理選択部１０５によって選択されたメモリ領域を二次記憶装置に書込むことで、スワップアウト処理を行う。デバイス書込み部１０６が書込むメモリ領域の単位は、ＯＳが管理するメモリ領域の単位であるページ単位でも良いし、前もって決められた特定のサイズに合わせた単位でも良いし、またこれに限らず特定の観点から指定することのできる単位であっても構わない。なお、この書き込み先である二次記憶装置は、通信装置３４から通信回線３３を介して通じている外部の情報処理装置１０００上の、情報の書換え・読取りができる記憶装置であっても良い。また、ＲＡＭ２２であっても良いし、不図示であるＮＡＮＤ型フラッシュメモリであっても良いし、ハードディスク装置２５であっても良いし、読込書込装置３２によって書込み・読込みが行われる記録媒体３１（例えばＣＤやＤＶＤやメモリカードなど）であっても良い。
【００３７】
以上により、複数のアプリケーションから参照されているメモリ領域を管理し、当該メモリ領域をスワップ処理の対象から除外することが可能となり、スワップ処理にかかるオーバーヘッドを削減することができる。
【００３８】
図３は本発明の実施の形態におけるスワップ処理装置の動作を示すフローチャートである。ここでは、スワップ処理装置を実装した情報処理装置１０００が起動し、初期化処理を完了した後、スワップ開始指示部１０１が、スワップアウト処理の開始タイミングを判断し、処理を開始するものとする。
【００３９】
スワップ対象決定部１０２は、スワップ開始指示部１０１からの開始指示を受け取るのを待つ（ステップＳ１０１）。
【００４０】
開始指示を受け取ると（ステップＳ１０１がＹｅｓ）、スワップ対象決定部１０１は、スワップ処理対象となるメモリ領域を決定し（ステップＳ１０２）、決定したメモリ領域の情報をスワップ対象記憶部１０２１に格納し、スワップ処理選択部１０５に、選択指示を通知する（ステップＳ１０３）。
【００４１】
次に、スワップ処理選択部１０５は、スワップ対象決定部１０２から選択指示を受け取り、スワップ対象記憶部１０２１に記憶されたメモリ領域を取得する（ステップＳ１０４）。なお、ここでは、選択指示を受け取って処理を行うとしたが、ＯＳやアプリケーションからの任意のトリガーや定期的に、ステップＳ１０４を実行してもよい。
【００４２】
スワップ処理選択部１０５は、メモリ管理情報記憶部１０４１に記憶されている情報を参照し、取得したメモリ領域が、複数のアプリケーションから使用されているメモリ領域か否かを判定する（ステップＳ１０５）。
【００４３】
複数のアプリケーションから使用されている場合（ステップＳ１０５がＹｅｓ）、ステップＳ１０８に遷移する。一方、複数のアプリケーションから使用されていない場合（ステップＳ１０５がＮｏ）、ステップ処理選択部１０５は、取得したメモリ領域をスワップ対象として選択し、デバイス書込み部１０６に通知する（ステップＳ１０６）。
【００４４】
デバイス書込み部１０６は、スワップ対象と選択されたメモリ領域を二次記憶装置に書込みを行う（ステップＳ１０７）。
【００４５】
スワップ処理選択部１０５は、スワップ対象記憶部１０２１に未処理のメモリ領域があるか否かを判断する（ステップＳ１０８）。未処理のメモリ領域がある場合（ステップＳ１０８がＹｅｓ）、ステップＳ１０４に遷移して、処理を繰り返す。全てのメモリ領域に対する選択処理を完了すると（ステップＳ１０８がＮｏ）、処理を終了する。
【００４６】
以上により、複数のアプリケーションから参照されているメモリ領域を管理し、当該メモリ領域をスワップ処理の対象から除外することが可能となり、共有で使用するメモリ領域が退避されることを防ぐことができ、スワップ処理にかかるオーバーヘッドを削減することができる。つまり、一旦、スワップアウト処理したメモリ領域に対して、スワップアウト対象となったアプリケーションとは別のアプリケーションから参照されることによる、再度のスワップイン処理を減らすことが可能となり、スワップ処理の効率を向上することができる。
【００４７】
また、スワップ対象決定部１０２は、オペレーションシステム（ＯＳ）が管理する単位でスワップ対象となるメモリ領域を決定する。ＯＳが管理する単位として、例えばページがある。また、スワップ対象決定部１０２は、アプリケーションを指定し当該アプリケーションが使用しているメモリ領域をスワップ対象となるメモリ領域と決定する。この際に、アプリケーションが指定される場合もあれば、プロセスが指定される場合や、ページが指定される場合もあるが、これに限らない。アプリケーションを指定された場合には、スワップ対象決定部１０２は、プロセス管理情報記憶部１０３２やページ管理情報記憶部１０３１を参照し、指定された当該アプリケーションが使用しているページを把握し、ページ単位でスワップ対象となるメモリ領域を決定する。
【００４８】
なお、スワップ対象記憶部１０２１は、スワップ対象決定部１０２で決定されたスワップ対象となるメモリ領域をリスト管理により蓄積する。
【００４９】
情報処理装置１０００において、使用しているメモリ領域が主記憶装置内で逼迫した場合に、主記憶装置内の一部のメモリ領域を二次記憶装置内に退避することで、主記憶装置内の当該メモリ領域を開放し、主記憶装置に空きメモリ領域を確保する際のスワップ処理にかかる時間がオーバーヘッドとなるため、本実施の形態におけるスワップ処理装置を用いることで、スワップ処理を効率化し、スワップ処理によるオーバーヘッドを削減することが可能となる。
【００５０】
（実施の形態２）
図４は、本実施の形態におけるスワップ処理装置の構成を示すブロック図である。
【００５１】
図２に示すスワップ処理装置は、スワップ開始指示部１０１、スワップ対象決定部１０２、スワップ対象記憶部１０２１、情報管理部１０３、ページ管理情報記憶部１０３１、プロセス管理情報記憶部１０３２、プロセス優先度管理部１１１、優先度管理情報既往部１１１０、スワップ処理優先度選択部１１２、デバイス書込み部１０６、スワップ情報取得部１１３を備えている。ここでは、実施の形態１と同じ構成要素には同じ符号を付し、その説明を省略する。
【００５２】
プロセス優先度管理部１１１は、情報管理部１０３が管理する情報を用いて、各プロセスの優先度を管理する。具体的には、プロセス優先度管理部１１１は、プロセス参照管理情報記憶部１１１と、スワップ回数管理情報記憶部１１１２と、スワップ禁止管理情報記憶部１１１３と、プロセス優先度管理情報記憶部１１１４に記憶されている情報の管理を行い、これらの情報の更新を行う。
【００５３】
プロセス参照管理情報記憶部１１１１は、プロセス毎に参照しているアプリケーションの数をプロセス参照管理情報として記憶する。
【００５４】
図７は、プロセス参照管理情報記憶部１１１１が保持するプロセス参照管理情報の一例を示したものである。プロセスと、そのプロセスを参照しているアプリケーション数の対応を示している。プロセスＩＤとはプロセスを識別する識別子である。プロセス参照管理情報記憶部１１１１のプロセス参照管理情報は、アプリケーションが起動した際や、アプリケーションが動作中に新規にプロセスを追加起動した際に、プロセス優先度管理部１１１がＯＳから通知を受け、更新される。
【００５５】
スワップ回数管理情報記憶部１１１２は、プロセス毎に、スワップアウト処理により退避された回数をスワップ回数管理情報として記憶する。各プロセスに対応するスワップ回数は、スワップ情報取得部１１３からプロセス優先度管理部１１１に通知された情報を用いて、プロセス優先度管理部１１１により更新される。具体的には、メモリ領域の一例としてページＩＤを用いた場合、プロセス優先度管理部１１１は、スワップ情報取得部１１３から、デバイス書込み部１０６が二次記憶装置に書込んだメモリ領域の情報を取得し、ページ管理情報記憶部１０３１のページ管理情報を用いて、取得したページＩＤから当該ページＩＤを使用しているプロセスの情報（例えば、プロセスＩＤ）を決定する。そして、このプロセスＩＤに対応するスワップ回数の更新を行う。また、優先度については、プロセス優先度管理部１１１が、例えば、スワップ回数が多いプロセスは高優先度と決定する。なお、スワップ回数が最も多いプロセスだけを高優先度と決定しても良いし、スワップ回数が多い順番で任意の数だけ高優先度と決定しても良い。
【００５６】
図８は、スワップ回数管理情報記憶部１１１２が保持するスワップ回数管理情報の一例を示したものである。ここでは、プロセスとスワップ回数と優先度を対応付けて保持している。プロセスＩＤとはプロセスを識別する識別子であり、スワップ回数はスワップ情報取得部１１３からの通知に基づき、適宜更新される。またプロセス毎に優先度を決定して管理する。
【００５７】
スワップ禁止プロセス管理情報記憶部１１１３は、スワップを禁止するプロセスを記憶する。プロセス優先度管理部１１１は、ページ管理情報記憶部１０３１とプロセス管理情報記憶部１０３２の情報から、例えば、全てのアプリケーションから参照されているプロセスを、当該プロセスを禁止対象として保持する。また、特定のプロセスが使用するデータが、パスワードや暗号鍵など高いセキュリティが必要とする情報である場合、スワップ禁止プロセスとして保持してもよい。
【００５８】
プロセス優先度管理情報記憶部１１１４は、各プロセスのスワップアウトの優先順位を記憶する。プロセス優先度管理部１１１は、ページ管理情報記憶部１０３１とプロセス管理情報記憶部１０３２の情報から、あるプロセスが構成要素であるアプリケーションの中で一番低い数字のアプリケーション実行履歴を当該プロセスの優先順位とし、数字の高いプロセスから順番にスワップアウト対象として優先度高であると優先順位を決定して管理する。
【００５９】
スワップ処理優先度選択部１１２は、スワップ対象記憶部１０２１から取得したスワップ対象のメモリ領域に対し、優先度管理情報記憶部１１１０に記憶されている全ての情報もしくは一つ以上の情報を用いて、スワップ対象となるメモリ領域を選択する。つまり、スワップ対象として不適切なメモリ領域の除外したページ群をスワップ処理対象とする。例えば、スワップ処理優先度選択部１１２は、プロセス参照管理情報記憶部１１１１に記憶されたアプリケーションの数が多いプロセスから高優先度として、各プロセスの優先度付けを行う。ここで高優先度にする判定基準は、例えば、参照しているアプリケーション数が２つ以上の場合で判定しても良いし、任意の数値で判定しても良い。また、参照しているアプリケーションの数が大きい順番で順位付けを行い、任意の順位で判定してもよい。スワップ処理優先度選択部１１２は、この様にして判定した高優先度のプロセスが使用するページ（メモリ領域）をスワップ対象から除外する。また、プロセス参照管理情報記憶部１１１１の代わりに、スワップ回数管理情報記憶部１１１２の中で高優先度と判定されたプロセスについて、当該プロセスが使用するページをスワップ対象から除外する方法や、スワップ禁止プロセス管理情報記憶部１１１３で管理されているプロセスが利用しているページはスワップ対象から除外する方法や、プロセス優先度管理情報記憶部１１１４の中で高優先度と判定されたプロセスについて、当該プロセスが使用するページからスワップ対象にする方法がある。なお、優先度管理情報記憶部１１１０で記憶されている。
【００６０】
スワップ情報取得部１０８は、デバイス書込み部１０６が二次記憶装置に書込んだメモリ領域の情報を取得し、プロセス優先度管理部１１１に通知する。
【００６１】
以上により、スワップアウト対象として不適切なメモリ領域を管理し、当該メモリ領域をスワップ処理の対象から除外することが可能となり、スワップ処理にかかるオーバーヘッドを削減することができる。特に、不適切なメモリ領域とは、例えば、スワップが繰り返されるメモリ領域であり、アプリケーション毎のスワップを行った結果、アプリケーションの切替え毎にスワップ処理が実行されてしまうようなメモリ領域を、スワップ処理対象から除外することで、スワップ処理の効率化を図ることができる。更に、複数のアプリケーションから共有されているメモリ領域の中からも、優先度に基づいて、スワップアウト対象の適したメモリ領域を選択することが可能となり、必要とする主記憶装置上の空き容量を確実に用意することができる。
【００６２】
なお、本発明の実施の形態におけるスワップ処理装置は、典型的にはプログラムで実現されるが、集積回路であるＬＳＩとしてもよい。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００６３】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【００６４】
以上、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができる。
【産業上の利用可能性】
【００６５】
本発明にかかるスワップ処理装置は、多数のアプリケーションから参照されているメモリ情報をスワップ処理対象から除外する機能を有し、ＰＣ等の汎用のコンピュータやＡＶ機器や通信機器、家電機器などの用途で有用である。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施の形態における情報処理装置の構成を示すハードウェア構成図
【図２】本発明の実施の形態におけるスワップ処理装置の構成を示すブロック図
【図３】本発明の実施の形態におけるスワップ処理装置の動作を示すフローチャート
【図４】本発明の実施の形態におけるスワップ情報管理部の構成を示すブロック図
【図５】本発明の実施の形態におけるページ管理情報記憶部のページ管理情報の一例を示す図
【図６】本発明の実施の形態におけるプロセス管理情報記憶部のプロセス管理情報の一例を示す図
【図７】本発明の実施の形態におけるプロセス参照管理情報記憶部のプロセス参照管理情報の一例を示す図
【図８】本発明の実施の形態におけるスワップ回数管理情報記憶部のスワップ回数管理情報の一例を示す図
【図９】本発明の実施の形態におけるプロセス優先度管理情報記憶部のプロセス優先度管理情報の一例を示す図
【図１０】本発明の実施の形態におけるメモリ管理情報記憶部のメモリ管理情報の一例を示す図
【符号の説明】
【００６７】
１，１１，１２，１３    ＣＰＵ
１０    スワップ処理装置
２    メモリ装置
２１    ＲＯＭ
２２    ＲＡＭ
２５    ハードディスク装置
２６    インタフェース
３１    記憶媒体
３２    読取書込装置
３３    通信回線
３４    通信装置
３５    インタフェース
４０    入力装置
４１    インタフェース
４５    表示装置
４６    インタフェース
５０    バスライン
５１    タイマー回路
５５    割込コントローラ
１０１    スワップ開始指示部
１０２    スワップ対象決定部
１０３    情報管理部
１０４    共有情報管理部
１０５    スワップ処理選択部
１０６    デバイス書込み部
１１１    プロセス優先度管理部
１１２    スワップ処理優先度選択部
１１３    スワップ情報取得部
１０２１    スワップ対象記憶部
１０３１    ページ管理情報記憶部
１０３２    プロセス管理情報記憶部
１０４１    メモリ管理情報記憶部
１１１０    優先度管理情報記憶部
１１１１    プロセス参照管理情報記憶部
１１１２    スワップ回数管理情報記憶部
１１１３    スワップ禁止プロセス管理情報記憶部
１１１４    プロセス優先度管理情報記憶部
【図１】
2009020555.tif 000003
【図２】
2009020555.tif 000004
【図３】
2009020555.tif 000005
【図４】
2009020555.tif 000006
【図５】
2009020555.tif 000007
【図６】
2009020555.tif 000008
【図７】
2009020555.tif 000009
【図８】
2009020555.tif 000010
【図９】
2009020555.tif 000011
【図１０】
2009020555.tif 000012