(57)【要約】  ページング可能でないリアルタイムプロセスとページング可能な非リアルタイムプロセスとを実行するコンピュータ装置は、メモリへのページインする必要性によってリアルタイムのスレッドの実行がブロックされるであろう、ページング可能でないリアルタイム・バージョンのオペレーティングシステム・サービスと、ページング可能な非リアルタイム・バージョンのオペレーティングシステム・サービスが提供される。一実施形態では、リアルタイムのオペレーティングシステム・サービスは、その全てのコード及びデータをロックし、そのコードとデータを同様にロックしているクライアントのみをサポートする。これにより、このようなサービスは、クライアントメモリが利用可能でないことによって引き起こされるページフォールトによりブロックすることはないことが保証される。非リアルタイムのオペレーティングシステム・サービスは、そのデータをロックせず、そのメモリをページアウトすることが可能なクライアントをサポートする。好適な実施形態においては、リアルタイムの動作を提供することが必要なサーバは、マルチスレッド化されており、異なるスレッドでサービスを受けるリアルタイムのクライアントと非リアルタイムのクライアントからの要求に対応している。
2008532164.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置においてメモリページングを行いながらリアルタイム性能を提供する方法であって、
ａ．リアルタイム・バージョンのオペレーティングシステム・サービスと、非リアルタイム・バージョンのオペレーティングシステム・サービスとを提供する工程と、
ｂ．前記リアルタイム・バージョンの前記オペレーティングシステム・サービスが参照するコード及びメモリについて使用されるメモリページを、当該メモリページがページアウトされることを防ぐために、ロックする工程と、
ｃ．リアルタイムのアプリケーション、プロセス、及び、スレッドに、前記リアルタイム・バージョンの前記オペレーティングシステム・サービスを使用させる工程と、
を有する方法。
【請求項２】
リアルタイムの優先権を有していないアプリケーション、プロセス、及び、スレッドは、リアルタイム・バージョンのオペレーティングシステム・サービスへのアクセスが許可されない、請求項１に記載の方法。
【請求項３】
アプリケーション、プロセス、又は、スレッドは、リアルタイム性能、又は、同等の実行パーミッションを有していない場合、リアルタイム・バージョンのオペレーティングシステム・サービスへのアクセスが許可されない、請求項１又は２に記載の方法。
【請求項４】
アプリケーション、プロセス、又は、スレッドによるオペレーティングシステム・サービスへのアクセスは、該アプリケーション、プロセス、又は、スレッドの、性能又は同等の実行パーミッションに基づいて、前記リアルタイム・バージョンの前記サービス又は非リアルタイム・バージョンの前記サービスへルーティングされる、請求項３に記載の方法。
【請求項５】
アプリケーション、プロセス、又は、スレッドによるオペレーティングシステム・サービスへのアクセスは、該アプリケーション、プロセス、又は、スレッドの優先権に基づいて、前記リアルタイム・バージョンの前記サービス又は非リアルタイム・バージョンの前記サービスへルーティングされる、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記リアルタイム・バージョンの前記オペレーティングシステム・サービスと、前記非リアルタイム・バージョンの前記オペレーティングシステム・サービスとの少なくとも１つは、単一のマルチスレッド・プロセスにおける実行の別個のスレッドとして提供される、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記オペレーティングシステム・サービスの少なくとも１つはサーバとして実装される、請求項１から６のいずれか１項に記載の方法。
【請求項８】
メモリページングを行いながらリアルタイム性能を提供するように構成されたコンピュータ装置であって、
ａ．リアルタイム・バージョンのオペレーティングシステム・サービスと、非リアルタイム・バージョンのオペレーティングシステム・サービスと、
ｂ．前記リアルタイム・バージョンの前記オペレーティングシステム・サービスが参照するコード及びメモリについて使用されるメモリページを、当該メモリページがページアウトされることを防ぐために、ロックする手段と、
ｃ．リアルタイムのアプリケーション、プロセス、及び、スレッドに、前記リアルタイム・バージョンの前記オペレーティングシステム・サービスを使用させる手段と、
を備えるコンピュータ装置。
【請求項９】
リアルタイムの優先権を有していないアプリケーション、プロセス、及び、スレッドは、リアルタイム・バージョンのオペレーティングシステム・サービスへのアクセスが許可されない、請求項８に記載のコンピュータ装置。
【請求項１０】
アプリケーション、プロセス、又は、スレッドは、リアルタイム性能、又は、同等の実行パーミッションを有していない場合、リアルタイム・バージョンのオペレーティングシステム・サービスへのアクセスが許可されない、請求項８又は９に記載のコンピュータ装置。
【請求項１１】
アプリケーション、プロセス、又は、スレッドによるオペレーティングシステム・サービスへのアクセスは、該アプリケーション、プロセス、又は、スレッドの、性能又は同等の実行パーミッションに基づいて、前記リアルタイム・バージョンの前記サービス又は非リアルタイム・バージョンの前記サービスへルーティングされる、請求項１０に記載のコンピュータ装置。
【請求項１２】
アプリケーション、プロセス、又は、スレッドによるオペレーティングシステム・サービスへのアクセスは、該アプリケーション、プロセス、又は、スレッドの優先権に基づいて、前記リアルタイム・バージョンの前記サービス又は非リアルタイム・バージョンの前記サービスへルーティングされる、請求項８から１１のいずれか１項に記載のコンピュータ装置。
【請求項１３】
前記リアルタイム・バージョンの前記オペレーティングシステム・サービスと、前記非リアルタイム・バージョンの前記オペレーティングシステム・サービスとの少なくとも１つは、単一のマルチスレッド・プロセスにおける実行の別個のスレッドとして提供される、請求項８から１２のいずれか１項に記載のコンピュータ装置。
【請求項１４】
前記オペレーティングシステム・サービスの少なくとも１つはサーバとして実装される、請求項８から１３のいずれか１項に記載のコンピュータ装置。
【請求項１５】
請求項８から１４のいずれか１項に記載のコンピュータ装置を、請求項１から７のいずれか１項に記載の方法に従って動作させるオペレーティングシステム
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ装置に関し、特に、クライアント‐サーバの通信及びコンピュータ装置における他のプロセス間通信においてリアルタイム性能を実現可能なコンピュータ装置を動作させる方法に関する。
【背景技術】
【０００２】
本明細書において使用されるコンピュータ装置という用語は、任意の形態の電気的なコンピュータ装置を含むように広範囲に解釈され、データ記録装置、携帯情報端末（ＰＤＡ：パーソナル・デジタル・アシスタント）等のハンドヘルドコンピュータ、パーソナルコンピュータを含む任意の種類又は形態のコンピュータ、並びに任意の形態の通信装置が含まれる。このような通信装置には、移動電話、スマートフォン、通信と、画像の記録及び再生の少なくともいずれかと、演算機能とを単一装置内で組み合わせた通信機、及び他の形態の無線／有線情報装置が含まれ、他の形態の無線／有線情報装置には、デジタルカメラ、ＭＰ３及び他の音楽プレーヤ、並びにデジタルラジオが含まれる。
【０００３】
コンピュータ装置には、メモリの種類の階層が存在する。一般にメモリが高速である程、メモリはより高価である。コンピュータ科学者及びソフトウェアエンジニアは、それら装置において種々のメモリを効率的に使用する技術を開発してきた。従来技術の主な例のうちの１つは、ページングとして知られている。
【０００４】
ページングの最も一般的な形態の１つは、以下に更に詳細に説明する「デマンドページング」であるが、プリページング等の他のページングアルゴリズムも適用可能である。本発明は、それら他のページングアルゴリズムと共にでも適切に使用されることを理解されたい。
【０００５】
今日のコンピュータ装置は、高速ＲＡＭ（ランダムアクセスメモリ）の形態で物理的に実際にインストールされた容量をはるかに上回る程の大容量の仮想メモリをアドレス指定し、参照することができる。管理を容易にするために、このメモリは、一般にページとして周知の固定サイズのブロックに分割されることが多く、例えば、４Ｋ（４０９６バイト）やその倍数は一般的なページのサイズである。それらページのうちある特定の数のページのみ（正確な数は、装置の製造者が選択した提供するメモリ容量に依存する）が主ＲＡＭに収容され、使用される残りのページはハードディスクドライブ（ＨＤＤ）等の低速で安価な補助メモリに格納される。
【０００６】
使用中の全てのアドレス指定可能なメモリの場所の全体は「仮想メモリ」と呼ばれ、コンピュータ装置は、仮想メモリのページから物理メモリのページへのマッピングを有している。それらマッピングはページテーブルとして知られており、通常、ページテーブルはハードウェアで実現されるメモリ管理ユニット（ＭＭＵ：Memory Management Unit）により維持される。
【０００７】
デマンドページングの場合、ＲＡＭに保持されていないメモリのページ内のアドレスを参照しようとすると、ＭＭＵはページフォールトを発生させる。この例では、関連するメモリブロックがＲＡＭに「ページイン」される間、装置は処理（プロセス）を一時的に停止する。このプロセスには、典型的にはＨＤＤ等の低速で安価なメモリからＲＡＭに必要なページをコピーすることと、ＭＭＵにおいてページテーブルを適切に更新することが含まれる。
【０００８】
コンピュータ装置がある時間にわたり稼動している場合、コンピュータ装置で利用可能な全ての物理ＲＡＭが既に使用中であるため、ページをコピーできる解放されたメモリは存在しない。このようなことが発生すると、メモリの必要なブロックがページイン可能になる前に、そのブロックがコピーされるＲＡＭのセクションを、従来技術においてページアウトとして周知の逆プロセスを使用して解放する必要がある。一般にページアウトには、ＲＡＭから、ハードディスクや、低速で安価な、任意の種類の利用可能な補助メモリへページを再びコピーすることと、ＭＭＵにおいてページテーブルを更新することが含まれる。
【０００９】
メモリのどのブロックをページアウトすべきかに関する決定は、複雑であることが多い。簡単なアルゴリズムのいくつかは、メモリの、最後に参照されてから経過時間が最長の（ＬＲＵ：Least Recently Used）ブロックか、又は使用頻度が最小の（ＬＦＵ：Least Frequently Used）ブロックをページアウトすることである。
【００１０】
これは、ページインされてからページが変更されていない場合、コピーステップの実行は必要ないことに基づいている。未変更のページは「クリーン」ページと呼ばれ、変更されたページは「ダーティ」ページと呼ばれる。物理メモリの各ページと関連付けられたフラグにより、ページがクリーンであるか又はダーティであるかをＭＭＵが監視することは一般的である。
【００１１】
バッテリ電源の容量が相対的に制限されて動作する移動コンピュータ装置に適用された場合、ページングは更なる利点を有する。メモリをページングすることによって、バッテリの寿命がかなり長く延長されることが多い。フラッシュメモリ又は小型ハードディスク等の殆どの種類の補助記憶装置上にメモリのブロックを保持した場合は、アイドル時に電力は消費されない。しかし、ダイナミックＲＡＭに格納されたコンテンツを失わないようにする場合、ダイナミックＲＡＭは継続的にリフレッシュする必要があるため、揮発性ダイナミックＲＡＭにメモリのブロックを保持すると電力を消費する。
【００１２】
上記から、ダイナミックメモリへメモリをページインするプロセスや、ダイナミックメモリからメモリをページアウトするプロセスが、相対的に相当な時間を占有しうることは明らかである。ページテーブルを操作し、主ＲＡＭのどのブロックがページアウトする必要があるかを判定する必要性を除いて、その主な要因は、ページインが相対的に速度の遅い補助記憶装置から大容量のメモリを読み出すことを要することである。多くの場合、ページは速度の遅い補助記憶装置にも書き込む必要があるだろう。一例をあげると、ページアウトされるメモリがダーティとしてフラグを立てられている場合にこれは必要となるだろう。
【００１３】
コンピュータ装置の動作全体に対する時間の負荷は不可避である。主記憶装置と補助記憶装置との間に速度差がないならば、装置内にメモリの階層は存在せず、ページングは必要ないだろう。
【００１４】
ページングを行うのにかかる時間について最も重要なことは、この処理が、コンピュータ装置におけるリアルタイム動作、即ち、正しく完了すべき所定時間内に完了する必要がある動作と、干渉することである。今日のコンピュータ装置、特にスマートフォン等の通信装置に組み込まれたコンピュータ装置は、通常、装置が満足に動作するために、そのようなリアルタイム保証を満足する必要がある。例えば、信号伝送スタックを実行するＧＳＭ移動電話は、５７７マイクロ秒しかない長さのタイムスロットを追跡する必要がある。このため、リアルタイム保証をしようとする動作中にページフォールトが発生した場合、参照されるように要求されたメモリが再びページインされるまで動作が妨害されると、これらの保証は破綻しやすい。実際の問題は、ページフォールトが発生する時期を予測したり、ページフォールトが発生したときにページング手順全体がそのページフォールトに対処するのにかかる時間を予測したりする方法がないことである。
【００１５】
このため、ページングは、通常、コンピュータ装置においてリアルタイムシステムを実行することに互換性がないということが、一般に認識されている。その理由は、ページフォールトの発生を予測することができず、また、各ページフォールトの後に相対的に速度の遅いメディア記憶装置においてメモリの読み出しや書込みを行なうのに時間がかかるためである。
【００１６】
装置がリアルタイム保証を提供できることに依存している場合、ページングは装置をクラッシュさせるか又は装置を使用不能にする。上述の移動電話スタックはこれの例であり、通信スタックの制約を遵守できないことによって、最悪の場合、通話が装置により完全に切断されることもあり得る。感知される受け入れ可能な性能を実現するためにリアルタイム保証が必要である場合、ページングはアプリケーションを使用不可能にすることもあり得る。このことは、非リアルタイム又は「遅い」システム上でストリーミングのオーディオ又はビデオを処理する試みによって完全に実証されている。
【００１７】
デマンドページングを実装しているいくつかのオペレーティングシステムは、デマンドページングがリアルタイムシステムでは使用されるべきではないことを特に提示している。例えばMicrosoftは、非特許文献１において、「リアルタイム環境でデマンドページングを使用することにはペナルティが存在するため、それは避けるべきである。」と提示している。
【００１８】
他のオペレーティングシステムは、その問題を改善することを試みている。非特許文献２は、「リアルタイム・アプリケーションはタイミングが確定的であることを要求する・・・ページングはプログラム実行の予期せぬ遅延を引き起こす大きな原因の一つである。」と提示している。
【００１９】
mlock Linuxシステムコールは、メモリアドレスの特定の範囲についてページングを無効にすることで、この問題に対する１つの解決策を提供しようとしている。しかし、アプリケーションがロードするメモリアドレス、アプリケーションが（直接的又は間接的に）参照する全てのメモリのメモリアドレス、使用する必要がある任意のシステムコールのアドレス、並びに、それらコールが参照するメモリを、アプリケーションに認識させる必要があるシステムは、アプリケーション開発にとって実用的な解決策とは考えられないということが、コンピュータプログラミングの当業者には容易に理解されるだろう。
【非特許文献１】Windows(登録商標) CE .Netの文書、インターネット＜http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/html/cmcondemandpaging.asp＞
【非特許文献２】Linuxのmlockシステムコールに関する文書、インターネット＜http://linux.ctyme.com/man/man1739.htm＞
【発明の開示】
【発明が解決しようとする課題】
【００２０】
したがって、本発明の目的の一つは、メモリのページングを行いながらリアルタイム性能を提供することが可能な、コンピュータ装置を動作させる改善された方法を提供することである。
【課題を解決するための手段】
【００２１】
本発明の第１の側面によれば、コンピュータ装置においてメモリページングを行いながらリアルタイム性能を提供する方法であって、
ａ．リアルタイム・バージョンのオペレーティングシステム・サービスと、非リアルタイム・バージョンのオペレーティングシステム・サービスとを提供する工程と、
ｂ．前記リアルタイム・バージョンの前記オペレーティングシステム・サービスが参照するコード及びメモリについて使用されるメモリページを、当該メモリページがページアウトされることを防ぐために、ロックする工程と、
ｃ．リアルタイムのアプリケーション、プロセス、及び、スレッドに、前記リアルタイム・バージョンの前記オペレーティングシステム・サービスを使用させる工程と、
を有する方法が提供される。
【００２２】
本発明の第２の側面によれば、メモリページングを行いながらリアルタイム性能を提供するように構成されたコンピュータ装置であって、
ａ．リアルタイム・バージョンのオペレーティングシステム・サービスと、非リアルタイム・バージョンのオペレーティングシステム・サービスと、
ｂ．前記リアルタイム・バージョンの前記オペレーティングシステム・サービスが参照するコード及びメモリについて使用されるメモリページを、当該メモリページがページアウトされることを防ぐために、ロックする手段と、
ｃ．リアルタイムのアプリケーション、プロセス、及び、スレッドに、前記リアルタイム・バージョンの前記オペレーティングシステム・サービスを使用させる手段と、
を備えるコンピュータ装置が提供される。
【００２３】
本発明の第３の側面によれば、第２の側面に係るコンピュータ装置を第１の側面に係る方法に従って動作させるオペレーティングシステムが提供される。
【発明を実施するための最良の形態】
【００２４】
添付の図面を参照し、更なる例として本発明の一実施形態を以下に説明する。
【００２５】
図１は、デマンドページングをどのように実行してよいかを概略的に示している。
【００２６】
コンピュータ装置のＭＭＵが１つ以上の変換索引バッファ（ＴＬＢ：Translation Lookaside Buffers）を使用して仮想メモリアドレスを物理メモリアドレスに変換することは、非常に一般的である。
【００２７】
図１は、Ｉｎｔｅｌ（商標）ｘ８６及び多くのＡＲＭ（商標）プロセッサに実装されたような４Ｋページに基づく２レベル・ページテーブルの実装例においてこれがどのように実現可能かを示している。これらプロセッサにおいて、ＭＭＵは、メモリ内の「仮想」アドレス空間の４ギガバイトをマップすることが可能な「仮想」３２ビットアドレス２を、一連のテーブルルックアップにより「物理」３２ビットアドレスへ変換する。
【００２８】
仮想アドレス２の最上位の１０ビット４は、ページディレクトリとして知られ１０２４個の３２ビット値を有する４ｋテーブル６をインデックス（索引付け）している。ページディレクトリテーブル６の各３２ビット値は、ページディレクトリエントリ（ＰＤＥ：Page Directory Entry）として知られている。仮想アドレス２の最上位の１０ビットで索引付けされたＰＤＥは、ページテーブルとして知られている３２ビットエントリの別の４ｋテーブル８に対する（仮想）ポインタである。ページテーブルの３２ビットエントリは、ページテーブルエントリ（ＰＴＥ：Page Table Entry）として知られている。各ページテーブルは、４メガバイトの物理メモリをマップすることができる。このため、仮に４ギガバイトの仮想アドレス空間全体が物理メモリによりサポートされるならば、各ＰＤＥに対して１つのページテーブル、すなわち１０２４個のページテーブルが存在することになるだろう。しかし、ページディレクトリは、装置上で利用可能な実際の物理メモリアドレスをマップするのに十分なエントリのみを含んでいる必要がある。したがって、例えば１６Ｍｂの物理メモリを有する装置においては、４つのページテーブルが必要とされるだろう。
【００２９】
仮想アドレス２の次の最上位の１０ビット１０は、仮想アドレス２の最上位の１０ビット４により索引付けされたＰＤＥによりマップされているページテーブル８を直接索引付けており、４Ｋ物理ページ１２の開始アドレスである３２ビット値を与えている。
【００３０】
仮想アドレス２の残り又は最下位の１２ビット１４は、上記変換機構を素通りして、各ページテーブル８の３２ビット値（ＰＴＥ）によりアドレス指定された４ｋ物理ページ１２内の１バイトを選択する。したがって、図１に示されるページディレクトリ及びページテーブルを使用することにより、コンピュータ装置の物理メモリのメモリページ内の任意のバイトを選択するために、３２ビット仮想アドレスを使用可能であることが分かる。
【００３１】
本発明は、実行プロセスの部分はページアウトされやすいことから、上述した問題はほとんど発生しないという認識に基づいている。実際、リアルタイムスレッドを含む任意の単一プロセスによってリアルタイム制約の対象として使用されるため、ページアウトすべきではないページのマーク付けは、当業者にとって実行するのは困難なことではない。上記のLinus mlockシステムコール等の機能が利用可能である場合、例えばそのようなマーク付けは、オペレーティングシステムのカーネル（これは、スレッド及びプロセスを作成し、プロセスの境界を規定する役割を果たす、オペレーティングシステムの特権のある部分である）によりプロセス作成時に自動的に実行することができる。リアルタイムスレッドが物理メモリに適合し、したがって、ページアウトされる必要がないように、リアルタイムスレッドが符号化されることを保証すること等の、他の必要なステップは、同様に、当業者にとってそれ程複雑な設計ではない。
【００３２】
更に、本発明は、ページングを実現するコンピュータ装置内でリアルタイムプロセスに関する殆どの問題の実際の原因は、今日のコンピュータ装置上で実行する全てのプロセスのように、リアルタイムか否かに関わらず、全てのプロセスが本質的に利用可能であるオペレーティングシステムサービスに、それらが依存しているためであるという認識に基づいている。これは、デマンドページングにより妨害されやすい一般的なサービスであり、このため、プロセスのリアルタイム機能が影響を受ける。それら一般的なサービスへのアクセスが、オペレーティングシステムのカーネルにより仲介されるが、実際にはカーネルにより提供されない場合、問題が特に明瞭になりやすい。これは、カーネル外で参照されるメモリページがページアウトされないことを保証する簡単な解決策が存在しないためである。
【００３３】
本発明により提供される解決策によれば、図２に示すように、リアルタイムのアプリケーション、プロセス、及び、スレッドと、非リアルタイムのアプリケーション、プロセス、及び、スレッドとが使用する、２つの異なるバージョンの任意の共通のサービスが導入される。以下の記述では、これらのアプリケーション、プロセス、及び、スレッドをまとめてプロセスと呼ぶ。
・リアルタイムプロセスが使用する第１のバージョンのサービスは、全てのメモリページを、参照する必要があるかもしれない任意のユーザ・メモリページと共にロックする。このようなページをロックすることによって、これらのページがページアウトされることが妨げられるため、このようなバージョンのオペレーティングシステム・サービスはページフォールトに遭遇しない。したがって、コンピュータ装置上のリアルタイムプロセスは、このバージョンのサービスを使用するのに有利なように構成される。
・第２のバージョンのサービスは、非リアルタイムプロセスにより使用され、そのメモリのいずれもロックしないし、そのサービスが参照するユーザ・メモリページもロックしない。このバージョンのサービスはページフォールトに遭遇することがあり得る。しかし、これはどのようなリアルタイムプロセスにも使用されないため、メモリがページイン又はページアウトされている間に一時的にブロックしても問題にならない。
【００３４】
図２は、このような解決策を提供する本発明の一実施形態を模式的に示している。図２では、サービスＡとサービスＢは、両方ともリアルタイムプロセスと非リアルタイムプロセスによって使用されている。このため、本発明によれば、装置のオペレーティングシステム内で、これらの２つのバージョンのサービス、即ち、サービスＡ（リアルタイム）とサービスＡ（非リアルタイム）が提供され、さらに、サービスＢについても同様である。図２では、サービスＣはリアルタイムプロセスによってのみ使用され、サービスＤは非リアルタイムプロセスによってのみ使用されているため、これらのサービスは各々一つのバージョンしか提供されていない。
【００３５】
図２では、高レベルの物理ＲＡＭメモリは２ｎページを有しており、この実施形態では、ページ１〜ｎがロックされているが、ページｎ＋１〜２ｎはロックされていない（アンロック）。リアルタイムプロセスによって使用されている全てのサービス、即ち、サービスＡ（リアルタイム）、サービスＢ（リアルタイム）、サービスＣは、ＲＡＭのロックされているページ１〜ｎにのみ関連付けられているが、非リアルタイムプロセスによってのみ使用されているサービス、即ち、サービスＡ（非リアルタイム）、サービスＢ（非リアルタイム）、サービスＤは、ＲＡＭのロックされていない（アンロックの）ページｎ＋１〜２ｎにのみ関連付けられている。したがって、リアルタイムプロセスが使用するサービスと非リアルタイムプロセスが使用するサービスの２つのバージョンのサービスを提供するとともに、リアルタイムプロセスのために動作するバージョンのサービスが、ページインされロックされたメモリにのみ関連付けられることを保証することによって、これらのサービスを使用するリアルタイムプロセスのためにリアルタイムのサービスを常に確保することができるということが理解されるだろう。
【００３６】
ＴＣＰ／ＩＰ通信スタックは、リアルタイム・クライアントと非リアルタイムクライアントを有することができるため、本発明を使用可能な共通サービスの一例である。
【００３７】
実際的な一例として、そのようなスタックのクライアントの一方が印刷プログラムであってもよく、この説明のために、当該印刷プログラムがプリンタへ大量の印刷データを送信したと仮定する。このようなプログラムにおいては、データを一時的にローカルメモリに保持し、次に、実際に印刷するためにこのデータをローカルメモリから送信することが一般的である。しかし、コンピュータ装置は、プリンタ等の、データを使用し、受信したデータを実際に処理することのできる物理装置よりも、通常、高速にデータを転送することが可能であるため、いくつかの種類のデータフロー制御が、このような提供側と利用側（provider/consumer）の関係においてほとんど常に用いられる。さらに、プリンタは、用紙やインク等の有限の消耗品を定期的に使い果たすだろう。どのような理由であれ、ある時点で、プリンタは、予測できない期間、データの送信を停止するための通信スタックの信号を送信しやすいが、この期間は、実際には、印刷データが一時的に保持された主メモリのページからハードディスク装置等の補助記憶装置へ印刷データをページアウトするという、極めて合理的な決定をする契機となるほど十分長いものとなり得るだろう。このため、印刷動作の割り込みによって印刷データの処理に遅延が生じるが、消耗品を手動で補充しない限りプリンタが無限に動作することはできないという予想が知られているため、これはある程度はユーザに受け入れられるものである。
【００３８】
しかし、同じＴＣＰ／ＩＰ通信スタックの他方のクライアントは、装置のユーザに対するＶｏＩＰ（Voice over IP）通話などの、リアルタイムのマルチメディア・データストリームを処理しているかもしれない。このような例では、データ処理に長い遅延が生じた場合や、データが失われたような場合、リアルタイムクライアントは要求されたリアルタイムのトラック時間スロットを満たすことができないであろうから、ユーザはほぼ確実にそのことに気づくだろう。
【００３９】
しかし、共有された（リアルタイム及び非リアルタイムの）サービスが同一のＴＣＰ／ＩＰ通信スタックにより提供される上述のような場合においては、印刷プログラム（非リアルタイムクライアント）が送信したデータが、プリンタが印刷を行えない間にページアウトされた場合、プリンタの状態の変化とさらなるデータの要求によってページフォールトが引き起こされるであろうことは明らかである。これにより、印刷データのページングが復帰する間に、リアルタイムであろうと非リアルタイムであろうと、全てのクライアントへのスタックがブロックされてしまうだろう。このことによって、スタックがブロックされ、到来するデータを処理することができないため、ＴＣＰ／ＩＰスタックへ到来するリアルタイムのマルチメディア・データストリームを処理する間に、激しい変化（judder）やデータの損失までもが、極めて引き起こされやすいだろう。これらは両方ともユーザには受け入れがたいだろう。
【００４０】
また、一方のバージョンは、印刷等の非リアルタイムプロセスのために設計され、他方はインターネット電話等のリアルタイムプロセスのために設計され、アクセスが制限されているような、２つのＴＣＰ／ＩＰ通信スタックが提供された場合、上述の非リアルタイムのスタックにおけるページフォールトによってリアルタイムのスタックがブロックされることはあり得ないだろう。このため、リアルタイムプロセスは、非リアルタイムプロセスにおけるどのような中断にも関係なく実行を継続するだろう。
【００４１】
コンピュータ装置上で動作する全てのアプリケーションが正常に動作しているならば、リアルタイムサービスに対してリアルタイムに動作しているサービスへのアクセスを制限しなくても問題はない。しかし、開放された装置（open device）、特に、サードパーティのソフトウェアをシステムにロードすることのできる装置上では、クライアントがリアルタイムの優先権（プライオリティ）か、何らかのリアルタイム性能を有していることを、リアルタイムのオペレーティングシステム・サービスがチェック可能にする手段を提供することによって、制限を実施することが更に望ましい。多くのオペレーティングシステムは、スレッドが、実行の際に様々な回数、その優先権を変更できるようにしているため、後者（何らかのリアルタイム性能を有していることをチェックすること）が好適である。そのようなリアルタイム性能により実施する仕組みは、「安全な移動無線装置」というタイトルのＧＢ２３８９７４７に開示された性能に基づく実行モデルに記載されている。
【００４２】
本発明の他の実施形態では、リアルタイムに動作することが必要なこれらのオペレーティングシステム・サービスをマルチスレッドで構成し、リアルタイムのページング可能でないクライアントからの要求と、非リアルタイムのページング可能なクライアントからの要求とが、異なるスレッドでサービスを受けるように構成してもよい。
【００４３】
本発明は、いつどのようにページングするメモリを決定するかに関係なく、任意の種類のメモリページングを組み込んだ任意のコンピュータ装置に適用可能であることが理解されるだろう。本発明は、デマンドページングには限られないことを強調しておく。即ち、本発明は特定のページがページアウトされることを阻止することに関するのであって、どのページがページインされるべきかを決定することに関するのではないということを、当業者は理解するだろう。
【００４４】
上記から、本発明の主要な利点は、異なる性能や費用特性を有するメモリ種類の階層を効率的に管理するために、タイミング保証を厳しくするリアルタイム・ソフトウェアを実行する装置の性能に影響を与えることなく、コンピュータ装置がページングを使用できるようにすることであると、理解することができるだろう。
【００４５】
特定の実施形態を参照して本発明を説明したが、添付の請求の範囲により規定される本発明の技術的範囲内で変更が行なわれてもよいことが理解されるだろう。
【図面の簡単な説明】
【００４６】
【図１】コンピュータ装置におけるデマンドページングの方法を模式的に示す図である。
【図２】本発明に係るコンピュータ装置においてリアルタイム性能にメモリページングを提供する手法を模式的に示す図である。
【図１】
2008532164.tif 000003
【図２】
2008532164.tif 000004
【国際調査報告】
2008532164.tif 000005
2008532164.tif 000006
2008532164.tif 000007