JP2009514099A - 分離されたエクステンションおよびデバイスドライバの構成 - Google Patents

分離されたエクステンションおよびデバイスドライバの構成 Download PDF

Info

Publication number
JP2009514099A
JP2009514099A JP2008537770A JP2008537770A JP2009514099A JP 2009514099 A JP2009514099 A JP 2009514099A JP 2008537770 A JP2008537770 A JP 2008537770A JP 2008537770 A JP2008537770 A JP 2008537770A JP 2009514099 A JP2009514099 A JP 2009514099A
Authority
JP
Japan
Prior art keywords
executable instructions
device driver
computing resources
access
program module
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.)
Granted
Application number
JP2008537770A
Other languages
English (en)
Other versions
JP5009299B2 (ja
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009514099A publication Critical patent/JP2009514099A/ja
Application granted granted Critical
Publication of JP5009299B2 publication Critical patent/JP5009299B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Abstract

アプリケーション、エクステンション、デバイスドライバ(300)、及びソフトウェアシステムの他コンポーネントの構成要件を記述、及び/又はそれらに対応する1又は複数の実装につき、本明細書に記述する。

Description

本発明は、分離されたエクステンションおよびデバイスドライバの構成に関する。
オペレーティングシステム等のソフトウェアシステムには、一般に様々なタスクを行うための予め定義されたソフトウェアモジュールのセットが装備されている。これらのモジュールは全て、同じように予め定義されたセットの一部であるのでお互いに関連している。
しかしながら、追加の機能性及び/又はカスタマイズがしばしば必要になる。言い換えれば、機能性は「拡張」される。一般にソフトウェアシステムは、新しいソフトウェアモジュール又はプロセスを動的に追加することで拡張を可能にしている。この追加はしばしば「エクステンション」又は「プラグイン」と呼ばれる。従来のシステムにおけるエクステンション又はプラグインの共通の例には、これに限定されないが、オペレーティングシステム用デバイスドライバ、データベースの拡張ストアードプロシージャ、ウェブブラウザのプラグイン及びActiveX(商標)コントロール、ウェブサーバのISAPIコンテンツ及びフィルタエクステンション、ユーザインタフェースシェル用シェルエクステンション等が含まれる。エクステンションにより追加された機能性は、ハードウェア装置の最新版に対するウィルススキャナへの簡単なサポートからeメールクライアントのワークフローツールに至るまで多岐に渡る。ところが、エクステンションを統一する従来のアプローチには問題がある。
例えば、従来のオペレーティングシステム(「OS」)は、実行可能命令のセットをカーネル保護ドメインにロードすることによりエクステンションをロードする。一旦ドライバがこのアドレス空間にインストールされると、従来のカーネルはロードされたエクステンションがコンピューティングシステム内の任意の(又は全ての)ハードウェアにアクセスすることを防ぐことはできない。従って、不正な形式の又は悪質なエクステンションはOSのカーネルに大きな損害をもたらすことがある。
デバイスドライバはオペレーティングシステム内で見られるエクステンションの1つの種類である。デバイスドライバはオペレーティングシステムを拡張して、特定のデバイス又はデバイスのクラスにアクセスするソフトウェアモジュールである。例えば、IDEドライバは、IDEストレージコントローラに取り付けられたディスクドライブにオペレーティングシステムがアクセスできるようにする。デバイスドライバは、特定ベンダのストレージコントローラ等の特定のハードウェアに話しかけるマシンからの、ディスクストレージの読み取りや書込みブロック等の、オペレーティングシステムまたはアプリケーションが理解できる共通の機能性を抽象化するといった重要な機能を行う。デバイスドライバは物理デバイスに頻繁にアクセスする一方、仮想リソースにもアクセスできること、又はデバイスドライバをレイヤ化してストレージコントローラのデバイスドライバ上にある圧縮ドライバ等の追加機能性を追加できることを当業者は認識するであろう。
ユーザが、ホットスワップ及び電力管理等の豊富な特徴を期待するようになってきたので、過去10年でデバイスドライバはかなり複雑なものになった。従来のオペレーティングシステムの多くは様々な方法で応答してはいるが、根本的にはこれらのシステムの備えるドライバモデルは10年前と同じである。
エクステンションと同じように、従来のオペレーティングシステム(OS)は実行可能命令をカーネル保護ドメインにロードすることによりデバイスドライバをロードする。一旦ドライバがそのアドレス空間にインストールされると、従来のカーネルはロードされたドライバがコンピューティングシステム内のいずれかの(又は全ての)ハードウェアにアクセスすることを防ぐことはできない。
これらのドライバは一般に直接ハードウェアにアクセスするように低レベルのプリミティブで書かれているので、従来のカーネルは、ドライバが適切なハードウェアリソースだけを使用していることをめったに検証しない。その代わり、従来のカーネルは、ドライバはそれが役に立つことを要求するデバイスのためのハードウェアにアクセスするだけであろうと信頼する。更に、ドライバがアクティブなプロセスに割当てられているメモリ、又は従来のカーネル内部の他のコンポーネントに割当てられているメモリに留意するように、ドライバが正しく構成されていることを従来のカーネルが保証できないことがしばしばある。
従って、従来のドライバはOSの中では最も信頼性の低いコンポーネントに属している。一番良く知られている従来のOSにおいて原因の突きとめられたクラッシュの85%はドライバに起因すると指摘するレポートもある。知名度の余り高くない従来のOSのドライバは、カーネル中の他の実行可能命令よりも7倍バグを含む可能性があると指摘するレポートもある。
アプリケーション、エクステンション、デバイスドライバ、及びソフトウェアシステムの他のコンポーネントの構成要件を記述及び/又はそれらに対応する1又は複数の実装について本明細書にて記述する。
この概要は、以下にさらに記述する詳細な説明を簡潔な形式で選択した概念を紹介するためのものである。この概要は、クレーム主題の重要な特徴又は本質的な特徴を特定することを意図しておらず、またその範囲を判定する補助として使用することも意図していない。
図面は全て、同じ要素及び特徴を参照する際には同じ数字を使用する。
アプリケーション、エクステンション、デバイスドライバ、及びソフトウェアシステムの他のコンポーネントの構成要件を記述及び/又はそれらに対応する技術を以下に説明する。
従来のエクステンション(例えば、デバイスドライバ)は、入力/出力(I/O)、メモリ、ビデオ、音声、割込み要求(IRQ)ライン、又は他のハードウェア等のコンピューティングリソースに直接アクセスするための実行可能命令を含む。従来のエクステンションとは異なり、本明細書に記述する1又は複数の実装に従って生成されたエクステンション(例えば、デバイスドライバ)は、1又は複数のローカルアクセスオブジェクトを介してコンピューティングリソースにアクセスするが、それはコンピューティングリソースにゲートウェイ又はブリッジを提供するオブジェクト(例えば1又は複数のデータ構造を持つ実行可能命令)である。
1又は複数の記述した実装では、エクステンションはこれらのリソースへの要求を含む構成要件を特定する、埋め込まれたメタデータを含む。オペレーティングシステム(OS)はこのメタデータに基づいてエクステンションのコンピュータリソース要求を判定する。OSは、必要とされるリソースを割り当て、エクステンションをプロセスの外部のコンピューティングリソースに接続するために必要な実行可能命令を(ローカルアクセスオブジェクトの形式で)提供する。
この新たな分業はエクステンションのホスト(デバイスドライバの1又は複数の実施形態におけるOS)に、全ての構成要件を検証し、エクステンションによりI/O又はIPCリソースへのアクセスすべてを制御する能力を提供する。
[ソフトウェア分離プロセス]
コンピュータサイエンスの領域、特にオペレーティングシステムの技術では、「ソフトウェアプロセス」(又は単に「プロセス」)という用語がよく知られている。アプリケーションはしばしば1又は複数のプロセスで構成される。オペレーティングシステム(OS)はコンピュータ上で実行する1又は複数の個別のプロセスを認識、更に実際には管理、監督している。
本明細書では、プロセスは実行可能命令を有する。プログラムモジュールもまた実行可能命令を有する。1又は複数のプロセスはプログラムモジュールに基づいて実行できる。
本明細書では、エクステンションはプログラムモジュールとして記述できる。さらにデバイスドライバはエクステンションの一例である。本明細書に記述した1又は複数の実施形態は、分離されたプロセスを介して実施できる。分離されたプロセスのコンテキストは、図1のコンテキストに記述する。
本明細書では、1又は複数の実装がソフトウェア分離プロセス(SIP)抽象化モデルの構成を提供及び/又はサポートするOSモデル上で動作するように記述されている。SIPはプログラムの要素又はシステムをカプセル化して、情報隠蔽、故障分離、及び強力な干渉を提供する。SIPはオペレーティングシステム及びアプリケーションソフトウェア全般で使用されている。
図1は、SIP構築のための動作シナリオを示す。プロセス構築アーキテクチャ100を、コンピュータ120上で格納され及び/又は実行されるオペレーティングシステム110の一部として示している。プロセス構築アーキテクチャ100は、図1に示すようにオペレーティングシステムの一部としてもよい。あるいは、プロセス構築アーキテクチャ100の全て又は一部をオペレーティングシステムから分離してもよいが、オペレーティングシステムとは依然協調して稼働している。
プロセス構築アーキテクチャ100は、拡張コンポーネントのセットにより編集される構成コンポーネントの動的なセットから、コンピュータのワーキングメモリの中でプロセスを構築する。一旦構築されると、アクティブなプロセスの実行可能命令は固定される。一旦固定されると、アクティブなプロセスは新たなプロセッサ実行可能命令を普通は実行しない。そうするためには、一般にプロセスは、その一部として新しい実行可能命令で新たに再構築されるか、又は新しいアドオンプロセスが生成される。
構成コンポーネント及び拡張コンポーネントの動的なセットは、一般にコンピュータ記憶装置に格納されたロードモジュールのセットとして明示される。1又は複数の様々なプロセスの特性(例えば、保全性、セキュリティ、信頼性、可用性、リソース用法分析、完全性分析、及び/又は安定性)に関する分析が行われ、同様に様々な望ましい最適化が行われる方法で、プロセス構築アーキテクチャ100は、プロセスを構築する。
コンピュータ120は、ロードモジュール124のセット及びワーキングメモリ130を格納するコンピュータ記憶装置122(例えば、ハードドライブ、RAIDシステム等)を含む。図1の例では、プロセス構築アーキテクチャ100は、ワーキングメモリ130に格納されるプロセス140を構築する。ここで示すように、プロセス140はロードモジュール124から構築されており、それはプロセスの拡張コンポーネントにより編集されるプロセスの構成コンポーネントを明示している。
プロセス140はプロセスマニフェスト142を有し、それはプロセス140の最終的なコンテンツを定義する。この最終的なコンテンツの一部は、プロセスの拡張コンポーネントにより編集されたプロセスの構成コンポーネントを含む。ここで示すように、プロセスマニフェスト142は、それが構成を記述する(プロセス140等の)プロセスと直接関連付けられている。
プロセスを構築する場合、プロセス構築アーキテクチャ100は、以下の機能コンポーネントを1又は複数使用することができる。機能コンポーネントとは、プロセスマニフェストコンポーザ150、型付きコード表現クリエータ152、型付きコード表現アップデータ154、オプティマイザ156、型付きコード表現コンバータ158、プロセス間干渉エリミネータ160、及び固定アイデンティティクリエータ162である。図1ではこれらの機能コンポーネントは互いに別個のものとして示されているが、これらの機能コンポーネントの1又は複数の機能性を結合することもできる。
「双方向メッセージ導管を使用したプロセス間通信(Inter−Process Communications Employing Bi−directional Message Conduits)」アプリケーションは、SIP(OSも同様であるが)間で使用可能なプロセス間通信をサポートするOSモデルのコンポーネントを開示している。
SIPについては、カーネルの外部の実行可能命令は全てSIP中で実行し、強く型付けされた通信チャネルを介して他のSIPと通信を行う。SIPは閉じた環境であり、データ共用又は動的コードローディングを許可していない。SIPは従来のOSプロセスとは多くの点で異なる。
新しいカーネル(本明細書で記述した実装をサポートしてオペレーティングシステム210で表わされる)は、殆どすべてが安全な実行可能命令からなり、SIP内で実行する残りのシステムは、デバイスドライバ、システムプロセス、アプリケーションを含む検証可能な形で安全な実行可能命令からなる。信頼できない実行可能命令は全て検証可能な形で安全でなければならないが、信頼できるベースと呼ばれている新しいカーネル及びランタイムシステムの一部は、検証可能な形で安全ではない。言語の安全性がこの信頼できるベースを信頼できない実行可能命令から守っている。更に、SIP各々の保全性は、命令の安全性、及びプロセスは他のプロセスのオブジェクト空間への参照を持たないというシステム全体に渡る不変条件に依存している。
[プロセス間通信]
記述した実装の少なくとも1つでは、SIPはチャネル上にメッセージを送信することにより排他的に通信を行う。チャネルは2つのプロセス間の双方向行動型の接続である。メッセージは、送信プロセスから受信プロセスに転送される交換ヒープ(Exchange Heap)中の数値又はメッセージブロックのタグが付いた集合である。チャネルに沿ってメッセージ及び有効なメッセージのシーケンスのフォーマットを特定する規約によって、チャネルは型付けされる。
エキスポータ及びインポータとして非対称に型付けされた、出力パラメータ中のチャネルの2つのエンドポイントを返す、規約の静的な新規チャネル(NewChannel)方法を呼び出すことにより、SIPはチャネルを生成する。
SIPは既存のチャネルを介して他のプロセスにエンドポイントの一方又は両方を渡すことができる。エンドポイントを受信するプロセスは、エンドポイントに対応する他端を保持するプロセスへのチャネルを有する。例えば、もしあるアプリケーションプロセスがあるシステムサービスと通信を行いたければ、アプリケーションは2つのエンドポイントを生成し、1つのエンドポイントを含むリクエストをそのシステムの名前サーバに送信する。名前サーバはエンドポイントをそのサービスに転送するが、その際プロセスとサービスとの間のチャネルを確立する。
チャネル上の送信は非同期である。受信は特定のメッセージが到着するまでは同期的にブロックする。言語の特徴を使用すれば、スレッドは、チャネルに沿ってメッセージのセットの最初を待つことができるし、又は異なったチャネルからのメッセージの特定のセットを待つこともできる。データがチャネルを介して送信される際に、所有権はメッセージへの参照を保持していないかもしれない送信プロセスから、受信プロセスに移る。この所有権の不変条件は言語及びランタイムシステムにより実施され、3つの目的に役立つ。1番目は、プロセス間での共用を防ぐことである。2番目は、メッセージのポインタエイリアシングを除去することにより、静的なプログラムの解析を容易にすることである。3番目は、コピー又はポインタパッシングにより実装可能なメッセージパッシングセマンティックスを提供することにより実装の柔軟性を可能にすることである。
[分離された拡張性]
ソフトウェアの作成者は、彼らのシステムのユーザ又はアプリケーションのユーザに要求される完全な機能性を予想するのは稀である。モノリシックなシステムで誰でも満足させようとするよりはむしろ、重要なソフトウェアは大抵追加の実行可能命令をロードすることによりその機能性を強化する機構を提供する。例えば、従来の市販のパーソナルコンピュータのオペレーティングシステムは100,000を超える第三者のデバイスドライバをサポートしており、それによってOSはどのようなハードウェア装置でも大抵制御することができる。同様にして、無数のインターネットブラウザのアドオン及びエクステンションは、ウェブページのためのブラウザインタフェース及びコンポーネントを強化する。エクステンションは新たなソフトウェアバージョンよりも開発及び分散しやすいので、潜在的に変更される可能性はあるが、オープンソースプロジェクトでさえ「プラグイン」機構を提供している。
エクステンションは普通、エクステンションの親のアドレス空間に動的にロードされる実行可能命令からなる。親の内部インタフェース及びデータ構造に直接アクセスすることにより、エクステンションは充実した機能性を提供することができる。しかしながら、この柔軟性には高いコストがかかる。エクステンションは、ソフトウェアの信頼性、セキュリティ、下位互換性の問題の主要な要因になる。エクステンションの実行可能命令は、信頼できず、検証されておらず、間違っていて、又は悪意のあることもしばしばあるが、ハードインタフェース、境界、ホストとエクステンションとの間の区別なしにプログラムのアドレス空間に直接ロードされる。
エクステンションは非互換性、低機能性、又は他のエラーの原因になることがしばしばある。更に、エクステンションにはハードインタフェースが無いので、その親の実装に詳細を依存することになるため、プログラムの将来のバージョンへの展開を制約し、非互換性を避けるために広範囲にわたるテストの実施が必要になる。
実行可能命令を動的にロードすると、もうひとつの、明白ではないが無理な負担が性能及び正確さにかかる。実行可能命令を動的にロードできるシステムは、システムの状態、不変条件、又は有効な遷移について適切な想定を行うことが困難又は不可能なオープン環境である。割り込み、例外、又はスレッドスイッチが、新しいファイルをロードし、クラス及びメソッドボディを無効にして、全体状態を修正する命令をいつでも実行することができるJava(登録商標)仮想マシン(JVM)を考えよう。一般には、2つの実行可能命令間で環境が任意に変えることができないという不健全な想定に基づく場合を除けば、そのような環境内で実行しているプログラムを解析する実現可能な方法は存在しない。
本明細書に記述した1又は複数の実装で用いられている新しいアプローチでは、実行可能命令の動的なローディングを禁止し、動的に生成されたエクステンションをそれ自身の環境で分離する。これらの方針にそった試みが以前広く使用されなかったのは、分離メカニズムには性能及びプログラミングの問題があり、分離せずに実行するリスクよりも魅力をなくしているからである。
一番広く用いられている分離メカニズムは従来のOSプロセスであるが、コストが高いので有用性が限られている。最近のプロセッサに関するメモリ管理を行うハードウェアは、プロセスに厳しい境界を設けてプロセス状態を保護するが、プロセス間制御及びデータ転送に大きなペナルティを課している。最新のx86プロセッサに関しては、プロセス間のスイッチングには数百から数千サイクルを要する可能性があるが、これにはTLB及びキャッシュのリフィルミスは含んでいない。
Java(登録商標)仮想マシン(JVM)及びMicrosoft(登録商標)共通言語ランタイム(CLR)等のさらに最近のシステムは、拡張性を持つように設計されているので、同じアドレス空間で実行しながら計算を分離するメカニズムとしてハードウェアではなくて言語の安全性を使用している。しかしながら、安全な言語は、それ自体が分離を十分に保証していない。データ共有すれば計算対象空間の間にパスが提供されるが、その時点でリフレクションAPIはデータ抽象化及び情報隠蔽を弱体化させるメカニズムを提供する。その結果、これらのシステムには、システム機構やインタフェースへのアクセスを制御するためのJVM細粒アクセス制御又はCLRのコードアクセスセキュリティ等の、複雑なセキュリティ機構とポリシーが必要である。
さらに、ランタイムシステムを共有して同じプロセスで実行する計算は、失敗しても分離されない。JVM内で実行中の計算が失敗すると、破壊されたデータを分離、廃棄して、失敗した計算を再スタートするクリーンポイントを見つけることが困難なので、一般にJVMプロセス全体を再スタートする。
本明細書に記述した少なくとも1つの実装では、閉じた環境内でシステムコンポーネントの実行可能命令をカプセル化するためにSIPを利用する。システム又はアプリケーションへの拡張は、新しいSIP内で実行され、制限はされているが適切な機能性を提供しているチャネルを介して親と通信している。もし拡張に失敗すると、そのSIPが終了して、OSがリソースを再要求して通信相手に通告できるようになる。これらの相手はエクステンションとは状態を共有していないので、エラー訂正は局所的に行われチャネルの明示的プロトコルにより容易になる。
本明細書に記述した1又は複数の実装では、コンパイル時リフレクション(CTR)を提供しており、それはファイルがコンパイルされて新しい実行可能命令を生成する際に実行する機能性を提供している。実行時に実行する通常のリフレクションは、ランタイム値にアクセスし、CTRよりもより一般的である。しかしながら多くの場合は、望ましい新しい実行可能命令は実行前には分かっているものである。その場合は、CTRは新しい実行可能命令をコンパイル中に作成する。
[分離されたデバイスドライバの構成をサポートするコンピュータアーキテクチャ]
ドライバの実行可能命令をカーネルの実行可能命令から分離するメカニズムがない状態で、カーネルのアドレス空間及びハードウェア保護ドメインにロードされている従来のデバイスドライバもある。しかしながら、記述した実装の1又は複数は、分離されたデバイスドライバをサポートするオペレーティングシステムについて記述している。
図2は、分離されたエクステンション及びデバイスドライバの構成、及び本明細書に記述した1又は複数の実装をサポートする、例示的なオペレーティングシステム(OS)アーキテクチャ200を示す。描かれているように、例示的なOSアーキテクチャ200は、カーネル210、1又は複数のデバイスドライバ220、1又は複数のファイルシステム230、及び1又は複数のアプリケーション240を示す。当業者であれば、OSはファイルシステム330等SIP内で実行する追加のOSサービスを含むことができることを認識するであろう。
カーネル210は特権を有するシステムコンポーネントであり、ハードウェアリソースへのアクセスを制御し、メモリを割り当てて再要求を行い、スレッドを生成してスケジューリングを行い、プロセス内のスレッドの同期を提供し、I/O管理を行う。
カーネル210はOSの中核機能性を提供する。例えば、メモリ又は他のハードウェアリソースの管理、プロセスの生成及び終了、プロセス間通信、チャネル操作、スケジューリング、及びI/O等が含まれる。このカーネル210のコンポーネントのいくつかは、IOマネジャ211、スケジューラ212、ページマネジャ213、デバイスドライバコーディネータ214、及びハードウェア抽象化層(HAL)215を含む。
この例示的なOSアーキテクチャ200内の実行可能命令は、検証又は信頼されたものである。検証された命令の型の安全性及びメモリの安全性はコンパイラによりチェックされている。検証ができない命令は、OSにより信頼されなければならず、HAL215、カーネル210、及び信頼できるランタイム324、334、344の部分に限定されている。カーネルは大抵検証可能な程度に安全である。
カーネルの外にある実行可能命令及び信頼できるランタイムは全て、C#またはJava(登録商標)等の安全な言語で書かれており、Microsoft(登録商標)中間言語(MSIL)等の安全な中間言語に翻訳され、他の1又は複数のバックエンドコンパイラによりプロセッサ実行可能命令にコンパイルされる。
カーネルの命令とSIPの命令との間の境界線は、信頼できるランタイムシステムにより不明瞭になっている。信頼できるランタイムは、信頼されているが検証することができない実行可能命令を含む。検証された型の安全性が、安全なインタフェースを介する場合以外はランタイムシステム及びそのデータ構造と相互作用するのを防ぐので、ランタイムの実行可能命令はSIPの命令から保護されている。多くの場合、バックエンドコンパイラは、命令を信頼できるランタイムからSIPの他の実行可能命令の中に安全に埋め込むことが可能であり、その際従来カーネルの中で実行していた操作をユーザプロセスへ安全に移動させる。
デバイスドライバ220の実行可能命令は、デバイスドライバのプログラマにより書かれた命令、さらに1又は複数のクラスライブラリ222及びその信頼できるランタイム224からの実行可能命令を含む。同様に、図に示すように、ファイルシステム230はクラスライブラリ232及びその信頼できるランタイム234からの実行可能命令を含む。更に、図に示すように、アプリケーション240はクラスライブラリ242及びその信頼できるランタイム244からの実行可能命令を含む。
図3は、例示的なデバイスドライバプロセス300内の構成に関連したオブジェクト、及び本明細書に記述した1又は複数の実装によりサポートされている例示的なオペレーティングシステム(OS)アーキテクチャ200の他の部分との関係を示している。図に示すように、例示的なOSアーキテクチャ200はOSカーネル210、例示的なデバイスドライバプロセス300、ハードウェア及び他のコンピューティングリソース350を示す。
OSカーネル310は、1又は複数のチャネル312を含み、プロセス間のメッセージパッシングを可能にする。図に示すように、ハードウェア及び他のコンピューティングリソース350は、I/Oポート352(I/Oレジスタとしても知られている)、I/Oメモリ354、DMAコントローラ356、及び割り込み要求(IRQ)ライン358を含む。勿論、これらはあるハードウェア及び他のコンピューティングリソースの例にすぎない。実装が異なれば、共通の又は共通でない他のハードウェア及び他のコンピューティングリソース含んでもよい。実装はまた、1つより多くのI/Oポート352、I/Oメモリ354、DMAコントローラ356、または割り込み要求ライン358を含んでもよい。これらの型のハードウェアリソース全ては含まない実装もある。
例示的なデバイスドライバプロセス300は、デバイスドライバの機能を実装しているオブジェクト、すなわちデバイスドライバオブジェクト326を含む。デバイスドライバプロセス300はまた、信頼できるランタイム224、ゼロ以上のクラスライブラリ222、及び構成オブジェクト328を含む。
デバイスドライバオブジェクト326は、信頼できるプログラムモジュールの一例を含む。従来のアプローチとは異なり、デバイスドライバの実行可能なコードは自由に支配できない。しかしながら、そのアクションはいずれも監督されたりチェックされたりすることはない。その代わり、本明細書に記述した1又は複数の実装では、信頼できないデバイスドライバは、限定されたコンピューティングリソースのセットへ自由だが間接的なアクセスを与えられている。
信頼できるランタイム224は、ハードウェア及びIPCリソースへのアクセスを仲介するアクセスオブジェクトを含む。このアクセスオブジェクトは、(一例としてであり、限定するものではないが)Ioポート332、Ioメモリ334、IoDma336、IoIrq338、及びエンドポイント340を含む。信頼できるランタイム224のアクセスオブジェクトは、以下のリソースのためのゲートウェイとして動作する。
oポート332 → I/Oポート352;
Ioメモリ334 → メモリ354;
IoDma336 → DMAチャネル356;
IoIrq338 → IRQライン358;
エンドポイント340 → チャネルハンドラ312
従来のデバイスドライバとは異なり、デバイスドライバオブジェクト326の実行可能命令を含むファイルは、デバイスドライバを構成したり、または350で図示したようなハードウェア及び他のコンピューティングリソースに直接的にアクセスするための実行可能命令を含まない。その代わり、デバイスドライバオブジェクト326内の実行可能命令は、実行可能命令が信頼できるランタイム224内に含まれているアクセスオブジェクト332、334、336、338、及び340を介して、ハードウェア及び他のコンピューティングリソースにアクセスするだけである。
構成オブジェクト328を生成してアクセスオブジェクト332、334、336、338、及び340にアクセスする実行可能命令は、デバイスドライバのプログラマにより提供されるファイルには含まれない。その代わり、デバイスドライバのプログラマは、デバイスドライバのための実行可能命令に付属するメタデータとして構成要件を埋め込む。既述の1又は複数の実装では、構成オブジェクト328、及びアクセスオブジェクト332、334、336、338、及び340を生成する実行可能命令は分離されており、デバイスドライバオブジェクトの残りの実行可能命令とは区別される。
1又は複数の実装では、構成オブジェクト328を生成する実行可能命令は、オペレーティングシステムにより提供される。実装の1つでは、これらの実行可能命令は、インストール時にコンパイル時リフレクション(CTR)テンプレートを使用して生成される。CTRテンプレートは、デバイスドライバ内で符号化された構成オブジェクトの記述内のメタデータとして埋め込まれている構成要件を処理する。別の実装では、デバイスドライバオブジェクト326のための実行可能命令を含むファイル内で構成メタデータからその一部が生成されたマニフェストをCTRテンプレートは処理する。別の実装では、信頼できるランタイム224内の実行可能命令は、構成メタデータかデバイスドライバマニフェストかどちらかを解釈することにより、構成オブジェクトを生成する。
例示的なOSアーキテクチャ200は、別個のソフトウェア分離プロセス(SIP)で各デバイスドライバ(ドライバ220等)を実行する。例示的なOSアーキテクチャ200は、言語の安全性を使用してSIPが別のSIPのページに書き込むことができないということを検証する。SIP内にカプセル化されているので、オペレーティングシステム全体を停止しなくても、個々のドライバは必要に応じて止めたり再起動したりすることができる。
例示的なOSアーキテクチャ200のためのプログラムは、インストール時に信頼できるランタイムに静的にリンクされる。プログラムは型の安全性のために静的に検証されているが、信頼できるランタイムは各々システムの信頼できるコンピューティングベース(TCB)の要素になっている。信頼できるランタイム内からの実行可能命令は、プロセス分離を維持して、他のプロセスのメモリ及びハードウェアリソースに影響を与えずに、ホストプロセッサの特権/監督モードでプロセスを実行できる。前述のある1つの実装では、型の安全性を回避可能な動的なリフレクション又は他のメカニズムは、デバイスドライバプログラマにより提供された実行可能命令の中では許可されていない。
デバイスドライバのための信頼できるランタイムは、ハードウェアとの通信を抽象化する安全な環境を提供する。割り込み要求を処理したり、固定メモリにアクセスしたり、I/Oポート(IOレジスタとしても知られている)にアクセスしたり、ダイレクトメモリアクセスコントローラ(DMA)を制御するプロセッサの実行可能命令は、ドライバランタイムにより公表されているアクセスオブジェクトを介して保護されている。
プロセス間通信(IPC)は全て、強力に型付けされた双方向チャネルを介している。これらのチャネルは、正確に2つのエンドポイントを有する。チャネルに関するメッセージは値型に制限されており、これらのメッセージのフォーマットは規約により定義されている。この規約は、チャネル全域で送信されるメッセージの有効なシーケンスを特定するチャネルプロトコルの役目もするもので、通信を開始するためのハンドシェークステップを含んでいる。アプリケーションが規約に適合するかを静的に検証することができる。
クライアントが接続しやすくするために、公開名を持つエンドポイントもある。これは、個々の起源でグローバルにアクセス可能な名前空間を介して実現される。グローバルな名前空間サーバが名前空間を管理して、名前からチャネルのエンドポイント、ディレクトリ、及びシンボリックリンクにマッピングできるようにしている。名前空間は、永続性のあるバッキングストアには付属していない。その代わり、システムポリシーによりアプリケーションの一部(ファイルシステム等)が、名前空間内に仮想サブツリーを生成して、そのツリー内にコンテントをマッピングすることが許可されている。このため、ファイルアクセスはチャネルの抽象化を介しているという識別で従来のファイルシステムと同等のものになっている。
例示的なOSアーキテクチャ200は、アプリケーション(240等)を第1のクラスのエンティティとして取り扱うための抽象概念を備えており、それによりオペレーティングシステムがアプリケーションについて推論したり保証を与えたりすることが可能になる。デバイスドライバはこの抽象化のサブクラスである。更に、デバイスドライバのインストールは、アプリケーション上でOSによって行われる第1のクラスの操作である。
例示的なOSアーキテクチャ200では、デバイスドライバはそのI/O及びIPC構成要件を宣言する。従来のアプローチでは、構成要件を発見することができない。ここでは、構成要件はデバイスドライバの実行可能命令と同じファイル内で符号化される。符号化された構成要件は処理を簡単にするために、構成要件を宣言するスタンドアローンの仕様に変換することができる。
構成要件は、コンパイル時、インストール時、ブート時、実行時に検証することができる。要するに、構成要件をデバイスドライバと同じファイルに符号化すると、自己記述アーチファクトに変えてしまう。デバイスドライバのためのMSILアセンブリのセットが与えられれば、デバイスドライバが正しく機能するために満足しなければならない構成の前提条件(及び、ソフトウェア及びハードウェアリソース双方への依存性)についてOSは完全に判断することができる。
アプリケーション抽象化及びドライバ構成宣言では、例示的なOSアーキテクチャ200は、デバイスドライバにより使用されるI/O及びIPCリソースについて保証することができる。例えば、新しいデバイスドライバが所望するリソースのセットを、他の全てのデバイスドライバが使用しているリソースのセットと比較し、I/Oポート又はI/Oメモリの範囲等のリソースが重複、及び従って競合していないかをチェックすることにより、ドライバが実行する前にOSが構成の競合を検出することができる。好適な実施形態においては、構成の競合はインストール時に検出され、新しいデバイスドライバと過去にインストールされた全てのデバイスドライバを含む残りのシステムとの間で競合が無い場合のみにインストールは許可される。
もう1つの例として、各デバイスドライバからその構成の依存性を抽出して、その依存性の1つより以前に初期化されるデバイスドライバがないようにリストを分類することにより、OSは有効な全体のブート順序、すなわちデバイスドライバが初期化される順序、を生成することができる。ブート順序を開発時にOS中にハードコード化するか、管理者が手作業でブート順序を更新する以前のシステムに対して、有効なシステム全体のブート順序を自動的に生成することは著しい進歩である。宣言構成要件から得られる保証の最後の例として、ドライバの構成及びリソースの獲得に関連するドライバを初期化するための実行可能命令全てを、OSが生成することができる。そのため、ドライバは宣言されたリソースを使用するだけであり、そのリソースはシステムのポリシーに従って獲得されるということをOSは保証することができる。このような能力により、ランタイム性能において大きなコストをかけずにシステムの信頼性や保全性を向上させることができる。
[デバイスドライバ調整]
従来のアプローチとは異なり、本明細書に記述した1又は複数の実装のデバイスドライバコーディネータ214は、ドライバが不適切なメモリ位置又は他のハードウェアリソースにアクセスするのを防ぐ。逆に言えば、デバイスドライバコーディネータは、ドライバが適切なメモリ位置及び他のハードウェアリソースにのみアクセスするのを許可する。更に、ドライバがハードウェア及びリソースに直接アクセスすること(従来のアプローチが許可していること)よりむしろ、ドライバがハードウェア及びリソースにアクセスするのをカーネル210が点検している。
本明細書に記述した1又は複数の実装は、HAL214、I/Oマネジャ211、ドライバ220という3層からなる入出力(I/O)システムを有する。HAL214は小規模で、コンピュータのハードウェアへのアクセスを抽象化する信頼できる実行可能命令のベースである。例えば、ある実施形態では、ハードウェアを操作するのにHALは4つのアクセスオブジェクトを実装した。すなはち、IOポート352(I/Oレジスタとしても知られている)にアクセスするIoポートオブジェクト332、I/Oメモリ354にアクセスするIoメモリオブジェクト334、DMAコントローラ356にアクセスするIoDmaオブジェクト336、及び割り込み要求ライン358にアクセスするIoIrqオブジェクト338である。ある実施形態では、HAL314はタイマ、割り込みコントローラ、リアルタイムクロックハードウェアを制御する実行可能命令を含む。I/Oマネジャ211は、デバイスドライバを初期化してデバイスドライバ220にアプリケーションを接続する責任がある。
カーネル210は、デバイスドライバ220の構成メタデータを直接使用するか、または各デバイスドライバのためのマニフェスト(例えば、図1で示したプロセスマニフェスト142)を使用して、デバイスドライバ220を構成してリソースを正しく実行するという要求を満たすように接続する。スタートアップに際して、カーネル210はシステムのプラグアンドプレイ構成を行う。カーネル210は、BIOSからブートローダにより獲得した情報、及びPCIバス等のバスから獲得した情報を使用して、デバイスを数え上げ、適切なデバイスドライバを起動して、デバイスハードウェアへのアクセスをカプセル化するこれらのドライバオブジェクトを引き渡す。
各ドライバ220は、安全な実行可能命令で記述されており、自分自身のプロセスの中で実行される。ドライバは、ネットワークスタック及びファイルシステムを含むシステムの他の部分と専らチャネルを介して通信を行なう。ドライバが起動すると、I/Oマネジャ211は、デバイスドライバ220のマニフェストにより必要とされているように、デバイスハードウェア352、354、356、及び358と通信するために、アクセスオブジェクト332、334、336、及び338を提供する。ハードウェアのメモリマッピングされた場所に直接アクセスする前に、これらのアクセスオブジェクトは全て、各参照をチェックする安全なインタフェースを提供する。
ソフトウェア分離を使用した実施形態の1つでは、I/Oアクセスオブジェクトのための実行可能命令全体が信頼できるランタイム324内に含まれていて、ドライバ−ドライバプロセス300内で実行されている。ハードウェアへのアクセスが有効であることを保証するためのチェックは、実行可能命令により信頼できるランタイム224内のI/Oアクセスオブジェクト332、334、336、及び338内で実施される。ハードウェア分離を使用するもう1つの実施形態では、ドライバがアクセスを許可されたI/Oポート空間、またはI/Oメモリ空間の特定の領域だけにデバイスドライバがアクセスを許可されるように、プロセッサのプロセス分離ハードウェアがプログラムされている。ハードウェア分離を使用している実施形態では、プロセス分離ハードウェアを構成するための実行可能命令はOSカーネル210内にある。
[ドライバ構成]
1又は複数の実装ではシステムコンポーネント内でメタデータで符号化された構成要件を使用して、システムの要素を記述し、どのように組み合わせるのかを説明して、システムの他の部分との行動相互作用を特定している。カーネル、アプリケーション、又はデバイスドライバ、及びその構成要件等、システムの各コンポーネントにメタデータは宣言型でラベルを付ける。構成要件は、依存性、エクスポートサービス、及びリソース要求についての情報を含む。ツールによりこのメタデータを使用して、システムの実行前にシステムコンポーネントの実行可能命令が正しく構成されることができるか検証する。このメタデータは、システム実行中にシステムの各コンポーネントを正しく構成するのに使用されるので、プログラマの意図しているように実行することができる。
システムメタデータはマニフェストと呼ばれる1又は複数のシステムストアにアーカイブされる。トップレベルのシステムのマニフェストは、個々のコンポーネント(デバイスドライバ等)を記述するマニフェストのことを示す。これらのマニフェストを介して、ブートローダ又はシステムベリファイア等のソフトウェアは、システムのあらゆるコンポーネントを発見することができる。
システムマニフェストは、システムのオフライン解析を有効にするのには十分である。本明細書に記述した実装では、ハードウェアデバイス及びシステムマニフェストの記述のみを使用して、管理者は「デバイスドライバ」に関連した質問への回答の多くを発見することができる。そのような質問には、例えば、システムは特定のハードウェア上でブートするか、どのドライバ及びサービスが初期化するか、どのアプリケーションが実行可能か等、が含まれる。
[仕様]
実行可能なシステムイメージは、メタデータとして埋め込まれたシステム全体に対する構成要件を含んでいる。メタデータを使用して、記述した実装の1又は複数では3つの不変条件を維持している。第1に、別のドライバ又はシステムの別の部分と競合する構成要件のために、うまく起動できないデバイスドライバをOSはインストールしない。第2に、構成の競合又はリソース欠如のどちらかのためにうまく実行できないようなデバイスドライバをOSは起動しない。第3に、デバイスドライバは構成要件の中で宣言されていないリソースを実行時に使用することはできない。
可能であれば、本明細書に記述した1又は複数の実装は、高レベル言語でカスタムメタデータ属性を使用して、構成要件をソースコードにインタリーブするので、ソースドキュメントを1つだけ維持しなければならない。カスタム属性は、クラス、メソッド、又はフィールド宣言等のソースコードエンティティに添付することができる。コンパイラは属性を、結果として生じる中間言語の実行可能命令を含むファイルに符号化する。命令を実行しなくても、コンパイラ、リンカ、インストールツール、検証ツールは実行可能命令で符号化されたメタデータを読み取ることができる。
一例として以下のソースコードは、ビデオデバイスドライバ(S3(商標)Trio64(商標)ビデオデバイスドライバ等)の構成要件を宣言するために使用するいくつかの属性を示す。
[Signature(”/pci/03/00/5333/8811”)]
class S3Trioconfig : DrivercategoryDeclaration
{
// Hardware resources from PCI config
[IoMemoryRange(0, Default = Oxf8000000, Length = 0x400000)]
IoMemoryRange frameBuffer;

// Fixed hardware resources
[IoFixedMemoryRange(Base = OxbδOOO, Length = 0x8000)]
IoMemoryRange textBuffer;

[IoFixedMemoryRange(Base = 0xa0000, Length = 0x8000)]
IoMemoryRange fontBuffer;

[IoFixedPortRange(Base = OxO3cO, Length = 0x20)]
IoPortRange control ;

[IoFixedPortRange(Base = 0x4ae8, Length = 0x02)]
IoPortRange advanced;

[IoFixedPortRange(Base = 0x9ae8, Length = 0x02)]
IoPortRange gpstat;

// channels
[ExtensionEndpoint(typeof(ExtensionContract.Exp))]
TRef<Extensioncontract. Exp:start> iosys;

[ServiceEndpoint(typeof(VideoDeviceContract. Exp))]
TRef<ServiceProvidercontract. Exp:start> video;
・・・
}
[DriverCategory]及び[Signature]属性は、このモジュールがPCIビデオ装置の特定クラスのためのデバイスドライバであることを宣言している。DriverCategoryは、特定のハードウェアのためのデバイスドライバを実装するアプリケーションのカテゴリを示す。他のカテゴリはソフトウェアサービスを実装するアプリケーションのためのServiceCategory、及びウェブサーバへ拡張するためのWebAppCategoryを含む。
[IoMemoryRange]属性は、frameBufferがデバイスのPCI構成空間の中で得られた最初のエントリであることを宣言する。ハードウェアが構成され、メモリ領域の大きさ等のハードウェアパラメータが、属性内の構成値と互換性がなければならない場合、このフレームバッファの位置が判定される。メモリマップドアクセスのためのアドレス空間の固定領域か、又はデバイスレジスタにアクセスするI/Oポートの固定領域のどちらかがドライバに必要であることを[IoFixedMemoryRange]と[IoFixedPortRange]属性は明示している。
この実施形態では、IoDmaRange、IoIrqRange、IoMemoryRange、IoPortRangeオブジェクトは連続したアクセスオブジェクトを集めるための入れ物であり、IoDma、IoIrq、IoMemory、IoPortアクセスオブジェクトとそれぞれ交互に使用できる。
[ExtensionEndpoint]属性は、ドライバの親プロセスと通信するために、ドライバはチャネルのエンドポイントと共に構成されなければならないことを宣言している。S3(商標)Trio64(商標)等のデバイスドライバの場合は、I/Oシステムが親プロセスである。
[ServiceEndpoint]属性は、システムディレクトリサービスに対してドライバはチャネルのエンドポイントと共に構成されなければならないこと、及びビデオドライバを使用しているアプリケーションはこのエンドポイントを介してディレクトリサービスによりデバイスドライバに拘束されることを宣言する。
[コンパイル時]
コンパイル時には、高レベル言語のコンパイラは、カスタム属性をメタデータとして、デバイスドライバのための中間言語の実行可能命令を含むファイルに埋め込む。記述した実装の1又は複数は、中間言語メタデータアクセスライブラリを使用して、ファイル内に含まれる実行可能命令を実行することなく、埋め込まれたメタデータを中間言語ファイルから取り出すことができる。
リンク時には、マニフェスト生成ツールは中間言語ファイルからカスタム属性メタデータを読み取ってアプリケーションマニフェストを生成する。アプリケーションマニフェストは、アプリケーションのコンポーネント及び構成要件を数え上げるXMLファイルである。アプリケーションマニフェストについては「自己記述アーチファクト及びアプリケーションの抽象化」でさらに詳細に記述している。
以下のXMLはビデオデバイスドライバ(S3(商標)Trio64(商標)ビデオデバイスドライバ等)のためのマニフェスト情報の一部を含む。
<manifest>
<app1ication identity=”s3Trio64” />
<assemblies>
<assembly filename=”s3Trio64.exe” />
<assembly fi1ename=”Namespace.Contracts.dll ” version=”l.0.0.2299” />
<assemb1y filename=”lo.Contracts.dll ” version=”l.0.0.2299” />
<assembly filename=”Corlib.dll ” version=”l.0.0.2299” />
<assemb1y filename=”Corlibsg.dll ” version=”l.0.0.2299” />
<assembly fi1ename=”System.compi1er.Runtime.dll ” version=”l.0.0.2299” />
<assemb1y fi1ename=”MS.Singsharp.Runtime.dl1 ” version=”l.0.0.2299” />
<assemb1y filename=”ILHelpers.dll” version=”l.0.0.2299” />
<assemb1y filename=”OS.Vl.ill” version=”l.0.0.2299” />
</assemblies>
<drivercategory>
<device signature=”/pci/03/00/5333/8811” />
<ioMemoryRange index=”0” baseAddress=”Oxf8000000” rangeLength=”0x400000” />
<ioMemoryRange baseAddress=”Oxb8000” rangeLength=”0x8000” fixed=”True” />
<ioMemoryRange baseAddress=”0xa0000” rangeLength=”0x8000” fixed=”True” />
<ioPortRange baseAddress=”0x3c0” rangeLength=”0x20” fixed=”True” />
<ioPortRange baseAddress=”0x4ae8” rangeLength=”0x2” fixed=”True” />
<ioPortRange baseAddress=”0x9ae8” rangeLength=”0x2” fixed=”True” />
<extension startstateld=”3” contractName=”MS.OS.Extending-
.ExtensionContract” endpointEnd=”Exp” assembly=”Namespace.contracts” />
<serviceProvider startstateld=”3” contractName=” MS.OS.lo-
.VideoDeviceContract” endpointEnd=”Exp” assembly=”lo.Contracts” />
</driverCategory>
・・・
</manifest>
[インストール時]
本明細書に記述した1又は複数の実装では、起動できないデバイスドライバをインストールしないことをシステムは保証している。そのために、デバイスドライバがインストールされる前に、デバイスドライバの構成要件全体を満足できることをシステムが検証する。
アプリケーションは、本明細書に記述した1又は複数の実装をサポートするOS内の第1のクラスの抽象化である。このコンセプトについては「自己記述アーチファクト及びアプリケーションの抽象化」でさらに詳細に記述している。ある実施形態では、実行するために実行可能命令のセットがインストーラによりアプリケーションに追加されて、構成要件に従ってアプリケーションを初期化する。代替的実装では、構成要件に従ってアプリケーションを初期化する実行可能命令は、信頼できるランタイム中に含まれ、アプリケーションの構成メタデータを解釈することにより構成オブジェクト及びアクセスオブジェクトを生成する。
アプリケーションのマニフェストの中にメタデータがあるとインストーラが起動する。インストーラは、アプリケーションのアセンブリの各々が存在していて型及びメモリが安全であることを検証する。又、チャネル規約全てが正しく実装されていることも検証する。
これらの内部特性を解明し検証すると、インストーラは次に外部依存性の全てを解明し検証しようと試みる。例えば、デバイスドライバに使用されるハードウェアリソースはどれでも、他のどのドライバに必要とされるハードウェアリソースとも競合することはないことを、インストーラは保証する。インストーラはまた、アプリケーションが使用するあらゆる型のチャネルの存在を検証する。アプリケーションがチャネルをエクスポートする場合、エクスポートされたチャネルが別のアプリケーションと競合しないことをインストーラは検証する。競合が発生する場合は、システムのマニフェスト内のポリシーがそれらを解明する。例えば、1つのデバイスドライバだけがビデオコンソールの規約を提供できることを、マニフェストが宣言することもある。ビデオドライバの追加インストールが許されないか、又はブート時には単一のビデオドライバだけが起動されることになる。
コンパイル時リフレクション(CTR)を使用して、信頼できる実行可能命令を生成し、システムリソースのためのアプリケーション構成オブジェクト及びアクセスオブジェクトを初期化する。ある実施形態では、CTRテンプレートはインストール時に、アプリケーションマニフェストにより名づけられたアセンブリ中で、属性を持たされたプログラム要素の処理を実行する。
システムマニフェストメタデータを更新して、新しいアプリケーション又はデバイスドライバを組み込むことで、インストールプロセスは完了する。
少なくとも1つの実装では、インストールプロセス全体がオフラインで行われ、インストールが目に見えるようになるのは次にシステムがブートされたときだけである。あるいは、インストールプロセス全体は、オンライン及び/又は部分的にオンラインで実行することもできる。
[実行時]
実行時にはメタデータは、カーネル、デバイスドライバ、サービス、及びアプリケーションの初期化を駆動する。ブートローダはシステムのマニフェストの一部を読み取り、どのカーネル、デバイスドライバ、及びサービスをロードすべきかを判定する。このロード及び起動が実行される順序はどこにも特定されていない。その代わり、システムが特定の依存性からそれを推察している。
各アプリケーションが起動すると、カーネルはメタデータ依存性全てを検証及び解明して、カーネル中にプロセス構成記録を立ち上げる。CTRを使用したアプリケーションに放出された信頼できる実行可能命令は、構成記録を解析して、構成オブジェクト328を生成し、外部リソースにアクセスするアクセスオブジェクト332、334、336、338、340を生成する。コンパイル時リフレクション(CTR)は、構成オブジェクト428のために実行可能命令を生成する。
S3(商標)Trio64(商標)デバイスドライバの例に戻ると、カーネルはframeBuffer、textBuffer、fontBufferのためのIoMemoryRangeオブジェクトに対する要求をドライバの構成記録の中に記録する。カーネルはまた、制御、アドバンスト、gpstatI/OポートのためのIoPortRangeオブジェクトを記録している。カーネルはチャネルを生成してデバイスドライバをI/Oサブシステムに接続し、第2のチャネルはドライバを名前空間に接続する。チャネルのエンドポイントはドライバの構成記録に追加される。
デバイスドライバが実行を開始すると、信頼できるランタイム中の実行可能命令はドライバのオブジェクト空間内に適当なIoMemoryRange及びIoPortRangeのアクセスオブジェクトを生成する。これらを構築できるのは信頼できるランタイムだけであるので、デバイスドライバは構成メタデータの中で宣言され、カーネルI/Oサブシステムにより競合がないかチェックを受けたI/Oリソースにアクセスすることだけができる。
構成メタデータの中でチャネルのエンドポイントを宣言すると3つの特性が保証される。第1に、SIPのための実行可能命令を、チャネルの規約に厳密に適合して、完全に宣言したチャネルを介してのみ通信することを保証するよう静的に検証することができる。第2に、アプリケーションはグローバル名を含む必要はない。例えば、S3(商標)Trio64(商標)ビデオデバイスドライバはシステム名前空間内の/dev/video名を意識していない。その代わりドライバはローカル名S3Trio64Config.videoを使用して所与の規約(ServiceProviderContract)でチャネルを参照する。I/O名前空間のレイアウト全体は、ビデオドライバ内ソースコードの一本のラインにも影響せずに変更することができる。第3に、最も可能性の低い特権の原則に適合して、アプリケーションは「サンドボックス」になることができて、現在のシステムにおけるエラーの原因及びセキュリティの脆弱性を取り除く。例えば、S3(商標)Trio64(商標)ドライバは、システムのディレクトリサービスに接続されたエンドポイントを保持するが、新しい名前を生成したり、または他のシステムプロセスのどれにでも接続できる能力はドライバにはない。
[分離されたデバイスドライバの方法論的実装]
図4はどのようなエクステンション(デバイスドライバ等)でも初期化する方法400を示す。この方法400では、OSがデバイスドライバのマニフェストからメタデータを読み取ってデバイスドライバオブジェクトを生成する。図1に描かれた1又は複数の様々なコンポーネントによりこの方法400を行う。更に、方法400は、ソフトウェア、ハードウェア、ファームウェア、またはその組み合わせで行うことができる。
図4の402において、オペレーティングシステム(OS)は信頼できないプログラムモジュール(デバイスドライバ等)を獲得する。OSは、デバイスドライバのマニフェストから、必要な、または要求のコンピューティングリソースのセットを判定する。ここで、コンピューティングリソースは、仮想リソース(チャネル等)、又はハードウェアリソース(I/Oポート又はIOメモリの範囲等)、又は他のそのようなリソースを含むことができる。
OSはデバイスドライバのマニフェストを読み取ることにより、この判定を行うことができる。あるいは、OSはデバイスドライバの実行可能命令を分析することができる。あるいはまた、OSは実行可能命令、又は関連したデータ構造からメタデータを抽出することもできる。
404において、リソースのいずれかがOS又は他のデバイスドライバに既に割当てられているかどうかをOSは判定する。もし割当てられていれば、406でプロセスを中止する。本発明の代替的実施形態は、リソースが解放されていたら初期化プロセスを再起動する、リソースを解放するように現在のオーナーと協議する、ユーザに依頼して競合しているドライバを止める許可をもらう、デバイスドライバのライタに誤ったリソース要求がある可能性があることを通知する等、といった追加のポリシーをもって中止に従うことがある。
またここで、デバイスドライバ及び要求されたコンピューティングリソースに関連した他の判定をOSが行うことがある。デバイスドライバが要求コンピューティングリソースにアクセスすることを許可され、要求された通りにアクセスしていることをOSが確認する。
408において、OSはデバイスドライバに対するリソースの割り当てを記録する。
410において、必要又は要求されたリソース各々に対してデバイスドライバにより使用される信頼できるローカルアクセスオブジェクトをOSが提供する。信頼できるランタイムオブジェクト(図3に描かれた)はローカルアクセスオブジェクトの例である。
OSがここで行う「提供」には、既に予めセットされ固定された実行可能命令(及びデータ)、これらはローカルアクセスオブジェクトだが、それらを単に使用することを含んでもよい。特定の要求と条件にカスタマイズされた新しい命令(恐らくテンプレートに基づいた)を生成することを含んでもよい。またはOSがその中間で何かするかもしれない。例えば、OSは、ローカルアクセスオブジェクトである既存の実行可能命令を構成したり、または僅かに変更してもよい。
実際OSは信頼できるローカルアクセスオブジェクトの実行可能命令(及びデータ)を信頼できないデバイスドライバに挿入又はリンクできるので、挿入又はリンクされたローカルアクセスオブジェクトを介してデバイスドライバはアクセスを得られる。
412において、必要なリソースに対するローカルアクセスオブジェクトのセットを使用してOSはデバイス構成オブジェクトを初期化する。構成オブジェクトは、マニフェストの中で定義された追加設定を含む。追加設定の例としては、分類エクステンションにユーザの好むデータ/時間フォーマットを示す設定がある。
414において、OSはデバイスドライバの実行可能命令の実行を開始する。デバイスドライバを初期化する実行可能命令は、OSまたはインストールシステムにより提供され、デバイスドライバのプログラマによって提供されるのではない。
416において、実行中のデバイスドライバは、ローカルアクセスオブジェクトを介して要求されたコンピューティングリソースにアクセスする。更に、実行中のデバイスドライバは、要求されたコンピューティングリソース(他は不可)にアクセスすることだけ可能であり、それはリンクされた又は挿入されたローカルアクセスオブジェクトを介してだけである。
[結び]
本明細書に記述した技術は、多くの方法で実装でき、その方法は、(これに限定しないが)プログラムモジュール、汎用及び特殊用途のコンピューティングシステム、ネットワークサーバ及び機器、専用エレクトロニクス及びハードウェア、ファームウェアを、1又は複数のコンピュータネットワークの一部、及び/又はその組み合わせとして含む。
上述の1又は複数の実装は、構造特徴及び/又は方法論的ステップに特化した言語で記述されているが、当然のことながら、本明細書に記述した特定の例示的な特徴またはステップなしに、他の実装を実施することも可能である。むしろ、特定の例示的な特徴及びステップは、1又は複数の実装の好適な形態として開示されている。例示的な実装の記述を明確にするため、周知の特徴を省略または簡略化している例もある。さらに、分かりやすくするために、ある方法ステップを別個のステップとして描写している場合もあるが、これらの別個に描写されたステップは性能においては必ずしも順序に依存しているとは解釈すべきではない。
本明細書に記述した1又は複数の実装をサポートするオペレーティングシステムアーキテクチャの動作シナリオを示す図である。 本明細書に記述した1又は複数の実装をサポートするオペレーティングシステムアーキテクチャのブロック図である。 デバイスドライバプロセス内のオブジェクト、及び図2に示すオペレーティングシステムアーキテクチャの他の部分との関係のブロック図である。 本明細書に記述した別の方法論的な実装のフロー図である。

Claims (10)

  1. プロセッサにより実行される際に1つの方法を実施するプロセッサ実行可能命令を有する1又は複数のプロセッサ可読媒体であって、前記方法は、
    デバイスドライバ(300)を取得するステップであって、前記デバイスドライバ(300)は実行可能命令のセットであるステップと、
    前記デバイスドライバ(300)の前記実行可能命令のセットを実行するために必要なコンピューティングリソース(312及び350)のセットを判定するステップと、
    前記必要なコンピューティングリソース(312及び350)のセットにアクセスするために前記デバイスドライバ(300)により使用される1又は複数のローカルアクセスオブジェクト(332、333、336、338、及び340)を提供するステップであって、前記1又は複数のローカルアクセスオブジェクト(332、333、336、338、及び340)は実行可能命令を有するステップと、
    前記デバイスドライバ(300)の前記実行可能命令のセット及び前記1又は複数のローカルアクセスオブジェクト(332、333、336、338、及び340)の前記実行可能命令の実行を開始するステップと
    を有することを特徴とするプロセッサ可読媒体。
  2. 前記判定動作は、前記デバイスドライバ(300)に関連したプロセッサ可読マニフェスト(142)を取得するステップを含み、前記デバイスドライバマニフェスト(142)が前記デバイスドライバ(300)の前記実行可能命令のセットを実行するために必要な前記コンピューティングリソース(312及び350)のセットを特定することを特徴とする請求項1に記載の1又は複数の媒体。
  3. 前記方法は、前記デバイスドライバ(300)が前記必要なコンピューティングリソース(312及び350)のセットにアクセスすることを許可されていることを確認するステップをさらに有することを特徴とする請求項1に記載の1又は複数の媒体。
  4. 前記提供動作は、前記必要なコンピューティングリソース(312及び350)のセットにアクセスするために前記デバイスドライバ(300)により使用される1又は複数のローカルアクセスオブジェクト(332、333、336、338、及び340)を生成するステップをさらに有し、前記ローカルアクセスオブジェクトはオペレーティングシステムにより提供されることを特徴とする請求項1に記載の1又は複数の媒体。
  5. プロセッサにより実行される際に1つの方法を実施するプロセッサ実行可能命令を有する1又は複数のプロセッサ可読媒体であって、前記方法は、
    実行可能命令のセットを有する信頼できないプログラムモジュール(300)を取得するステップであって、前記信頼できないプログラムモジュール(300)は1又は複数のコンピューティングリソース(312及び350)にアクセスするように構成されているステップと、
    前記信頼できないプログラムモジュール(300)の1又は複数のターゲットコンピューティングリソース(312及び350)を判定するステップであって、前記1又は複数のターゲットコンピューティングリソース(312及び350)は、前記信頼できないプログラムモジュール(300)の前記実行可能命令のセットが実行される際に、前記信頼できないプログラムモジュール(300)がアクセスすることを求めるコンピューティングリソース(312及び350)であるステップと、
    1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)を前記信頼できないプログラムモジュール(300)に提供し、前記提供された1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)を介して、前記信頼できないプログラムモジュールが前記1又は複数のターゲットコンピューティングリソース(312及び350)へのアクセスを得るステップと
    を有することを特徴とするプロセッサ可読媒体。
  6. 前記信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の各々は1又は複数のコンピューティングリソース(312及び350)に関連付けられており、前記信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の各々は実行可能命令のセットを有することを特徴とする請求項5に記載の1又は複数の媒体。
  7. 前記信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の各々は1又は複数のコンピューティングリソースに関連付けられており、前記信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の各々は実行可能命令を有すること、及び前記提供するステップは、前記1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の実行可能命令を構成して、前記1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)の前記構成された実行可能命令を介して、前記信頼できないプログラムモジュール(300)に、前記1又は複数のターゲットコンピューティングリソース(312及び350)へのアクセスを提供するステップを有することを特徴とする請求項5に記載の1又は複数の媒体。
  8. 前記信頼できないプログラムモジュール(300)はデバイスドライバ(300)であることを特徴とする請求項5に記載の1又は複数の媒体。
  9. プロセッサにより実行される際に1つの方法を実施するプロセッサ実行可能命令を有する1又は複数のプロセッサ可読媒体であって、前記方法は、
    実行可能命令のセットを有する信頼できないプログラムモジュール(300)を取得するステップであって、前記信頼できないプログラムモジュール(300)は1又は複数のコンピューティングリソース(312及び350)にアクセスするように構成されているステップと、
    前記信頼できないプログラムモジュール(300)の1又は複数のターゲットコンピューティングリソース(312及び350)を判定するステップであって、前記1又は複数のターゲットコンピューティングリソース(312及び350)は、前記プログラムモジュール(300)の前記実行可能命令のセットが実行される際に、前記信頼できないプログラムモジュール(300)がアクセスすることを求めるコンピューティングリソース(312及び350)であるステップと、
    1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)を前記信頼できないプログラムモジュール(300)に提供し、前記提供された1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)を介して、前記信頼できないプログラムモジュールが前記1又は複数のターゲットコンピューティングリソース(312及び350)へのアクセスを得るステップであって、前記1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)は前記1又は複数のターゲットコンピューティングリソース(312及び350)に関連付けられているステップと、
    それらの1又は複数のターゲットコンピューティングリソース(312及び350)に関連付けられた前記1又は複数の信頼できるローカルアクセスオブジェクト(332、333、336、338、及び340)を介してのみ前記プログラムモジュールに前記1又は複数のターゲットコンピューティングリソース(312及び350)へのアクセスを許可するステップと
    を有することを特徴とするプロセッサ可読媒体。
  10. 前記信頼できないプログラムモジュール(300)はデバイスドライバ(300)であることを特徴とする請求項9に記載の1又は複数の媒体。
