JP2002506553A - オペレーティング・システム・コールを効率的にエミュレートする構成を提供するシステムおよび方法 - Google Patents

オペレーティング・システム・コールを効率的にエミュレートする構成を提供するシステムおよび方法

Info

Publication number
JP2002506553A
JP2002506553A JP55545199A JP55545199A JP2002506553A JP 2002506553 A JP2002506553 A JP 2002506553A JP 55545199 A JP55545199 A JP 55545199A JP 55545199 A JP55545199 A JP 55545199A JP 2002506553 A JP2002506553 A JP 2002506553A
Authority
JP
Japan
Prior art keywords
operating system
system call
segment
entry
offset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP55545199A
Other languages
English (en)
Inventor
ダイス,デビット
スリーニヴァサン,サニル
アハー,デビット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2002506553A publication Critical patent/JP2002506553A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 プログラムを処理するためのプロセッサを含んでいるコンピュータ中で使用するためのオペレーティング・システム・コール制御サブシステムが開示される。オペレーティング・システム・コール命令タイプのプログラム・命令は、複数のタイプのオペレーティング・システム・コールのうちの1つを識別し、各タイプのオペレーティング・システム・コールは、値の所定の範囲内に入るオペレーティング・システム・コール・タイプ識別子値に関連する。オペレーティング・システムコール命令タイプ処理モジュールは、オペレーティング・システム・コール命令タイプの命令をプロセッサが処理することに応答して、(a)ターゲット・アドレスからのオペレーティング・システム・コール・セット識別子を保存し、(b)ターゲット・アドレスのオフセット値を使用して、クロスオーバ・テーブル中のエントリのうちの1つを選択し、(c)クロスオーバ・テーブル中の選択されたエントリからの命令を処理して、クロスオーバ・テーブル中の選択されたエントリのオフセットに対応する値を保存し、(d)保存されたオペレーティング・システム・コール・セット識別子およびクロスオーバ・テーブル中の選択されたエントリのオフセットに対応する保存された値に関してオペレーティング・システム・コール・タイプ識別子値を生成する。

Description

