(57)【要約】  オペレーティングシステムのカーネル等のコンピュータ装置のコンポーネントは、装置上で実行するリアルタイムプロセスを識別し、ページアウトされるのを回避するためにそのようなプロセスにより所有されるメモリを透過的にロックするように構成される。カーネルは、プロセスが起動する他のプロセスを確認するために、そのようなプロセスにおいて実行するリアルタイムスレッドにより発生される全てのプロセス間通信を検査でき、プロセスがリアルタイム動作を妨害する可能性がある場合、カーネルは、それらプロセスが参照するメモリエリアをロックするように構成される。この手順は、再帰的に動作し、任意のリアルタイムプロセスの動作に影響を与える可能性があるページフォールトが発生しないことを保証する。
2008532163.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）として知られている。各ページテーブルは、４メガバイトの物理メモリをマップすることができる。このため、仮に４ギガバイトの仮想アドレス空間全体が物理メモリによりサポートされるならば、各ＰＤＥに対して１つのページテーブル、すなわち１０２４個のページテーブルが存在することになるだろう。しかし、ページディレクトリは、装置上で利用可能な実際の物理メモリアドレスをマップするのに十分なエントリのみを含んでいる必要がある。従って、例えば１６Ｍｂの物理メモリを有する装置においては、４つのページテーブルが必要とされるだろう。
【００２９】
仮想アドレス２の次の最上位の１０ビット１０は、仮想アドレス２の最上位の１０ビット４により索引付けされたＰＤＥによりマップされているページテーブル８を直接索引付けており、４Ｋ物理ページ１２の開始アドレスである３２ビット値を与えている。
【００３０】
仮想アドレス２の残り又は最下位の１２ビット１４は、上記変換機構を素通りして、各ページテーブル８の３２ビット値（ＰＴＥ）によりアドレス指定された４ｋ物理ページ１２内の１バイトを選択する。従って、図１に示されるページディレクトリ及びページテーブルを使用することにより、コンピュータ装置の物理メモリのメモリページ内の任意のバイトを選択するために、３２ビット仮想アドレスを使用可能であることが分かる。
【００３１】
本発明は、実行プロセスの部分はページアウトされやすいことから、従来技術に関して上述した問題はほとんど発生しないという認識に基づいている。実際、リアルタイムスレッドを含む任意の単一プロセスによってリアルタイム制約の対象として使用されるため、ページアウトすべきではないページのマーク付けは、当業者にとって実行するのに特に困難なことではない。上記のmlockコール等の機能が利用可能である場合、例えばそのようなマーク付けは、オペレーティングシステムのカーネル（これは、スレッド及びプロセスを作成し、プロセスの境界を規定する役割を果たす、オペレーティングシステムの特権のある部分である）によりプロセス作成時に自動的に実行することができる。リアルタイムスレッドが物理メモリに適合し、従ってページアウトされる必要がないように、リアルタイムスレッドが符号化されることを保証すること等の、他の必要なステップは、同様に、当業者にとってそれ程複雑な設計ではない。
【００３２】
更に、本発明は、ページングを実現するコンピュータ装置内でリアルタイムプロセスに関する殆どの問題の実際の原因は、今日のコンピュータ装置上で実行する全てのプロセスのように、リアルタイムか否かに関わらず、全てのプロセスが本質的に利用可能であるオペレーティングシステムサービスに、それらが依存しているためであるという認識に基づいている。これは、デマンドページングにより妨害されるようになりやすい一般的なサービスであり、このため、それらのサービスに依存しているプロセスのリアルタイム機能が影響を受ける。それら一般的なサービスへのアクセスが、オペレーティングシステムのカーネルにより仲介されるが、実際にはカーネルにより提供されない場合、動作上の問題が特に明瞭になりやすい。これは、カーネル外で参照されるメモリページがページアウトされないことを保証する簡単な解決策が存在しないためである。
【００３３】
クライアント-サーバの対話は、この問題の非常によい例である。クライアントプロセス及びサーバプロセスは異なるアドレス空間に常駐するため、それらは、カーネルにより常に仲介される必要があるプロセス間通信（ＩＰＣ：Inter Process Communication）機構を介して通信する必要がある。すなわち上述のように、カーネルは、プロセスの境界を規定し、従って装置において全てのＩＰＣにわたり仲介する必要があるオペレーティングシステムの特権部分である。
【００３４】
任意の単一サーバは、クライアントがリアルタイムであるか否かに関わらず、任意のクライアントにサービスを提供できる。すなわち、サーバが任意のリアルタイムクライアントにサービスを提供していない場合、サーバが参照するメモリがページアウトされるべきではない理由は存在しない。一方、サーバがリアルタイムクライアントにサービスを提供している場合、クライアントに関連するＩＰＣにより参照されるメモリがいずれの状況下においてもページアウトされるべきではないという要求が必ず存在する。これは、ページフォールトによりサーバが妨害される可能性を生じ、そのようなクライアントのリアルタイム性能に明らかに影響を及ぼすからである。
【００３５】
更に、サーバの設計は、メモリを非リアルタイムクライアントに関連付けるページフォールトを含む任意のページフォールトが、全ての他のクライアントに対してサーバが妨害される原因になるような設計であると仮定する。この時、リアルタイム性能が維持される場合、そのようなサーバの任意のクライアントにより参照されるメモリのいずれもページアウトされるべきではないことが明らかである。
【００３６】
そのような問題のある関係の一例は、通信サーバとそのクライアントとの関係である。通信サーバがページフォールトにより妨害され、クライアントメモリが再びページインされるのを待っている場合、そのクライアントのうちの１つがリアルタイムクライアントであっても、十分なメモリが再びページインされている期間中、通信サーバはいずれのクライアントにもサービスを提供できない。従って、これは、リアルタイムクライアントを有する任意のサーバにより参照されるメモリがページアウトされるべきではないことに準拠する。しかし、リアルタイムクライアントが存在しない場合、サーバメモリバッファをページアウトすることは問題ない。
【００３７】
先に提示された問題は、クライアント‐サーバの通信（及び更には他のＩＰＣ機構）がコンピュータ装置において機能する方法を変更することにより本発明により対処される。本発明の重要な面は、カーネルがクライアント／サーバメッセージにより参照されるメモリエリアを正確に認識できるようになると、カーネルがメッセージを検査し、関連するメモリページをロックすることが技術的に実現可能になることである。このロックする手順は、メッセージが完了するまで、関連するメモリページがページアウトされるのを防止する。これは、サーバがクライアントメモリに対して読み出し又は書き込みを行なう時に失敗しないことを保証できることを確実にする。
【００３８】
この動作はカーネル内で行なわれるため、サーバ及びそのクライアントの双方に対して透過的である。従って、上記のmlock手順とは異なり、非カーネルのプロセスは所有又は参照するメモリのアドレスに関して何も理解する必要はない。
【００３９】
そのような機能を有するオペレーティングシステムのカーネルの一例は、Symbian Software LtdによるSymbian OS（商標）オペレーティングシステムのEKA2カーネルである。このカーネルは、リアルタイム機能を有し、ＩＰＣメッセージ（クライアント‐サーバメッセージを含む）を検査し、メッセージが参照するメモリを認識する能力を更に有する。そのようなメッセージは、RMessage2クラスを使用してカーネルを通過する。これは以下のように定義される。
【００４０】
public:
enum TSessionMessages {EConnect=-1, EDisConnect=-2};
public:
inline RMessage2();
inline TInt Function() const;
inline TInt Int0() const;
inline TInt Int1() const;
inline TInt Int2() const;
inline TInt Int3() const;
inline const TAny* Ptr0() const;
inline const TAny* Ptr1() const;
inline const TAny* Ptr2() const;
inline const TAny* Ptr3() const;
inline CSession2* Session() const;
IMPORT_C explicit RMessage2(const RMessagePtr2& aPtr);
IMPORT_C TUint32 SecureId() const;
IMPORT_C TUint32 VendorId() const;
IMPORT_C TInt HasCapability(TCapability) const;
IMPORT_C TInt HasCapability(TCapability, TCapability) const;
IMPORT_C TInt HasCapability(TCapability, TCapability, TCapability) const;
IMPORT_C TInt CheckPolicy(const TSecurityPolicy&) const;
protected:
TInt iFunction;
TInt iArgs[KMaxMessageArguments];
private:
TInt iSpare1; //将来使用できるように確保する
protected:
const TAny* iSessionPtr;
private:
TInt iSpare2; //将来使用できるように確保する
TInt iSpare3; //将来使用できるように確保する
};
【００４１】
各メッセージは、各々がクライアントメモリ空間におけるディスクリプタに対するポインタである４つの汎用パラメータを含むことが、Symbian OS（商標）オペレーティングシステムに対するプログラミングの当業者には上記コードから理解されるだろう。全てのディスクリプタの種類がサポートされ、TPtrCの種類のディスクリプタは、クライアントメモリ空間の他の場所にあるメモリバッファを参照できる。
【００４２】
本発明の最も単純な実現例は、リアルタイムクライアントにより必要とされるオペレーティングシステムサービスが最初に起動された際に自身をリアルタイムサーバとしてマークすることである。この手順を図２に示す。図３において、カーネルがそのようなサーバに向けられた全てのＩＰＣメッセージを検査することが分かる。メッセージがリアルタイムサーバに対するものである場合、図３に示すように、カーネルはサーバが参照するメモリページをロックし、それらクライアントがページフォールトに直面しないことを保証する。上述のSymbian OS（商標）オペレーティングシステムの実現例において、これは、オペレーティングシステムのカーネルが全ての適用可能なRMessage2オブジェクトに対してクライアントメモリの４つの可能なディスクリプタのヘッダの内容を検査するようにすることにより達成される。
【００４３】
しかし、本発明の更に複雑な実施形態が考えられる。それら実施形態は、クライアントのリアルタイム状態及びサーバのリアルタイム状態を利用することにより更に効率的に動作できる。このように、それら実現例は、ロックすることを要求するメモリページ数を最小限にできる。次に、クライアント-サーバの対話に関して、それらの更に複雑な実現例を説明する。
【００４４】
リアルタイム性能が可能な任意のオペレーティングシステムのカーネルは、システムにおいて実行する実行の全てのスレッドの優先度を認識する。これは、リアルタイム保証を達成するために、カーネルがタスクを適切にスケジュールするのにその情報を必要とするためである。従って図４に示すように、カーネルは、メッセージを渡すクライアントがリアルタイム優先度を有するかを理解し、その結果、リアルタイムクライアントからの未解決の要求を有し、ページフォールトの発生を回避するために利用可能なリソースを十分に有する必要があるサーバを監視できる。
【００４５】
１つのクライアント要求に関連するページフォールトが他のクライアント要求を妨害しないようにサーバが設計される場合、カーネルは、リアルタイムクライアントからの要求により参照されるメモリのみををロックするだけで十分である。
【００４６】
しかし、ページフォールトがサーバ全体を妨害するようにサーバが設計される場合、カーネルは、サーバ上の未解決の要求数のカウントを保持する必要がある。従って図４に示すように、カーネルがクライアントから要求を受信すると、カーネルは、そのクライアントがリアルタイムクライアントであるかを決定する。回答が「Ｎｏ」である場合、カーネルは、要求カウントがゼロであるかを判定する。要求カウントがゼロでない場合、他のリアルタイムクライアントからの未解決の要求が存在することが分かるため、要求により参照されるメモリはロックされる。
【００４７】
サーバが非リアルタイムクライアントからのみの未解決の要求を有し、そのサーバがリアルタイムクライアントからの要求を受信する場合、非リアルタイムクライアントからの要求により参照されるメモリは、既にページアウトされている可能性があるため、リアルタイムクライアントの性能に影響を与えることなく再びページインされること（これはその要求が実行するのに必要である）は不可能である。従って、リアルタイムクライアントからの要求時に未解決である任意の要求を含むそのような全ての要求は、任意の非リアルタイムクライアントが元の要求を再提出することのみを必要とする要求であるため、非リアルタイムクライアントがその要求の失敗の理由を識別することを可能にする障害コードを伴って終了されるのが好ましい。
【００４８】
従って、クライアントがリアルタイムである場合、カーネルは、要求カウントがゼロであるか否かを再び判定する。図４に示すように、この段階において、カウントがゼロでないと判定される場合、すなわち他の未解決のリアルタイム要求が存在する場合、メモリはロックされる。要求カウントがゼロである場合、カーネルは、任意の他のクライアントが存在するか否かを判定する。回答が「ｙｅｓ」である場合、要求カウントがゼロであると判定されたためにこの他のクライアントが非リアルタイムであると分かるため、上述のように、要求はエラーコードを伴って終了される。その後、要求により参照されるメモリはロックされる。
【００４９】
プロセスのこの段階において、他のクライアントが存在しないと判定される場合、要求により参照されるメモリはロックされる。メモリがロックされると、図４に示すように、カーネルはリアルタイム要求のカウントをインクリメント（増分）する。
【００５０】
図５は、要求が完了した時の手順を示す。要求が完了すると、要求カウントがゼロであるかがまず判定される。「Ｎｏ」である場合、図５に示すようにカウントはデクリメントされ、カウントがゼロに到達すると、サーバにより参照されるロックされた全てのページはアンロックされる。本発明の本実施形態の場合、ある特定の状況下では、個々のクライアント要求ではなくリアルタイムクライアントにより接続されたサーバセッションをカウントするのが好ましいと考えられる。これは、カウントがゼロへ又はゼロから変化する度にページをロック及びアンロックする必要がなくなるためである。
【００５１】
この例において、メッセージ完了後にロックされたページが正確にアンロックされるように、カーネルは、それらロックされたページを記憶するために十分なメモリを割り当てることを要求する。
【００５２】
装置がページングされるべきメモリ及びページングされる時期を決定する方法に関わらず、本発明は、任意の種類のメモリページングを取り入れる任意のコンピュータ装置に適用可能であることが理解されるだろう。疑問をなくすために、本発明はデマンドページングに限定されない。本発明は、特定のページがページアウトされるのを阻止することに関し、ページインされるべきページを決定することには関連しないことが、当業者には分かるだろう。
【００５３】
本発明は、Symbian OS（商標）オペレーティングシステムのカーネルにおける実現例に関して説明されたが、スレッドの優先度に関する知識を収集し、メモリマップを処理するのに十分な特権レベルを有する任意の装置のコンポーネント又はコンポーネントの組み合わせが、提供される機能性を実行できることが理解されるだろう。従って、マイクロカーネル又はサーバ等のソフトウェアコンポーネント、あるいはＭＭＵ等の十分に高度なハードウェアコンポーネントがその機能性の全て又は一部を実行できる。実際には、所望の機能性を提供するコンポーネントは、複数のサブコンポーネントを含んでもよく、別のコンポーネントと更に組み合わされてもよい。例えば、必要な機能性を、ＭＭＵと組み合わせて複数のマイクロカーネルにより提供することが考えられる。
【００５４】
従って、本発明の重要な利点は、厳しい時間の保証をするリアルタイムソフトウェアを実行するコンピュータ装置の能力に影響を与えずに、コンピュータ装置が異なる性能及びコスト特性を有するメモリの種類の階層を効率的に管理するためにページングを使用できることであることが分かる。
【００５５】
特定の実施形態を参照して本発明を説明したが、添付の請求の範囲により規定される本発明の技術的範囲内で変更が行なわれてもよいことが理解されるだろう。
【図面の簡単な説明】
【００５６】
【図１】コンピュータ装置におけるデマンドページングの方法を概略的に示す図である。
【図２】サーバが起動された時にサーバをリアルタイムサーバとしてマークする手順を示すフローチャートである。
【図３】本発明の一実施形態に従ってメモリをロックする手順を示すフローチャートである。
【図４】本発明の参照実施形態に従ってサービスに対するリアルタイム要求のカウントをインクリメントする手順を示すフローチャートである。
【図５】ロックされたメモリの解放を可能にするためにリアルタイム要求のカウントをデクリメントする手順を示すフローチャートである。
【図１】
2008532163.tif 000003
【図２】
2008532163.tif 000004
【図３】
2008532163.tif 000005
【図４】
2008532163.tif 000006
【図５】
2008532163.tif 000007
【国際調査報告】
2008532163.tif 000008
2008532163.tif 000009
2008532163.tif 000010