JP2008537770A 2005-10-26 2006-10-16 分離されたエクステンションおよびデバイスドライバの構成 Active JP5009299B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US73054605P 2005-10-26 2005-10-26
US60/730,546 2005-10-26
US11/428,096 US8074231B2 (en) 2005-10-26 2006-06-30 Configuration of isolated extensions and device drivers
US11/428,096 2006-06-30
PCT/US2006/040545 WO2007050364A1 (en) 2005-10-26 2006-10-16 Configuration of isolated extensions and device drivers

Publications (2)

Publication Number Publication Date
JP2009514099A true JP2009514099A (ja) 2009-04-02
JP5009299B2 JP5009299B2 (ja) 2012-08-22

Family

ID=37968124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008537770A Active JP5009299B2 (ja) 2005-10-26 2006-10-16 分離されたエクステンションおよびデバイスドライバの構成

Country Status (7)

Country Link
US (1) US8074231B2 (ja)
EP (1) EP1952251A4 (ja)
JP (1) JP5009299B2 (ja)
KR (1) KR101331361B1 (ja)
BR (1) BRPI0618027A2 (ja)
RU (1) RU2443012C2 (ja)
WO (1) WO2007050364A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016517120A (ja) * 2013-04-22 2016-06-09 マイクロソフト テクノロジー ライセンシング,エルエルシー アプリケーション・プログラミング・インターフェースへのランタイム・アクセスの制御

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US20070094495A1 (en) * 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
US20070165765A1 (en) * 2005-12-01 2007-07-19 Ogami Kenneth Y Use of placeable channels in the construction of embedded applications
US8813021B1 (en) 2006-02-16 2014-08-19 Cypress Semiconductor Corporation Global resource conflict management for an embedded application design
US20070234029A1 (en) * 2006-03-28 2007-10-04 Rothman Michael A Methods and apparatus for context sensitive component dispatch management
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20090210888A1 (en) * 2008-02-14 2009-08-20 Microsoft Corporation Software isolated device driver architecture
US8296730B2 (en) * 2008-03-12 2012-10-23 Microsoft Corporation Using extension methods to extend COM objects
US8049918B2 (en) 2008-11-03 2011-11-01 Microsoft Corporation Print plug-in isolation
US20100211988A1 (en) * 2009-02-18 2010-08-19 Microsoft Corporation Managing resources to display media content
US8316384B2 (en) 2009-02-18 2012-11-20 Microsoft Corporation Input/output broker model
US20100215340A1 (en) * 2009-02-20 2010-08-26 Microsoft Corporation Triggers For Launching Applications
US9069585B2 (en) * 2009-03-02 2015-06-30 Microsoft Corporation Application tune manifests and tune state recovery
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US20100318964A1 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis
JP5473756B2 (ja) * 2010-04-27 2014-04-16 キヤノン株式会社 情報処理装置、その制御方法及びプログラム
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8856734B2 (en) 2011-03-11 2014-10-07 Oracle International Corporation Type-safe dependency injection of services into enterprise components
US8661410B2 (en) 2011-03-11 2014-02-25 Oracle International Corporation Managed enterprise software components as dynamic services
US8706881B2 (en) * 2011-03-22 2014-04-22 Oracle International Corporation Automatic registration of enterprise resources in a dynamic module system services registry
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9063776B2 (en) 2011-05-27 2015-06-23 Microsoft Technology Licensing, Llc Application activation framework
US8800051B2 (en) * 2011-06-29 2014-08-05 Nvidia Corporation System and method for private information communication from a browser to a driver
US20130036431A1 (en) * 2011-08-02 2013-02-07 Microsoft Corporation Constraining Execution of Specified Device Drivers
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US8997120B1 (en) * 2012-03-30 2015-03-31 Emc Corporation Lightweight communication channel for control of device driver components
US9235404B2 (en) 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system
US8972973B2 (en) 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
US9110761B2 (en) 2012-06-27 2015-08-18 Microsoft Technology Licensing, Llc Resource data structures for firmware updates
WO2014018037A1 (en) * 2012-07-26 2014-01-30 Hewlett Packard Development Company, L. P. Periodic access of a hardware resource
US10453019B1 (en) * 2012-08-23 2019-10-22 Jpmorgan Chase Bank, N.A. Business activity resource modeling system and method
US9569184B2 (en) 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US9811319B2 (en) * 2013-01-04 2017-11-07 Microsoft Technology Licensing, Llc Software interface for a hardware device
US9323543B2 (en) * 2013-01-04 2016-04-26 Microsoft Technology Licensing, Llc Capability based device driver framework
US9405605B1 (en) * 2013-01-21 2016-08-02 Amazon Technologies, Inc. Correction of dependency issues in network-based service remedial workflows
US9183092B1 (en) * 2013-01-21 2015-11-10 Amazon Technologies, Inc. Avoidance of dependency issues in network-based service startup workflows
US20140222670A1 (en) * 2013-02-01 2014-08-07 Barclays Bank Plc Contactless payment application management
US9075985B2 (en) * 2013-05-31 2015-07-07 Microsoft Technology Licensing, Llc Restricted transmogrifying driver platform
US9032423B2 (en) 2013-06-21 2015-05-12 Microsoft Technology Licensing, Llc Dependency based configuration package activation
US9690564B2 (en) * 2013-09-10 2017-06-27 International Business Machines Corporation Runtime detection of software configurations and upgrades
RU2568294C2 (ru) 2013-12-27 2015-11-20 Закрытое акционерное общество "Лаборатория Касперского" Способ автоматической установки приложения без участия человека
EP3796159B1 (en) * 2014-07-10 2022-08-31 Harman International Industries, Inc. Operating system startup acceleration
RU2592461C2 (ru) * 2014-12-05 2016-07-20 Федеральное государственное учреждение "Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук"(ФГУ ФНЦ НИИСИ РАН) Способ передачи данных между процессами
US9952853B2 (en) * 2015-02-10 2018-04-24 Mediatek Inc. Methods for cross-mounting devices and apparatus utilizing the same
US10469473B2 (en) * 2016-08-31 2019-11-05 Hewlett Packard Enterprise Development Lp Network authentication system extensions
US10802855B2 (en) * 2016-09-16 2020-10-13 Oracle International Corporation Producing an internal representation of a type based on the type's source representation
US10353686B1 (en) * 2016-12-28 2019-07-16 Facebook, Inc. Application installation system
RU2649293C1 (ru) * 2017-04-28 2018-03-30 Акционерное общество "Лаборатория Касперского" Система и способ передачи перехваченных запросов от драйвера к драйверу в процессе инициализации драйверов
FR3069937B1 (fr) * 2017-08-07 2021-10-01 Prove & Run Syteme embarque securise et procede de securisation
US10783058B2 (en) 2019-02-14 2020-09-22 Microsoft Technology Licensing, Llc Extensible device driver verification
CN113741856A (zh) * 2021-07-27 2021-12-03 深圳市广通远驰科技有限公司 驱动绑定方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139396A (ja) * 2002-10-18 2004-05-13 Ntt Docomo Inc 入出力制御システム、入出力制御方法、入出力制御プログラム
JP2005129066A (ja) * 2003-10-24 2005-05-19 Microsoft Corp オペレーティングシステムリソース保護