【発明の詳細な説明】 オペレーティング・システム・コールを効率的にエミュ レートする構成を提供するシステムおよび方法 発明の分野 本発明は、一般にデジタル・コンピュータの分野に関し、より詳細には、ある アーキテクチャのマイクロプロセッサ用に別のアーキテクチャのマイクロプロセ ッサによって書かれたプログラムのエミュレーション中に、そのマイクロプロセ ッサによって提供されるオペレーティング・システム・コール構造の効率的なエ ミュレーションを容易にする構成に関する。 発明の背景 デジタル・コンピュータは種々様々のタイプのプログラムを処理し、各プログ ラムはコンピュータがデータの特定の要素に関して特定の動作を実行できるよう にする一連の命令を含んでいる。デジタル・コンピュータ中で使用するための様 々なタイプのプロセッサがあり、各タイプのプロセッサはあるアーキテクチャに 従って構成され、アーキテクチャは、とりわけ、そのアーキテクチャに従って構 成されたプロセッサが実行することが予想される命令のセット、様々な命令のフ ォーマット、処理されるデータのタイプおよびフォーマット、命令処理中に使用 される様々なレジスタの定義、コンピュータのメモリ中の命令にどのようにアク セスするか、そしてアーキテクチャに従って構成されたプロセッサが命令処理中 に検出される例外状態をどのように処理すべきかを記述する。 しばしば「ホスト・プロセッサ」としての別のタイプのプロセッサが「被エミ ュレート・プロセッサ」としてのあるタイプのプロセッサをエミュレートできる ようにすることが望ましい。ホスト・プロセッサは、一般に、被エミュレート・ プロセッサによって生成される出力に効果的に対応する出力を生成するために、 被エミュレート・プロセッサ用に書かれたプログラムを処理することによって被 エミュレート・プロセッサをエミュレートする。一般に、エミュレーションは、 被エミュレート・プロセッサによって実行のために生成されたプログラム(「元 の」プログラム)をホスト・プロセッサによって処理されるプログラム(「変換 された」プログラム」)に変換することによって行われる。この変換プロセスは 、例えば、元のプログラムの命令および他の要素からホスト・プロセッサのアー キテクチャに基づく命令および他の要素を生成し、それによって変換されたプロ グラムを提供するステップを含んでいる。変換は、例えば、ホスト・プロセッサ 自体、同じコンピュータ・システム中の別のプロセッサ、または別のコンピュー タ・システムによって実行され、変換プログラムの制御下で、プログラムを処理 すべきホスト・プロセッサに利用できるようにする。変換を実行する場合、元の プログラム(すなわち被エミュレート・プロセッサのアーキテクチャに基づくプ ログラム)中の各命令または命令シーケンスまたは様々な命令群がホスト・プロ セッサによる処理のために1つまたは一連のまたは一群の命令に変換される。変 換プロセスは、一般に、プロセッサが元のプログラムを処理し始めたときに元の プログラムのすべてのまたは選択された部分に対して実行されるが、元のプログ ラムの命令または命令群が処理が進行するにつれて変換されることが理解できよ う。さらに、被エミュレート・プロセッサのデータ・フォーマットがホスト・プ ロセッサによって直接使用できない場合、被エミュレート・プロセッサのフォー マットからホスト・プロセッサによって使用可能なフォーマットにデータのフォ ーマットを変換する。 一般に、プログラムは、UnixやMicrosoft WindowsTMま たは利用可能な他の多数のオペレーティング・システムのうちの1つなど、特定 のオペレーティング・システムの制御下で処理されるように構成されている。オ ペレーティング・システムは、プログラムによって処理するときに、データを取 り出すためにコンピュータのハードウェアと対話するサービス、キーボードやマ ウスなどのオペレータ入力デバイスを介してオペレータ入力を受け取るサービス 、ビデオ表示デバイス上の出力データの図形表示を制御するサービス、および他 の多数のサービスなど、いくつかの低レベル・サービスを提供するプログラムで ある。オペレーティング・システムは、プログラムによってそれに対してなされ た「コール」に応答してプログラム用のサービスを実行する。オペレーティング ・システムもプログラムであるので、ホスト・プロセッサによるプログラムのエ ミュレーション中、オペレーティング・システムもエミュレートすることも可能 である。しかしながら、通常ホスト・プロセッサとともに使用されるオペレーテ ィング・システムが、エミュレートされるプログラム用にオペレーティング・シ ステムによって提供されるサービスと同様のサービスを提供する場合、ホスト・ プロセッサのオペレーティング・システムにそれらのサービスを提供させること がより効率的である。しかしながら、ホスト・プロセッサのオペレーティング・ システムへのコールが被エミュレート・プロセッサとともに使用されるオペレー ティング・システム中と大きく異なる形でなされる場合、問題が生ずる。 発明の概要 本発明は、あるアーキテクチャのマイクロプロセッサ用に、別のアーキテクチ ャのマイクロプロセッサによって書かれたプログラムのエミュレーション中に、 そのマイクロプロセッサによって提供されるオペレーティング・システム・コー ル構造の効率的なエミュレーションを容易にする新しい改善された構成および方 法を提供する。 手短に言えば、本発明は、プログラムを処理するためのプロセッサを含んでい るコンピュータ中で使用するためのオペレーティング・システム・コール制御サ ブシステムを提供する。プログラムは、複数のタイプのオペレーティング・シス テムコールのうちの1つを識別するオペレーティング・システム・コール命令タ イプの命令を含んでおり、各タイプのオペレーティング・システム・コールは所 定の値範囲内に入るオペレーティング・システム・コール・タイプ識別子値に関 連する。オペレーティング・システム・コール制御サブシステムは、クロスオー バ・テーブル、オペレーティング・システム・コール命令タイプ・アドレス分解 モジュール、およびオペレーティング・システム・コール命令タイプ処理モジュ ールを含んでいる。クロスオーバ・テーブルは、所定の範囲の所定の小部分に対 応するいくつかのエントリを有する。クロスオーバ・テーブル中の各エントリは 、クロスオーバ・テーブルへのエントリのオフセットに対応する値をプロセッサ が保存できるようにするための命令を有する。オペレーティング・システム・コ ール命令タイプ・アドレス分解モジュールは、オペレーティング・システム・コ ール命令タイプの命令に、一組のオペレーティング・システム・コール・セット 識別子中のオペレーティング・システム・コール・セット識別子を含んでいるそ れぞれのアドレスを与える。オペレーティング・システム・コール・セット識別 子の数にクロスオーバ・テーブル・エントリの数を掛けたものは所定の範囲に対 応し、オフセット値はクロスオーバ・テーブルへのエントリに対するオフセット に対応する。オペレーティング・システム・コール命令タイプ処理モジュールは 、オペレーティング・システム・コール命令タイプの命令をプロセッサが処理す ることに応答して、(a)ターゲット・アドレスからのオペレーティング・シス テムコール・セット識別子を保存し、(b)ターゲット・アドレスのオフセット 値を使用して、クロスオーバ・テーブル中のエントリのうちの1つを選択し、( c)クロスオーバ・テーブル中の選択されたエントリからの命令を処理して、ク ロスオーバ・テーブル中の選択されたエントリのオフセットに対応する値を保存 し、(d)保存されたオペレーティング・システム・コール・セット識別子およ びクロスオーバ・テーブル中の選択されたエントリのオフセットに対応する保存 された値に関してオペレーティング・システム・コール・タイプ識別子値を生成 する。オペレーティング・システム・コール・タイプ識別子値はオペレーティン グ・システム・コール・セット識別子の特定の1つならびにクロスオーバ・テー ブルへの選択されたエントリのオフセットに関連して生成されるので、所定の範 囲内で可能な値ごとに1つのエントリが提供された場合に必要とされるエントリ の数の比較的小さい小部分を有するようにクロスオーバ・テーブルを構成するこ とができる。 図面の簡単な説明 本発明は下記の請求の範囲に詳細に記載されている。本発明の上記および他の 利点は添付の図面に関して行う以下の説明を参照すればよりよく理解できよう。 第1図は、本発明による、あるマイクロプロセッサ(ホスト・マイクロプロセ ッサと呼ぶ)を含んでおり、かつホスト・マイクロプロセッサによって別のアー キテクチャのマイクロプロセッサ(被エミュレート・マイクロプロセッサと呼ぶ )用に書かれたプログラムのエミュレーション中に、被エミュレート・マイクロ プロセッサよって提供されるオペレーティング・システム・コール構造の効率的 なエミュレーションを容易にする構成をさらに含んでいるデジタル・コンピュー タの機能ブロック図である。 第2図は、本発明を理解するのに有用な、選択されたアーキテクチャのマイク ロプロセッサ(すなわちIntelのx86ファミリーのマイクロプロセッサ) によって実行されるアドレス変換動作を理解するのに有用な図である。 第3図および第4図は、オペレーティング・システム・コール構造エミュレー ション構成に関してホスト・マイクロプロセッサによって使用されるデータ構造 を示す図である。 第5図は、オペレーティング・システム・コール構造エミュレーション構成に 関してホスト・マイクロプロセッサによって実行される動作を示す図である。 例示的な実施形態の詳細な説明 第1図は本発明により構成したデジタル・コンピュータ10の機能ブロック図 である。第1図を参照すると、コンピュータ10はマイクロプロセッサ11を含 んでおり、マイクロプロセッサ11は、メモリ管理ユニット14を介してメモリ ・サブシステム12および全体的に参照番号13で識別される1つまたは複数の 入出力サブシステムと通信する。メモリ・サブシステム12は、マイクロプロセ ッサ11によって処理すべきデータと命令(集合的に「情報」と呼ぶ)が記憶さ れるいくつかの物理的なアドレス指定可能記憶位置を含んでいる。さらに、マイ クロプロセッサ11は、データを処理した後、処理したデータを記憶のためにメ モリ・サブシステム12に転送する。 コンピュータ10は、大容量記憶サブシステム、オペレータ入力および出力サ ブシステム、ネットワーク・ポートなどを含むいくつかの種々様々のタイプの入 出力サブシステム13を含んでいる。大容量記憶サブシステムは、一般に、マイ クロプロセッサ11によって処理される情報を長期間記憶することができる。大 容量記憶サブシステムは、情報が記憶されかつ/または情報が取り出されるディ スクまたはテープ・サブシステム、光ディスク記憶デバイスおよびCD−ROM などのデバイスを含んでいる。1つまたは複数の大容量記憶サブシステムはオペ レータによって取り外し、設置される取外し可能記憶媒体を利用することができ 、したがってオペレータはプログラムおよびデータをデジタル・コンピュータ・ システム10中にロードし、処理されたデータをそこから得ることができる。マ イクロプロセッサ11によって提供された制御情報の制御下で、大容量記憶サブ システム中に記憶された情報は記憶のためにメモリ・サブシステム12に転送さ れる。情報がメモリ・サブシステム12中に記憶された後、マイクロプロセッサ 11はそれを処理するためにメモリ・サブシステム12から取り出す。処理され たデータが生成された後、マイクロプロセッサ11はまた、大容量記憶サブシス テムに比較的長期間の記憶させ、処理されたデータをメモリ・サブシステム12 から取り出すことができるようにする。 オペレータ入出力サブシステムは一般にデジタル・コンピュータ・システム1 0へのオペレータ・インタフェースである。特に、オペレータ入力サブシステム は、例えば、キーボードおよびマウス・デバイスを含んでおり、オペレータはこ れを使用して、情報を処理のためにデジタル・コンピュータ・システム10に対 話式に入力することができる。さらに、オペレータ入力サブシステムは、オペレ ータがデジタル・コンピュータ・システム10を制御する機構を構成している。 オペレータ出力サブシステムはまた、ビデオ表示デバイスなどのデバイスを含ん でおり、これによりデジタル・コンピュータ・システム10はマイクロプロセッ サ11の制御下で処理の結果をオペレータに表示する。さらに、オペレータにハ ードコピーを提供するためにプリンタも用意されている。 ネットワーク・ポートはデジタル・コンピュータ・システム10が通信リンク に接続し、それによってコンピュータ・システム10をコンピュータ・ネットワ ーク中に接続できるようにする。ネットワーク・ポートはコンピュータ・システ ム10がネットワーク中の他のコンピュータ・システムおよび他のデバイス(図 示せず)に(プログラム命令ならびに他のデータを含む)情報を送信し、そこか ら情報を受信できるようにする。例えばクライアント・サーバ・パラダイムに従 って編成された代表的なネットワークでは、ネットワーク中のいくつかのコンピ ュータ・システムがサーバとして指定され、サーバは情報を他のクライアント・ コンピュータ・システムによる処理のために記憶し、それによってクライアント ・コンピュータ・システムがその情報を通常どおり共用できるようにする。特定 のサーバによって維持される情報へのアドレスを必要とするクライアント・コン ピュータ・システムは、サーバがネットワーク上で情報をそれにダウンロードで きるようにする。データを処理した後、クライアント・コンピュータ・システム はまた処理されたデータを記憶のためにサーバに戻す。(上述のサーバおよびク ライアントを含む)コンピュータ・システムの他に、ネットワークはまた、例え ばプリンタおよびファクシミリ・デバイス、デジタル・オーディオまたはビデオ 記憶および分配デバイスなどを含んでおり、これらはネットワーク中に接続され た様々なコンピュータ・システム間で共用される。ネットワーク中のコンピュー タ・システムを相互接続する通信リンクは、通常の場合と同様に、コンピュータ ・システム間で信号を搬送するためのワイヤ、光ファイバまたは他の媒体を含む 、便利な情報搬送媒体を含んでいる。コンピュータ・システムは通信リンク上で 転送されたメッセージによって情報をネットワーク上で転送する。各メッセージ は情報、およびメッセージを受信するデバイスを識別する識別子を含んでいる。 通常の場合と同様に、入出力サブシステム13の各々は、一般に、それぞれの 入出力サブシステム13によって実行された動作を制御しかつその動作状態を示 すために使用される制御権、状態および他の情報を記憶するレジスタおよび他の データ記憶要素(図示せず)を含んでいる。マイクロプロセッサ11は、レジス タまたは他のデータ記憶要素中に情報を記憶し、それによってメモリ・サブシス テム12中に情報を記憶する方法と同様の方法でそれぞれの入出力サブシステム 13を制御する。同様に、マイクロプロセッサ11は、それぞれの入出力サブシ ステム13の動作状態を確認するために、メモリ・サブシステム12中で情報を 取り出す方法と同様の方法で、入出力サブシステム13中に含まれている情報を 取り出す。 メモリ管理ユニット14はいくつかの動作を実行する。特に、メモリ管理ユニ ット14は一般にキャッシュ・メモリを含んでおり、キャッシュ・メモリはメモ リ・サブシステム12からマイクロプロセッサ11によって要求された情報をキ ャッシュする。さらに、通常の場合と同様に、マイクロプロセッサ11が、例え ばメモリ・サブシステム12から情報を取り出すよう要求するか、または例えば メモリ・サブシステム12中に記憶するために処理されたデータを提供するとき 、マイクロプロセッサ11は仮想アドレス空間中のアドレスをメモリ管理ユニッ ト14に提供する。マイクロプロセッサ11によって処理される様々なアプリケ ーション・プログラムにはそれぞれの仮想アドレス空間が用意されている。仮想 アドレス空間はいくつかの「ページ」に分割され、各ページは選択された数の仮 想アドレス指定可能記憶位置を含んでおり、各仮想アドレス指定可能記憶位置は 情報を記憶する。アプリケーション・プログラムの仮想アドレス空間のページは 通常大容量記憶サブシステム上に記憶され、マイクロプロセッサ11は、個々の ページを処理中に必要になったときにメモリ・サブシステム12にコピーできる ようにし、処理中に変更されたページについて、マイクロプロセッサ11はそれ らを長期間の記憶のためにメモリ記憶サブシステムにコピーさせる。 仮想アドレス空間のそれぞれのページはメモリ・サブシステム12中の物理位 置にコンパクトに記憶される。物理位置は物理アドレスによって識別される。マ イクロプロセッサ11からの要求に応答して、特定の仮想アドレス空間位置に関 してアクセス動作(すなわち特定の物理位置からの情報の取出しまたはそこへの 情報の記憶)を実行する場合、メモリ管理ユニット14はメモリ・サブシステム 12に対してアクセス動作を実行する場合に使用する物理アドレスを得るために 仮想アドレスの変換を実行する。さらに、メモリ管理ユニット14は、そのペー ジがメモリ・サブシステム12中にあるか否か、アプリケーション・プログラム がそのページにアクセスする(すなわちそのページからデータを読み取るかまた はそこにデータを書き込む)許可を有する否か、要求されたページが仮想アドレ ス空間中で有効なページであるか否かなどを検査する動作を含めて、複数の検査 動作を実行する。メモリ管理ユニット14が検査動作において否定決定を行った 場合、すなわち、例えば、そのページがメモリ・サブシステム12中にないと判 定した場合、アプリケーション・プログラムが適切なアクセス許可を有しないと 判定した場合、または仮想アドレス空間ページの要求されたページがアプリケー ション・プログラムの仮想アドレス空間中で有効なページでないと判定した場合 、メモリ管理ユニット14はアクセス障害指示を生成し、それをマイクロプロセ ッサ11が受け取り、選択ステップされた障害処理動作を実行する場合に使用す る。 一実施形態では、システム10中で有用なマイクロプロセッサ11は、SPA RC International社[David L.Weaver and Tom Germond(eds)]、The SPARC Archite cture Manual Version9 (Prentice−Hall、 1994)(以下「SPARCアーキテクチャ・マニュアル・バージョン9」と 呼ぶ)に記載されているSPARCバージョン9アーキテクチャに従って構成さ れたマイクロプロセッサを含んでいる。マイクロプロセッサ11は一般にレジス タ・セット20、1つまたは複数の機能ユニット21、バス・インタフェース2 2、制御回路23を含めて、いくつかの要素を含んでいる。制御回路23は、プ ログラムによって提供される命令の制御下でマイクロプロセッサ11によって実 行される処理動作を制御する。一般に、制御回路23の制御下で、バス・インタ フェース22は、メモリ管理ユニット14と協働して、メモリ・サブシステム1 2または処理のために特定の入出力サブシステム13によって維持されるデータ 記憶要素から命令およびデータを取り出し、取り出されたデータをレジスタ・セ ット20中のレジスタ中にロードする。同じく制御回路23の制御下で、機能ユ ニット21は、制御回路23によってレジスタ・セット20からそれに転送でき るようになるデータに関して論理、整数および浮動小数点演算、および他の処理 動作を実行して、記憶のためにレジスタ・セット20に転送される処理されたデ ータを生成する。制御回路23はまた、バス・インタフェース22が、同じくメ モリ管理ユニット14と協働して、処理されたデータをレジスタ・セット20か らメモリ・サブシステム12または記憶のために特定の入出力サブシステム13 によって維持されるデータ記憶要素に転送できるようにする。 本発明は、ホスト・マイクロプロセッサとしてのホスト・マイクロプロセッサ 11を制御するために使用されるオペレーティング・システムが、ホスト・マイ クロプロセッサ11によるプログラムのエミュレーション中に、被エミュレート ・プロセッサとしての別のアーキテクチャのマイクロプロセッサ、一実施形態で は(現在Intelの8086、8088、80286、80386、8048 6および「Pentium」ラインのマイクロプロセッサを含んでいる)Int el社のx86ファミリーのマイクロプロセッサを含んでいるマイクロプロセッ サによって処理されるように書かれたプログラムにオペレーティング・システム ・サービスを効率的に提供できるようにする構成を提供する。この構成は、プロ グラムがx86マイクロプロセッサ・ファミリーによって処理されている場合に 一般に使用される、Microsoft WindowsTMオペレーティング・ システムなど、オペレーティング・システムをエミュレートする必要なしにその ようなオペレーティング・システム・サービスな効率的な提供を容易にする。一 実施形態では、ホスト・マイクロプロセッサ11は上述のSPARCアーキテク チャ・マニュアル・バージョン9に従って構成されたマイクロプロセッサを含ん でおり、ホスト・マイクロプロセッサ11とともに使用されるオペレーティング ・システムは「ホスト・オペレーティング・システム」とコールばれ、一般に、 32ビット・オペレーティング・システム・コール構造である3対2Unixオ ペレーティング・システムである。一方、Microsoft WindowsTM オペレーティング・システム、特にMicrosoft WindowsTMV ersion3.1および以前のオペレーティング・システムは、x86マイク ロプロセッサ・ファミリー中のマイクロプロセッサによって処理されているとき に被エミュレート・プログラムとともに使用され、一般に16ビット・オペレー ティング・システムであり、16ビット・コール構造である。 本発明は、より具体的には、Microsoft WindowsTMオペレー ティング・システム中で使用される16ビット・オペレーティング・システム・ コール構造をホスト・マイクロプロセッサ11が効率的にエミュレートすること ができる構成を提供する。Microsoft WindowsTM16ビット・ コール構造では、コンピュータのビデオ表示デバイス上にプログラム用のウィン ドウを提供するコールなど、各タイプのオペレーティング・システム・コールは 、16ビット・オペレーティング・システム・コール・インデックス値の所定の 符号化によって識別される。これにより64k(k=1024)ものタイプのオ ペレーティング・システム・コールとすることができる。各タイプのオペレーテ ィング・システム・コールは、そのオペレーティング・システム・コールを処理 するルーチンへの入口点に関連する。Microsoft WindowsTMオ ペレーティング・システムは64kものタイプのオペレーティング・システムコ ールを用意する必要はなく、したがって実際に64kの入口点を考慮する必要な ないが、エミュレーションを容易にするために、ホスト・マイクロプロセッサ1 1およびそのホスト・オペレーティング・システムは、16ビット・オペレーテ ィング・システム・コール・インデックス値の可能な64kの符号化ごとにオペ レーティング・システム・コールの可能性を考慮することが好ましい。 一般に、x86マイクロプロセッサ・ファミリー中のマイクロプロセッサとと もにMicrosoft WindowsTMオペレーティング・システムに対し てプログラムによって使用されるコールは「ファーコール(far call)」の形を している。先に進む前に、プログラムがx86マイクロプロセッサ・ファミリー 中のマイクロプロセッサに関して記憶位置をどのようにしてアドレス指定するの かについて概説することが有用であろう。一般に、x86マイクロプロセッサ・ ファミリー中のマイクロプロセッサは、複数のセグメントを含んでいるセグメン ト化されたアドレス空間をプログラムに与える。プログラムは、x86マイクロ プロセッサを含んでいるコンピュータ中の記憶位置にアクセスするために、セグ メント化されたアドレス空間中の仮想アドレスを備えている。x86マイクロプ ロセッサは、セグメント化されたアドレス空間中のアドレスを受け取った後、線 形かまたはセグメント化されていない仮想アドレス空間中の仮想アドレスを生成 し、これは次いでアクセスすべき特定の記憶位置を識別する物理アドレスに変換 される。 第2図はこれらのアドレス変換動作を実行する装置の機能ブロック図を示す。 第2図を参照すると、x86マイクロプロセッサ・ファミリーのマイクロプロセ ッサによって与えられるセグメント化された仮想アドレス空間は、1つまたは複 数のコード、データ、スタックおよび余分のセグメントを含めて、いくつかのセ グメントから形成される。セグメント化された仮想アドレス空間は、実際にはい くつかのコード、データ、スタックおよび余分のセグメントから構成されるが、 ただ1つのコード・セグメント、1つのデータ・セグメント、および1つのスタ ック・セグメントが任意の時点で使用されることもある。ただし、複数の余分の セグメントが任意の時点で使用されることもある。コード・セグメント、データ ・セグメントおよびスタック・セグメントの各々はセグメント・レジスタ・セッ ト30中の1つのセグメント・レジスタ30(m)に関連する。所定の数(一実 施形態では3つ)のセグメント・レジスタ30(m)が余分のセグメント用にセ グメント・レジスタ・セット30中に用意され、その所定の数の余分のセグメン トを任意の時点で使用することが可能である。一般に、コード・セグメントはプ ログラム命令コードを記憶するために使用され、データ・セグメントは一般にプ ログラムによって使用されるスタックを記憶するために使用される。アプリケー ション・プログラムはアレイまたは一時データ構造を記憶するなど、様々な目的 で余分のセグメントを使用する。各セグメント・レジスタ30(m)は特定のセ グメント用の記述子ポインタを含んでおり、したがってセグメント・レジスタ3 0(0)はコード・セグメント用の記述子ポインタを含んでおり、セグメント・ レジスタ30(1)はデータ・セグメント用の記述子ポインタを含んでおり、セ グメント・レジスタ30(2)はスタック・セグメント用の記述子ポインタを含 んでおり、セグメント・レジスタ30(3)から30(M)は他のセグメント用 の記述子ポインタを含んでいる。 各セグメント・レジスタ30(m)は、セグメント記述子テーブル31中の( 一般に参照番号31(n)によって識別される)複数のセグメント記述子31( 0)から31(n)のうちの1つを識別する記述子ポインタを含んでいる。各セ グメント記述子は、プログラム用に与えられたセグメント化された仮想アドレス 空間中のセグメントのうちの1つに関連し、それを識別する。セグメント記述子 テーブル31中の各セグメント記述子31(n)は、一般に、アクセス権フィー ルド32(d)、セグメント長フィールド33(d)、およびセグメント・ベー ス・アドレス・フィールド34(d)を含む3つのフィールドを含んでいる。ア クセス権フィールド32(d)はアクセス権情報を含んでおり、その用途につい ては以下で説明する。セグメント・ベース・アドレス・フィールド34(d)は セグメント・ベース仮想アドレスを含んでおり、セグメント長フィールド33( d)はセグメント長値を含んでおり、どちらもセグメント化された仮想アドレス 空間中の特定のセグメントを定義するのに役立つ。セグメント記述子テーブル3 1中のセグメント記述子31(n)はオペレーティング・システムによって維持 されることが好ましく、セグメント・レジスタ30(m)の各々中に維持される 特定の記述子ポインタ値もオペレーティング・システムによって制御されること が好ましい。 プログラムは、メモリ・アクセス動作を開始したとき、セグメント化された仮 想アドレス空間中の、第2図に示される構造を有するセグメント化された仮想ア ドレスを提供する。第2図に示される機能要素は、セグメント化された仮想アド レスをまず線形仮想アドレスに変換し、その線形仮想アドレスから、アクセスす べき特定の物理記憶位置を識別する物理アドレスに変換する。第2図に示すよう に、(アドレス・レジスタ35中に例示的に示される)セグメント化された仮想 アドレス空間中のアドレスはセグメント記述子フィールド36およびオフセット ・フィールド37を含んでいる。セグメント記述子フィールド36は記憶位置が アクセスされるセグメントの特定の1つを識別し、オフセット・フィールド37 はセグメント中へのオフセット値を含んでいる。より具体的には、フィールド3 6中のセグメント記述子は(矢印40で表される)特定のセグメント・レジスタ 30(m)を選択するために使用され、その内容は、セグメント化された仮想ア ドレスを生成する場合に使用すべき(矢印41で表される)特定のセグメント記 述子31(n)を選択するために使用される。選択された記述子31(n)のセ グメント・ベース・アドレス・フィールド34(d)からのベース・アドレスは 加算器42に結合され、セグメント長フィールド33(d)からのセグメント長 値は比較器43の1つの入力に結合される。 アドレスのオフセット・フィールド37は、メモリ・アクセス動作中に使用す べきセグメント中へのセグメントのベースからのオフセットを含んでおり、した がってそれ(オフセット・フィールド37)は、セグメント・ベース・アドレス ・フィールド34(d)からのセグメント・ベース・アドレス値とともに、加算 器42のそれぞれの入力に結合される。加算器42は、オフセットとセグメント ・ベース・アドレス値との合計に対応する値を生成する。その値は、レジスタ3 5中のアドレスによって表される線形仮想アドレス空間中の位置を識別する線形 仮想アドレスLIN_VIRT_ADRSに対応する。その場合、線形仮想アド レスは、線形仮想アドレスを物理アドレスに従来の形で変換する仮想アドレス変 換機構44に結合される。 レジスタ35中のセグメント化された仮想アドレスが、セグメント記述子31 (n)のフィールド33(d)中のセグメント長値によって定義されたセグメン トの末尾の先にあるアドレスを表さないことを検証するために、それ(フィール ド33(d)からのセグメント長値)およびオフセット・フィールド37は比較 器43のそれぞれ入力に結合される。比較器43はオフセット・フィールド37 からのオフセット値をセグメント長フィールド33(d)からのセグメント長値 と比較する。オフセット・フィールド37からのオフセット値がセグメント長フ ィールド33(d)からのセグメント長値に等しいかまたはそれよりも小さいと 比較器43が判定した場合、アドレス・レジスタ35中のセグメント化された仮 想アドレスは、選択されたセグメント記述子31(n)によって定義されたセグ メント内にあるセグメント化された仮想アドレス空間中の位置を表す。一方、オ フセット・フィールド37からのオフセット値がセグメント長フィールド33( d)からのセグメント長値よりも大きいと比較器43が判定した場合、アドレス ・レジスタ35中のセグメント化された仮想アドレスは、選択された記述子31 (n)によって定義されたセグメントの末尾の先にある位置を表す。その場合、 比較器43はSEG LEN VIOLセグメント長違反指示を生成する。SE G LEN VIOLセグメント長違反指示は、例えば、セグメント長違反例外 および処理のためのオペレーティング・システムへのトラップを生じる。 上述のように、各セグメント記述子31(n)はまたアクセス権フィールド3 2(d)を含んでいる。アクセス権フィールド32(d)は一般にメモリ・アク セスを制御する場合に有用なアクセス権情報を含んでいる。アプリケーション・ プログラムによって開始されたアクセス動作がアクセス権フィールド32(d) によって指示されたアクセス権内になる場合、アクセス動作は進行することがで きる。一方、アクセス動作がアクセス権フィールド32(d)によって指示され たアクセス権内にない場合、アクセス動作は進行することができず、その結果、 アクセス権違反例外および処理のためのオペレーティング・システムへのトラッ プが生ずる。x86アーキテクチャでは、アクセス権は、特定のセグメントがア プリケーション・プログラムかまたはオペレーティング・システムのみによって アクセスできるかどうか、またアプリケーション・プログラムが特定のセグメン ト値の記憶位置に情報を記憶できるか否かを制御するために使用され、それによ って特定のアプリケーション・プログラムによるファイルまたはファイルのフィ ールドへの読取り専用アクセスが容易になる。さらに、アクセス権は、特定のセ グメントが「実行のみ」であることを示すために使用できる。「実行のみ」とは 、そのようなセグメントが、アプリケーション・プログラムによってのみ取出し および実行が可能になるプログラム・コードを含んでいることを示す。 上記のように、Microsoft WindowsTM中のオペレーティング ・システム・コールは「ファーコール」の形をしている。x86アーキテクチャ は2つのタイプのコール、すなわちニアコール(near call)およびファーコー ルを考慮する。各タイプのコールは、コールを示すプログラム命令を含んでいる コード・セグメント中の現在位置から同じセグメントまたは異なるセグメント中 の別の位置へ効果的にジャンプする、プログラムの命令ストリーム中のジャンプ または不連続性を効果的に生じる。ニアコールの場合、ジャンプは、ニアコール を開始するプログラム命令を含んでいるコード・セグメントと同じコード・セグ メント内のターゲット位置へのジャンプである。ニアコールの場合、アドレス・ レジスタ35のオフセット・フィールド37中のオフセット値のみを変更する必 要がある。反対に、ファーコールは別のセグメント中のターゲット位置へのジャ ンプである。この場合、線形仮想アドレスを構成する場合に使用されるセグメン ト記述子31(n)を変更する必要があり、したがってこの例ではコード・セグ メントに関連するセグメント・レジスタ30(m)中に記憶された記述子ポイン タも、新しいセグメント記述子31(n)を指示するように変更する必要がある 。さらに、フィールド37中のオフセット値も、新しいセグメント記述子31( n)によって指示されたセグメント中のターゲット位置のオフセットを与えるよ うに必要に応じて変更される。ニアコールならびにファーコールの後、プログラ ムの実行はそれぞれのコード・セグメント中のターゲット位置から始まる命令を 継続する。Microsoft WindowsTM中のオペレーティング・シス テムに対してx86マイクロプロセッサ・ファミリーによって処理されるプロセ ッサによって使用されるコールがファーコールの形をしている場合、オペレーテ ィング・システム・コールに応答して、コード・セグメントに関連するセグメン ト・レジスタ30(m)には、セグメント記述子テーブル31中の特定のセグメ ント記述子31(n)への記述子ポインタがロードされ、アドレス・レジスタ3 5のオフセット・フィールド37中にオフセット値がロードされる。 上記のように、本発明は、x86マイクロプロセッサ・ファミリーのマイクロ プロセッサによる実行のために書かれた被エミュレート・プログラムにオペレー ティング・システム・サービスを提供するために、ホスト・マイクロプロセッサ 11が、そのホスト・オペレーティング・システムを使用して、Microso ft WindowsTMオペレーティング・システム中で使用される16ビット ・オペレーティング・システム・コール構造を効率的にエミュレートすることが できる構成を提供する。そのようなプログラムをエミュレートする場合、ホスト ・マイクロプロセッサ11はまた、第2図に関して上述したセグメント化された 仮想アドレス変換構成をエミュレートして、被エミュレート・プログラムによっ て与えられるアドレスをアクセス動作中に使用するために少なくとも線形仮想ア ドレスに変換することに予備的に留意されたい。そのような変換動作を効率的に 実行する構成が、本発明の譲受人に譲渡され、参照により本発明の一部となる、 Paul H.Hohensee他の名で1996年2月28日に出願された「 System And Method For Emulating A Se gmented Virtual Address Space By A M icroprocessor That Provides A Non−Se gmented Virtual Address Space」と称する米国 特許出願第08/608571に記載されている。 本発明によれば、被エミュレート・プログラムからのオペレーティング・シス テムコールに応答して、オペレーティング・システム・コールを処理するために 使用される、ホスト・マイクロプロセッサ11を制御するオペレーティング・シ ステムのルーチンにホスト・マイクロプロセッサ11が制御権を効率的に移すこ とができるようにするクロスオーバ・テーブル25(第1図)が用意されている 。クロスオーバ・テーブル25は、全体的に参照番号25(c)(第3図)で識 別される複数のエントリを含んでおり、これらのエントリは、被エミュレート・ プログラムからのオペレーティング・システム・コールを処理する場合に、ホス ト・オペレーティング・システムによって使用されるオペレーティング・システ ム・エントリ・ポイント情報を与える。64kのエントリが必要となるN=64 kのオペレーティング・システム・エントリ・ポイントの各々ごとに1つのエン トリ25(c)を与える代わりに、クロスオーバ・テーブル25は(全体的に参 照番号25(c)で識別される)4096個のエントリ25(0)〜25(40 95)を含んでいる。各エントリ25(c)は2つの要素、すなわち「push (c)」命令および「jmpAPIDispatch」命令を含んでおり、また エントリ25(c)中の少なくとも所定の数のバイトを与えるパディング(padd ing)を含んでいる。一実施形態では、ホスト・マイクロプロセッサ11による メモリ・サブシステム12からのエントリ25(c)の効率的な取り出しを可能 にするために、エントリ25(c)はホスト・マイクロプロセッサ11によって 与えられたアドレス空間中の16バイトの境界上に整列し、各エントリ25(c )の長さは16バイトであり、したがって各エントリ25(c)の長さが16バ イトになるようにパディングが与えられる。「push(c)」命令は、ホスト ・マイクロプロセッサ11が被エミュレート・プログラムの処理のためにホスト ・マイクロプロセッサ11によって現在使用されているスタック上で値「c」を プッシュできるようにする。「jmpAPIDispatch」命令は、ホスト ・マイクロプロセッサ11がスタックの変更およびオペレーティング・システム コールを処理するためのホスト・オペレーティング・システムの適切なルーチン の呼び出しを含めて、ホスト・マイクロプロセッサ11が複数の動作を実行でき るようにするルーチン「APIDispatch」にホスト・マイクロプロセッ サ11がジャンプできるようにする。 APIDispatchルーチンは、前にスタック上にプッシュされた値「c 」を他の情報とともに使用して、特定のオペレーティング・システム・コール・ インデックス値を識別し、それによって被エミュレート・プログラムによってな された特定のタイプのオペレーティング・システム・コールを識別する。これに より、オペレーティング・システム・コールを処理する場合に使用すべきオペレ ーティング・システム・ルーチンのうちの特定のルーチンをホスト・オペレーテ ィング・システムが決定できるようになる。上記のように、64kもの可能なエ ントリ・ポイントがあり、一方、クロスオーバ・テーブル25のエントリ25( c)中の「push(c)」命令に応答してスタック上にプッシュされる「c」 の可能な値は4096個しかない。しかしながら、また上記のように、オペレー ティング・システム・コールがファーコールであるので、コード・セグメントの セグメント・レジスタ30(m)中のコード・セグメントの記述子ポインタの値 も変更される。オペレーティング・システム・コールに応答してコード・セグメ ントのセグメント・レジスタ30(m)中にロードされるコード・セグメント記 述子ポインタの値は、オペレーティング・システム・ルーチンがオペレーティン グ・システム・コールを処理するのに適した64kのエントリ・ポイントのうち のエントリ・ポイントを識別するために十分な追加の情報を与えるように選択さ れる。したがって、ホスト・マイクロプロセッサ11は、APIDispatc hルーチンの実行中、コード・セグメント・ポインタの値および「pushプッ シュ(c)」命令に応答してスタック上にプッシュされた値を使用する。 さらに本発明によれば、Microsoft WindowsTMオペレーティ ング・システムによって与えられる16ビット・オペレーティング・システムコ ール構造中の64kのオペレーティング・システム・コールエントリ・ポイント の各々は、第4図に関して説明するように構成される特定のファーコール・ター ゲット・アドレスに関連する。一実施形態では、各エントリ・ポイント用に与え られるターゲット・アドレスは、第4図に示されるAPIコール・ターゲット・ アドレス・テーブル26中に与えられる。第4図を参照すると、APIコール・ ターゲット・アドレス・テーブル26は(全体的に参照番号26(n)で識別さ れる)複数のエントリ26(0)〜26(N−1)を含んでいる。「N」はオペ レーティング・システム・コール用の可能なエントリ・ポイントの数を表し、「 n」の各値はオペレーティング・システム・コール・インデックス値の1つに対 応する。本発明の一実施形態では64kの可能なエントリ・ポイントがあるので 、テーブル26中には64kのエントリがある。被エミュレート・プログラムは 、一般に「ダイナミッック・リンキング」、「バインディング」、「アドレス分 解」または「フィックスアップ」(それらを集合的に「フィックスアップ」と呼 ぶ)と呼ばれるプロセス中にホスト・マイクロプロセッサ11によってロードさ れるので、ホスト・マイクロプロセッサ11は、被エミュレート・プログラム用 の実行可能なプログラム・コード中にオペレーティング・システムごとに特定の タイプのオペレーティング・システム・コールに適したターゲット・アドレス・ テーブル26からのターゲット・アドレスを与える。したがって、被エミュレー ト・プログラムの特定の命令が、プログラムがロードされるフィックスアップ・ プロセス中に特定のオペレーティング・システム・コール・インデックス値「x 」に関連するタイプのオペレーティング・システム・コールである場合、ホスト ・マイクロプロセッサ11はその命令にAPIコール・ターゲット・アドレス・ テーブル26のエントリ26(x)からのターゲット・アドレスを与える。 APIコール・ターゲット・アドレス・テーブル26中の各エントリ26(n )は32ビットを含んでいる。オペレーティング・システム・コールがエントリ 26(n)からのターゲット・アドレスを使用してなされる場合、コード・セグ メント用のセグメント・レジスタ30(m)の記述子ポインタとして高次の16 ビットが使用され、アドレス・レジスタ35(第2図)のオフセット・フィール ド37用のオフセット値としてエントリ26(n)の低次の16ビットが使用さ れる。上記のように、ホスト・マイクロプロセッサ11は、オペレーティング・ システム・コールに適したエントリ・ポイントの識別にコード・セグメントのセ グメント・レジスタ30(m)中のコード・セグメントの記述子ポインタの値を 利用し、セグメント記述子テーブル31中の16個の連続するセグメント記述子 31(n)がこの目的に割り振られ、記述子ポインタ用の16個の連続する値に 関連し、ベース値「BASIS」によって指示されるセグメント記述子31(B ASIS)から始まり、値「BASIS+(DESC_LEN*15」によって 指示されるセグメント記述子31(BASIS+15)まである。「DESC_ LEN」は各セグメント記述子の長さであり、「*」は乗算動作を示す。そのよ うに割り振られた16個のセグメント記述子31(n)はすべて、クロスオーバ ・テーブル25の第1のエントリ25(0)を指示するそれらのフィールド34 (d)中にセグメント・ベース・アドレスを有する。 APIコール・ターゲット・アドレス・テーブル26の各エントリ26(n) 中のターゲット・アドレスは次のように構成される。各エントリ26(n)の高 次の16ビットは、8バイトのセグメント記述子31(n)用の値「BASIS (8*(n div 4096)」を有するように形成される。「*」は乗算動 作を示し、「div」は除算動作を示す。「a div b」の結果は「a」を 「b」で割った商の整数部分である。したがって、 (a)「第1のオペレーティング・システム・コール・タイプ・セット」とし て識別され、0から4095までの「n」に関連する最初の4096個のタイプ のオペレーティング・システム・コールの場合、0と4095(両端の値を含む )の間のnに対して「n div 4096」=0が成り立つので、ターゲット ・アドレス・エントリ26(0)〜26(4095)の高次の16ビットは値「 BASIS」を含むことになり、したがってそれによって与えられる記述子ポイ ンタは値「BASIS」によって指示されるセグメント記述子31(BASIS )を指示することになる。 (b)「第2のオペレーティング・システム・コール・タイプ・セット」とし て識別され、4096から8191までの「n」に関連する次の4096個のタ イプのオペレーティング・システム・コールの場合、4096と8191(両端 の値を含む)の間のnに対して「n div 4096」=1が成り立つので、 ターゲット・アドレス・エントリ26(4096)〜26(8191)の高次の 16ビットは値「BASIS+8」を含むことになり、したがってそれによって 与えられる記述子ポインタはセグメント記述子31(BASIS+1)を指示す ることになる。 以下同様。また (c)「16オペレーティング・システム・コール・タイプ・セット」として 識別され、64k−4095から64k−1までの「n」に関連する最後の16 個のセットの4096個のタイプのオペレーティング・システム・コールの場合 、64(k)−4095と64k−1(両端の値を含む)の間の「n」に対して 「n div 4096」=15が成り立つので、ターゲット・アドレス・エン トリ26(64k−4095)〜26(64k−1)との高次の16ビットは値 「BASIS+(8*15)」を含むことになり、したがってそれによって与え られる記述子ポインタはセグメント記述子31(BASIS+15)を指示する ことになる。 各ターゲット・アドレス・エントリ26(n)の低次の16ビットは値「nm od 4096)*×10」を有するように形成される。「*」は乗算動作を示 し、「mod」はモジュロ動作を示す。「a mod b」の結果は「a」を「 b」で割った商の余りの部分であり、「0×10」は、16バイトのクロスオー バ・テーブル・エントリ25(c)に対して16進値「10」(10進値16に 対応する)を示す。したがって、一連の4096個の連続するターゲット・アド レス・エントリ26(0)...26(4095)、26(4096)...2 6(8191)、...、26(64k−4096)...26(64k)ごと に、 (i)n=0、4096、...、64k−4096に対して「n mod4 096」=0が成り立つので、各セット中の第1のエントリの低次のビット26 (0)、26(4096)、...、26(64k−4096)は値0を含んで いる。 (ii)n=1、4097、...、64k−4095に対して「n mod4 096」=0が成り立つので、各セット中の第2のエントリの低次のビット26 (1)、26(4097)、...、26(64k−4095)は16進値「1 0」を含んでいる。 (iii)n=2、4098、...、64k−4094に対して「n mod 4096」=2が成り立つので、各セット中の第3のエントリの低次のビット2 6(2)、26(4098)、...、26(64k−4094)は16進値「 20」を含んでいる。 (iv)n=4095、8191、...、64kに対して「n mod 40 96」=4095(16進表示で「FFF」に対応する))が成り立つので、各 セット中の最後のエントリの低次のビット26(4095)、26(8191) 、...、26(64k)は16進値「FFF0」を含んでいる。 上記のように、オペレーティング・システム・コールに関して使用するために 割り振られるセグメント記述子テーブル31中の16個の連続するセグメント記 述子31の各々は、クロスオーバ・テーブル25中の第1のエントリ25(0) を指示するそれぞれのフィールド34(d)中にセグメント・ベース・アドレス を含んでいる。また上記のように、x86ファミリーのマイクロプロセッサ中の オペレーティング・システム・コールはファーコールであるので、ホスト・マイ クロプロセッサ11によるエミュレーション中、関連するタイプのオペレーティ ング・システム・コール用のターゲット・アドレス・エントリ26(n)の高次 の16ビットに対応するコールのターゲット・アドレスの高次の16ビットは、 コード・セグメントのセグメント・レジスタ30(m)中に新しい記述子ポイン タとしてロードされる。この記述子ポインタはセグメント記述子31(BASI S)、...、31(BASIS+15)中の1つを指示し、これらはすべてク ロスオーバ・テーブル25中の第1のエントリ25(0)を指示するそれらのフ ィールド34(d)中にセグメント・ベース・アドレスを有する。さらに、オペ レーティング・システム・コールのエミュレーション中、ホスト・マイクロプロ セッサ11は、関連するオペレーティング・システム・コール・タイプ用のター ゲット・アドレス・エントリの低次の16ビットに対応するコールのターゲット ・アドレスの低次の16ビットをアドレス・レジスタ35のオフセット・フィー ルド37中にロードする。したがって、コード・セグメントに関連するセグメン ト・レジスタ30(m)中の記述子ポインタによって指示されるセグメント記述 子テーブル31(第2図参照)中のセグメント記述子31(n)によって与えら れるセグメント・ベース・アドレスと、アドレス・レジスタ35のフィールド3 7中のオフセットとの和は、クロスオーバ・テーブル25中のエントリ25(c )のうちの1つ、特にc=「n mod 4096」によって決定されるエント リ25(c)である。「n」はオペレーティング・システム・コール・タイプ用 のインデックスに対応する。 オペレーティング・システム・コールの結果は、ホスト・マイクロプロセッサ 11が、エントリ25(c)中の命令の処理を開始すること、特に「push( c)」命令の実行中に値「c」をスタック上にプッシュし、「jmpAPIDi spatch」命令の実行中にAPIDispatchルーチンにジャンプする ことが可能になることである。上記のように、APIDispatchルーチン は、ホスト・マイクロプロセッサ11が、とりわけ、push(c)命令の結果 としてスタック上にプッシュされた値「c」およびコード・セグメントに関連す るセグメント・レジスタ30(m)中の記述子ポインタの値を使用して、16ビ ット・オペレーティング・システム・コール・タイプ・インデックス値「n」を 生成できるようにする。APIDispatchルーチンの制御下でホスト・マ イクロプロセッサ11によって実行される動作を第5図のフローチャートに示す 。第5図を参照すると、ホスト・マイクロプロセッサ11は、APIDispa tchルーチンの制御下で、コード・セグメントのセグメント・レジスタ30( m)からの記述子ポインタの値を保存し(ステップ100)、上記のように、オ ペレーティング・システム・コール用に割り振られたセグメント記述子テーブル 31(n)中の一連の16個のセグメント記述子を指示する「BASIS」用の 値を引く(ステップ101)。次いでホスト・マイクロプロセッサ11は、差値 を(8バイト・セグメント記述子の場合)8で割ることによってオペレーティン グ・システム・コール・タイプ・セット値を決定し(ステップ102)、それに よってオペレーティング・システム・コールが第1の4096のタイプのオペレ ーティング・システム・コール(0〜4095までの「n」に関連する)、第2 の4096のタイプのオペレーティング・システム・コール(4096〜819 1までの「n」に関連する)、または16セットの4096のタイプのオペレー ティング・システム・コール(64k−4095〜64k−1までの「n」に関 連する)中のインデックスを有するオペレーティング・システム・コール・タイ プであるかどうかを示す。次いでホスト・マイクロプロセッサ11は(ステップ 103)、オペレーティング・システム・コール・タイプ・セットの2進符号化 値と、「push(c)」命令<OS_CALL_TYPE_SET|c>(「 |」は連結動作を示す)に応答してスタック上にプッシュされた値「c」とを連 結し、それによって被エミュレート・プログラムからのオペレーティング・シス テムコール用のオペレーティング・システム・コール・インデックス値を構成す る。ホスト・マイクロプロセッサ11は以下の動作を実行することができること を理解されたい。 (i)差値の2進表示の低次の3ビット(2:0)をクリアすることによる乗 算動作(ステップ102)。その場合、オペレーティング・システム・コール・ タイプ・セット値は2進表示の4ビット(6:3)によって定義されることを理 解されたい。 (ii)連結動作(ステップ103)。これは次のステップによって実行され る。すなわち (a)オペレーティング・システム・コール・タイプ・セット値を定義した4 つのビット(6:3)を9ビット左に(すなわちより高次のビット位置に)シフ トし(ステップ103a)、それによってオペレーティング・システム・コール ・タイプ・セット値を定義したビットを2進表示のビット(15:12)で与え る。残りのビット(11:0)は0である。 (b)上記の(ii)(a)で構成された値と「c」の値との論理和をとる( ステップ103b)。 上記の(ii)(a)で生成された値はオペレーティング・システム・コール用 の16ビット・オペレーティング・システム・コール・タイプ・インデックス「 n」に対応することを理解されたい。ホスト・マイクロプロセッサ11がいくつ かの動作を実行した後、APIDispatchルーチンは、ホスト・マイクロ プロセッサ11が、スタックを被エミュレート・プログラムのエミュレーション 中に使用される16ビット・スタックからマイクロプロセッサによって通常使用 される32ビット・スタックに切り換える動作など、ルーチンを処理するために マイクロプロセッサのオペレーティング・システムへのコールを容易にするのに 必要な他の動作を実行し、構成されたオペレーティング・システム・コール・イ ンデックス値を使用して、オペレーティング・システム・コールに必要なサービ スを提供するホスト・オペレーティング・システム・ルーチンを識別することが できるようにする。 本発明はいくつかの利点を提供する。特に、本発明は、ホスト・マイクロプロ セッサ11によるエミュレーションを容易にする効率的な構成、およびMicr osoft WindowsTMオペレーティング・システムの制御下で、例えば X86マイクロプロセッサ・ファミリーのマイクロプロセッサによって実行され るように書かれた被エミュレート・プログラムによって出されるホスト・オペレ ーティング・システムのオペレーティング・システム・コールを提供する。特に 、本発明は、Microsoft WindowsTMオペレーティング・システ ム値のオペレーティング・システム・コール中で使用される可能なオペレーティ ング・システム・コール・インデックス値の数よりもエントリの数がはるかに少 なくて済むクロスオーバ・テーブル25が使用できる構成を提供する。 第1図から第5図に関して上述した構成に多数の変更を加えることができるこ とを理解されたい。例えば、この構成は、4096個のエントリ25(0)〜2 5(4095)のクロスオーバ・テーブル25を使用し、各エントリは16個の オペレーティング・システム・コール・セットのうちの1つに関連し、各オペレ ーティング・システム・コール・セットはセグメント記述子31(n)に関連す るものとして説明したが、エントリの数がより多いまたはより少ないクロスオー バ・テーブルが使用でき、それに応じてセグメント記述子の数が減少または増加 することを理解されたい。したがって、この構成は、2048個のエントリのク ロスオーバ・テーブル25を含んでおり、各エントリが32個のオペレーティン グ・システム・コール・セットのうちの1つに関連し、各オペレーティング・シ ステム・コール・セットが32個のセグメント記述子31(n)のうちの1つに 関連してもよい。一方、この構成は、8192個のエントリのクロスオーバ・テ ーブルを使用し、各エントリが8個のオペレーティング・システム・コール・セ ットのうちの1つに関連し、各オペレーティング・システム・コール・セットが 8個のセグメント記述子31(n)のうちの1つに関連してもよい。 さらに、この構成は、フィックスアップ動作に関して使用されるターゲット・ アドレスを与えるようにAPIコール・ターゲット・アドレス・テーブル26を 利用するものとして説明したが、ホスト・マイクロプロセッサは、代わりにター ゲット・アドレスを直接生成し、高次の16ビットが値「BASIS+(DEC S_LEN*n div 4096)を有し、低次の16ビットが値「n mo d 4096*CT_ENTRY_LEN」(「CT_ENTRY_LEN」は クロスオーバ・テーブル中の各エントリ中の数を表す)を有するようにしてもよ い。 さらに、この構成は、8バイト・セグメント記述子31(n)および16バイ ト・クロスオーバ・テーブル・エントリ35(c)を利用するものとして説明し たが、異なる長さのセグメント記述子・クロスオーバ・テーブル・エントリも使 用できることを理解されたい。 本発明によるシステムの全部または一部を専用ハードウェアまたは汎用コンピ ュータ・システムまたはその組合せから構成し、その一部分を適切なプログラム によって制御できることを理解されたい。プログラムの全部または一部をシステ ムの一部をなすか、またはシステム上に従来の形で記憶することもでき、あるい はプログラムの全部または一部を、従来の形で情報を転送するネットワークまた は他の機構上でシステムに供給することもできる。さらに、システムは、システ ムに直接接続されるか、または従来の形で情報を転送するネットワークまたは他 の機構上でシステムに情報を転送するオペレータ入力要素(図示せず)を使用し て、オペレータによって提供された情報によって操作し、かつ/または他の形で 制御できることを理解されたい。 以上の説明は本発明の特定の実施形態に限定した。しかしながら、様々な変形 および変更を本発明に加え、本発明の利点の一部または全部を達成できることを 理解されたい。下記の請求の範囲の目的は上記およびそのような他の変形および 変更が本発明の真の主旨および範囲内に入るようにすることである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スリーニヴァサン,サニル アメリカ合衆国・10549・ニューヨーク 州・マウント キスコ・ビクトリア ドラ イブ・4002 (72)発明者 アハー,デビット アメリカ合衆国・02056・マサチューセッ ツ州・ノーフォーク・ヌーン ヒル アヴ ェニュウ・32 【要約の続き】 ム・コール・セット識別子およびクロスオーバ・テーブ ル中の選択されたエントリのオフセットに対応する保存 された値に関してオペレーティング・システム・コール ・タイプ識別子値を生成する。

