(57)【要約】  リアルタイム・ソフトウェアと非リアルタイムＯＳとがシステムの中に共存し、該リアルタイムソフトウェアは、共有された資源へのアクセスのための該非リアルタイムＯＳからのリクエストを制御する。前記リクエストは、キューに投入され、前記リアルタイム・ソフトウェアは、いつ、どの保留中のリクエストが実行されるかを決定する。
2007528032.tif 000002
【特許請求の範囲】
【請求項１】
非リアルタイムＯＳと共存するリアルタイム・ソフトウェアが、該リアルタイムソフトウェアと該非リアルタイムＯＳとの間で資源を共有する方法であって、該方法は、
前記リアルタイム・ソフトウェアが、前記資源のアクセスのための前記非リアルタイムＯＳからのリクエストをチェックするステップと、
前記リアルタイム・ソフトウェアが、いつ前記リクエストが実行されるかを決定するステップと、
を有する方法。
【請求項２】
請求項１記載の方法であって、前記リアルタイム・ソフトウェアが、前記リクエストをキューに入れるステップを有する方法。
【請求項３】
請求項１記載の方法であって、前記リアルタイム・ソフトウェアが、リアルタイム・ファイルシステムを有する方法。
【請求項４】
請求項１記載の方法であって、更に、前記リアルタイム・ソフトウェアが、非リアルタイムＯＳのデバイスドライバを通して、前記資源へのアクセスするステップを有する方法。
【請求項５】
請求項１記載の方法であって、前記資源がメモリを有する方法。
【請求項６】
請求項５記載の方法であって、前記メモリがハードディスク・ドライブを有する方法。
【請求項７】
リアルタイム・ソフトウェアと、
非リアルタイムＯＳと、
前記リアルタイム・ソフトウェアと前記非リアルタイムＯＳとの間で共有される資源と、
を有するデータ処理システムであって、
前記リアルタイム・ソフトウェアは、前記資源のアクセスのための、非リアルタイムＯＳからのリクエストをチェックし、
前記リアルタイム・ソフトウェアは、いつ前記リクエストが実行されるのかを決定する、
データ処理システム。
【請求項８】
請求項７記載のシステムであって、前記リアルタイム・ソフトウェアが、前記リクエストをキューに入れるデータ処理システム。
【請求項９】
請求項７記載のシステムであって、前記リアルタイム・ソフトウェアが、リアルタイム・ファイルシステムを有するデータ処理システム。
【請求項１０】
請求項７記載のシステムであって、更に、前記リアルタイム・ソフトウェアが、非リアルタイムＯＳのデバイスドライバを通して、前記資源へのアクセスするデータ処理システム。
【請求項１１】
請求項７記載のシステムであって、前記資源がメモリを有するデータ処理システム。
【請求項１２】
請求項１１記載のシステムであって、前記メモリがハードディスク・ドライブを有するデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非リアルタイム（ｎｏｎ−ＲＴ）オペレーティング・システム（ＯＳ）に、リアルタイム（ＲＴ）データ処理能力を提供することに関する。本発明は、特に、しかし他を排除する目的でなく、ｎｏｎ−ＲＴ  ＯＳとリアルタイム・ファイルシステム（ＲＴＦＳ）とを組み合わせることに関する。
【背景技術】
【０００２】
例えば、ハードディスク・ドライブ（ＨＤＤ）へのリアルタイム・レコーディングのために、ディスクへのＲＴアクセスが要求される。ＨＤＤは、多くのプロセスに共有される。アクセスのためのリクエストがリアルタイム状態で保持されることが保証される場合、慎重なスケジューリングが要求される。ＬｉｎｕｘのようなホストＯＳ（ＨＯＳ）は、ベストエフォートに基づくディスクへのアクセスを提供するが、それはリアルタイムの要求にとっては、十分ではない。ｎｏｎ−ＲＴ  ＯＳは、典型的には、各プロセスが、ディスクへの帯域の公平な割当てを得るという状況の下で、高い平均性能のために最適化されたスケジューラを有する。他方では、ＲＴＦＳソフトウェア、例えばビデオストリームを記憶するためのＲＴストレージを提供するために使用される、は、全てのビデオストリームがＲＴ状況下で記憶され、再生されることを保証するために、ディスク要求をリオーダリングするためのＲＴスケジューラを有する。本願発明者は、中でも、ｎｏｎ−ＲＴ  ＯＳにおけるＲＴ動作を達成するための問題を解決することを模索する。
【０００３】
米国特許第６，４４６，９６２号は、共存するオペレーティング・システムによって、汎用ＯＳにおいて、ＲＴコンピューティングに対応するためのシステム、及び方法を開示する。このＲＴシステム技術は、デスクトップ・マルチメディア・カンファレンスのようなアプリケーションに対応するための、商用の、汎用（ｎｏｎ−ＲＴ）オペレーティング・システムと共存することが可能である。中央処理装置、及び他のシステム資源は、二つの仮想装置に区切られる。第１の装置は、ほとんどの部分が改変されていない汎用オペレーシングシステムを実行し、第２の装置は、ＲＴカーネルを実行する。物理的なハードウェアへのアクセスは、仮想装置によって多重化される。多重化器は、装置間の多重のために、予め正確で周期的な間隔でスケジュールされるか、又は該多重化器は、ＲＴカーネルがハードウェアへのアクセスを獲得することを保証するために、ＲＴ  ＯＳのリクエストに応じた割り込みの制御下で操作される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者は、ｎｏｎ−ＲＴ  ＯＳとＲＴデータ処理とを組み合わせることで、従来の手法の、より有利な代替を提案する。この目的のために、本発明は、ｎｏｎ−ＲＴ  ＯＳのリクエストをインターセプトし、ＲＴルールに従って該リクエストを制御することによってｎｏｎ−ＲＴ  ＯＳと協働するＲＴソフトェア・スタックを提供する。より詳細には、本発明は、ＲＴソフトウェアとｎｏｎ−ＲＴ  ＯＳとの間で、多くの資源の１つを共有するための、ｎｏｎ−ＲＴ  ＯＳと共存するＲＴソフトウェアを実現する方法に関する。この方法は、ＲＴソフトウェアが、ｎｏｎ−ＲＴ  ＯＳからの、資源に対するアクセスのための１つ又はそれより多くの保留中のリクエストのキューをチェックすることを可能とし、ＲＴソフトウェアが、いつ該保留中のリクエストが実行されるかを決定することを可能とすることを有する。
【課題を解決するための手段】
【０００５】
本発明において、ＲＴソフトウェアは、ＲＴルールに従って、ｎｏｎ−ＲＴ  ＯＳにおけるトラフィックを絞ることが可能となる。ｎｏｎ−ＲＴ  ＯＳからのリクエストは、従来の場合に行われていたようには、直ちには実行されない。ＲＴソフトウェアは、ｎｏｎ−ＲＴ  ＯＳリクエストが実行される時を制御する。
【０００６】
説明の容易のために、「フック」という語は、この文書において、ＲＴソフトゥエアとｎｏｎ−ＲＴ  ＯＳとの間の通信チャネルを示すものとして予定される。
【０００７】
本発明によるｎｏｎ−ＲＴ  ＯＳと共存するＲＴソフトウェアの実施例は、ＲＴソフトウェアが、ｎｏｎ−ＲＴ  ＯＳ上で動作するものである。他の実施例において、ＲＴソフトウェアは、ｎｏｎ−ＲＴ  ＯＳの外部で動作する。ＲＴソフトウェアがｎｏｎ−ＲＴ  ＯＳ上で動作している場合、フックによって制御されるようなデータハンドリングがリアルタイム保証されるべきものならば、該ＯＳは、いくつかの制限されたリアルタイム処理保証のようなものを有する必要がある。さもなければ、ＲＴソフトウェアは、フックへのコマンドを発行する機会を一切得られないであろう。ＲＴソフトウェアは、したがって、望ましくは、優先度の高いスレッドで動作するものとなる。ＯＳのＣＰＵ処理のみが、そのような条件を有する必要がある。フックの仕組みは、他のプロセス、例えばＨＤＤ又は他の資源へのアクセスのためのリアルタイム保証を生成するために、これを利用する。フック制御は大雑把な処理を制御するので、要求されるリアルタイム提供は、相当粗いものとなり得る。
【０００８】
望ましくは、フックは、実行時に、有効及び無効にされ得る。無効にされた場合、ｎｏｎ−ＲＴ  ＯＳは、フックが存在しないかのように動作する。これは、従来の方法でブートすることを可能にする。フックは、ＲＴソフトウェアからのリクエストを認識し、該リクエストを、直ちに通過させる。これは、ＲＴソフトウェアが、ｎｏｎ−ＲＴ  ＯＳの関連するデバイスドライバを使用することを可能とし、ＲＴリクエストが、遅延無く実行されることを保証する。フックは、ｎｏｎ−ＲＴ  ＯＳからの全てのリクエストをインターセプトし、該リクエストをキューに入れる。これは、ｎｏｎ−ＲＴ  ＯＳからのリクエストが、ＲＴソフトウェアからのＲＴリクエストに干渉しないことを保証する。フックは、更に、キュー内のｎｏｎ−ＲＴリクエストに関する情報を、ＲＴソフトウェアに提供する。これは、特定のｎｏｎ−ＲＴリクエストをＲＴトラフィックとの干渉から回避するという手法で、ＲＴソフトウェアが該特定のｎｏｎ−ＲＴリクエストの実行を決定することを可能とする。例えば、ＲＴソフトウェアは、リソース利用を最適化するように、ｎｏｎ−ＲＴリクエストが実行されるシーケンスを決定する。
【０００９】
望ましくは、フックは、特定状況下では、フック自身が該フックを無効にすることを可能にする。例えば、フックは、ＲＴソフトウェアが保留中のｎｏｎ−ＲＴリクエストのキューをチェックすることを停止したことを検出した場合、フック自身を無効にする。これは、システムが、ＲＴソフトウェアが動作することを停止したような状況から復帰することを可能とする。
【００１０】
上記特性は、本発明におけるシステムに、以下のような利点を提供する。ＲＴソフトウェアは、ｎｏｎ−ＲＴ  ＯＳのデバイスドライバを使用することができる。ｎｏｎ−ＲＴ  ＯＳは、従来のようにブート可能である。ドライバを介するハードウェアへのアクセスは、完全にＲＴ制御下にある。ＲＴソフトウェアは、ｎｏｎ−ＲＴ  ＯＳから独立、例えば、該ＲＴソフトウェアが、ｎｏｎ−ＲＴ  ＯＳの外側、又は上で動作する、とすることができる。結果、移植可能なＲＴソフトウェアスタックが開発され得る。
【００１１】
ディスクアクセスのための、従来のシステムにおいて使用されていたような時間多重化は、比較的粗粒性のディスクリクエストであるので、望ましくない。発明者は、従って、全ての有効なリクエストに基づいた調停のためのスキームを提案する。これは、従来のシステムと本発明との、非常に重大な相異を導き出す。本発明において、ＲＴディスクスケジューラは、リアルタイムリクエストとｎｏｎ−ＲＴリクエストとの両者のための、リクエスト実行の順序を決定する。従来のシステムでは、この調停は、ベアプロセッサで、すなわち、ＲＴカーネル及び汎用カーネルの両者の外側で、行われる。多重化は、共有リソース間の競合を解決するために利用される幾つかの特定の手段を伴い、完全に時間ベースとなる。競合が、さもなければ、汎用プロセスにリアルタイムプロセスとの干渉を生じさせる。本発明は、汎用ＯＳからのリクエストがリアルタイムストリーミングのためのリクエストと一切干渉しない時間にのみ、ディスクスケジューラが実行されることを保証するので、それらの競合を完全に回避する。
【発明を実施するための最良の形態】
【００１２】
本発明は、例示、及び添付の図面を参照することによって、更に詳細に説明される。
【００１３】
全図を通して、同一の参照符号は、同様の又は類似の機構を示す。
【００１４】
本発明は、メモリに対しビデオストリーミングを記録する、及びメモリからビデオストリーミングを提供するという状況における例示によって、以下に示される。メモリは、例えばＨＤＤ、光ディスクドライブ、又は半導体メモリ、を有する。以下の例示では、メモリはＨＤＤを有するとする。
【００１５】
図１は、本発明における、システム１００のブロック図である。システム１００は、汎用すなわちｎｏｎ−ＲＴのホストＯＳ（ＨＯＳ）１０２を有する。システム１００はまた、例えば、ビデオストリーミング・アプリケーションを利用可能とする、ＲＴＦＳを有するソフトウェアである、ＲＴソフトウェア１０４を有する。システム１００は、更に、ハードウェア資源１０６、ここではＨＤＤを有する。
【００１６】
ＨＯＳ１０２は、ＨＯＳファイルシステム１０８、ＨＯＳキャッシュ１１０、及びリソース１０６を操作するＨＯＳデバイスドライバ１１２を有する。ＲＴソフトウェア１０４をＨＯＳ１０２と共存させるために、後者は、ＨＯＳ１０２とＲＴソフトウェア１０４との通信を可能にするソフトウェアフック１１４を具備している。ＨＯＳ１０２及びＲＴソフトウェア１０４の両者は、ＨＤＤ１０６へのアクセスを要求するプロセスを有する。フック１１４は、ＨＯＳ１０２のプロセスからの、ＨＤＤ１０６へのアクセスのための全てのリクエストをインターセプトし、該リクエストをキュー１１６に入れる。これは、ｎｏｎ−ＲＴリクエストが、ＲＴソフトウェア１０４からのＲＴリクエスト１１８に干渉しないことを保証する。フック１１４は、更に、キュー１１６内のｎｏｎ−ＲＴリクエストに関する情報１２０をＲＴソフトウェア１０４に提供する。例えば、前記情報は、ディスク（ヘッド）の位置、及びリクエストのサイズを有する。これは、ＲＴトラフィックの干渉を避けるように、ＲＴソフトウェア１０４が、保留中のｎｏｎ−ＲＴリクエストの実行のための適切な時刻を決定することを可能にする。キュー１１６のリクエストは、ＲＴソフトウェア１０４からの明示的な指令１２２の後にのみ、実行される。加えて、ＲＴソフトウェア１０４は、ｎｏｎ−ＲＴリクエストが実行されるシーケンス、例えば、システム１００におけるリソース使用を最適化すること、を決定することができる。フック１１４は、リソース１０６のアクセスのためのＲＴソフトウェア１０４からのリクエスト１１８を認識し、遅滞なく該リクエストが実行されるように、当該リクエストを直ちに通過させる。このように、ＲＴソフトウェア１０４は、ＨＯＳ１０２のデバイスドライバ１１２を使用することが可能となる、ということに留意されたい。ｎｏｎ−ＲＴ  ＯＳは、典型的には、デバイスドライバへのリクエストキューを使用する。フック１１４におけるこのキューメカニズムを使用することは、フック１１４の実装を簡潔にする。
【００１７】
図２は、システム１００の動作を図示しているテーブル２０２、２０４、２０６、及び２０８を有する。ＨＯＳ１０２は、複数の従来のリクエストを発行する。フック１１４は、前記リクエストをキュー１１６に入れる。テーブル２０２は、キュー１１６に入れられたリクエストの例を提示する。フック１１４は、ＲＴソフトウェア１０４へのリクエストのリストを提供する。このリストは、要求された情報のみが、ＲＴソフトウェア１０４へ渡されるようにフォーマットされている。テーブル２０４は、テーブル２０２のリクエストに基づいたリストの例である。ＲＴソフトウェア１０４は、最初に、ドライバ１１２によって遅延無く実行される、いくつかのＲＴリクエスト１１８を発行する。テーブル２０６は、ＲＴリクエスト１１８の例である。そして、ＲＴソフトウェア１０４は、保留中の１つ又はそれより多くのＨＯＳリクエストを実行する時間があることを見出し、チャネル１２２を介して、フック１１４に、該ＨＯＳリクエストを実行することを命令する。例えば、フック１１４は、テーブル２０２のリクエスト＃１及び＃２を実行することを命令される。フック１１４は、これらのリクエストを、該リクエストが実行されるドライバ１１２に渡す。テーブル２０２の残りのリクエスト＃３は、ＨＯＳ１０２によって発行される新たなリクエストとともに、キュー１１６内に、テーブル２０８に示されるように、保留のまま保持される。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明におけるシステムのブロック図である。
【図２】図２は、本発明におけるシステムの様々な処理ステージにおけるリクエストのテーブルを有する。
【図１】
2007528032.tif 000003
【図２】
2007528032.tif 000004
【国際調査報告】
2007528032.tif 000005
2007528032.tif 000006