JP5128484B2 - 静的に検証可能なプロセス間通信の分離プロセス - Google Patents
静的に検証可能なプロセス間通信の分離プロセス Download PDFInfo
- Publication number
- JP5128484B2 JP5128484B2 JP2008537768A JP2008537768A JP5128484B2 JP 5128484 B2 JP5128484 B2 JP 5128484B2 JP 2008537768 A JP2008537768 A JP 2008537768A JP 2008537768 A JP2008537768 A JP 2008537768A JP 5128484 B2 JP5128484 B2 JP 5128484B2
- Authority
- JP
- Japan
- Prior art keywords
- channel
- endpoint
- message
- communication channel
- ownership
- 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.)
- Expired - Fee Related
Links
- 238000004891 communication Methods 0.000 title claims description 61
- 238000000926 separation method Methods 0.000 title description 10
- 238000000034 method Methods 0.000 claims description 191
- 230000008569 process Effects 0.000 claims description 151
- 230000015654 memory Effects 0.000 claims description 46
- 230000005540 biological transmission Effects 0.000 claims description 10
- 108091006146 Channels Proteins 0.000 description 83
- 238000012546 transfer Methods 0.000 description 14
- 238000002955 isolation Methods 0.000 description 13
- 230000003068 static effect Effects 0.000 description 12
- 238000013459 approach Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 239000011800 void material Substances 0.000 description 6
- 230000003936 working memory Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
Description
・データは、各チャネルが厳密に2つのエンドポイントから成る双方向チャネル上で、交換される。任意の時点で、各チャネルエンドポイントは、単一のスレッドによって所有される(すなわち、単一のプロセスが所有する)。
・バッファおよび他のメモリデータ構造は、そのバッファ内およびメモリデータ構造内に含まれるデータをコピーすることによってではなく、ポインタによって転送される。これらの転送は、メモリブロックの所有権(ownership)を渡す。
・チャネル通信は、メッセージ、メッセージの引数の型、および有効なメッセージインタラクションのシーケンスを、セッション型と類似の有限状態マシンとして記述する、静的に検証可能なチャネル規約(channel contracts)によって規定される。
・チャネルエンドポイントを、メッセージでチャネルを介して送信することができる。したがって、通信ネットワークは、動的に発展することがある。
・チャネル上の送受信は、メモリ割り当てを必要としない。
・送信は、ノンブロッキングかつノンフェーリング(non-failing)である。ノンブロッキングは、送信側は通信の成功を待たないことを意味する。ノンフェーリングは、通信は、常に最終的には成功することを意味する。本実装では、定義によってこれを達成する。すなわち、送信操作は、結果を待つことなく完了する。(しかし、「チャネル」は失敗する可能性があり、チャネル上で受信するときにこれを監視することができる)。
図1は、静的に検証可能なプロセス間通信ソフトウェア分離プロセス(SIP:Software-Isolated Process)と、そのような静的に検証可能なプロセス間通信SIPのプログラミングを促進するプログラミングツールの使用とをサポートする例示的な動作シナリオを示す。
コンピュータ科学の分野、より詳細にはオペレーティングシステムの分野では、「ソフトウェアプロセス」(または、より単純には「プロセス」)という用語は、よく知られている。アプリケーションは、1つまたは複数のプロセスから成ることが多い。OSは、コンピュータ上で実行中の1つまたは複数の別個のプロセスを認識し、実際には、管理および監視することがある。
・SIPは、閉じたオブジェクト空間であり、アドレス空間ではない。2つのSIPは、同時にオブジェクトにアクセスすることができない。プロセス間の通信は、排他的なデータ所有権を転送する。
・SIPは、閉じたコード空間でもある。プロセスは、動的にコードをロードまたは生成しない。
・SIPは、分離に関してメモリ管理ハードウェアに依拠せず、したがって、複数のSIPは、物理または仮想アドレス空間内に存在することができる。
・SIP間の通信は、双方向であり強く型付けされた高次のチャネルを通して行われる。チャネルの型は、チャネルの通信プロトコル、ならびにチャネルが転送する値を記述し、両方の態様が検証される。
・SIPは、作成が安価であり、SIP間の通信が受けるオーバヘッドは低い。この低コストにより、SIPを、細かい分離および拡張メカニズムとして使用することが現実的になる。
・SIPは、オペレーティングシステムによって作成および管理され、その結果、終了時にSIPのリソースを、効率的に再利用することができる。
・SIPは、異なるデータレイアウト、ランタイムシステム、およびガーベジコレクタを有する範囲にいたるまで、独立した実行環境を有する。他の安全な言語システムは、1つの実行環境をサポートする。
図2は、SIP間の予期せぬインタラクション(unanticipated interaction)なしにプロセス間通信を促進する例示的なプロセス間通信(IPC:inter-process communication)アーキテクチャ200を示す。プロセスの間の通信を提供することに加えて、例示的なIPCアークテクチャ200は、プロセスとオペレーティングシステムのカーネルとの間の通信を提供することができる。
各SIPは、自己の独立した専用のヒープを維持する。SIPは、互いにメモリを共有しない。したがって、データが、あるSIPから別のSIPに渡されるとき、その渡されたデータは、プロセスの専用ヒープ(private heap)からは来ない。代わりに、そのデータは、プロセス間で移動可能なデータの保持に使用される別個のヒープから来る。その別個のヒープは、図1に示される交換ヒープ132または図2に示される交換ヒープ290などの、交換ヒープである。
IPCアーキテクチャ200では、チャネルは、厳密に2つのエンドポイントから成る双方向のメッセージコンジット(message conduit)である。エンドポイントは、チャネルピアと呼ばれることもある。チャネルは、損失を少なく(loss-lessly)かつ順番にメッセージを送達する。また、メッセージは典型的に、送信された順序で取り出される。意味的に、各エンドポイントは、受信キューを有し、エンドポイント上の送信側は、ピアのキュー上のメッセージを待ち行列に入れる。
チャネル上で転送されるエンドポイントと他のデータとのメモリ分離は、コンパイル時に交換ヒープ内の全てのブロックを追跡することによって保証される。特に静的チェックは、これらのリソースがリソースを所有するプログラムポイントで発生し、方法がこれらのリソースの所有権をリークしないようにアクセスを実施する。追跡されたリソースは、正確な所有権モデルを有する。
チャネル規約は、プロセス分離アーキテクチャを促進するために、本明細書で説明される実装によって使用される。チャネル規約(およびプロセス間通信の他の態様)は、“Inter-Process Communications Employing Bi-directional Message Conduits”でも説明されている。
contract C1{
in message Request (int x) requires x>0;
out message Reply (int y);
out message Error ();
state start: Request?
-> (Reply! Or Error!)
-> Start;
}
public contract TcpConnectionContract{
// Request(要求)
in message connect (uint dstIP, ushort dstPort);
out message Ready ();
// Initial state(初期状態)
state Start : Ready! -> ReadyState;
state ReadyState : one {
Connect? -> ConnectResult;
BindLocalEndpoint? -> BindResult;
Close? -> Closed;
}
// Binding to a local endpoint(ローカルエンドポイントにバインド)
state BindResult : one {
OK! -> Bound;
InvalidEndPoint! -> ReadyState;
}
in message Listen ();
state Bound : one {
Listen? -> ListenResult;
Connect? -> ConnectResult;
Close? -> Closed;
}
・・・
チャネルは、そのチャネルのインポート側およびエクスポート側を表すエンドポイントの対として明示される。各エンドポイントは、チャネルが順守する規約を指定する型を有する。エンドポイント型は、各規約内で暗黙的に宣言される。規約C1は、クラスとして表され、エンドポイント型は、以下のようにそのクラス内部のネストされた型である。
・ C1.Imp −規約C1でのチャネルのインポートエンドポイントの型
・ C1.Exp −規約C1でのチャネルのエクスポートエンドポイントの型
各規約クラスは、その規約内で宣言したメッセージを送受信するためのメソッドを含む。例として、以下のメソッドを与える。
C1.Imp {
void SendRequest (int x);
void RecvReply (out int y);
void RecvError ();
}
C1.Exp {
void RecvRequest (out int x);
void SendReply (int y);
void SendError ();
}
図3は、静的に検証可能なSIPのための効率的なプロセス間通信を促進する方法300および400を示す。これらの方法300および400は、図1および図2に示される様々なコンポーネントの1つまたは複数によって実施される。さらに、これらの方法300および400を、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組合せで実施することができる。
プログラミングツール160は、1つまたは複数のSIPのプログラミングを検証することができる。プログラミングツール160は、実行されるコードがタイプセーフであることを検証し、コンパイラによる強い不変条件の使用、および実行時の強い不変条件の使用の実施を検証する。このような強い不変条件は、(限定ではなく例として)以下を含む。
・ 交換ヒープ内の各ブロックは、任意の時点で、多くても1つの所有スレッド(すなわち、プロセス)を有する。
・ 交換ヒープ内のブロックは、そのブロックの所有者によってアクセスされるのみである。したがって、ブロックが解放された後、または所有権の転送後、アクセスはない。
・ チャネル規約の実施形態は、プロセス間の通信(例えば、そのチャネル規約に対応するチャネルにおいて観察されたメッセージのシーケンス)を定義し、制限する。
図5は、分離プロセスの検証方法500を示す。この方法500は、図1および図2に示される様々なコンポーネントの1つまたは複数によって実施される。さらに、この方法500を、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組合せで実施することができる。
本明細書で説明される技術を、1つまたは複数のコンピュータネットワークの一部、あるいはそれらの組合せとして、プログラムモジュール、汎用および専用のコンピューティングシステム、ネットワークサーバおよび装置、専用電子回路およびハードウェア、ファームウェアを含む(がこれらに限らない)多くの方法で実装することができる。
Claims (9)
- コンピュータにおいて実行される方法であって、
前記コンピュータのオペレーションシステムが、特定のデータセットの所有権を第1のプロセスに関連付けることと、
前記オペレーティングシステムが、前記第1のプロセスによって所有される第1のエンドポイントと、第2のプロセスによって所有される第2のエンドポイントとを含む2つのエンドポイントのみを有するプロセス間通信チャネルを介して、該プロセス間通信チャネルに関連付けられた静的に検証可能なチャネル規約に従って、前記特定のデータセットを前記第1のプロセスから前記第2のプロセスに送信することと
を含み、前記チャネル規約は、前記第1のプロセスが通信すべきプロセスと、前記プロセス間通信チャネルにおける通信方法とを指定し、および前記プロセス間通信チャネルの前記2つのエンドポイントの各々が一度に1つのプロセスのみによって所有されることを規定しており、前記チャネル規約が順守されているかどうかを、前記特定のデータセットの送信の前に検証し、
前記特定のデータセットを送信することによって、前記特定のデータセットの前記所有権が前記第1のプロセスから前記第2のプロセスに転送され、前記所有権を転送した後、前記第1のプロセスによる前記特定のデータセットに対するアクセスは制限されることを特徴とする方法。 - 前記特定のデータセットは、メッセージを含み、
前記チャネル規約は、さらに前記プロセス間通信チャネルにおけるメッセージのシーケンスを定義することを特徴とする請求項1に記載の方法。 - 前記特定のデータセットは、割り当てられたメモリ内のアドレス可能な位置に格納され、前記割り当てられたメモリの前記アドレス可能な位置に対するアクセスは、一度に1つのプロセスのみに制限されることを特徴とする請求項1に記載の方法。
- 請求項1に記載の方法をコンピュータに実行させるためのプログラム。
- コンピュータにおいて実行される方法であって、
前記コンピュータのオペレーティングシステムが、2つのエンドポイントのみを有するプロセス間通信チャネルの特定のエンドポイントの所有権を、第1のプロセスに関連付けることと、
前記オペレーティングシステムが、前記プロセス間通信チャネルを介して、前記プロセス間通信チャネルに関連付けられた静的に検証可能なチャネル規約に従って、前記特定のエンドポイントを前記第1のプロセスから第2のプロセスに送信することと
を含み、前記チャネル規約は、前記第1のプロセスが通信すべきプロセスと、前記プロセス間通信チャネルにおける通信方法とを指定し、および前記プロセス間通信チャネルの前記2つのエンドポイントの各々が一度に1つのプロセスのみによって所有されることを規定しており、前記チャネル規約が順守されているかどうかを、前記特定のエンドポイントの送信の前に検証し、
前記特定のエンドポイントを送信することによって、前記特定のエンドポイントの所有権が、前記第1のプロセスから前記第2のプロセスに転送され、前記所有権を転送した後、前記第1のプロセスによる前記特定のエンドポイントへのアクセスは制限されることを特徴とする方法。 - 前記特定のエンドポイントを送信することは、前記特定のエンドポイントが格納されているアドレス可能な位置へのポインタを送信することを含むことを特徴とする請求項5に記載の方法。
- 請求項5に記載の方法をコンピュータに実行させるためのプログラム。
- コンピュータにおいて実行される方法であって、
前記コンピュータのオペレーティングシステムが、独立の実行環境を有する複数の分離ソフトウェアプロセスを構築することと、
前記コンピュータの共有交換ヒープ内の複数のメモリブロックが、それぞれ、前記複数の分離ソフトウェアプロセスのうち2つ以上の分離ソフトウェアプロセスによって同時に所有されていないことを確認することと、
前記オペレーティングシステムが、第1のエンドポイントと第2のエンドポイントとからなる2つのエンドポイントのみを有するプロセス間通信チャネルを介して、該プロセス間通信チャネルに関連付けられたチャネル規約に従って、前記複数の分離ソフトウェアプロセスのうち前記第1のエンドポイントを有する送信側の分離ソフトウェアプロセスから、前記第2のエンドポイントを有する受信側の分離ソフトウェアプロセスにメッセージを送信することと
を含み、前記チャネル規約は、前記送信側の分離ソフトウェアプロセスが通信すべき受信側の分離ソフトウェアプロセスと、前記プロセス間通信チャネルにおける通信方法とを指定し、および前記プロセス間通信チャネルの前記2つのエンドポイントの各々が一度に1つのプロセスのみによって所有されることを規定しており、前記チャネル規約が順守されているかどうかを、前記メッセージの送信の前に検証し、
前記メッセージを送信することによって、前記メッセージに対する所有権が、前記送信側の分離ソフトウェアプロセスから前記受信側の分離ソフトウェアプロセスに転送され、前記所有権を転送した後、前記メッセージによって示される前記共有交換ヒープ内の特定のメモリブロックに対する前記送信側の分離ソフトウェアプロセスのアクセスは制限されることを特徴とする方法。 - 前記メッセージを送信する前に、前記特定のメモリブロックが前記送信側の分離ソフトウェアプロセス以外の別の分離ソフトウェアプロセスによってアクセスされていないかどうかを判定することと、
前記判定の結果を提示することと
をさらに含むことを特徴とする請求項8に記載の方法。
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,162 | 2006-06-30 | ||
US11/428,162 US20070094495A1 (en) | 2005-10-26 | 2006-06-30 | Statically Verifiable Inter-Process-Communicative Isolated Processes |
PCT/US2006/040527 WO2007050363A1 (en) | 2005-10-26 | 2006-10-16 | Statically verifiable inter-process-communicative isolated processes |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2009514098A JP2009514098A (ja) | 2009-04-02 |
JP2009514098A5 JP2009514098A5 (ja) | 2009-12-03 |
JP5128484B2 true JP5128484B2 (ja) | 2013-01-23 |
Family
ID=37968123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008537768A Expired - Fee Related JP5128484B2 (ja) | 2005-10-26 | 2006-10-16 | 静的に検証可能なプロセス間通信の分離プロセス |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070094495A1 (ja) |
EP (1) | EP1941372A1 (ja) |
JP (1) | JP5128484B2 (ja) |
KR (1) | KR20080069586A (ja) |
BR (1) | BRPI0617788A2 (ja) |
RU (1) | RU2429526C2 (ja) |
WO (1) | WO2007050363A1 (ja) |
Families Citing this family (16)
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 |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US20080086603A1 (en) * | 2006-10-05 | 2008-04-10 | Vesa Lahtinen | Memory management method and system |
US8327327B2 (en) * | 2007-03-21 | 2012-12-04 | Carnegie Mellon University | Method for statically checking an object-oriented computer program module |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US20090183155A1 (en) * | 2008-01-15 | 2009-07-16 | Microsoft Corporation | Isolation of Content by Processes in an Application |
US8230180B2 (en) | 2008-06-11 | 2012-07-24 | Samsung Electronics Co., Ltd. | Shared memory burst communications |
US8539456B2 (en) * | 2009-06-30 | 2013-09-17 | Intel Corporation | Automatic conversion of MPI source code programs into MPI thread-based programs |
US10242182B2 (en) | 2009-10-23 | 2019-03-26 | Secure Vector, Llc | Computer security system and method |
US9454652B2 (en) * | 2009-10-23 | 2016-09-27 | Secure Vector, Llc | Computer security system and method |
CN102137123A (zh) * | 2010-01-25 | 2011-07-27 | 腾讯科技(北京)有限公司 | 实现移动终端上不同应用程序的进程之间通信的装置和方法 |
RU2610582C2 (ru) * | 2014-09-30 | 2017-02-13 | Общество С Ограниченной Ответственностью "Яндекс" | Способ передачи и способ получения объекта от первого процесса второму процессу, машиночитаемый носитель (2 варианта) |
RU2592383C1 (ru) * | 2015-06-30 | 2016-07-20 | Закрытое акционерное общество "Лаборатория Касперского" | Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти |
US10958480B2 (en) * | 2018-07-19 | 2021-03-23 | Vmware, Inc. | Per-app virtual private network tunnel for multiple processes |
CN110287089B (zh) * | 2019-05-07 | 2023-02-17 | 华东师范大学 | 一种基于中间格式及smt技术的微内核ipc验证方法 |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4916637A (en) * | 1987-11-18 | 1990-04-10 | International Business Machines Corporation | Customized instruction generator |
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 |
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 |
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 |
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 |
DE69230462T2 (de) * | 1991-11-19 | 2000-08-03 | Sun Microsystems, Inc. | Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln |
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 |
JPH05224956A (ja) * | 1992-02-14 | 1993-09-03 | Nippon Telegr & Teleph Corp <Ntt> | プロセス間メッセージ通信方法 |
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 |
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 |
DE69505717T2 (de) * | 1994-03-08 | 1999-06-24 | Digital Equipment Corp., Maynard, Mass. | Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen |
US6115819A (en) * | 1994-05-26 | 2000-09-05 | The Commonwealth Of Australia | Secure computer architecture |
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 |
US5752032A (en) * | 1995-11-21 | 1998-05-12 | Diamond Multimedia Systems, Inc. | Adaptive device driver using controller hardware sub-element identifier |
US5754776A (en) * | 1995-12-28 | 1998-05-19 | Intel Corporation | Re-prioritizing background data transfers in multipoint conferencing |
US6292941B1 (en) * | 1996-04-30 | 2001-09-18 | Sun Microsystems, Inc. | Operating system installation |
US5944821A (en) * | 1996-07-11 | 1999-08-31 | Compaq Computer Corporation | Secure software registration and integrity assessment in a computer system |
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 |
US5884018A (en) * | 1997-01-28 | 1999-03-16 | Tandem Computers Incorporated | Method and apparatus for distributed agreement on processor membership in a multi-processor system |
US6038399A (en) * | 1997-07-22 | 2000-03-14 | Compaq Computer Corporation | Computer manufacturing architecture with two data-loading processes |
US6247128B1 (en) * | 1997-07-22 | 2001-06-12 | Compaq Computer Corporation | Computer manufacturing with smart configuration methods |
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 |
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 |
US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
US6381742B2 (en) * | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
US6434694B1 (en) * | 1998-06-29 | 2002-08-13 | Sun Microsystems, Inc. | Security for platform-independent device drivers |
US6202147B1 (en) * | 1998-06-29 | 2001-03-13 | Sun Microsystems, Inc. | Platform-independent device drivers |
DE19837871C2 (de) * | 1998-08-20 | 2000-06-08 | Manfred Broy | Verfahren zum automatischen Erzeugen eines Programms |
US6066182A (en) * | 1998-11-05 | 2000-05-23 | Platinum Technology Ip, Inc. | Method and apparatus for operating system personalization during installation |
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 |
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 |
US6782541B1 (en) * | 1999-05-28 | 2004-08-24 | Avaya Technology Corp. | System and method of exchanging information between software modules |
WO2001025932A1 (en) * | 1999-10-01 | 2001-04-12 | Infraworks Corporation | Back-channeling in a memory vault system |
US6715144B2 (en) * | 1999-12-30 | 2004-03-30 | International Business Machines Corporation | Request based automation of software installation, customization and activation |
US7047534B2 (en) * | 2000-03-17 | 2006-05-16 | Microsoft Corporation | Simplified device drivers for hardware devices of a computer system |
US7310801B2 (en) * | 2000-04-27 | 2007-12-18 | Microsoft Corporation | Servicing a component-based software product throughout the software product lifecycle |
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 |
US6617013B2 (en) * | 2001-05-10 | 2003-09-09 | Siemens Westinghouse Power Corporation | Ceramic matrix composite having improved interlaminar strength |
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 |
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 |
US20030061401A1 (en) * | 2001-09-25 | 2003-03-27 | Luciani Luis E. | Input device virtualization with a programmable logic device of a server |
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 |
KR20040058261A (ko) * | 2001-10-30 | 2004-07-03 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 분산 소프트웨어 컴포넌트들을 구성하는 방법 |
WO2003062988A2 (en) * | 2002-01-24 | 2003-07-31 | Koninklijke Philips Electronics N.V. | Executing processes in a multiprocessing environment |
US6880149B2 (en) * | 2002-04-01 | 2005-04-12 | Pace Anti-Piracy | Method for runtime code integrity validation using code block checksums |
US7136924B2 (en) * | 2002-04-16 | 2006-11-14 | Dean Dauger | Method and system for parallel operation and control of legacy computer clusters |
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 |
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 |
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 | 上海科泰世纪科技有限公司 | 基于动态内核实现跨地址空间创建构件对象的方法 |
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 |
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 |
US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US20050071828A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
US20050091658A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Operating system resource protection |
US7565653B2 (en) * | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
US8190863B2 (en) * | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
TWI391860B (zh) * | 2004-08-04 | 2013-04-01 | Osa Technologies Inc | 用於為硬體裝置產生固定大小韌體形象化描述之方法 |
US7240137B2 (en) * | 2004-08-26 | 2007-07-03 | International Business Machines Corporation | System and method for message delivery across a plurality of processors |
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 |
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 |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
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 |
-
2006
- 2006-06-30 US US11/428,162 patent/US20070094495A1/en not_active Abandoned
- 2006-10-16 EP EP06826103A patent/EP1941372A1/en not_active Withdrawn
- 2006-10-16 BR BRPI0617788-3A patent/BRPI0617788A2/pt not_active IP Right Cessation
- 2006-10-16 JP JP2008537768A patent/JP5128484B2/ja not_active Expired - Fee Related
- 2006-10-16 WO PCT/US2006/040527 patent/WO2007050363A1/en active Application Filing
- 2006-10-16 KR KR1020087010081A patent/KR20080069586A/ko not_active IP Right Cessation
- 2006-10-16 RU RU2008116715/08A patent/RU2429526C2/ru not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
RU2429526C2 (ru) | 2011-09-20 |
RU2008116715A (ru) | 2009-10-27 |
KR20080069586A (ko) | 2008-07-28 |
BRPI0617788A2 (pt) | 2009-12-01 |
WO2007050363A1 (en) | 2007-05-03 |
US20070094495A1 (en) | 2007-04-26 |
EP1941372A1 (en) | 2008-07-09 |
JP2009514098A (ja) | 2009-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5128484B2 (ja) | 静的に検証可能なプロセス間通信の分離プロセス | |
Hayden | The ensemble system | |
Schmidt et al. | C++ Network Programming, Volume I: Mastering Complexity with ACE and Patterns | |
Fähndrich et al. | Language support for fast and reliable message-based communication in Singularity OS | |
CN101297277B (zh) | 静态可验证进程间通信隔离进程 | |
Henning et al. | Distributed programming with ice | |
Jose et al. | Unifying UPC and MPI runtimes: experience with MVAPICH | |
US20050081220A1 (en) | Systems and methods for dynamically linking application software into a running operating system kernel | |
US7600232B2 (en) | Inter-process communications employing bi-directional message conduits | |
Barlas et al. | NetStub: A framework for verification of distributed Java applications | |
Sharma et al. | Getting Started with Istio Service Mesh: Manage Microservices in Kubernetes | |
Denis et al. | Portable parallel CORBA objects: an approach to combine parallel and distributed programming for grid computing | |
Scherfke | aiomas Documentation | |
Soule | Autonomics development: a domain-specific aspect language approach | |
Sharma et al. | Getting Started with Istio Service Mesh | |
Dantam et al. | Unix philosophy and the real world: Control software for humanoid robots | |
Basanta‐Val et al. | Fine tuning of the multiplexing facilities of Java's Remote Method Invocation | |
Govindaraju et al. | XCAT-C++: Design and performance of a distributed CCA framework | |
Herrera et al. | Communication Management Through Sockets Developed In Java | |
US7702764B1 (en) | System and method for testing network protocols | |
MX2008005402A (en) | Statically verifiable inter-process-communicative isolated processes | |
Sharma et al. | Introduction to the Service Mesh | |
Chanda | Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features | |
Chiu | An architecture for concurrent, peer-to-peer components | |
Baker et al. | A status report: Early experiences with the implementation of a message passing system using Java NIO |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091016 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091016 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120301 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120330 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120730 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20120731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120731 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20120821 |
|
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: 20121005 |
|
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: 20121031 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5128484 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151109 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 |
|
LAPS | Cancellation because of no payment of annual fees |