Claims (1)

  1. 【特許請求の範囲】 1.プログラムを処理するためのプロセッサを含んでいるコンピュータ中で使用 するオペレーティング・システム・コール制御サブシステムであって、プログラ ムがオペレーティング・システム・コール命令タイプの少なくとも1つの命令を 有し、オペレーティング・システム・コール命令タイプの前記命令が、複数のタ イプのオペレーティング・システム・コールのうちの1つを識別し、各タイプの オペレーティング・システム・コールが、値の所定の範囲内に入るオペレーティ ング・システム・コール・タイプ識別子値に関連し、 A.所定の範囲の所定の小部分に対応するいくつかのエントリを有するように構 成されたクロスオーバ・テーブルであって、前記クロスオーバ・テーブル中の各 エントリが、クロスオーバ・テーブルへのエントリのオフセットに対応する値を プロセッサが保存できるようにする命令を有するクロスオーバ・テーブルと、 B.オペレーティング・システム・コール命令タイプの少なくとも1つの命令に 、一組のオペレーティング・システム・コール・セット識別子中のオペレーティ ング・システム・コール・セット識別子を含んでいるターゲット・アドレス値を 与えるオペレーティング・システム・コール命令タイプ・アドレス分解モジュー ルであって、オペレーティング・システム・コール・セット識別子の数にクロス オーバ・テーブル・エントリの数を掛けたものが所定の範囲に対応し、オフセッ ト値がクロスオーバ・テーブルへのエントリに対するオフセットに対応するオペ レーティング・システム・コール命令タイプ・アドレス分解モジュールと、 C.オペレーティング・システム・コール命令タイプの少なくとも1つの命令を プロセッサが処理することに応答して、(a)ターゲット・アドレスからのオペ レーティング・システム・コール・セット識別子を保存し、(b)ターゲット・ アドレスのオフセット値を使用して、クロスオーバ・テーブル中のエントリのう ちの1つを選択し、(c)クロスオーバ・テーブル中の選択されたエントリから の命令を処理して、クロスオーバ・テーブル中の選択されたエントリのオフセッ トに対応する値を保存し、(d)保存されたオペレーティング・システム・コー ル・セット識別子およびクロスオーバ・テーブル中の選択されたエントリのオフ セットに対応する保存された値に関してオペレーティング・システム・コールに 関連するオペレーティング・システム・コール・タイプ識別子値を生成するよう に構成されたオペレーティング・システム・コール命令タイプ処理モジュールと を含んでいるオペレーティング・システム・コール制御サブシステム。 2.前記プログラムが、複数のセグメントを含んでいるセグメント化されたアド レス空間を備えており、各セグメントが一連のセグメント記述子のうちの1つに よって定義され、現在記述子のセグメント記述子がセグメント記述子ポインタに よって指示され、セット中のオペレーティング・システム・コール・セット識別 子が前記セグメント記述子のうちの連続するセグメントを指示し、プロセッサが 、オペレーティング・システム・コール命令タイプの少なくとも1つの命令を処 理する間、オペレーティング・システム・コール・セット識別子をセグメント記 述子ポインタとして提供する請求項1に記載のオペレーティング・システム・コ ール制御サブシステム。 3.各セグメント記述予がセグメントのベースを指示し、前記セグメントのうち の1つがクロスオーバ・テーブルを含んでおり、オペレーティング・システムコ ール・セット識別子によって指示されたセグメント記述子のすべてが、クロスオ ーバ・テーブルを含んでいるセグメントを指示する請求項2に記載のオペレーテ ィング・システム・コール制御サブシステム。 4.オペレーティング・システム・コール命令タイプ処理モジュールが、オペレ ーティング・システム・コール・セット識別子によって指示されたセグメント記 述子によって指示されたセグメントおよびターゲット・アドレスからのオフセッ ト値に関連してクロスオーバ・テーブルのエントリのうちの1つを選択するよう に構成された請求項3に記載のオペレーティング・システム・コール制御サブシ ステム。 5.前記セグメント記述子がセグメント記述子テーブル中のセグメント記述子エ ントリを形成し、セグメント記述子ポインタが、現在セグメントのセグメント記 述子を含んでいるエントリのうちの1つを指示し、セット中のオペレーティング ・システム・コール・セット識別子が、セグメント記述子テーブル・オフセット 値に関連するベース・エントリからのセグメント記述子テーブル中の連続するエ ントリを指示し、ターゲット・アドレスがセグメント記述子ポインタを提供し、 オペレーティング・システム・コール命令タイプ処理モジュールが、セグメント 記述子ポインタおよびセグメント記述子テーブル・オフセット値に関連してオペ レーティング・システム・コール・セット識別子を生成するように構成された請 求項2に記載のオペレーティング・システム・コール制御サブシステム。 6.オペレーティング・システム・コール命令タイプ処理モジュールが、保存さ れたオペレーティング・システム・コール・セット識別子を高次部分とし、かつ クロスオーバ・テーブル中の選択されたエントリのオフセットに対応する保存さ れた値を低次部分として、オペレーティング・システム・コール・セット識別子 を生成するように構成された請求項1に記載のオペレーティング・システム・コ ール制御サブシステム。 7.プロセッサとともに使用するためのオペレーティング・システム・コール制 御サブシステムを提供するためにコンピュータに接続して使用するコンピュータ ・プログラム製品であって、プロセッサが、オペレーティング・システムコール 命令タイプの少なくとも1つの命令を有するプログラムを処理するように構成さ れ、オペレーティング・システム・コール命令タイプの前記命令が、複数のタイ プのオペレーティング・システム・コールのうちの1つを識別し、各タイプのオ ペレーティング・システム・コールが、値の所定の範囲内に入るオペレーティン グ・システム・コール・タイプ識別子値に関連し、 A.所定の範囲の所定の小部分に対応するいくつかのエントリを有するように構 成されたクロスオーバ・テーブルであって、前記クロスオーバ・テーブル中の各 エントリが、クロスオーバ・テーブルへのエントリのオフセットに対応する値を プロセッサが保存できるようにする命令を有するクロスオーバ・テーブルと、 B.コンピュータが、オペレーティング・システム・コール命令タイプの少なく とも1つの命令に、一組のオペレーティング・システム・コール・セット識別子 中のオペレーティング・システム・コール・セット識別子を含んでいるターゲッ ト・アドレス値を与えることができるようにするオペレーティング・システム・ コール命令タイプ・アドレス分解モジュールであって、オペレーティング・シス テム・コール・セット識別子の数にクロスオーバ・テーブル・エントリの数を掛 けたものが所定の範囲に対応し、オフセット値がクロスオーバ・テーブルへのエ ントリに対するオフセットに対応するオペレーティング・システム・コール命令 タイプ・アドレス分解モジュールと、 C.コンピュータが、オペレーティング・システム・コール命令タイプの少なく とも1つの命令をプロセッサが処理することに応答して、(a)ターゲット・ア ドレスからのオペレーティング・システム・コール・セット識別子を保存し、( b)ターゲット・アドレスのオフセット値を使用して、クロスオーバ・テーブル 中のエントリのうちの1つを選択し、(c)クロスオーバ・テーブル中の選択さ れたエントリからの命令を処理して、クロスオーバ・テーブル中の選択されたエ ントリのオフセットに対応する値を保存し、(d)保存されたオペレーティング ・システム・コール・セット識別子およびクロスオーバ・テーブル中の選択され たエントリのオフセットに対応する保存された値に関してオペレーティング・シ ステム・コールに関連するオペレーティング・システム・コール・タイプ識別子 値を生成することができるように構成されたオペレーティング・システム・コー ル命令タイプ処理モジュールとが符号化されているコンピュータ読取り可能媒体 を含んでいるコンピュータ・プログラム製品。 8.前記プログラムが、複数のセグメントを含んでいるセグメント化されたアド レス空間を備えており、各セグメントが一連のセグメント記述子のうちの1つに よって定義され、現在記述子のセグメント記述子がセグメント記述子ポインタに よって指示され、セット中のオペレーティング・システム・コール・セット識別 子が前記セグメント記述子のうちの連続するセグメントを指示し、プロセッサが 、オペレーティング・システム・コール命令タイプの少なくとも1つの命令を処 理する間、オペレーティング・システム・コール・セット識別子をセグメント記 述子ポインタとして提供する請求項7に記載のコンピュータ・プログラム製品。 9.各セグメント記述子がセグメントのベースを指示し、前記セグメントのうち の1つがクロスオーバ・テーブルを含んでおり、オペレーティング・システムコ ール・セット識別子によって指示されたセグメント記述子のすべてが、クロスオ ーバ・テーブルを含んでいるセグメントを指示する請求項9に記載のコンピュー タ・プログラム製品。 10.オペレーティング・システム・コール命令タイプ処理モジュールが、オペ レーティング・システム・コール・セット識別子によって指示されたセグメント 記述子によって指示されたセグメントおよびターゲット・アドレスからのオフセ ット値に関連してクロスオーバ・テーブルのエントリのうちの1つをコンピュー タが選択することができるように構成された請求項9に記載のコンピュータ・プ ログラム製品。 11.前記セグメント記述子がセグメント記述子テーブル中のセグメント記述子 エントリを形成し、セグメント記述子ポインタが、現在セグメントのセグメント 記述子を含んでいるエントリのうちの1つを指示し、セット中のオペレーティン グ・システム・コール・セット識別子が、セグメント記述子テーブル・オフセッ ト値に関連するベース・エントリからのセグメント記述子テーブル中の連続する エントリを指示し、ターゲット・アドレスがセグメント記述子ポインタを提供し 、オペレーティング・システム・コール命令タイプ処理モジュールが、セグメン ト記述子ポインタおよびセグメント記述子テーブル・オフセット値に関連してオ ペレーティング・システム・コール・セット識別子をコンピュータが生成するこ とができるように構成された請求項8に記載のコンピュータ・プログラム製品。 12.オペレーティング・システム・コール命令タイプ処理モジュールが、保存 されたオペレーティング・システム・コール・セット識別子を高次部分とし、か つクロスオーバ・テーブル中の選択されたエントリのオフセットに対応する保存 された値を低次部分として、オペレーティング・システム・コール・セット識別 子をコンピュータが生成することができるように構成された請求項7に記載のコ ンピュータ・プログラム製品。 13.プログラムを処理するためのプロセッサを含んでいるコンピュータととも に使用するためのオペレーティング・システム・コール制御方法であって、プロ グラムがオペレーティング・システム・コール命令タイプの少なくとも1つの命 令を有し、オペレーティング・システム・コール命令タイプの前記命令が、複数 のタイプのオペレーティング・システム・コールのうちの1つを識別し、各タイ プのオペレーティング・システム・コールが、値の所定の範囲内に入るオペレー ティング・システム・コール・タイプ識別子値に関連し、 A.所定の範囲の所定の小部分に対応するいくつかのエントリを有するように構 成されたクロスオーバ・テーブルを設けるステップであって、前記クロスオーバ ・テーブル中の各エントリが、クロスオーバ・テーブルへのエントリのオフセッ トに対応する値をプロセッサが保存できるようにするための命令を有するステッ プと、 B.オペレーティング・システム・コール命令タイプの少なくとも1つの命令に 、一組のオペレーティング・システム・コール・セット識別子中のオペレーティ ング・システム・コール・セット識別子を含んでいるターゲット・アドレス値を 与えるステップを含んでいるオペレーティング・システム・コール命令タイプ・ アドレス分解ステップであって、オペレーティング・システム・コール・セット 識別子の数にクロスオーバ・テーブル・エントリの数を掛けたものが所定の範囲 に対応し、オフセット値がクロスオーバ・テーブルへのエントリに対するオフセ ットに対応するオペレーティング・システム・コール命令タイプ・アドレス分解 ステップと、 C.オペレーティング・システム・コール命令タイプの少なくとも1つの命令を プロセッサが処理することに応答して、(a)ターゲット・アドレスからのオペ レーティング・システム・コール・セット識別子を保存するステップ、(b)タ ーゲット・アドレスのオフセット値を使用して、クロスオーバ・テーブル中のエ ントリのうちの1つを選択するステップ、(c)クロスオーバ・テーブル中の選 択されたエントリからの命令を処理して、クロスオーバ・テーブル中の選択され たエントリのオフセットに対応する値を保存するステップ、および(d)保存さ れたオペレーティング・システム・コール・セット識別子およびクロスオーバ・ テーブル中の選択されたエントリのオフセットに対応する保存された値に関して オペレーティング・システム・コールに関連するオペレーティング・システム・ コール・タイプ識別子値を生成するステップを含んでいるオペレーティング・シ ステム・コール命令タイプ処理ステップと を含んでいるオペレーティング・システム・コール制御方法。 14.前記プログラムが複数のセグメントを含んでいるセグメント化されたアド レス空間を備えており、各セグメントが一連のセグメント記述子のうちの1つに よって定義され、現在記述子のセグメント記述子がセグメント記述子ポインタに よって指示され、セット中のオペレーティング・システム・コール・セット識別 子が前記セグメント記述子のうちの連続するセグメントを指示し、プロセッサが オペレーティング・システム・コール命令タイプの少なくとも1つの命令を処理 する間、オペレーティング・システム・コール・セット識別子をセグメント記述 子ポインタとして提供する請求項13に記載のオペレーティング・システム・コ ール制御方法。 15.各セグメント記述子がセグメントのベースを指示し、前記セグメントのう ちの1つがクロスオーバ・テーブルを含んでおり、オペレーティング・システム コール・セット識別子によって指示されたセグメント記述子のすべてが、クロス オーバ・テーブルを含んでいるセグメントを指示する請求項14に記載のオペレ ーティング・システム・コール制御方法。 16.オペレーティング・システム・コール命令タイプ処理ステップが、オペレ ーティング・システム・コール・セット識別子によって指示されたセグメント記 述子によって指示されたセグメントおよびターゲット・アドレスからのオフセッ ト値に関連してクロスオーバ・テーブルのエントリのうちの1つを選択するステ ップを含んでいる請求項15に記載のオペレーティング・システム・コール制御 方法。 17.前記セグメント記述子がセグメント記述子テーブル中のセグメント記述子 エントリを形成し、セグメント記述子ポインタが、現在のセグメントのセグメン ト記述子を含んでいるエントリのうちの1つを指示し、セット中のオペレーティ ング・システム・コール・セット識別子が、セグメント記述子テーブル・オフセ ット値に関連するベース・エントリからのセグメント記述子テーブル中の連続す るエントリを指示し、ターゲット・アドレスがセグメント記述子ポインタを提供 し、オペレーティング・システム・コール命令タイプ処理ステップが、セグメン ト記述子ポインタおよびセグメント記述子テーブル・オフセット値に関連してオ ペレーティング・システム・コール・セット識別子を生成するステップを含んで いる請求項14に記載のオペレーティング・システム・コール制御方法。 18.オペレーティング・システム・コール命令タイプ処理ステップが、保存さ れたオペレーティング・システム・コール・セット識別子を高次部分とし、かつ クロスオーバ・テーブル中の選択されたエントリのオフセットに対応する保存さ れた値を低次部分として、オペレーティング・システム・コール・セット識別子 を生成するステップを含んでいる請求項13に記載のオペレーティング・システ ムコール制御方法。
