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