Family Cites Families (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5A (en) * 1836-08-10 Thomas blancharjq
US4916637A (en) 1987-11-18 1990-04-10 International Business Machines Corporation Customized instruction generator
US4885684A (en) 1987-12-07 1989-12-05 International Business Machines Corporation Method for compiling a master task definition data set for defining the logical data flow of a distributed processing network
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
US5057996A (en) 1989-06-29 1991-10-15 Digital Equipment Corporation Waitable object creation system and method in an object based computer operating system
CA2025170A1 (en) 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP2720904B2 (ja) 1990-08-31 1998-03-04 富士通株式会社 自己記述によるデータベース管理システムの構成方法および開発/変更方法
EP0490636B1 (en) 1990-12-14 1998-09-09 Sun Microsystems, Inc. Method and apparatus for interprocess message switching
US5317568A (en) 1991-04-11 1994-05-31 Galileo International Partnership Method and apparatus for managing and facilitating communications in a distributed hetergeneous network
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5469571A (en) 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
US5590281A (en) 1991-10-28 1996-12-31 The United States Of Americas As Represented By The Secretary Of The Navy Asynchronous bidirectional application program processes interface for a distributed heterogeneous multiprocessor system
EP0543560B1 (en) 1991-11-19 1999-12-22 Sun Microsystems, Inc. Arbitrating multiprocessor accesses to shared resources
US5349682A (en) 1992-01-31 1994-09-20 Parallel Pcs, Inc. Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors
US5361359A (en) 1992-08-31 1994-11-01 Trusted Information Systems, Inc. System and method for controlling the use of a computer
US5329619A (en) 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5481717A (en) 1993-04-12 1996-01-02 Kabushiki Kaisha Toshiba Logic program comparison method for verifying a computer program in relation to a system specification
GB9505939D0 (en) 1995-03-23 1995-05-10 Intelligence Quotient Int A method of operating a computer system
US5455951A (en) 1993-07-19 1995-10-03 Taligent, Inc. Method and apparatus for running an object-oriented program on a host computer with a procedural operating system
JPH0756754A (ja) * 1993-08-03 1995-03-03 Internatl Business Mach Corp <Ibm> マルチメディア・グループ資源割当て装置及び方法
GB9320982D0 (en) 1993-10-12 1993-12-01 Ibm A data processing system
EP0671685B1 (en) 1994-03-08 1998-11-04 Digital Equipment Corporation Method and apparatus for detecting and executing cross-domain calls in a computer system
US5590001A (en) 1994-03-15 1996-12-31 Fujitsu Limited Breather filter unit for magnetic disk drive
ATE278218T1 (de) * 1994-05-26 2004-10-15 Commw Of Australia Gesicherte rechnerarchitektur
US6763454B2 (en) * 1994-05-27 2004-07-13 Microsoft Corp. System for allocating resources in a computer system
US5551051A (en) 1994-09-20 1996-08-27 Motorola, Inc. Isolated multiprocessing system having tracking circuit for verifyng only that the processor is executing set of entry instructions upon initiation of the system controller program
US5794052A (en) 1995-02-27 1998-08-11 Ast Research, Inc. Method of software installation and setup
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US5752032A (en) 1995-11-21 1998-05-12 Diamond Multimedia Systems, Inc. Adaptive device driver using controller hardware sub-element identifier
US6009476A (en) 1995-11-21 1999-12-28 Diamond Multimedia Systems, Inc. Device driver architecture supporting emulation environment
US5754776A (en) 1995-12-28 1998-05-19 Intel Corporation Re-prioritizing background data transfers in multipoint conferencing
US5951639A (en) 1996-02-14 1999-09-14 Powertv, Inc. Multicast downloading of software and data modules and their compatibility requirements
US5845129A (en) 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US6292941B1 (en) 1996-04-30 2001-09-18 Sun Microsystems, Inc. Operating system installation
US5768532A (en) 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
US6003129A (en) 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US5958050A (en) * 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US5974572A (en) 1996-10-15 1999-10-26 Mercury Interactive Corporation Software system and methods for generating a load test using a server access log
US5923878A (en) 1996-11-13 1999-07-13 Sun Microsystems, Inc. System, method and apparatus of directly executing an architecture-independent binary program
US5878408A (en) 1996-12-06 1999-03-02 International Business Machines Corporation Data management system and process
US5931938A (en) 1996-12-12 1999-08-03 Sun Microsystems, Inc. Multiprocessor computer having configurable hardware system domains
US6002851A (en) 1997-01-28 1999-12-14 Tandem Computers Incorporated Method and apparatus for node pruning a multi-processor system for maximal, full connection during recovery
US5991826A (en) * 1997-03-10 1999-11-23 Compaq Computer Coporation System for configuring computer devices according to configuration patterns
US6144992A (en) 1997-05-09 2000-11-07 Altiris, Inc. Method and system for client/server and peer-to-peer disk imaging
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6247128B1 (en) 1997-07-22 2001-06-12 Compaq Computer Corporation Computer manufacturing with smart configuration methods
US6038399A (en) 1997-07-22 2000-03-14 Compaq Computer Corporation Computer manufacturing architecture with two data-loading processes
US6078744A (en) 1997-08-01 2000-06-20 Sun Microsystems Method and apparatus for improving compiler performance during subsequent compilations of a source program
US5963743A (en) 1997-08-29 1999-10-05 Dell Usa, L.P. Database for facilitating software installation and testing for a build-to-order computer system
US6072953A (en) 1997-09-30 2000-06-06 International Business Machines Corporation Apparatus and method for dynamically modifying class files during loading for execution
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6351850B1 (en) 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
US6182275B1 (en) 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6161150A (en) * 1998-01-30 2000-12-12 Object Technology Licensing Corporation System for informing a computer user of a conflict encountered during resource allocation to expansion cards of different types having resource information in different format
IL123512A0 (en) 1998-03-02 1999-03-12 Security 7 Software Ltd Method and agent for the protection against hostile resource use access
US6912692B1 (en) 1998-04-13 2005-06-28 Adobe Systems Incorporated Copying a sequence of commands to a macro
US6092189A (en) 1998-04-30 2000-07-18 Compaq Computer Corporation Channel configuration program server architecture
US6161051A (en) 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control
US6080207A (en) 1998-06-04 2000-06-27 Gateway 2000, Inc. System and method of creating and delivering software
US6279111B1 (en) 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US6381742B2 (en) 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6202147B1 (en) * 1998-06-29 2001-03-13 Sun Microsystems, Inc. Platform-independent device drivers
US6434694B1 (en) 1998-06-29 2002-08-13 Sun Microsystems, Inc. Security for platform-independent device drivers
US6629152B2 (en) 1998-06-29 2003-09-30 International Business Machines Corporation Message passing using shared memory of a computer
US6321334B1 (en) 1998-07-15 2001-11-20 Microsoft Corporation Administering permissions associated with a security zone in a computer system security model
DE19837871C2 (de) 1998-08-20 2000-06-08 Manfred Broy Verfahren zum automatischen Erzeugen eines Programms
US6324622B1 (en) 1998-08-24 2001-11-27 International Business Machines Corporation 6XX bus with exclusive intervention
US6029174A (en) 1998-10-31 2000-02-22 M/A/R/C Inc. Apparatus and system for an adaptive data management architecture
US6066182A (en) 1998-11-05 2000-05-23 Platinum Technology Ip, Inc. Method and apparatus for operating system personalization during installation
US6438549B1 (en) 1998-12-03 2002-08-20 International Business Machines Corporation Method for storing sparse hierarchical data in a relational database
US6842782B1 (en) 1998-12-08 2005-01-11 Yodlee.Com, Inc. Method and apparatus for tracking functional states of a web-site and reporting results to web developers
US6862735B1 (en) 1999-02-11 2005-03-01 Sun Microsystems, Inc. Mechanism by which platform independent software may bind to and access platform dependent software
US6732220B2 (en) 1999-02-17 2004-05-04 Elbrus International Method for emulating hardware features of a foreign architecture in a host operating system environment
US6341371B1 (en) 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US6442754B1 (en) 1999-03-29 2002-08-27 International Business Machines Corporation System, method, and program for checking dependencies of installed software components during installation or uninstallation of software
US6546546B1 (en) 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6782541B1 (en) 1999-05-28 2004-08-24 Avaya Technology Corp. System and method of exchanging information between software modules
AU7736000A (en) 1999-10-01 2001-05-10 Infraworks Corporation Registry monitoring system and method
US7167867B1 (en) 1999-10-05 2007-01-23 Emc Corporation Self-describing file system
US6715144B2 (en) 1999-12-30 2004-03-30 International Business Machines Corporation Request based automation of software installation, customization and activation
US6748592B1 (en) 2000-02-14 2004-06-08 Xoucin, Inc. Method and apparatus for protectively operating a data/information processing device
US6567974B1 (en) 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US7047534B2 (en) * 2000-03-17 2006-05-16 Microsoft Corporation Simplified device drivers for hardware devices of a computer system
US6871344B2 (en) 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7155713B1 (en) 2000-04-27 2006-12-26 Microsoft Corporation Componentized operating system
US7310801B2 (en) 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6868539B1 (en) 2000-06-28 2005-03-15 Microsoft Corp. System and method providing single application image
US7124408B1 (en) 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US6816905B1 (en) 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
US7089289B1 (en) 2000-07-18 2006-08-08 International Business Machines Corporation Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
US6973517B1 (en) 2000-08-31 2005-12-06 Hewlett-Packard Development Company, L.P. Partition formation using microprocessors in a multiprocessor computer system
JP3664473B2 (ja) 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7260845B2 (en) 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
JP3610915B2 (ja) 2001-03-19 2005-01-19 株式会社デンソー 処理実行装置及びプログラム
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US20030031404A1 (en) 2001-08-07 2003-02-13 Corvis Corporation Optical transmission systems including optical components and optical filters and methods of use therein
GB2381336B (en) 2001-08-21 2005-09-28 Silicon Infusion Ltd Object orientated heterogeneous multi-processor platform
IL145105A (en) 2001-08-23 2007-02-11 Gregory Bondar Method and system for providing a web service by a plurality of web domains through a single ip address
US6988261B2 (en) 2001-08-24 2006-01-17 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions in Java computing environments
CA2404552C (en) 2001-09-21 2008-12-09 Corel Corporation System and method for secure communication
US6978018B2 (en) 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
US7711570B2 (en) 2001-10-21 2010-05-04 Microsoft Corporation Application abstraction with dialog purpose
KR20040058261A (ko) 2001-10-30 2004-07-03 코닌클리케 필립스 일렉트로닉스 엔.브이. 분산 소프트웨어 컴포넌트들을 구성하는 방법
US6745307B2 (en) 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
CN1327347C (zh) 2002-01-24 2007-07-18 皇家飞利浦电子股份有限公司 在多处理环境中执行进程
JP2003233521A (ja) 2002-02-13 2003-08-22 Hitachi Ltd ファイル保護システム
US6977994B2 (en) 2002-03-27 2005-12-20 Toshiba Tec Kabushiki Kaisha Portable, high performance messaging system
US6721871B2 (en) 2002-04-02 2004-04-13 Nokia Corporation Method and apparatus for synchronizing data stores with respect to changes in folders
US7136924B2 (en) 2002-04-16 2006-11-14 Dean Dauger Method and system for parallel operation and control of legacy computer clusters
US7058768B2 (en) 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
EP1361509B1 (en) 2002-05-08 2013-07-10 Sap Ag Software delivery manager
US7222106B2 (en) 2002-05-21 2007-05-22 International Business Machines Corporation Mechanisms for handling software license agreements on multi-user system
US20030221012A1 (en) 2002-05-22 2003-11-27 International Business Machines Corporation Resource manager system and method for access control to physical resources in an application hosting environment
US7062764B2 (en) 2002-06-17 2006-06-13 Microsoft Corporation System and method for manipulating offline software
US7103914B2 (en) 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
DE10235455B9 (de) 2002-08-02 2008-01-24 Leo Elektronenmikroskopie Gmbh Teilchenoptische Vorrichtung und Verfahren zum Betrieb derselben
US7832011B2 (en) 2002-08-30 2010-11-09 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
US20040054793A1 (en) 2002-09-16 2004-03-18 Richard Coleman System and method for high performance shared web hosting
ATE516537T1 (de) 2002-10-01 2011-07-15 Sap Ag Prüfung von skriptsprachen mit schnittstellen mittels annotationen in xml
US6944754B2 (en) 2002-10-02 2005-09-13 Wisconsin Alumni Research Foundation Method and apparatus for parallel execution of computer software using a distilled program
US20040078799A1 (en) 2002-10-17 2004-04-22 Maarten Koning Interpartition communication system and method
US7000092B2 (en) 2002-12-12 2006-02-14 Lsi Logic Corporation Heterogeneous multi-processor reference design
EP1431873A1 (en) 2002-12-19 2004-06-23 Hewlett-Packard Company, A Delaware Corporation Computer programming
CN1270229C (zh) * 2002-12-31 2006-08-16 上海科泰世纪科技有限公司 基于动态内核实现跨地址空间创建构件对象的方法
US8255361B2 (en) 2003-01-31 2012-08-28 Oracle America, Inc. Method and system for validating differential computer system update
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US6963960B2 (en) 2003-03-25 2005-11-08 Microsoft Corporation System and method for kernel mode memory management having movable kernel objects
US8136155B2 (en) 2003-04-01 2012-03-13 Check Point Software Technologies, Inc. Security system with methodology for interprocess communication control
CN1312577C (zh) 2003-05-07 2007-04-25 中兴通讯股份有限公司 一种实现通信过程零拷贝消息队列的方法
GB2401445A (en) 2003-05-08 2004-11-10 Simon Freeman Web site security model
US7389512B2 (en) 2003-05-09 2008-06-17 Sun Microsystems, Inc. Interprocess communication within operating system partitions
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
JP4196333B2 (ja) 2003-05-27 2008-12-17 日本電気株式会社 並列処理システム及び並列処理プログラム
US8020163B2 (en) 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US20050005261A1 (en) 2003-07-02 2005-01-06 Severin William B. Component integration engine
US7533103B2 (en) 2003-07-22 2009-05-12 Sap Ag Self-describing business objects
US7403956B2 (en) 2003-08-29 2008-07-22 Microsoft Corporation Relational schema format
US20050060687A1 (en) 2003-09-15 2005-03-17 Ghazaleh David Abu Method and apparatus for documenting and describing object oriented programming logic
US20050071828A1 (en) 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7516456B2 (en) 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7093091B2 (en) 2003-09-26 2006-08-15 Atmel Corporation Selectable block protection for non-volatile memory
US20050086667A1 (en) * 2003-09-30 2005-04-21 Feng Jin Symmetric Scheduling for parallel execution
US20050119902A1 (en) 2003-11-28 2005-06-02 Christiansen David L. Security descriptor verifier
US7565653B2 (en) 2004-02-20 2009-07-21 Sony Computer Entertainment Inc. Methods and apparatus for processor task migration in a multi-processor system
US7574709B2 (en) 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US8190863B2 (en) 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7844945B2 (en) 2004-08-04 2010-11-30 Avocent Fremont Corp. Software and firmware adaptation for unanticipated/changing hardware environments
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
WO2006036815A2 (en) 2004-09-22 2006-04-06 Xyratex Technology Limited Xml/soap interprocess intercontroller communication
US7690033B2 (en) 2004-09-28 2010-03-30 Exobox Technologies Corp. Electronic computer system secured from unauthorized access to and manipulation of data
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US20060123401A1 (en) 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
US7882317B2 (en) 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US8020141B2 (en) 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7451435B2 (en) 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
US7600232B2 (en) 2004-12-07 2009-10-06 Microsoft Corporation Inter-process communications employing bi-directional message conduits
US7454477B2 (en) 2005-05-16 2008-11-18 Microsoft Corporation Zero-copy transfer of memory between address spaces
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US20070033592A1 (en) 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US7500039B2 (en) 2005-08-19 2009-03-03 International Business Machines Corporation Method for communicating with a processor event facility
US20070094495A1 (en) 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US8132169B2 (en) 2006-07-21 2012-03-06 International Business Machines Corporation System and method for dynamically partitioning an application across multiple processing elements in a heterogeneous processing environment
US20080244507A1 (en) 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139396A (ja) * 2002-10-18 2004-05-13 Ntt Docomo Inc 入出力制御システム、入出力制御方法、入出力制御プログラム
JP2005129066A (ja) * 2003-10-24 2005-05-19 Microsoft Corp オペレーティングシステムリソース保護

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016517120A (ja) * 2013-04-22 2016-06-09 マイクロソフト テクノロジー ライセンシング,エルエルシー アプリケーション・プログラミング・インターフェースへのランタイム・アクセスの制御
US11003511B2 (en) 2013-04-22 2021-05-11 Microsoft Technology Licensing, Llc Controlling runtime access to application program interfaces

Also Published As

Publication number Publication date
EP1952251A4 (en) 2009-01-14
JP5009299B2 (ja) 2012-08-22
KR20080070634A (ko) 2008-07-30
RU2008116714A (ru) 2009-10-27
BRPI0618027A2 (pt) 2011-08-16
US8074231B2 (en) 2011-12-06
KR101331361B1 (ko) 2013-11-22
RU2443012C2 (ru) 2012-02-20
EP1952251A1 (en) 2008-08-06
US20070094673A1 (en) 2007-04-26
WO2007050364A1 (en) 2007-05-03

Similar Documents

Publication Publication Date Title
JP5009299B2 (ja) 分離されたエクステンションおよびデバイスドライバの構成
US9329887B2 (en) System and method for controlling multiple computer peripheral devices using a generic driver
US8621279B1 (en) System and method for generating emulation-based scenarios for Error Handling
US8176480B1 (en) Adaptive instrumentation through dynamic recompilation
US8826269B2 (en) Annotating virtual application processes
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
Zimmer et al. Beyond BIOS: developing with the unified extensible firmware interface
CN101297280B (zh) 隔离扩展和设备驱动程序的配置
US20090249329A1 (en) Limited service life through virtualized service images
US6834391B2 (en) Method and apparatus for automated native code isolation
US7155703B2 (en) Virtual method protection
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
Spear et al. Solving the starting problem: device drivers as self-describing artifacts
EP2941694B1 (en) Capability based device driver framework
US7213098B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine
JP2009501385A (ja) ノード間通信パイプライン
EP2941695A1 (en) High throughput low latency user mode drivers implemented in managed code
van Rossum Python Setup and Usage
MX2008005403A (en) Configuration of isolated extensions and device drivers
Dzikiewicz Input/Output Subsystem in Singularity Operating System
Larus et al. Using the singularity research development kit
Rahman et al. CLR Execution Model
Lam Thuan Thai

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120525

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120530

R150 Certificate of patent or registration of utility model

Ref document number: 5009299

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250