JP55545199A 1998-04-20 1999-04-20 オペレーティング・システム・コールを効率的にエミュレートする構成を提供するシステムおよび方法 Pending JP2002506553A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/062,908 US6530017B1 (en) 1998-04-20 1998-04-20 System and method providing an arrangement for efficiently emulating an operating system call
US09/062,908 1998-04-20
PCT/US1999/008631 WO1999057636A2 (en) 1998-04-20 1999-04-20 System and method providing an arrangement for efficiently emulating an operating system call

Publications (1)

Publication Number Publication Date
JP2002506553A true JP2002506553A (ja) 2002-02-26

Family

ID=22045634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP55545199A Pending JP2002506553A (ja) 1998-04-20 1999-04-20 オペレーティング・システム・コールを効率的にエミュレートする構成を提供するシステムおよび方法

Country Status (6)

Country Link
US (1) US6530017B1 (ja)
JP (1) JP2002506553A (ja)
CA (1) CA2294181A1 (ja)
DE (1) DE19980891T1 (ja)
GB (1) GB2342480B (ja)
WO (1) WO1999057636A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024580A1 (en) * 2002-02-25 2004-02-05 Oak Technology, Inc. Server in a media system
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
GB0516438D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Adding functionality to a computing device using thread call tables
US7945915B1 (en) * 2006-12-12 2011-05-17 Oracle America, Inc. Efficient operating system interposition mechanism
US7730278B2 (en) * 2007-07-12 2010-06-01 Oracle America, Inc. Chunk-specific executable code for chunked java object heaps
US7716449B2 (en) * 2007-07-12 2010-05-11 Oracle America, Inc. Efficient chunked java object heaps

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01273136A (ja) * 1988-04-26 1989-11-01 Oki Electric Ind Co Ltd オペレーティングシステムのファームウェア化方式
US5214778A (en) * 1990-04-06 1993-05-25 Micro Technology, Inc. Resource management in a multiple resource system
US5765206A (en) * 1996-02-28 1998-06-09 Sun Microsystems, Inc. System and method for emulating a segmented virtual address space by a microprocessor that provides a non-segmented virtual address space
US6021275A (en) * 1996-08-05 2000-02-01 General Magic, Inc. Object code structure and method for translation of architecture independent program implementations
US6086623A (en) * 1997-06-30 2000-07-11 Sun Microsystems, Inc. Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system

