(57)【要約】  コンピュータ装置は複数のパーソナリティレイヤが提供され、各々のパーソナリティレイヤはそれぞれのＲＴＯＳに関して導入される。これは、リアルタイムパフォーマンスを維持しながら、複数のＬＲＴＡが同じ装置上で動作することを可能にする。また、与えられたスレッドに関して、カーネルの機能性を利用するための当該スレッドによる全ての試みをデバッガへリダイレクトする新しいコールテーブルをインストールすることが可能であるので、デバッグ／診断目的に利用することもできる。
2009509214.tif 000002
【特許請求の範囲】
【請求項１】
異種のオペレーティングシステムに対応するソフトウエアを実行可能にするネイティブオペレーティングシステムが動作するコンピュータ装置上に、前記異種のオペレーティングシステムのためのパーソナリティレイヤを導入する方法であって、
ａ．前記ネイティブオペレーティングシステムへのシステムコールを行うために用いられる各スレッドのディスパッチテーブルでもって、前記コンピュータ装置上で動作する実行の各スレッドをセットアップし、
ｂ．前記ネイティブオペレーティングシステムへのシステムコールを指し示すディスパッチテーブルでもって、前記ネイティブオペレーティングシステムに対応したアプリケーションを実行するスレッドをセットアップし、
ｃ．前記異種のオペレーティングシステムのための前記パーソナリティレイヤに対応するシステムコールを指し示す異なるディスパッチテーブルでもって、前記異種のオペレーティングシステムに対応するアプリケーションを実行するスレッドをセットアップする、ことを特徴とする方法。
【請求項２】
請求項１に記載の方法に従って動作するよう構成されたコンピュータ装置。
【請求項３】
請求項１に記載の方法に従ってコンピュータ装置を動作させるオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ装置に機能性を加える方法に関し、特に、コンピュータ装置に機能性を付加するためにオペレーティングシステム（ＯＳ）カーネルにおける複数のスレッドコールテーブルがどのように用いられ得るかに関する。
【背景技術】
【０００２】
あるタイプのデバイスの製造者及び新しいプラットホームに既存のコンピューティングテクノロジーを導入することを追求する他者が、彼らの既存のソフトウエア材料の再利用を試みることは、しばしば有利である。このことは、特に、市場における寿命が、それらの開発における時間的投資に比して短いという傾向を有する、携帯電話のような民生用デバイスにおいて当てはまる。開発サイクルを短縮し開発コストを減少することは何であれ、製造効率を向上する。
【０００３】
通信スタック及びプロトコルの実行は、現代の民生用電子デバイスにおいて製造者が再利用を模索するソフトウエア材料の良い例である。そのようなデバイスの集約は増加傾向にあり、通信やネットワークの能力は多くの多様化した事情及びデバイスにおいてますます要求されるであろう。そのようなソフトウエアは、一般に、次のような特徴を有する傾向にある。
・それらは大きな複雑なソフトウエアのピースであり、電話製造者はかなりの経済的な投資を行ってきた。
・それらは、かなりのレベルのリアルタイム性を要求する。
・それらは、一般に、あるタイプのリアルタイムオペレーティングシステム（ＲＴＯＳ）上で稼動する用に開発されてきた。これらは独自のものと、Nucleus Plus、VRTX、OSEのような標準の商用システムの両方を含む。
【０００４】
そのようなソフトウエアを、以下ではレガシーリアルタイムアプリケーション（ＬＲＴＡ)と呼ぶことにする。ＬＲＴＡを新しいプラットホームに組み込む複数種類の方法がある。
【０００５】
非常に直接的な方法は、ＬＲＴＡコンポーネンツをそれらのＣＰＵ上で稼動させ、装置の他の機能性を扱うものと分離することである。このソリューションにはいくつかの利点がある。ＬＲＴＡは改造される必要がなく、新しいデバイス上のソフトウエアの残りから完全に独立することは統合のための負担を減少させる。
【０００６】
しかしながら、不利な点もある。最も顕著なのは、要求される、余分なプロセッサとこれに伴うメモリのコストである。
【０００７】
現代のコンピュータ装置に対しては、低価格傾向への圧力があり、この低価格傾向への圧力がそもそもＬＲＴＡを利用することの決定に主として関与するのであるが、一般に、別個のプロセッサを用いた解決策は高価すぎるため拒絶されることになる。このことは、ＬＲＴＡがデバイス上の他のソフトウエアと同じＣＰＵ上で動作しなければならず、ＬＲＴＡは当該装置のネイティブなオペレーティングシステム（ＯＳ）の元で動作しなければならないことを意味する。当業者は、これを実現する３つの方法が存在することに気づくであろう。
【０００８】
１．ネイティブＯＳの元で直接に動作するように、ＬＲＴＡのソースコード（おそらくは設計）を変更する。ＬＲＴＡは典型的には低レベルコンポーネントで作成されているので、この変更は、一般には、純粋なカーネルモードデバイスドライバとして、或いはカーネルとユーザモードコンポーネントの組み合わせとして、設計のしなおし（リエンジニアリング）をすることにより対処されることになる。
【０００９】
しかしながら、この選択は、ＬＲＴＡを改造するのに要する時間、そのような改造の持つ危険性（リスク）、第２の異なるバージョンのＬＲＴＡを生成することにより、それにかかわる製造者への継続的なメンテナンス負荷の増大という問題により、通常は商業的に非現実的である。
【００１０】
２．ネイティブＯＳとＬＲＴＡ  ＲＴＯＳの両方が同時に動作するシステムを実現する。これは、ＲＴＯＳが動作できるようにネイティブＯＳカーネルの戦略的位置（割り込み及び他の例外ベクトル）にフックを配置すること、或いは、２つのオペレーティングシステム間のコンテキストスイッチを実行するハイパーバイザ（hypervisor）の類のものを実現することによってなされる。しかしながら、これには、スレッド切り替えや優先度変更などを指示するために、双方のオペレーティングシステムに対してハイパーバイザをコールするための改造を行うことが必要となる。
【００１１】
この選択は、また、以下の不利な点を有する。
【００１２】
・ＬＲＴＡに関連するか否かにかかわらず割り込み毎及びエグゼクティブコール毎に呼び出されるフックのために、全体的なデバイスのパフォーマンスが低下する。ハイパーバイザシステムは、フックや割り込み処理における全体の余剰レイヤが多くなることにより、更にパフォーマンスを低下させる。
【００１３】
・フックは、更なる複雑さや、特に敏感なコード領域への不具合の発生の危険性を加える。
【００１４】
・必要なときにはいつでもＲＴＯＳが動作することを可能にするためにネイティブＯＳカーネルにフックを挿入することは、当該ＯＳカーネルのリアルタイム性能を損なう。なぜならば、ＬＲＴＡ内の優先度の低いスレッドが、ネイティブＯＳにおける優先度の高いスレッドよりも高い優位性を取得してしまうからである。ハイパーバイザシステムは、必ずしもこのような問題をわずらうものではないが、かなり複雑なものであり、パフォーマンスに多大な不利益を招いてしまう。
【００１５】
・複数のＲＴＯＳを動作させる必要がある場合、フックは非常に複雑になり、管理するのが困難になる。例えば、ＧＳＭのシグナリングスタックとBluetoothスタックの両方が要求され、各々が異なるＲＴＯＳを使う場合に、複数のＲＴＯＳを動作させることが必要となる。
【００１６】
３．ネイティブＯＳカーネルを覆うパーソナリティレイヤを実現する。ここで、パーソナリティーレイヤは、オリジナルのＲＴＯＳと同じアプリケーションプログラムインターフェース（ＡＰＩ）、或いは、少なくともＬＲＴＡが必要とする部分と同じＡＰＩを提供するものである。ＲＴＯＳ自身を省くことができ、ＬＲＴＡはネイティブＯＳカーネルを潜在的なリアルタイムカーネル（もちろん、それ（ネイティブＯＳカーネル）がその能力（リアルタイムカーネルの能力）を有すると仮定している）として用いて動作することができる。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明は、上述したパーソナリティレイヤの解決策を導入する。しかしながら、現在のパーソナリティレイヤを実現する方法は、かなりのプログラミングオーバーヘッド（プログラミング費用）を必要とする。本発明は、そのようなレイヤの実現に関して、より早く、より簡潔なスキームを提案する。
【課題を解決するための手段】
【００１８】
本発明の第１の態様によれば、
異種のオペレーティングシステムに対応するソフトウエアを実行可能にするネイティブオペレーティングシステムが動作するコンピュータ装置上に、前記異種のオペレーティングシステムのためのパーソナリティレイヤを導入する方法であって、
ａ．前記ネイティブオペレーティングシステムへのシステムコールを行うために用いられる各スレッドのディスパッチテーブルでもって、前記コンピュータ装置上で稼動する各スレッドの実行をセットアップし、
ｂ．前記ネイティブオペレーティングシステムへのシステムコールを指し示すディスパッチテーブルでもって、前記ネイティブオペレーティングシステムに対応したアプリケーションを実行するスレッドをセットアップし、
ｃ．前記異種のオペレーティングシステムのための前記パーソナリティレイヤに対応するシステムコールを指し示す異なるディスパッチテーブルでもって、前記異種のオペレーティングシステムに対応するアプリケーションを実行するスレッドをセットアップする、方法が提供される。
【００１９】
本発明の第２の態様によれば、上記第１の態様の方法に従って動作するように構成されたコンピュータ装置が提供される。
【００２０】
本発明の第３の態様によれば、上記第１の態様の方法に従ってコンピュータ装置を動作させるためのオペレーティングシステムが提供される。
【発明を実施するための最良の形態】
【００２１】
以下、添付の図面を参照して、更なる一例により本発明の実施形態を説明する。
【００２２】
図１は、本発明の一態様に従った、ネイティブＯＳとパーソナリティレイヤ実行ファイル（executables）のためのディスパッチテーブルを示す図である。
【００２３】
図２は本発明の実施形態を示す図である。
【００２４】
オペレーティングシステムにおけるシステムコールがある種のジャンプテーブルを介してなされることは一般的である。有効な機能のアドレスは、固定長のエントリでディスパッチテーブルに配置され、全てのシステムコールに対して単一のエントリポイントが提供される。コーラーは全てのファンクションに対して同じアドレスをコールするが、実行したいコールの番号を提供する。番号は、ディスパッチテーブルにおいて要求される実際のファンクションのアドレスのオフセットを計算するのに用いられ、コントロールが該当するファンクションに渡される。
【００２５】
全てのスレッドにシステムコールを行うための同じエントリポイントが備わっており、システムコールの全ては同じディスパッチテーブルを用いるように、既存のオペレーティングシステムはスレッドの実行をセットアップする。
【００２６】
本発明において、カーネルへのエントリポイントは全てのスレッド及び全てのシステムコールに関して変更はない。しかしながら、各スレッドは、システムコールのための独自のディスパッチテーブルを有する。
【００２７】
全てのネイティブＯＳスレッドは、同じディスパッチテーブルでセットアップされる。そのディスパッチテーブルは、それらスレッドが、通常はＯＳの元で有効となるシステムコールをアクセスすることを可能にする。ネイティブＯＳ実行ファイルのためのディスパッチテーブルは図１の左側に示されている。
【００２８】
しかしながら、ＯＳの内部に提供されたパーソナリティレイヤにおいて動作することが必要な異種のスレッドが、異なるディスパッチテーブルでセットアップされる。こうして、異種のスレッドがシステムコールを行った場合、それらのスレッドはこの異なるテーブルによってベクトルオフされる。この異なるテーブルは、それらのスレッドに、それらスレッドがもともと対応している異種のＯＳから取得することを期待する機能性を提供する。パーソナリティレイヤ実行ファイルのためのディスパッチテーブルは図１の右側に示されている。
【００２９】
図２は、本発明に従ったコンピュータ装置を動作させるための手順を示すフローチャートである。はじめに、プログラムローダは装置上の実行ファイルをセットアップする要求を受け取る。装置は、まず、その実行ファイルが当該装置にネイティブなＯＳに対応したものかどうかを判断する。ＹＥＳの場合は、その実行ファイルが動作して所望の機能性を提供するために、ネイティブＯＳのディスパッチテーブルでセットアップが実行される。
【００３０】
しかしながら、その実行ファイルが当該装置にネイティブなＯＳに対応したものではないと判断された場合、装置は、次に、その実行ファイルがどのＯＳに対応して書かれたものであるかを判断する。そして、当該装置上で当該実行ファイルを実行可能とする機能性が提供されるように、当該実行ファイルが対応しているＯＳに適したパーソナリティレイヤのためのディスパッチテーブルで当該実行ファイルがセットアップされる。
【００３１】
本発明は、従って、複数のＲＴＯＳに対して複数のパーソナリティレイヤが導入されることを可能とする。こうして、リアルタイムパフォーマンスを維持しながら、複数のＬＲＴＡが同じ装置上で動作することを可能とする。また、与えられたスレッドに関して、カーネルの機能性を利用するための当該スレッドによる全ての試みをデバッガへリダイレクトする新しいコールテーブルをインストールすることが可能であるので、デバッグ／診断目的に利用することもできる。
【００３２】
本発明を特定の実施形態に関連して説明したが、添付の請求の範囲によって定義された本発明の範囲内で改造が達成されることも理解されることである。
【図面の簡単な説明】
【００３３】
【図１】図１は、本発明の一態様に従った、ネイティブＯＳとパーソナリティレイヤ実行ファイルのためのディスパッチテーブルを示す図である。
【図２】図２は本発明の実施形態を示す図である。
【図１】
2009509214.tif 000003
【図２】
2009509214.tif 000004
【国際調査報告】
2009509214.tif 000005
2009509214.tif 000006