(57)【要約】【課題】少ないメモリ使用量で高速にアプリケーションプログラムの実行を行なうオペレーティングシステムを得ること。【解決手段】ＲＯＭ上に格納されたアプリケーションプログラムをＲＡＭ上にロードして実行し、ＲＡＭ内の記憶領域が不足した際にはＲＡＭ内の記憶領域を開放してアプリケーションプログラムの継続処理を行なう情報処理装置１００において、ＲＡＭ５内の記憶領域が不足した際に、プロセスの中の所定の対象をディスク装置９に退避させるとともにプロセスの中の所定の対象をＲＡＭ５上から廃棄させてＲＡＭ５内の記憶領域を開放し、退避させた対象または廃棄させた対象を含むプロセスを再実行する際には、退避させた対象をディスク装置９からＲＡＭ５上に回復させるとともに廃棄させた対象をＲＯＭ３上から再ロードさせてプロセスを再実行する記憶領域制御部を備える。【選択図】        図２
2007156702.tif 000002
【特許請求の範囲】
【請求項１】
ＲＯＭ上に格納されたアプリケーションプログラムをＲＡＭ上にロードして実行し、ＲＡＭ内の記憶領域が不足した際には前記ＲＡＭ内の記憶領域を開放して前記アプリケーションプログラムの継続処理を行なうオペレーティングシステムにおいて、
前記ＲＡＭ上で実行される所定のプロセスのうち外部記憶装置に退避させる対象と前記ＲＡＭ上から廃棄させる対象とを判別する対象判別部と、
前記ＲＡＭ内の記憶領域が不足した際に、前記対象判別部の判別結果に基づいて前記プロセスの中の所定の対象を前記外部記憶装置に退避させるとともに前記プロセスの中の所定の対象を前記ＲＡＭ上から廃棄させて前記ＲＡＭ内の記憶領域を開放し、前記退避させた対象または廃棄させた対象を含むプロセスを再実行する際には、前記退避させた対象を前記外部記憶装置から前記ＲＡＭ上に回復させるとともに前記廃棄させた対象を前記ＲＯＭ上から再ロードさせて前記プロセスを再実行する記憶領域制御部と、
を備えることを特徴とするオペレーティングシステム。
【請求項２】
前記対象判別部は、前記プロセスのデータ部分を前記外部記憶装置に退避させる対象と判別し、前記プロセスのコード部分を前記ＲＡＭ上から廃棄させる対象と判別することを特徴とする請求項１に記載のオペレーティングシステム。
【請求項３】
前記対象判別部は、前記プロセスのコード部分のうち書き換えの許されたコード部分を前記外部記憶装置に退避させる対象と判別し、前記プロセスのコード部分のうち書き換えの許されないコード部分を前記ＲＡＭ上から廃棄させる対象と判別することを特徴とする請求項１に記載のオペレーティングシステム。
【請求項４】
前記対象判別部は、前記プロセスのデータ部分のうち書き換えの行なわれたデータ部分を前記外部記憶装置に退避させる対象と判別し、前記プロセスのデータ部分のうち書き換えの行なわれていないデータ部分を前記ＲＡＭ上から廃棄させる対象と判別することを特徴とする請求項１に記載のオペレーティングシステム。
【請求項５】
前記対象判別部は、前記外部記憶装置に退避させる対象と前記ＲＡＭ上から廃棄させる対象とを前記ＲＡＭ内のページ単位又はタスク単位で判別することを特徴とする請求項１〜４のいずれか１つに記載のオペレーティングシステム。
【請求項６】
前記記憶領域制御部は、前記ＲＡＭ内の記憶領域の開放および前記プロセスの再実行を、前記ＲＡＭ内のページ単位またはタスク単位で行なうことを特徴とする請求項１〜５のいずれか１つに記載のオペレーティングシステム。
【請求項７】
前記記憶領域制御部は、前記ＲＡＭ内の記憶領域が不足した際に、前記ＲＡＭ上での前記データおよび前記コードの書き換え量に基づいて、前記ＲＡＭ内の記憶領域の開放および前記プロセスの再実行を前記ＲＡＭ内のページ単位またはタスク単位の何れで行なうかを判断し、当該判断結果に基づいて前記ＲＡＭ内の記憶領域の開放および前記プロセスの再実行を行なうことを特徴とする請求項６に記載のオペレーティングシステム。
【請求項８】
前記対象判別部の判別結果を、前記各ページの管理情報で構成されて前記タスクの管理を行なうためのタスク管理情報または前記ページ毎の管理情報として記憶する記憶部をさらに備えることを特徴とする請求項１〜７のいずれか１つに記載のオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＯＭ化されたアプリケーションプログラムを実行するオペレーティングシステムに関するものである。
【背景技術】
【０００２】
近年、インターネット等の通信ネットワークの発展に伴い、携帯情報機器やデジタル家電等の情報機器を通信ネットワークに接続して動作させる技術の開発が進められている。このような情報機器には、例えば組み込みＬｉｎｕｘ（登録商標）等の共通化されたオペレーティングシステム（以下、ＯＳという）を搭載させ、このＯＳを用いて所定の動作を実行させている。
【０００３】
組み込みＬｉｎｕｘシステム等のＯＳでは、仮想記憶をサポートしており、物理メモリサイズを超えたメモリ空間を使用することができる。すなわち、携帯情報機器等のアプリケーションプログラムを実行する際に、アプリケーションプログラムを動作させるための空きメモリ領域が不足すると、カーネル（ＯＳ）はＲＡＭ（Random Access Memory）内のプロセスをスワップアウトさせている。これにより、アプリケーションプログラムを動作させるための空きメモリ領域を確保（開放）し、アプリケーションプログラムによる処理を継続させている。このとき、スワップアウトされたプロセス（ページ）は、スワップキャッシュおよび二次記憶装置（ハードディスク等）に退避され、必要に応じてＲＡＭにスワップインして使用されることとなる（非特許文献１，２参照）。
【０００４】
ところで、フラッシュメモリ等のＲＯＭ上に置かれたプログラムコードをそのまま実行する技術として、ＸＩＰ（eXecute In Place）技術がある。このＸＩＰは、ＲＯＭ上に置かれたプログラムコードをそのまま実行することによって、主記憶（ＲＡＭ）上のメモリフットプリントの低減や、ＲＯＭ（Read Only Memory）から主記憶へのプログラムコードのコピー時間の低減によるプログラム起動時間の短縮を目的としている。
【０００５】
ＸＩＰには、アプリケーションＸＩＰやカーネルＸＩＰがあり、アプリケーションＸＩＰは、組み込みＬｉｎｕｘにおいてＲＯＭ化されたアプリケーションプログラムの起動を高速化するために使用されている。このアプリケーションＸＩＰは、ＭＭＵ（Memory Management Unit）を備えていないプロセッサ上で動作させるための小規模な組み込みＬｉｎｕｘにおいてＦＬＡＴバイナリ（オブジェクトフォーマット）を利用することで、ダイナミックリンクに伴うリロケーションの解決を行なわず高速にプログラムを起動させることを可能としている（非特許文献３参照）。
【０００６】
【非特許文献１】“４．メモリ管理”、［online］、Ｊａｎｕａｒｙ  ２５，１９９９、The Linux Kernel  David A Rusling david.rusling@arm.com、［平成１７年１１月８日検索］、インターネット＜ＵＲＬ：http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html＞
【非特許文献２】“Ｌｉｎｕｘ  Ｖ２．４  カーネル内部解析報告  ドラフト  第４版”、［online］、高橋浩和、［平成１７年１１月８日検索］、インターネット＜ＵＲＬ：http://japan.linux.com/kernel/internal24/index.shtml＞
【非特許文献３】“ＸＩＰでアプリケーションを実行”、［online］、Ａｒｍａｄｉｌｌｏ  Ｏｆｆｉｃｉａｌ  Ｓｉｔｅ、［平成１７年１１月８日検索］、インターネット＜ＵＲＬ：http://armadillo.atmark-techno.com/armadillo-j/memo/eXecuteInPlace＞
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記前者の従来技術では、スワップ処理によるページアウト、ページインのオーバヘッドが非常に大きく、ＰＣ（Personal Computer）やワークステーション等においてスワップが発生すると、性能が大きく低下する場合があるといった問題があった。これは、スワップ対象となるページの探索に時間を要するのに加え、二次記憶装置へのアクセスに多くの時間を費やすことが原因となっている。スワップによる性能低下を軽減する方法として、物理的に大容量な主記憶メモリを情報機器に搭載させてスワッピングの発生を回避させる方法や高速な二次記憶デバイスを主記憶メモリに接続させる方法があるが、組み込み機器の製造コストが高くなるといった問題があった。
【０００８】
また、上記後者の従来技術では、アプリケーションプログラムの起動を高速化させることはできるが、アプリケーションプログラムの実行速度を高速化できないといった問題があった。
【０００９】
本発明は、上記に鑑みてなされたものであって、少ないメモリ使用量で高速にアプリケーションプログラムの実行を行なうオペレーティングシステムを得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、ＲＯＭ上に格納されたアプリケーションプログラムをＲＡＭ上にロードして実行し、ＲＡＭ内の記憶領域が不足した際には前記ＲＡＭ内の記憶領域を開放して前記アプリケーションプログラムの継続処理を行なうオペレーティングシステムにおいて、前記ＲＡＭ上で実行される所定のプロセスのうち外部記憶装置に退避させる対象と前記ＲＡＭ上から廃棄させる対象とを判別する対象判別部と、前記ＲＡＭ内の記憶領域が不足した際に、前記対象判別部の判別結果に基づいて前記プロセスの中の所定の対象を前記外部記憶装置に退避させるとともに前記プロセスの中の所定の対象を前記ＲＡＭ上から廃棄させて前記ＲＡＭ内の記憶領域を開放し、前記退避させた対象または廃棄させた対象を含むプロセスを再実行する際には、前記退避させた対象を前記外部記憶装置から前記ＲＡＭ上に回復させるとともに前記廃棄させた対象を前記ＲＯＭ上から再ロードさせて前記プロセスを再実行する記憶領域制御部と、を備えることを特徴とする。
【発明の効果】
【００１１】
この発明によれば、ＲＡＭ内の記憶領域が不足した際に、所定の対象を外部記憶装置に退避させるとともに所定の対象をＲＡＭ上から廃棄させてＲＡＭ内の記憶領域を開放し、プロセスを再実行する際には、退避させた対象を外部記憶装置からＲＡＭ上に回復させるとともに廃棄させた対象をＲＯＭ上から再ロードさせてプロセスを再実行するので、少ないメモリ使用量で高速にアプリケーションプログラムの実行を行なうことが可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、本発明に係るオペレーティングシステムの好適な実施の形態を説明する。なお、以下では、本発明に係るオペレーティングシステムの概要および特徴を説明した後に、本実施の形態１，２に係るオペレーティングシステムを説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
まず、本発明にかかるオペレーティングシステム（以下、ＯＳという）の概念について説明する。図１は、本発明にかかるＯＳの概念を説明するための図である。ここでのＯＳ（カーネル）２０は、例えばスワップアウトが発生しない程度の大容量な主記憶（ＲＡＭ）を搭載しない携帯情報端末等の組み込み機器製品（後述する情報処理装置１００）に搭載されるものであり、図示しないＣＰＵ（Central Processing Unit）等を用いて情報処理装置１００内のＲＯＭ３やＲＡＭ５を制御する。
【００１４】
ＯＳ２０は、ソースコードが公開されているオペレーティングシステムの１つでありＵＮＩＸ（登録商標）に準じたＯＳ（例えばＬｉｎｕｘ（登録商標））である。すなわち、情報処理装置１００は、例えばＬｉｎｕｘシステムとして機能し、ＯＳ２０によってＲＯＭ化されたアプリケーションプログラム３１の実行を行なう。
【００１５】
ＯＳ２０は、ユーザによる入力手段（図示せず）からの入力によって、ＲＯＭ３に格納されるアプリケーションプログラム３１を読み出してＲＡＭ５内のプログラム格納領域に展開して各種処理を実行する。ＯＳ２０は、この処理に際して生じる各種データやコードをＲＡＭ５内に形成されるデータ格納領域に一時的に記憶させ、アプリケーションプログラム３１に基づく処理を実行する。
【００１６】
また、ＯＳ２０は、仮想記憶をサポートしており、物理メモリサイズを超えたメモリ空間を使用可能な構成となっている。すなわち、ＯＳ２０は、アプリケーションプログラム３１を実行する際にアプリケーションプログラム３１を動作させるための空きメモリ領域がＲＡＭ５内で不足すると、ＲＡＭ５上にロードされているプロセス（データやコード）の中からアクセス頻度の低いプロセスを抽出し、スワップアウトさせる機能（後述のｋｓｗａｐｄデーモン）を有している。これにより、ＯＳ２０は、アプリケーションプログラム３１を動作させるための空きメモリ領域をＲＡＭ５内に確保し、アプリケーションプログラム３１による処理を継続させる。
【００１７】
ＯＳ２０は、まずＲＯＭ３内に格納されているアプリケーションプログラム３１をＲＡＭ５にロードし（１）、アプリケーションプログラム３１の実行を開始する。ＯＳ２０は、アプリケーションプログラム３１の実行中に、ＲＡＭ５の空きメモリ領域が不足しているか否かを判断（検出）している。ＯＳ２０が、ＲＡＭ５の空きメモリ領域が不足していることを検出すると（２）、ＲＡＭ５上にロードされているプロセスの中からスワップアウトの対象（候補）となるアクセス頻度の低いプロセスを例えばページ毎に抽出する。ここでのＯＳ２０は、スワップアウトの対象となるプロセスのうち、データの書き換えが行なわれていない部分として例えばコード領域を抽出する（３）。
【００１８】
そして、ＯＳ２０は抽出したコード領域をＲＡＭ５内から廃棄させる（４）。また、ＯＳ２０は、スワップアウトの対象となるプロセスのうち、廃棄しなかった部分（データの書き換えが行なわれた例えばデータ領域）をディスク装置９等の外部記憶装置にスワップアウト（退避）させる（５）。
【００１９】
この後、スワップアウトの対象となったプロセス（コード）を再度ＲＡＭ５上にロードする必要が生じると、ＯＳ２０は廃棄したコード領域をＲＯＭ３から再ロードする（６）。一方、スワップアウトの対象となったプロセスのうち、ディスク装置９にスワップアウトさせたデータ領域に対しては、ディスク装置９からスワップイン（回復）させる（７）。これにより、ＯＳ２０は、スワップアウトの対象となったプロセスのメモリイメージをＲＡＭ５上に復元する。
【００２０】
このように、スワップアウトの対象となったプロセスのうちデータの書き換えが行なわれていない部分を廃棄し、廃棄した部分を含むプロセスをＲＡＭ５上に再ロードする際には、ＲＯＭ３から再ロードするので、ＲＯＭ３上のアプリケーションプログラム３１を高速に実行することが可能となる。
【００２１】
実施の形態１．
つぎに、図２および図３に従って実施の形態１にかかるＯＳ（後述する制御部１）を備えた情報処理装置について説明する。図２は、実施の形態１にかかるＯＳを備えた情報処理装置の構成を示すブロック図である。情報処理装置１００は、制御部１、ＲＯＭ３、ＲＡＭ５、スワップキャッシュ７、ディスク装置９を備えている。
【００２２】
ＲＯＭ３は、フラッシュメモリ等の記憶手段であり、アプリケーションプログラム３１を記憶する。ＲＯＭ３は、ｃｒａｍｆｓ、ｒｏｍｆｓ、ｊｆｆｓ２等のファイルシステムを格納しており、これらのファイルシステムのファイルシステムフォーマットによってアプリケーションプログラム３１を格納している。このＲＯＭ３内のファイルシステムによって、アプリケーションプログラム３１はマウントし、実行可能となっている。
【００２３】
ＲＡＭ５は、ＲＯＭ３に格納されるアプリケーションプログラム３１をＲＡＭ５内のプログラム格納領域に展開し、アプリケーションプログラム３１に基づく各種処理を実行する。ＲＡＭ５は、アプリケーションプログラム３１を実行する際に生じる各種データやコードをデータ格納領域に一時的に記憶させておく。
【００２４】
スワップキャッシュ７は、アプリケーションプログラム３１を動作させるための空きメモリ領域がＲＡＭ５内で不足すると、ＲＡＭ５上にロードされているプロセス（データやコード）の中からアクセス頻度の低いプロセスを一時的に格納する。
【００２５】
ディスク装置９は、スワップキャッシュ７に格納されているプロセスの中でアクセス頻度の低いプロセスをスワップファイルとして一時的に格納する記憶手段（ハードディスクドライブ等の２次記憶装置）である。
【００２６】
スワップキャッシュ７やディスク装置９は、制御部１がスワップアウト（ページアウト）対象として選択したＲＡＭ５内の所定のプロセスを例えばページ毎やプロセス毎に記憶し、制御部１からの指示に基づいて記憶していたプロセスをＲＡＭ５にスワップイン（ページイン）する。
【００２７】
制御部１は、ＲＯＭ３、ＲＡＭ５、スワップキャッシュ７、ディスク装置９を制御する。制御部１は、図示しないＯＳ（前述のＯＳ２０）やＣＰＵを備えて構成され、ＲＯＭ３からＲＡＭ５へアプリケーションプログラム３１をロードしてアプリケーションプログラム３１を実行する。
【００２８】
制御部１は、アプリケーションプログラム３１の実行中に、アプリケーションプログラム３１を動作させるための空きメモリ領域がＲＡＭ５内で不足したか否かを判定する機能を有している。制御部１は、ＲＡＭ５の空きメモリ領域が不足していると判断すると、ＲＡＭ５上にロードされているプロセスの中からアクセス頻度の低いプロセス（ページ等）を、ディスク装置９やスワップキャッシュ７へのスワップアウト対象（候補）として抽出する。
【００２９】
本実施の形態１にかかる制御部１は、スワップ判定部（対象判別部）１１、スワップフラグ（記憶部）１２、スワップ処理部（記憶領域制御部）１３を備えている。スワップ判定部１１は、アプリケーションプログラム３１をＲＡＭ５にロードした際に、ＲＡＭ５の空きメモリ領域の不足時にディスク装置９やスワップキャッシュ７へスワップアウトさせるもの（スワップアウトする属性）と、ＲＡＭ５から廃棄（削除）させるもの（スワップアウトしない属性）とをプロセスのタスク毎やページ毎等に判定する。この判定結果は、スワップフラグ１２に設定しておく。
【００３０】
本実施の形態１では、スワップ判定部１１は、例えばＲＡＭ５内のプロセス（ページ等）がデータである場合に、ＲＡＭ５の空きメモリ領域を確保するためスワップアウトすると判定し、ＲＡＭ５内のプロセスがコードである場合に、ＲＡＭ５から廃棄させると判定する。すなわち、スワップ判定部１１は、ＲＡＭ５上で書き換えの行なわれるデータに対してはアプリケーションプログラム３１の実行を継続させるためにＲＡＭ５の空きメモリ領域の不足時にスワップアウトすると判定し、ＲＡＭ５上で書き換えの行なわれないコードに対してはＲＡＭ５の空きメモリ領域の不足時にＲＡＭ５上から廃棄すると判定する。
【００３１】
また、スワップ判定部１１は、ＲＡＭ５でスワップアウトされたもの（プロセス）や廃棄されたものの中から再度ＲＡＭ５上に展開する必要が生じると（以下、再実行処理という）、ディスク装置９やスワップキャッシュ７からスワップインさせるものと、ＲＯＭ３から再ロードするものとを判定する。スワップ判定部１１は、スワップフラグ１２に基づいて、ディスク装置９やスワップキャッシュ７からスワップインするかＲＯＭ３から再ロードするかを判定する。
【００３２】
スワップフラグ１２は、ＲＡＭ５の空きメモリ領域を確保するためにスワップアウトするか否か（ＲＡＭ５から廃棄させるか否か）を示すフラグである。このスワップフラグ１２は、ＲＡＭ５で実行されるプロセスのタスク毎やページ毎等に設定される。ここでのスワップフラグ１２は、プロセス毎の「タスクフラグ」として、ｔａｓｋ＿ｓｔｒｕｃｔ構造体（タスクの管理情報（ページ毎の情報））に追加する構成としてもよいし、ページ毎の「ページフラグ」としてページの管理情報に追加する構成としてもよい。
【００３３】
例えば、「スワップアウトしない属性」や「スワップアウトする属性」をタスクフラグ（スワップフラグ１２）に設定した場合、設定されたプロセス全体がスワップアウトをするか否かの対象となる。また、「スワップアウトしない属性」や「スワップアウトする属性」をページフラグ（スワップフラグ１２）に設定した場合、設定されたページのみがスワップアウトをするか否かの対象となる。
【００３４】
スワップ処理部１３は、ＲＡＭ５の空きメモリ領域が不足している場合に、スワップフラグ１２の設定に基づいてＲＡＭ５内のプロセス（データやコード）をスワップアウトさせる処理又はＲＡＭ５から廃棄させる処理を行なう。すなわち、本実施の形態１のスワップ処理部１３は、ＲＡＭ５の空きメモリ領域が不足すると、例えばスワップ対象となるプロセスのうち、データをスワップアウトさせ、コードを廃棄する。
【００３５】
また、スワップ処理部１３は、再実行処理の必要が生じると、スワップフラグ１２に基づいて、データやコードをディスク装置９（スワップキャッシュ７）からスワップインする処理か又はＲＯＭ３から再ロードする処理を行なう。すなわち、本実施の形態１のスワップ処理部１３は、再実行処理が必要になると、再実行するプロセスのうち、例えばデータをスワップキャッシュ７等からスワップインさせ、コードをＲＯＭ３から再ロードする。
【００３６】
なお、ここでのスワップ処理部１３によるスワップアウトやスワップインは、ｋｓｗａｐｄデーモン等によって行なう。ｋｓｗａｐｄデーモンは、ＲＡＭ５の空きメモリ領域を監視し、空きメモリ領域が不足すると、アクセス頻度の低いプロセスをスワップアウトして、ＲＡＭ５内のページを開放する。また、ｋｓｗａｐｄデーモンは、スワップキャッシュ７やディスク装置９にスワップアウト（ページアウト）されたページをＲＡＭ５にスワップイン（ページイン）させる。これにより、スワップキャッシュ７やディスク装置９にスワップアウトされたページが読み出されて、ＲＡＭ５上でマッピングされアプリケーションプログラム３１の実行に使用される。
【００３７】
つぎに、実施の形態１にかかる情報処理装置の動作手順について説明する。図３は、実施の形態１にかかる情報処理装置の動作手順を示すフローチャートである。なお、ここではスワップアウトさせるか否かの判断単位やスワップ処理等の処理単位の一例として、スワップアウトさせるか否かの判断やスワップ処理をページ毎に行なう場合について説明する。
【００３８】
制御部１（ＯＳ）は、ＲＯＭ３上のアプリケーションプログラム３１をＲＡＭ５にロードして、アプリケーションプログラム３１の実行処理を開始する（ステップＳ１１０）。スワップ判定部１１は、アプリケーションプログラム３１をＲＡＭ５にロードした際に、ＲＡＭ５の空きメモリ領域の不足時にディスク装置９やスワップキャッシュ７へスワップアウトさせるページと、ＲＡＭ５から廃棄させるページとを判定する。ここでは、まずＲＡＭ５の空きメモリ領域の不足時にデータ（ページ）をディスク装置９やスワップキャッシュ７へスワップアウトさせると判定する。
【００３９】
ところで、コード領域（コード）についても、アプリケーションプログラム３１によっては、自己書き換えコードが使用される場合がある（例えばｔｒａｍｐｏｌｉｎｅ等）。この場合、コードはアプリケーションプログラム３１の実行中に書き換えられるため、スワップアウトを行なう必要がある。そこで、スワップ判定部１１は、例えばｔｒａｍｐｏｌｉｎｅ等の自己書き換えコード（書き換えの許されるコード部分）に対しては、ＲＡＭ５の空きメモリ領域の不足時にディスク装置９等へスワップアウトさせると判断し、その他のコード（書き換えの許されないコード部分）に対しては廃棄すると判断する。換言すると、スワップ判定部１１は、コードが書き換え可能か否かに基づいて、コードをスワップアウトさせるか廃棄させるかを判断する。
【００４０】
このスワップ判定部１１による判定は、ページ毎に行なう。この判定結果（スワップアウトするか否か）は、スワップフラグ（ページフラグ）１２に設定しておく（ステップＳ１２０）。
【００４１】
制御部１は、アプリケーションプログラム３１の実行中に、ＲＡＭ５の空きメモリ領域が不足しているか否か（空き状態）を判断する（ステップＳ１３０）。制御部１は、ＲＡＭ５の空きメモリ領域が不足していることを検出すると（ステップＳ１４０、Ｙｅｓ）、ＲＡＭ５上にロードされているプロセスの中からスワップアウトの対象となるアクセス頻度の低いプロセス（ページ）を抽出する。
【００４２】
スワップ処理部１３は、抽出されたコード（ページ）が「スワップアウトする属性」であるか否かをスワップフラグ１２に基づいて判断する（ステップＳ１５０）。スワップ処理部１３は、抽出されたコードが「スワップアウトする属性」でない場合（ステップＳ１５０、Ｎｏ）、このコードをページ毎にＲＡＭ５から廃棄する（ステップＳ１６０）。
【００４３】
一方、抽出されたコードが「スワップアウトする属性」である場合（ステップＳ１５０、Ｙｅｓ）、スワップ処理部１３は、このコードをページ毎にディスク装置９やスワップキャッシュ７へスワップアウトさせる（ステップＳ１７０）。
【００４４】
また、ここでは、抽出されたデータ（ページ）が「スワップアウトする属性」であるため、スワップ処理部１３は、このデータをページ毎にディスク装置９やスワップキャッシュ７へスワップアウトさせる（ステップＳ１８０）。
【００４５】
この後、制御部１は、アプリケーションプログラム３１の実行中に、再実行処理を行なう必要があるか否かを監視する。そして、再実行処理を行なう必要が生じると（ステップＳ１９０、Ｙｅｓ）、スワップ処理部１３は再実行を行なうページ（コード）が「スワップアウトしない属性」であって廃棄されたものであるか否かをスワップフラグ１２に基づいて判断する。
【００４６】
スワップ処理部１３は、再実行を行なうコードがスワップフラグ１２において「スワップアウトしない属性」に設定されている場合（「スワップアウトする属性」に設定されていない場合）（ステップＳ２００、Ｙｅｓ）、このコードは廃棄されたものであるため、このコードをＲＡＭ５から再ロードする（ステップＳ２１０）。
【００４７】
一方、再実行を行なうコードがスワップフラグ１２において「スワップアウトしない属性」に設定されていない場合（「スワップアウトする属性」に設定されている場合）（ステップＳ２００、Ｎｏ）、このコードはスワップアウトしたものであるため、スワップ処理部１３は、このコードをディスク装置９やスワップキャッシュ７からスワップインさせる（ステップＳ２２０）。
【００４８】
また、ここでは、再実行を行なうデータ（ページ）が「スワップアウトする属性」であるため、スワップ処理部１３は、このデータをディスク装置９やスワップキャッシュ７からスワップインさせる（ステップＳ２３０）。これにより、制御部１は再実行処理の対象となったプロセスのメモリイメージをＲＡＭ５上に復元する。
【００４９】
ＲＯＭ３へのアクセスはスワップキャッシュ７やディスク装置９へのアクセスよりも高速である。このため、ＲＯＭ３内でＲＯＭ化されたアプリケーションプログラム３１の実行中にスワップが発生する状況において、ＲＯＭ３から再ロード可能なメモリイメージはスワップキャッシュ７やディスク装置９へスワップアウトしてスワップインするよりも、再度ＲＯＭ３からロードする方が高速にメモリイメージの復元を行なうことが可能となる。これは、ＲＯＭ３（ＲＯＭデバイス）へのアクセス速度が、例えば数ナノ〜数十ナノ秒であるのに対し、スワップキャッシュ７やディスク装置９（ストレージデバイス）へのアクセス速度は、ＲＯＭ３へのアクセス速度よりも１〜２桁程度低速であるためである。このことは、スワップキャッシュ７やディスク装置９へのアクセス時間は、ヘッド位置によってばらつきが生じる上、ヘッドシークの発生によって数ミリ秒程度を要することが要因となっている。
【００５０】
なお、本実施の形態１で説明した制御部１の処理は、カーネルのスワップ処理の下位部分を変更することによって実装可能である。すなわち、通常のスワップ処理が実行される状況において、スワップ処理の処理内容を変更することによって制御部１の処理を実現可能となる。なお、この制御部１の処理によってカーネルの他の部分やスワップ処理の上位部分に影響を与えることはなく、あたかも通常のスワップ処理を実行しているようにスワップアウトの際に所定のページが廃棄され、スワップインの際にＲＯＭ３から所定の領域（コード）がロードされることとなる。
【００５１】
このように実施の形態１によれば、ＲＡＭ５上のプロセスをスワップアウトさせる際にスワップアウトの対象となったプロセスの中から書き換えの行なわれないコードを抽出してこのコードを廃棄し、再実行処理時には廃棄したコードをＲＯＭ３から再ロードすることとしたので、少ないスワップアクセス（スワップアウトやスワップインに関するＲＡＭ５、スワップキャッシュ７、ディスク装置９へのアクセス）で、ＲＡＭ５の空きメモリ領域を容易に確保することが可能となる。また、廃棄したコードは高速アクセスの可能なＲＯＭ３から再ロードするので、コードのロード時間を短縮させることが可能となる。これにより、再実行処理時に迅速にメモリイメージを復元することが可能となる。
【００５２】
また、スワップアウトの対象となったプロセスの中から書き換えの行なわれないコードを抽出してこのコードを廃棄するので、スワップ時のスワップキャッシュ７やディスク装置９の使用領域を低減させることが可能となる。
【００５３】
また、ＲＯＭ３からアプリケーションプログラム３１をロードした際に、ＲＡＭ５上のプロセスにおいてコードやデータを廃棄させる対象とするかスワップアウトの対象とするかをスワップフラグ１２（ページフラグやタスクフラグ）に設定しておくので、ＲＡＭ５の空きメモリ領域が不足した際には、迅速かつ容易にコードやデータを廃棄またはスワップアウトの何れを行なうかを判断でき、コードやデータの廃棄またはスワップアウトを迅速かつ容易に行なうことが可能となる。
【００５４】
実施の形態２．
つぎに、図２および図４を用いてこの発明の実施の形態２について説明する。実施の形態２ではＲＡＭ５上のデータに対してスワップアウト又は廃棄の何れを行なうかを判断し、ＲＡＭ５の空きメモリ領域の不足時にデータをスワップアウト又は廃棄する。
【００５５】
図４は、実施の形態２にかかる情報処理装置の動作手順を示すフローチャートである。制御部１（ＯＳ）は、ＲＯＭ３上のアプリケーションプログラム３１をＲＡＭ５にロードして、アプリケーションプログラム３１の実行処理を開始する（ステップＳ３１０）。
【００５６】
スワップ判定部１１は、アプリケーションプログラム３１をＲＡＭ５にロードした際に、ＲＡＭ５の空きメモリ領域の不足時にディスク装置９やスワップキャッシュ７へスワップアウトさせるもの（ページ）と、ＲＡＭ５から廃棄させるもの（ページ）とを判定する。ここでは、まずＲＡＭ５の空きメモリ領域の不足時にコードを廃棄させると判定する。
【００５７】
ところで、データ領域（データ）であっても、アプリケーションプログラム３１の実行時に書き換えが行なわれていればＲＡＭ５から廃棄することが可能である。例えば、定数セクションに配置された定数データを格納したページは、アプリケーションプログラム３１の実行時に書き換えられることはない。したがって、このような書き換えの行なわれないデータ（ページ）は、一度廃棄しても再実行時にＲＯＭ３から再ロードすることが可能である。そこで、本実施の形態２のスワップ判定部１１は、書き換えの行なわれないデータに対しては、ＲＡＭ５の空きメモリ領域の不足時に廃棄すると判断し、その他のデータに対してはディスク装置９やスワップキャッシュ７へスワップアウトさせると判断する。
【００５８】
このスワップ判定部１１による判定は、例えばページ毎に行なう。この判定結果（スワップアウトするか否か）は、スワップフラグ（ページフラグ）１２に設定しておく（ステップＳ３２０）。スワップ判定部１１は、ＲＡＭ５上のデータが書き換えられた際に、このデータに対してスワップフラグの設定（スワップアウト）を行なう。
【００５９】
制御部１は、アプリケーションプログラム３１の実行中に、ＲＡＭ５の空きメモリ領域が不足しているか否か（空き状態）を判断する（ステップＳ３３０）。制御部１は、ＲＡＭ５の空きメモリ領域が不足していることを検出すると（ステップＳ３４０、Ｙｅｓ）、ＲＡＭ５上にロードされているプロセスの中からスワップアウトの対象となるアクセス頻度の低いプロセス（ページ）を抽出する。
【００６０】
スワップ処理部１３は、抽出されたデータ（ページ）が書き換えの行なわれたデータであるか否かをスワップフラグ１２に基づいて判断する（ステップＳ３５０）。スワップ処理部１３は、抽出されたデータが書き換えの行なわれたデータでない場合（ステップＳ３５０、Ｎｏ）、このデータをページ毎にＲＡＭ５から廃棄する（ステップＳ３６０）。
【００６１】
一方、抽出されたデータが書き換えの行なわれたデータである場合（ステップＳ３５０、Ｙｅｓ）、スワップ処理部１３は、このデータをページ毎にディスク装置９やスワップキャッシュ７へスワップアウトさせる（ステップＳ３７０）。また、ここでは、抽出されたコード（ページ）が「スワップアウトしない属性」であるため、スワップ処理部１３は、このコードをページ毎に廃棄する（ステップＳ３８０）。
【００６２】
この後、制御部１は、アプリケーションプログラム３１の実行中に、再実行処理を行なう必要があるか否かを監視する。そして、再実行処理を行なう必要が生じると（ステップＳ３９０、Ｙｅｓ）、スワップ処理部１３は再実行を行なうページ（データ）が書き換えの行なわれていないデータであって廃棄されていないものであるか否かをスワップフラグ１２に基づいて判断する。
【００６３】
スワップ処理部１３は、再実行を行なうデータがスワップフラグ１２において書き換えの行なわれたデータとして設定されている場合（ステップＳ４００、Ｙｅｓ）、このデータは廃棄されたものであるため、このデータをＲＡＭ５から再ロードする（ステップＳ４１０）。
【００６４】
一方、再実行を行なうデータがスワップフラグ１２において書き換えの行なわれたデータとして設定されていない場合（ステップＳ４００、Ｎｏ）、このデータはスワップアウトしたものであるため、スワップ処理部１３は、このデータをディスク装置９やスワップキャッシュ７からスワップインさせる（ステップＳ４２０）。
【００６５】
また、ここでは、再実行を行なうコード（ページ）が「スワップアウトしない属性」であるため、スワップ処理部１３は、このコードをＲＡＭ５から再ロードする（ステップＳ４３０）。これにより、制御部１は再実行処理の対象となったプロセスのメモリイメージをＲＡＭ５上に復元する。
【００６６】
なお、本実施の形態２においては、スワップフラグ１２に基づいて、データを廃棄するか否かを判定したが、データを廃棄するか否かの判定処理はこの方法に限られない。例えば、ＲＡＭ５上のページに書き込み可能か否かを示す「書き込み可能属性」を設定することとし、この「書き込み可能属性」が設定されているか否かに基づいて、データを廃棄するか否かを判定してもよい。この場合、「書き込み可能属性」が設定されている場合には、ページをスワップアウトさせ、「書き込み可能属性」が設定されていない場合にはページを廃棄する。
【００６７】
また、本実施の形態２においては、ページ単位又はタスク単位でデータを廃棄させる判定またはスワップアウトさせる判定を行い、この判定に基づいてページ単位又はタスク単位でデータを廃棄またはスワップアウトさせることとしたが、廃棄やスワップアウトの判定や処理はこれらの方法に限られない。
【００６８】
例えば、データの書き換え（変更）の有無に基づいてページ単位でデータを廃棄させる判定またはスワップアウトさせる判定を行っておく。そして、ＲＡＭ５の空き領域が不足した際に、スワップアウトさせると判定されたページ数、廃棄させると判定されたページ数（データやコードの書き換え量）に基づいて、ページ単位又はタスク単位でコードやデータを廃棄またはスワップアウトさせることとしてもよい。この方法により、例えばスワップアウトさせると判定されたページ数が多い場合、このページを含むタスク単位でスワップアウトさせることができる。また、例えば廃棄させると判定されたページ数が多い場合、このページを含むタスク単位で廃棄させることができる。
【００６９】
このように実施の形態２によれば、ＲＡＭ５上のプロセスをスワップアウトさせる際にスワップアウトの対象となったプロセスの中から書き換えの行なわれなかったデータを抽出してこのデータを廃棄し、再実行処理時には廃棄したデータをＲＯＭ３から再ロードすることとしたので、少ないスワップアクセスで、ＲＡＭ５の空きメモリ領域を容易に確保することが可能となる。また、廃棄したデータは高速アクセスの可能なＲＯＭ３から再ロードするので、データのロード時間を短縮させることが可能となる。これにより、再実行処理時に迅速にメモリイメージを復元することが可能となる。
【００７０】
また、スワップアウトの対象となったプロセスの中から書き換えの行なわれなかったデータを抽出してこのデータを廃棄するので、スワップ時のスワップキャッシュ７やディスク装置９の使用領域を低減させることが可能となる。
【００７１】
なお、ＲＡＭ５の空きメモリ領域が不足した際に、実施の形態１では書き換えの行なわないコードを廃棄し、実施の形態２では書き換えの行なわれなかったデータを廃棄することとしたが、書き換えの行なわないコードを廃棄するとともに書き換えの行なわれなかったデータを廃棄することとしてもよい。なお、この場合も再実行処理時には、廃棄したコードおよびデータをＲＯＭ３から再ロードする。
【産業上の利用可能性】
【００７２】
以上のように、本発明にかかるオペレーティングシステムは、ＲＯＭ化されたアプリケーションプログラムの実行に適している。
【図面の簡単な説明】
【００７３】
【図１】本発明にかかるＯＳの概念を説明するための図である。
【図２】実施の形態１にかかるＯＳを備えた情報処理装置の構成を示すブロック図である。
【図３】実施の形態１にかかる情報処理装置の動作手順を示すフローチャートである。
【図４】実施の形態２にかかる情報処理装置の動作手順を示すフローチャートである。
【符号の説明】
【００７４】
１  制御部
３  ＲＯＭ
５  ＲＡＭ
７  スワップキャッシュ
９  ディスク装置
１１  スワップ判定部
１２  スワップフラグ
１３  スワップ処理部
２０  ＯＳ
３１  アプリケーションプログラム
１００  情報処理装置
【図１】
2007156702.tif 000003
【図２】
2007156702.tif 000004
【図３】
2007156702.tif 000005
【図４】
2007156702.tif 000006