Also Published As

Publication number Publication date
WO1999057636A3 (en) 2000-01-13
GB2342480B (en) 2002-08-14
GB2342480A (en) 2000-04-12
DE19980891T1 (de) 2001-04-26
US6530017B1 (en) 2003-03-04
CA2294181A1 (en) 1999-11-11
GB9929980D0 (en) 2000-02-09
WO1999057636A2 (en) 1999-11-11

Similar Documents

Publication Publication Date Title
US5907708A (en) System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
US5339434A (en) Heterogeneous data translation system
EP0466486B1 (en) Distributed computing system
US9189263B1 (en) Object synchronization in shared object space
US5390314A (en) Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification
EP0605959B1 (en) Apparatus and methods for making a portion of a first name space available as a portion of a second name space
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
US7543301B2 (en) Shared queues in shared object space
US7584228B1 (en) System and method for duplication of virtual private server files
US9880835B2 (en) Initialization status of a register employed as a pointer
JPH08339355A (ja) 分散形システムでの処理タスク実行呼び出し方法及び装置
JPH0713844A (ja) 新たなファイルシステムを既存のファイルシステムに対応付ける方法及び拡張可能なファイルシステム
JPH05508504A (ja) プログラム翻訳方法
US5765206A (en) System and method for emulating a segmented virtual address space by a microprocessor that provides a non-segmented virtual address space
US20060173931A1 (en) System and method for managing long names in an application programming interface
CN111095201A (zh) 响应于到子例程的分支而预测内容表指针值
US20130096908A1 (en) Employing native routines instead of emulated routines in an application being emulated
US6725451B1 (en) Method for converting a system call
CN111066006A (zh) 设置内容表(toc)寄存器指令
GB2438228A (en) Move data facility with user selectable storage access keys
US20200142669A1 (en) Controlling storage accesses for merge operations
US5838911A (en) Method and apparatus for obtaining network information by using a dynamic link library
JP2002506553A (ja) オペレーティング・システム・コールを効率的にエミュレートする構成を提供するシステムおよび方法
JP3489216B2 (ja) ファイルシステム
US8015153B2 (en) System for distributed communications