JP2005063435A - ソフトウェアフォールトを封じ込める方法およびシステム - Google Patents
ソフトウェアフォールトを封じ込める方法およびシステム Download PDFInfo
- Publication number
- JP2005063435A JP2005063435A JP2004230380A JP2004230380A JP2005063435A JP 2005063435 A JP2005063435 A JP 2005063435A JP 2004230380 A JP2004230380 A JP 2004230380A JP 2004230380 A JP2004230380 A JP 2004230380A JP 2005063435 A JP2005063435 A JP 2005063435A
- Authority
- JP
- Japan
- Prior art keywords
- software module
- module instance
- logic
- software
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】 システム障害またはクラッシュに繋がりかねないソフトウェアフォールトの連鎖を防止する。
【解決手段】 本発明にかかるソフトウエアフォールトを閉じこめる方法は、メモリをソフトウェアモジュールインスタンスに割り振ること、ソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトにメモリを割り振ること、メモリ中のソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトを識別すること、およびソフトウェアモジュールインスタンスに対するメモリへのアクセスを制限することを含む。
【選択図】図3
【解決手段】 本発明にかかるソフトウエアフォールトを閉じこめる方法は、メモリをソフトウェアモジュールインスタンスに割り振ること、ソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトにメモリを割り振ること、メモリ中のソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトを識別すること、およびソフトウェアモジュールインスタンスに対するメモリへのアクセスを制限することを含む。
【選択図】図3
Description
本発明は、ソフトウェアフォールトを封じ込める方法およびシステムに関する。
コンピュータ上で実行されるソフトウェアモジュールインスタンスは、往々にして不安定になることがある。
一般に、ソフトウェアモジュールインスタンスとは、状態構造、キュー制御メモリ等の特定のセットを指す。
このような不安定性は一般に「ソフトウェアフォールト」と呼ばれ、たとえば、正しくないロジック、ゼロによる除算、および他のソフトウェア符号化エラーすなわち「バグ」を含む様々な要因に起因する場合がある。
一般に、ソフトウェアモジュールインスタンスとは、状態構造、キュー制御メモリ等の特定のセットを指す。
このような不安定性は一般に「ソフトウェアフォールト」と呼ばれ、たとえば、正しくないロジック、ゼロによる除算、および他のソフトウェア符号化エラーすなわち「バグ」を含む様々な要因に起因する場合がある。
図1は、ソフトウェアモジュールインスタンスA110およびソフトウェアモジュールインスタンスB115が、共有メモリ120の領域中のオブジェクトA125、オブジェクトB130、およびオブジェクトC135を格納し、アクセスし、かつ更新する代表的な従来のメモリ構成のブロック図を示す。
システムによっては、共有メモリの内容へのアクセスは、複数のソフトウェアモジュールインスタンス間でアクセスが重複しないように調整するために、1つまたは複数のロック機構を使用して制御することができる。
たとえば、ソフトウェアモジュールインスタンスA110は、POSIXpthread_mutex_lock()を使用して、mutexロック保護オブジェクトA125を取得することができる。
ソフトウェアモジュールインスタンスB115もpthread_mutex_lock()を使用して、続けて同じmutexを取得する場合、ソフトウェアモジュールインスタンスB 115は、ソフトウェアモジュールインスタンスA110がpthread_mutex_unlock()を呼び出してmutexの制御権を解放するまで制止される。
システムによっては、共有メモリの内容へのアクセスは、複数のソフトウェアモジュールインスタンス間でアクセスが重複しないように調整するために、1つまたは複数のロック機構を使用して制御することができる。
たとえば、ソフトウェアモジュールインスタンスA110は、POSIXpthread_mutex_lock()を使用して、mutexロック保護オブジェクトA125を取得することができる。
ソフトウェアモジュールインスタンスB115もpthread_mutex_lock()を使用して、続けて同じmutexを取得する場合、ソフトウェアモジュールインスタンスB 115は、ソフトウェアモジュールインスタンスA110がpthread_mutex_unlock()を呼び出してmutexの制御権を解放するまで制止される。
ソフトウェアモジュールインスタンスの間で共有メモリを使用するシステムでは、ソフトウェアフォールトが含まれない場合もある。
ソフトウェアモジュールインスタンスは、一旦不安定になると、共有メモリに格納されているデータを破損する恐れがある。
データの破損は、不安定なソフトウェアモジュールインスタンスにより通常格納され、アクセスされ、または変更されたデータに限られない。
共有メモリに格納されているすべてのデータが、不安定なソフトウェアモジュールインスタンスの予測不能な実行による危険にさらされる。
ソフトウェアモジュールインスタンスは、一旦不安定になると、共有メモリに格納されているデータを破損する恐れがある。
データの破損は、不安定なソフトウェアモジュールインスタンスにより通常格納され、アクセスされ、または変更されたデータに限られない。
共有メモリに格納されているすべてのデータが、不安定なソフトウェアモジュールインスタンスの予測不能な実行による危険にさらされる。
さらに、不安定なソフトウェアモジュールインスタンスが、他のソフトウェアモジュールインスタンスにより使用されるデータを一旦破損させると、その破損が広がり、他のソフトウェアモジュールインスタンスも不安定にさせる恐れがある。
このソフトウェアフォールトの連鎖は、完全なシステム障害またはクラッシュに繋がる場合もある。
他のソフトウェアモジュールインスタンスが不安定にならない場合であっても、検出するのが非常に困難な方法で、ユーザデータが故障した任意のインスタンスにより破損する恐れがある。
このソフトウェアフォールトの連鎖は、完全なシステム障害またはクラッシュに繋がる場合もある。
他のソフトウェアモジュールインスタンスが不安定にならない場合であっても、検出するのが非常に困難な方法で、ユーザデータが故障した任意のインスタンスにより破損する恐れがある。
本発明の一実施形態によると、メモリをソフトウェアモジュールインスタンスに割り振ること、ソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトにメモリを割り振ること、メモリ中のソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトを識別すること、およびソフトウェアモジュールインスタンスに対するメモリへのアクセスを制限することを含む、ソフトウェアフォールトを封じ込める方法が開示される。
以下の詳細な説明は、本開示全体を通して使用される例示的な用語の定義を含む。
すべての用語の単数形および複数形の両方がそれぞれの意味に入る。
すべての用語の単数形および複数形の両方がそれぞれの意味に入る。
本明細書において使用される「ソフトウェア」は、1つまたは複数のコンピュータ実行可能命令、ルーチン、アルゴリズム、モジュール、または本明細書に述べる機能およびアクションを実行する動的リンクライブラリからの別個のアプリケーションもしくはコードを含むプログラムを含むが、これらに限定されない。
ソフトウェアは、スタンドアロンプログラム、サーブレット、アプレット、メモリに格納される命令、オペレーティングシステムまたは他のタイプの実行可能命令の一部等、様々な形態で実施することも可能である。
当業者は、ソフトウェアの形態が、たとえば、所望用途の要件、ソフトウェアが実行される環境、および/または設計者/プログラマの要望等によって決まることを理解するであろう。
ソフトウェアはコードとも呼ばれる。
当業者は、ソフトウェアの形態が、たとえば、所望用途の要件、ソフトウェアが実行される環境、および/または設計者/プログラマの要望等によって決まることを理解するであろう。
ソフトウェアはコードとも呼ばれる。
「ロジック」は、本明細書において用いる「回路」と同義であり、機能(複数可)またはアクション(複数可)を実行するハードウェア、ファームウェア、ソフトウェア、および/またはそれぞれの組み合わせを含むがこれらに限定されない。
たとえば、所望の用途または必要性に基づいて、ロジックはソフトウェア制御されるマイクロプロセッサ、特定用途向け集積回路(ASIC)等の離散ロジック、または他のプログラムされたロジックデバイスを含むことができる。
ロジックはソフトウェアとして完全に具現されてもよい。
たとえば、所望の用途または必要性に基づいて、ロジックはソフトウェア制御されるマイクロプロセッサ、特定用途向け集積回路(ASIC)等の離散ロジック、または他のプログラムされたロジックデバイスを含むことができる。
ロジックはソフトウェアとして完全に具現されてもよい。
本明細書において使用する「モジュール」は、一般に、所与のタイプ、またはより一般には、論理的に独立したソフトウェアコンポーネントタイプのドライバまたはカーネルサブシステム等、ソフトウェアの一部を指す。
本明細書において使用される「ソフトウェアモジュールインスタンス」は、ソフトウェアモジュールの特定の繰り返しである。
ソフトウェアモジュールインスタンスは、状態構造、キュー制御メモリ等の特定のセットを指す。
たとえば、ドライブモジュールがデバイスを制御する命令を含む。
ドライバモジュールが1つのデバイスを制御している場合、システムには、1つのデバイスとして機能する、ドライバ状態構造、キュー制御メモリ等の特定のセットを有する1つのドライバモジュールインスタンスがある。
ドライバモジュールによってサポートされている2つの同様のデバイスがある場合、それぞれ各自のドライバ状態のコピーを有する2つのドライバモジュールインスタンスがある。
ソフトウェアモジュールインスタンスは、状態構造、キュー制御メモリ等の特定のセットを指す。
たとえば、ドライブモジュールがデバイスを制御する命令を含む。
ドライバモジュールが1つのデバイスを制御している場合、システムには、1つのデバイスとして機能する、ドライバ状態構造、キュー制御メモリ等の特定のセットを有する1つのドライバモジュールインスタンスがある。
ドライバモジュールによってサポートされている2つの同様のデバイスがある場合、それぞれ各自のドライバ状態のコピーを有する2つのドライバモジュールインスタンスがある。
「オブジェクト」は、個々に選択し操作することが可能な任意のアイテムである。
オブジェクトは、表示画面に現れる形状および絵、ならびにインターネット接続、オープンファイル、またはデータベースレコード等、あまり目に見えてはっきりとわかるものではないソフトウェアエンティティを含むことができる。
オブジェクト指向プログラミングでは、オブジェクトは、データおよびデータを操作する手続きの両方からなる自己完結型のエンティティである。
本書における用語「オブジェクト」の使い方は、より一般的なものを意図し、C++のようなオブジェクト指向プログラミング言語の場合よりもゆるくデータに関連するデータを操作する手続きを含む。
ここでは、モジュールインスタント毎に所与のデータ型の複数のインスタンスがある場合があり、データを操作する関数は、モジュールインスタンスが別のモジュールから受け取るメッセージと直接的な関係を持っても、かるいは間接的な関係を持ってもよい。
オブジェクトは、表示画面に現れる形状および絵、ならびにインターネット接続、オープンファイル、またはデータベースレコード等、あまり目に見えてはっきりとわかるものではないソフトウェアエンティティを含むことができる。
オブジェクト指向プログラミングでは、オブジェクトは、データおよびデータを操作する手続きの両方からなる自己完結型のエンティティである。
本書における用語「オブジェクト」の使い方は、より一般的なものを意図し、C++のようなオブジェクト指向プログラミング言語の場合よりもゆるくデータに関連するデータを操作する手続きを含む。
ここでは、モジュールインスタント毎に所与のデータ型の複数のインスタンスがある場合があり、データを操作する関数は、モジュールインスタンスが別のモジュールから受け取るメッセージと直接的な関係を持っても、かるいは間接的な関係を持ってもよい。
「メモリキー」は、プロセッサのハードウェア特徴を指す。
このようなプロセッサの例は、Hewlett−Packard Precision Architecture(HPPA)プロセッサ、およびIntel IA64プロセッサである。
これらおよび他のプロセッサは、メモリの1つまたは複数のページに関連するキー値を表す、アクティブメモリキーおよびフィールドを仮想メモリ構造に収容したプロセッサレジスタのセットを有する。
プロセッサが、プロセッサレジスタ中のアクティブキーのいずれともマッチングしないメモリキーを使用してメモリアドレスを参照する場合、フォールト割り込みが生成される。
このようなプロセッサの例は、Hewlett−Packard Precision Architecture(HPPA)プロセッサ、およびIntel IA64プロセッサである。
これらおよび他のプロセッサは、メモリの1つまたは複数のページに関連するキー値を表す、アクティブメモリキーおよびフィールドを仮想メモリ構造に収容したプロセッサレジスタのセットを有する。
プロセッサが、プロセッサレジスタ中のアクティブキーのいずれともマッチングしないメモリキーを使用してメモリアドレスを参照する場合、フォールト割り込みが生成される。
図2は、本発明の一実施形態による例示的なメモリ構成を示す。
図2に示す例では、メモリ200は、第1の制限付きメモリ領域210および第2の制限付きメモリ領域250を備える。
第1の制限付きメモリ領域210は、ソフトウェアモジュールインスタンスA215の状態情報、およびソフトウェアモジュールインスタンスA215に割り当てられたデータ220を格納する。
ソフトウェアモジュールインスタンスの状態情報は一般に、たとえば、プログラムカウンタ等の局所変数を含むプロセッサスタックを含む。
ソフトウェアモジュールインスタンスA215が担当するデータ220は、オブジェクトA225およびオブジェクトB230を含む。
同様に、第2の制限付きメモリ領域250は、ソフトウェアモジュールインスタンスB255の状態情報、およびソフトウェアモジュールインスタンスB255に割り当てられたデータ260を格納する。
ソフトウェアモジュールインスタンスB255が担当するデータ260は、オブジェクトC265を含む。
図2に示す例では、メモリ200は、第1の制限付きメモリ領域210および第2の制限付きメモリ領域250を備える。
第1の制限付きメモリ領域210は、ソフトウェアモジュールインスタンスA215の状態情報、およびソフトウェアモジュールインスタンスA215に割り当てられたデータ220を格納する。
ソフトウェアモジュールインスタンスの状態情報は一般に、たとえば、プログラムカウンタ等の局所変数を含むプロセッサスタックを含む。
ソフトウェアモジュールインスタンスA215が担当するデータ220は、オブジェクトA225およびオブジェクトB230を含む。
同様に、第2の制限付きメモリ領域250は、ソフトウェアモジュールインスタンスB255の状態情報、およびソフトウェアモジュールインスタンスB255に割り当てられたデータ260を格納する。
ソフトウェアモジュールインスタンスB255が担当するデータ260は、オブジェクトC265を含む。
一般に、ソフトウェアモジュールインスタンスに割り当てられたデータをメモリに格納することにより、メモリへのアクセスが特定のソフトウェアモジュールインスタンスに制限され、ソフトウェアフォールトの封じ込めに役立つ。
このような場合、各ソフトウェアモジュールインスタンスは、特定のソフトウェアモジュールのアクセス制限付きデータ記憶メモリに格納されている割り当てデータを格納し、アクセスし、かつ更新する能力を有する。
別のソフトウェアモジュールインスタンスに割り当てられたデータは、本ソフトウェアモジュールインスタンスによって直接格納または更新することができない。
たとえば、ソフトウェアモジュールインスタンスA215は、データ220に直接アクセスし更新する能力を有する。
しかし、ソフトウェアモジュールインスタンスA215はデータ260に直接アクセスし更新する能力を持たない。
これは、データ260がソフトウェアモジュールインスタンスB255に割り当てられているためである。
ソフトウェアモジュールインスタンスによる、アクセス制限付きデータ記憶メモリ外のデータにアクセスしようという試みは、ソフトウェアフォールトを示すものである。
別のソフトウェアモジュールインスタンスに割り当てられたデータへの間接的なアクセス、格納、および/または更新は、以下さらに詳細に述べる、そのデータを所有するソフトウェアモジュールインスタンスがアクセスし、格納し、かつ/または更新することを要求するメッセージを使用することにより利用が可能になる。
このような場合、各ソフトウェアモジュールインスタンスは、特定のソフトウェアモジュールのアクセス制限付きデータ記憶メモリに格納されている割り当てデータを格納し、アクセスし、かつ更新する能力を有する。
別のソフトウェアモジュールインスタンスに割り当てられたデータは、本ソフトウェアモジュールインスタンスによって直接格納または更新することができない。
たとえば、ソフトウェアモジュールインスタンスA215は、データ220に直接アクセスし更新する能力を有する。
しかし、ソフトウェアモジュールインスタンスA215はデータ260に直接アクセスし更新する能力を持たない。
これは、データ260がソフトウェアモジュールインスタンスB255に割り当てられているためである。
ソフトウェアモジュールインスタンスによる、アクセス制限付きデータ記憶メモリ外のデータにアクセスしようという試みは、ソフトウェアフォールトを示すものである。
別のソフトウェアモジュールインスタンスに割り当てられたデータへの間接的なアクセス、格納、および/または更新は、以下さらに詳細に述べる、そのデータを所有するソフトウェアモジュールインスタンスがアクセスし、格納し、かつ/または更新することを要求するメッセージを使用することにより利用が可能になる。
データを所有している第1のモジュールインスタンスが不安定になる場合、そのデータは正確ではない、または信頼できるものではない可能性がある。
第2のソフトウェアモジュールインスタンスは、第1のソフトウェアモジュールインスタンスに属するデータに直接アクセスすることができないため、第2のソフトウェアモジュールインスタンスは、第1のソフトウェアモジュールインスタンスが所有するデータを使用することによって不安定になることがない。
したがって、さらに詳細に以下に述べるように、ソフトウェアフォールトを第1のソフトウェアモジュールインスタンスに封じ込めることができる。
ソフトウェアフォールトが一旦修正される、すなわち、モジュールが修復されると、他のモジュールは修復されたモジュールのデータに間接的にアクセスすることが可能である。
第2のソフトウェアモジュールインスタンスは、第1のソフトウェアモジュールインスタンスに属するデータに直接アクセスすることができないため、第2のソフトウェアモジュールインスタンスは、第1のソフトウェアモジュールインスタンスが所有するデータを使用することによって不安定になることがない。
したがって、さらに詳細に以下に述べるように、ソフトウェアフォールトを第1のソフトウェアモジュールインスタンスに封じ込めることができる。
ソフトウェアフォールトが一旦修正される、すなわち、モジュールが修復されると、他のモジュールは修復されたモジュールのデータに間接的にアクセスすることが可能である。
好ましくは、各オブジェクトが、1つのみのソフトウェアモジュールインスタンスに割り当てられる、すなわち所有され、そのソフトウェアモジュールインスタンスは、特定のソフトウェアモジュールインスタンスに割り当てられたオブジェクトを自由にアクセスし、格納し、かつ/または更新することができる。
上に述べたように、別のソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるオブジェクトの操作は一般に、直接的には許可されないが、好ましくは間接的に実現される。
オブジェクトにアクセスしたいソフトウェアモジュールインスタンスは、そのオブジェクトを所有するソフトウェアモジュールインスタンスがそのオブジェクトにアクセスし、かつ/または操作することを要求する。
その結果、オブジェクトは、各オブジェクトのロックを提供する必要なく保護されるため、図2のシステムでは、各ソフトウェアモジュールインスタンスが、オブジェクトにアクセスする、またはオブジェクトを操作するためにロックを取得する必要がない。
上に述べたように、別のソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるオブジェクトの操作は一般に、直接的には許可されないが、好ましくは間接的に実現される。
オブジェクトにアクセスしたいソフトウェアモジュールインスタンスは、そのオブジェクトを所有するソフトウェアモジュールインスタンスがそのオブジェクトにアクセスし、かつ/または操作することを要求する。
その結果、オブジェクトは、各オブジェクトのロックを提供する必要なく保護されるため、図2のシステムでは、各ソフトウェアモジュールインスタンスが、オブジェクトにアクセスする、またはオブジェクトを操作するためにロックを取得する必要がない。
一実施形態では、間接的な操作を通してのアクセス要求は、チャネル270を通してソフトウェアモジュールインスタンス間でメッセージ280を使用して実現される。
たとえば、ソフトウェアモジュールインスタンスA215は、ソフトウェアモジュールインスタンスB255が所有するオブジェクトC265を間接的に更新することができる。
具体的には、オブジェクトC265を更新する要求メッセージ280Aが、ソフトウェアモジュールインスタンスA215からソフトウェアモジュールインスタンスB255に送られる。
ソフトウェアモジュールインスタンスB255は、ソフトウェアモジュールインスタンスA215に代わって更新を行う。
好ましくは、要求が完了すると、ソフトウェアモジュールインスタンスB255は、要求が完了したことを示すメッセージ280BをソフトウェアモジュールA215に返送する。
この方法は、コンピュータオペレーティングシステム(「OS」)内のモジュールインスタンスに特に適しているが、ユーザレベルのコードにも適用することが可能である。
たとえば、ソフトウェアモジュールインスタンスA215は、ソフトウェアモジュールインスタンスB255が所有するオブジェクトC265を間接的に更新することができる。
具体的には、オブジェクトC265を更新する要求メッセージ280Aが、ソフトウェアモジュールインスタンスA215からソフトウェアモジュールインスタンスB255に送られる。
ソフトウェアモジュールインスタンスB255は、ソフトウェアモジュールインスタンスA215に代わって更新を行う。
好ましくは、要求が完了すると、ソフトウェアモジュールインスタンスB255は、要求が完了したことを示すメッセージ280BをソフトウェアモジュールA215に返送する。
この方法は、コンピュータオペレーティングシステム(「OS」)内のモジュールインスタンスに特に適しているが、ユーザレベルのコードにも適用することが可能である。
さらに、メッセージサブシステムを介して、メッセージ280をソフトウェアモジュールインスタンス間でやりとりすることができる。
たとえば、ソフトウェアモジュールインスタンスA215は、オブジェクトC265を操作したい場合、要求をメッセージサブシステムに送る。
メッセージサブシステムは要求を受け取り、ソフトウェアモジュールインスタンスB255に提出する。
ソフトウェアモジュールインスタンスB255は要求を完了し、メッセージをメッセージサブシステムに返送する。
メッセージサブシステムは返信メッセージを受け取り、要求が完了したことを示すメッセージをソフトウェアモジュールインスタンスA215に送る。
このように、メッセージサブシステムは媒介としての役割を果たし、モジュールインスタンスA215およびモジュールインスタンスB255の分離および独立性を確保する。
たとえば、ソフトウェアモジュールインスタンスA215は、オブジェクトC265を操作したい場合、要求をメッセージサブシステムに送る。
メッセージサブシステムは要求を受け取り、ソフトウェアモジュールインスタンスB255に提出する。
ソフトウェアモジュールインスタンスB255は要求を完了し、メッセージをメッセージサブシステムに返送する。
メッセージサブシステムは返信メッセージを受け取り、要求が完了したことを示すメッセージをソフトウェアモジュールインスタンスA215に送る。
このように、メッセージサブシステムは媒介としての役割を果たし、モジュールインスタンスA215およびモジュールインスタンスB255の分離および独立性を確保する。
図3は、ソフトウェアフォールトを封じ込める一実施形態300の例示的な方法を示す。
図示のように、ブロックは、実行される機能、アクション、および/またはイベントを表す。
電子およびソフトウェアアプリケーションは動的で柔軟性のあるプロセスを含み、したがって図示のブロックを示す順序とは他の順序で実行することが可能なことが理解されるであろう。
ソフトウェアとして具現される要素は、機械語、手続き、オブジェクト指向、または人工知能技法等、様々なプログラミング手法を使用して実施することができる。
さらに、ソフトウェアのいくつかまたはすべてが、装置のオペレーティングシステムの一部として具現することもできる。
図示のように、ブロックは、実行される機能、アクション、および/またはイベントを表す。
電子およびソフトウェアアプリケーションは動的で柔軟性のあるプロセスを含み、したがって図示のブロックを示す順序とは他の順序で実行することが可能なことが理解されるであろう。
ソフトウェアとして具現される要素は、機械語、手続き、オブジェクト指向、または人工知能技法等、様々なプログラミング手法を使用して実施することができる。
さらに、ソフトウェアのいくつかまたはすべてが、装置のオペレーティングシステムの一部として具現することもできる。
ソフトウェアモジュールはメモリにロードされる命令を含む。
ソフトウェアモジュール命令は、読み取り専用アクセスによって保護される。
ソフトウェアモジュール命令は、プラットフォーム上で実行されている1つまたは複数のソフトウェアモジュールインスタンスによって読み取ることができる。
ソフトウェアモジュール命令は、読み取り専用アクセスによって保護される。
ソフトウェアモジュール命令は、プラットフォーム上で実行されている1つまたは複数のソフトウェアモジュールインスタンスによって読み取ることができる。
ブロック310に示すように、ソフトウェアモジュールインスタンスが使用するメモリが割り振られる。
メモリの割り振りは、ソフトウェアモジュールインスタンスがロードされ、かつ/または実行が開始される前に行っても、その間に行っても、または後に行ってもよい。
ブロック312において、データ記憶メモリが、ソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるデータを格納するのに割り振られる。
ソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるデータは、たとえば、ソフトウェアモジュールインスタンスそれ自体によって作成されたオブジェクト、オペレーティングシステム(OS)によってモジュールインスタンスに渡されたオブジェクト、および/または別のモジュールによってソフトウェアモジュールインスタンスに渡されたオブジェクトを含む。
さらに、所有権を変更したオブジェクトに割り振られたデータ記憶メモリは、単純に、オブジェクトを収容するデータ記憶メモリに関連するメモリキー(以下参照)を変更することによって実現することができる。
また、オブジェクトは、保護を目的として他のデータ記憶メモリにコピーし、それから古いオブジェクトを削除することができるように構築することもできる。
割り振られたメモリを含むメモリブロックはいずれも連続している必要はない。
メモリの割り振りは、ソフトウェアモジュールインスタンスがロードされ、かつ/または実行が開始される前に行っても、その間に行っても、または後に行ってもよい。
ブロック312において、データ記憶メモリが、ソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるデータを格納するのに割り振られる。
ソフトウェアモジュールインスタンスに割り当てられる、すなわち所有されるデータは、たとえば、ソフトウェアモジュールインスタンスそれ自体によって作成されたオブジェクト、オペレーティングシステム(OS)によってモジュールインスタンスに渡されたオブジェクト、および/または別のモジュールによってソフトウェアモジュールインスタンスに渡されたオブジェクトを含む。
さらに、所有権を変更したオブジェクトに割り振られたデータ記憶メモリは、単純に、オブジェクトを収容するデータ記憶メモリに関連するメモリキー(以下参照)を変更することによって実現することができる。
また、オブジェクトは、保護を目的として他のデータ記憶メモリにコピーし、それから古いオブジェクトを削除することができるように構築することもできる。
割り振られたメモリを含むメモリブロックはいずれも連続している必要はない。
ブロック315に示すように、ソフトウェアモジュールインスタンスに割り当てられたすべてのオブジェクトが識別される。
ソフトウェアモジュールインスタンスに割り当てられるオブジェクトは、ソフトウェアモジュールインスタンスが主に担当するオブジェクトである。
先に述べたように、オブジェクトはモジュールインスタンスにより作成されるか、あるいはメッセージによりモジュールインスタンスに渡される。
ブロック320において、こういったオブジェクトは割り振られたデータ記憶メモリに配置される。
オブジェクトがソフトウェアモジュールインスタンスそれ自体によって作成されたとき、あるいはオブジェクトがメッセージによりソフトウェアモジュールインスタンスに渡された場合、オブジェクトが環境により割り振られたデータ記憶メモリに移動したときに、オブジェクトは割り振られたデータ記憶メモリに配置される。
オブジェクトの識別は、たとえば、ソフトウェアモジュール間で渡されるメッセージ規格を定義するインタフェース定義によって実施することができる。
これらインタフェース定義は、たとえば、ソフトウェアインスタンス、他のオブジェクト、ファイル、またはプロセスとのオブジェクトの関連または結び付きに基づいて、オブジェクトのリストまたはテーブルをメモリに保持することによって実現することができる。
そして、環境またはプロセスがリストまたはテーブルにアクセスして、オブジェクトを識別することができる。
ソフトウェアモジュールインスタンスに割り当てられるオブジェクトは、ソフトウェアモジュールインスタンスが主に担当するオブジェクトである。
先に述べたように、オブジェクトはモジュールインスタンスにより作成されるか、あるいはメッセージによりモジュールインスタンスに渡される。
ブロック320において、こういったオブジェクトは割り振られたデータ記憶メモリに配置される。
オブジェクトがソフトウェアモジュールインスタンスそれ自体によって作成されたとき、あるいはオブジェクトがメッセージによりソフトウェアモジュールインスタンスに渡された場合、オブジェクトが環境により割り振られたデータ記憶メモリに移動したときに、オブジェクトは割り振られたデータ記憶メモリに配置される。
オブジェクトの識別は、たとえば、ソフトウェアモジュール間で渡されるメッセージ規格を定義するインタフェース定義によって実施することができる。
これらインタフェース定義は、たとえば、ソフトウェアインスタンス、他のオブジェクト、ファイル、またはプロセスとのオブジェクトの関連または結び付きに基づいて、オブジェクトのリストまたはテーブルをメモリに保持することによって実現することができる。
そして、環境またはプロセスがリストまたはテーブルにアクセスして、オブジェクトを識別することができる。
ブロック325において、割り振られたデータ記憶メモリへのアクセスが、メモリが割り振られたソフトウェアモジュールインスタンスの命令に制限される。
データ記憶メモリへのアクセスは様々な方法のいずれで実現してもよい。
たとえば、データ記憶メモリへのアクセスは、HPPAプロセッサのメモリアクセスキー機能、INTEL(登録商標)IA64プロセッサ等のメモリアクセスキー機能、または他のメモリアクセス制御機構を使用することにより制御することができる。
データ記憶メモリへのアクセスは様々な方法のいずれで実現してもよい。
たとえば、データ記憶メモリへのアクセスは、HPPAプロセッサのメモリアクセスキー機能、INTEL(登録商標)IA64プロセッサ等のメモリアクセスキー機能、または他のメモリアクセス制御機構を使用することにより制御することができる。
ブロック330におけるソフトウェアモジュールインスタンスの実行中、ソフトウェアモジュールインスタンスは、ソフトウェアフォールトを引き起こしたものと識別することができる。
ブロック340において、ソフトウェアモジュールインスタンスがフォールトを引き起こしたか否かが判断される。
ソフトウェアフォールトの識別は、たとえば、一般保護違反の検出、またはソフトウェアモジュールインスタンス内の無効な命令を含め、いくつかの方法で実現することができる。
他の例としては、ソフトウェアモジュールインスタンスに割り振られた領域外のデータ記憶メモリにアクセスしようとする試み、OSおよび他のモジュールインスタンスに対して行われた呼び出し中の不適当なパラメータ値の組み合わせ、または不適当なメッセージシーケンスが挙げられるがこれらに限定されない。
ブロック340において、ソフトウェアモジュールインスタンスがフォールトを引き起こしたか否かが判断される。
ソフトウェアフォールトの識別は、たとえば、一般保護違反の検出、またはソフトウェアモジュールインスタンス内の無効な命令を含め、いくつかの方法で実現することができる。
他の例としては、ソフトウェアモジュールインスタンスに割り振られた領域外のデータ記憶メモリにアクセスしようとする試み、OSおよび他のモジュールインスタンスに対して行われた呼び出し中の不適当なパラメータ値の組み合わせ、または不適当なメッセージシーケンスが挙げられるがこれらに限定されない。
フォールト封じ込めロジックは、たとえば、ソフトウェアモジュールインスタンスを取り巻き、分離するマイクロカーネル等、オペレーティングシステムサブ機能の集まりである。
各ソフトウェアモジュールインスタンスは、オペレーティングシステム副機能の集まり内で動作する。
フォールト封じ込めロジックは、たとえば、ソフトウェアモジュールインスタンスに渡され、かつソフトウェアモジュールインスタンスから渡されるオブジェクトに対する所有権の変更、エラーのトラップ等、ソフトウェアモジュールインスタンスとのすべてのインタフェースを処理し保護する。
ソフトウェアフォールトが識別される場合、フォールト封じ込めロジックは、ブロック345において、ソフトウェアモジュールインスタンスが安定ではない可能性があることを示すメッセージをオペレーティングシステムおよび/または他のソフトウェアモジュールインスタンスに送る。
その他のソフトウェアモジュールインスタンスは、不安定なソフトウェアモジュールインスタンスとの通信を切断またはシャットダウンする。
この通信をシャットダウンするプロセスにより、新しいインタフェースイベントメッセージが不安定なソフトウェアモジュールインスタンスと交換されることが阻止される。
フォールト封じ込めロジックは、ブロック346において、不安定なソフトウェアモジュールインスタンスを破壊し、ブロック347において、不安定なソフトウェアモジュールに割り振られていた資源を解放する。
各ソフトウェアモジュールインスタンスは、オペレーティングシステム副機能の集まり内で動作する。
フォールト封じ込めロジックは、たとえば、ソフトウェアモジュールインスタンスに渡され、かつソフトウェアモジュールインスタンスから渡されるオブジェクトに対する所有権の変更、エラーのトラップ等、ソフトウェアモジュールインスタンスとのすべてのインタフェースを処理し保護する。
ソフトウェアフォールトが識別される場合、フォールト封じ込めロジックは、ブロック345において、ソフトウェアモジュールインスタンスが安定ではない可能性があることを示すメッセージをオペレーティングシステムおよび/または他のソフトウェアモジュールインスタンスに送る。
その他のソフトウェアモジュールインスタンスは、不安定なソフトウェアモジュールインスタンスとの通信を切断またはシャットダウンする。
この通信をシャットダウンするプロセスにより、新しいインタフェースイベントメッセージが不安定なソフトウェアモジュールインスタンスと交換されることが阻止される。
フォールト封じ込めロジックは、ブロック346において、不安定なソフトウェアモジュールインスタンスを破壊し、ブロック347において、不安定なソフトウェアモジュールに割り振られていた資源を解放する。
次に、ブロック350において、フォールト封じ込めロジックは不安定なソフトウェアモジュールインスタンスを再構築させ、それ以降の適宜実行を確保する。
ブロック355において、メッセージをOSおよび故障した、または不安定なソフトウェアモジュールインスタンスとやりとりしていた他のモジュールインスタンスに送り、そのソフトウェアモジュールインスタンスが再構築され、今では安定していることを報告する。
ソフトウェアモジュールインスタンスは、ブロック310〜325において上に述べた手続きを含むがこれに限定されない、既知のプロセスまたは手続きのいずれによって再構築してもよい。
ブロック355において、メッセージをOSおよび故障した、または不安定なソフトウェアモジュールインスタンスとやりとりしていた他のモジュールインスタンスに送り、そのソフトウェアモジュールインスタンスが再構築され、今では安定していることを報告する。
ソフトウェアモジュールインスタンスは、ブロック310〜325において上に述べた手続きを含むがこれに限定されない、既知のプロセスまたは手続きのいずれによって再構築してもよい。
図4は、本発明の一実施形態によるソフトウェアフォールトを封じ込める例示的なシステムを示す。
図示のように、システムは、プロセッサ410およびメモリ415を備える。
メモリ415はプロセッサ410に接続され、ソフトウェアフォールトを封じ込めるプロセッサ実行可能命令を格納する。
図示のように、システムは、プロセッサ410およびメモリ415を備える。
メモリ415はプロセッサ410に接続され、ソフトウェアフォールトを封じ込めるプロセッサ実行可能命令を格納する。
一実施形態では、メモリ415は、ソフトウェアモジュールインスタンス445におけるソフトウェアフォールトの封じ込めを制御するとともに、少なくとも1つのオブジェクトにデータ記憶メモリを割り振るフォールト封じ込めロジック420を備える。
フォールト封じ込めロジック420は、メモリ割り振りモジュール425を使用して、メモリをソフトウェアモジュールインスタンス445に割り振る。
フォールト封じ込めロジック420は、ソフトウェアモジュールインスタンス445に割り当てられたオブジェクトをそれぞれ識別し格納するオブジェクト識別子430およびオブジェクト格納ロジック435も使用する。
フォールト封じ込めロジック420は、メモリアクセスコントローラ440を使用して、メモリ割り振りモジュール425により割り振られたメモリへのアクセスを制限する。
フォールト封じ込めロジック420は、メモリ割り振りモジュール425を使用して、メモリをソフトウェアモジュールインスタンス445に割り振る。
フォールト封じ込めロジック420は、ソフトウェアモジュールインスタンス445に割り当てられたオブジェクトをそれぞれ識別し格納するオブジェクト識別子430およびオブジェクト格納ロジック435も使用する。
フォールト封じ込めロジック420は、メモリアクセスコントローラ440を使用して、メモリ割り振りモジュール425により割り振られたメモリへのアクセスを制限する。
メッセージサブシステム450が、ソフトウェアモジュールインスタンス間のメッセージの伝送を制御する。
メッセージサブシステム450によりサポートされるメッセージには、オブジェクト操作要求およびこのような要求の完了を示す応答が含まれる。
オブジェクトは、そのオブジェクトが割り当てられたソフトウェアモジュールインスタンス445によって操作される。
このような制限付きオブジェクトアクセスは、HPPAプロセッサ、INTEL(登録商標)IA64プロセッサ等のメモリアクセスキー機能、または他の適したメモリアクセス制御機構を使用し得るメモリアクセスコントローラ440によって遂行される。
メッセージサブシステム450によりサポートされるメッセージには、オブジェクト操作要求およびこのような要求の完了を示す応答が含まれる。
オブジェクトは、そのオブジェクトが割り当てられたソフトウェアモジュールインスタンス445によって操作される。
このような制限付きオブジェクトアクセスは、HPPAプロセッサ、INTEL(登録商標)IA64プロセッサ等のメモリアクセスキー機能、または他の適したメモリアクセス制御機構を使用し得るメモリアクセスコントローラ440によって遂行される。
フォールト封じ込めロジック420は、ソフトウェアモジュールインスタンス445に関連するソフトウェアフォールトを識別するフォールト識別子455をさらに使用する。
このようなソフトウェアフォールトが識別されると、フォールト封じ込めロジック420は、ソフトウェアモジュールインスタンス445が不安定である可能性があることを示すメッセージを送る。
フォールト封じ込めロジック420は、モジュールインスタンスを取り巻く環境内に分散された機能であり、フォールト封じ込めロジック420の一部はあらゆるOSインタフェースコールのロジックにあり、一部はメッセージサブシステムのロジックにあり、一部はプロセッサフォールト検出ロジックにあり、一部はメモリアクセス制御ロジックにある等々である。
メッセージは、ソフトウェアモジュールインスタンス445と通信し得るオペレーティングシステムおよび/または他のモジュールインスタンスに送られる。
このようなソフトウェアフォールトが識別されると、フォールト封じ込めロジック420は、ソフトウェアモジュールインスタンス445が不安定である可能性があることを示すメッセージを送る。
フォールト封じ込めロジック420は、モジュールインスタンスを取り巻く環境内に分散された機能であり、フォールト封じ込めロジック420の一部はあらゆるOSインタフェースコールのロジックにあり、一部はメッセージサブシステムのロジックにあり、一部はプロセッサフォールト検出ロジックにあり、一部はメモリアクセス制御ロジックにある等々である。
メッセージは、ソフトウェアモジュールインスタンス445と通信し得るオペレーティングシステムおよび/または他のモジュールインスタンスに送られる。
メッセージがオペレーティングシステムおよび/または他のソフトウェアモジュールインスタンスに送られると、その他のソフトウェアモジュールインスタンスは、不安定なソフトウェアモジュールインスタンスとの新しいインタフェースイベントの生成を停止する。
さらに、不安定なソフトウェアモジュールインスタンスに割り当てられたオブジェクトは、他のソフトウェアモジュールインスタンスによりアクセスすることができないため、その他のソフトウェアモジュールインスタンスが信頼性のないデータにより破損することは起こり得ない。
したがって、不安定なソフトウェアモジュールインスタンスにおいて発生したフォールトまたはエラーは、他のソフトウェアモジュールインスタンスに伝搬しない。
さらに、不安定なソフトウェアモジュールインスタンスに割り当てられたオブジェクトは、他のソフトウェアモジュールインスタンスによりアクセスすることができないため、その他のソフトウェアモジュールインスタンスが信頼性のないデータにより破損することは起こり得ない。
したがって、不安定なソフトウェアモジュールインスタンスにおいて発生したフォールトまたはエラーは、他のソフトウェアモジュールインスタンスに伝搬しない。
そして、ソフトウェアモジュールフォールト封じ込めロジック420は、インスタンスリビルダ460を使用して、ソフトウェアモジュールインスタンス445を安定化、すなわち修復する。
一般に、不安定なモジュールインスタンスからのデータは、破損している場合もあるため保持することができない。
ソフトウェアモジュールインスタンス445は、好ましくは、既知の方法のいずれかにより、または上に述べたようになど、スクラッチから再構築される。
ソフトウェアモジュールインスタンスは、既知の良好な状態から再構築すべきである。
取り巻くソフトウェアモジュールインスタンスは、再構築中のソフトウェアモジュールインスタンスがシステムの状態に適合する状態で再構築されるように、再構築されているモジュールインスタンスとメッセージを交換して、それぞれのシステムの状態についての知識を伝達する。
一般に、不安定なモジュールインスタンスからのデータは、破損している場合もあるため保持することができない。
ソフトウェアモジュールインスタンス445は、好ましくは、既知の方法のいずれかにより、または上に述べたようになど、スクラッチから再構築される。
ソフトウェアモジュールインスタンスは、既知の良好な状態から再構築すべきである。
取り巻くソフトウェアモジュールインスタンスは、再構築中のソフトウェアモジュールインスタンスがシステムの状態に適合する状態で再構築されるように、再構築されているモジュールインスタンスとメッセージを交換して、それぞれのシステムの状態についての知識を伝達する。
ソフトウェアモジュールインスタンス445が安定化、すなわち再構築されると、フォールト封じ込めロジックは、別のメッセージをオペレーティングシステムおよび/またはソフトウェアモジュールインスタンス445と通信し得る他のモジュールインスタンスに送らせる。
メッセージは、ソフトウェアモジュールインスタンス445が安定化、すなわち修復されたことを示す。
したがって、その他のソフトウェアモジュールインスタンスは再び、今では安定したソフトウェアモジュールインスタンスとの新しいインタフェースイベントを生成することができる。
メッセージは、ソフトウェアモジュールインスタンス445が安定化、すなわち修復されたことを示す。
したがって、その他のソフトウェアモジュールインスタンスは再び、今では安定したソフトウェアモジュールインスタンスとの新しいインタフェースイベントを生成することができる。
図示の実施形態は、結果として、モジュールインスタンスを取り巻き、メッセージを送出し、メッセージが送出された場合にモジュールインスタンスの実行をスケジュールし、各インスタンスが呼び出された場合にメモリキー(非)アクティブ化を管理するフォールト封じ込め下位環境、またはインタフェースセットになる。
当業者は、フォールト封じ込めインフラストラクチャを実現する複数の方法があることを理解するであろう。
さらに、フォールト封じ込めインフラストラクチャは、各モジュールインスタンスが別個のOSプロセッサまたはスレッドとして扱われる場合よりも効率的に実行することが可能である。
当業者は、フォールト封じ込めインフラストラクチャを実現する複数の方法があることを理解するであろう。
さらに、フォールト封じ込めインフラストラクチャは、各モジュールインスタンスが別個のOSプロセッサまたはスレッドとして扱われる場合よりも効率的に実行することが可能である。
図示の実施形態は、結果として、たとえば、インスタンス単位で割り振られるメモリになる。
HPPAまたはINTEL(登録商標)IA64プロセッサのメモリアクセスキー機能等、メモリアクセス制御機構と併せてメモリを割り振ることにより、割り振られたメモリが破損から保護される。
したがって、モジュールインスタンスが故障した場合、これにより、他のインスタンスにより読み取り可能なメモリが破損することは起こり得ない。
メモリを割り振り、アクセスを制限する方法により、フォールトの伝搬が阻止される。
HPPAまたはINTEL(登録商標)IA64プロセッサのメモリアクセスキー機能等、メモリアクセス制御機構と併せてメモリを割り振ることにより、割り振られたメモリが破損から保護される。
したがって、モジュールインスタンスが故障した場合、これにより、他のインスタンスにより読み取り可能なメモリが破損することは起こり得ない。
メモリを割り振り、アクセスを制限する方法により、フォールトの伝搬が阻止される。
図示の実施形態はさらに、別のインスタンスが待っているロックを保持しながら、ソフトウェアモジュールインスタンスが動作を完全に停止してしまわない(または、そのようなロックが保持されていることを忘れることによって他のモジュールインスタンスを邪魔しない)ようにする。
ロックを保持する必要性をなくすことにより、1つまたは複数の他のインスタンスを、解放されないロックを待たせながらいつまでも「立ち往生」させるか、あるいは保持されているロックを強制的に解放させる(これは、フォールトを伝搬させる恐れがある)ことに起因する一貫しないオブジェクト状態に曝されるすべてのソフトウェアモジュールインスタンスの保全性を損なうジレンマが回避される。
ロックを保持する必要性をなくすことにより、1つまたは複数の他のインスタンスを、解放されないロックを待たせながらいつまでも「立ち往生」させるか、あるいは保持されているロックを強制的に解放させる(これは、フォールトを伝搬させる恐れがある)ことに起因する一貫しないオブジェクト状態に曝されるすべてのソフトウェアモジュールインスタンスの保全性を損なうジレンマが回避される。
さらに、図示の実施形態では、故障したソフトウェアモジュールインスタンスによって影響を受ける可能性があるすべてのデータオブジェクトを容易かつ確実に列挙することができる。
実施形態は、故障したモジュールインスタンスの動作停止または再開によって影響を受ける可能性がある「近傍」モジュールインスタンスの容易かつ確実な列挙もサポートする。
データオブジェクトの列挙により、ソフトウェアモジュールインスタンスおよびシステムの影響を受けた領域の動作の復元に要求される必要なモジュール間ダイアログの故障から回復するとき、データオブジェクトを回収または再生することができる。
実施形態は、故障したモジュールインスタンスの動作停止または再開によって影響を受ける可能性がある「近傍」モジュールインスタンスの容易かつ確実な列挙もサポートする。
データオブジェクトの列挙により、ソフトウェアモジュールインスタンスおよびシステムの影響を受けた領域の動作の復元に要求される必要なモジュール間ダイアログの故障から回復するとき、データオブジェクトを回収または再生することができる。
本発明を本発明の実施形態の説明により示し、また実施形態についてかなり詳細に説明したが、添付の特許請求項の範囲をこのような詳細に制限する、またはいずれの方法でも限定することは出願人の意図ではない。
さらなる利点および変更が当業者に容易に明らかになるであろう。
したがって、本発明は、その広い態様において、特定の詳細に限定されず、代表的な装置および実例を示し説明した。
したがって、本出願人の一般的発明概念の精神または範囲から逸脱することなく、このような詳細から逸脱を行うことが可能である。
さらなる利点および変更が当業者に容易に明らかになるであろう。
したがって、本発明は、その広い態様において、特定の詳細に限定されず、代表的な装置および実例を示し説明した。
したがって、本出願人の一般的発明概念の精神または範囲から逸脱することなく、このような詳細から逸脱を行うことが可能である。
210,250・・・メモリ、
215,255・・・ソフトウェアモジュールインスタンスA,B、
225,230,265・・・オブジェクトA,B,C、
220,260・・・データ、
280・・・メッセージ、
410・・・プロセッサ、
415・・・メモリ、
420・・・フォールト封じ込めロジック、
425・・・メモリ割り振りモジュール、
430・・・オブジェクト識別子、
435・・・オブジェクト格納ロジック、
440・・・メモリアクセスコントローラ、
445・・・ソフトウェアモジュールインスタンス、
450・・・メッセージサブシステム、
455・・・フォールト識別子、
460・・・インスタンスリビルダ、
215,255・・・ソフトウェアモジュールインスタンスA,B、
225,230,265・・・オブジェクトA,B,C、
220,260・・・データ、
280・・・メッセージ、
410・・・プロセッサ、
415・・・メモリ、
420・・・フォールト封じ込めロジック、
425・・・メモリ割り振りモジュール、
430・・・オブジェクト識別子、
435・・・オブジェクト格納ロジック、
440・・・メモリアクセスコントローラ、
445・・・ソフトウェアモジュールインスタンス、
450・・・メッセージサブシステム、
455・・・フォールト識別子、
460・・・インスタンスリビルダ、
Claims (10)
- ソフトウェアフォールトを封じ込めるシステムであって、
プロセッサ(410)と、
該プロセッサ(410)に接続されたメモリ(415)と、
メモリをソフトウェアモジュールインスタンスに割り振るロジック(425)と、
ソフトウェアモジュールインスタンスに割り当てられた少なくとも1つのオブジェクトにメモリを割り振るロジック(425)と、
前記メモリに少なくとも1つのオブジェクトを配置し、識別するロジック(430、435)と、
前記ソフトウェアモジュールインスタンスの命令に対する、前記少なくとも1つのオブジェクトに割り振られた前記メモリへのアクセスを制限するロジック(440)と
を備えたシステム。 - 前記ソフトウェアモジュールインスタンスに割り当てられた前記少なくとも1つのオブジェクトを操作する要求を受け取るロジック(450)と、
前記要求に従って、前記ソフトウェアモジュールインスタンスの前記オブジェクトを操作するロジック(450)と
をさらに備えた請求項1記載のシステム。 - 前記要求の完了を示す応答を送るロジック(450)を
さらに備えた請求項2記載のシステム。 - 前記ソフトウェアモジュールインスタンスに関連するソフトウェアフォールトを識別するロジック(455)と、
前記ソフトウェアモジュールインスタンスの不安定性を報告するメッセージを第2のソフトウェアモジュールインスタンスに送るロジック(420、450)と、
前記ソフトウェアモジュールインスタンスを再構築するロジック(460)と、
前記ソフトウェアモジュールインスタンスの安定性を報告するメッセージを前記第2のソフトウェアモジュールインスタンスに送るロジック(420、450)と
をさらに備えた請求項2記載のシステム。 - 前記ソフトウェアモジュールインスタンスに割り振られたメモリを解放するロジック(460)と、
前記ソフトウェアモジュールインスタンスに割り当てられた前記少なくとも1つのオブジェクトの前記データ記憶メモリを解放するロジック(460)と、
前記ソフトウェアモジュールインスタンスにメモリを再度割り振るロジック(425)と、
前記再度割り振られたデータ記憶メモリ(430、435)に少なくとも1つのオブジェクトを配置し、識別するロジックと、
前記ソフトウェアモジュールインスタンスの前記命令に再度割り振られた前記データ記憶メモリへのアクセスを制限するロジック(440)と
をさらに備えた請求項4記載のシステム。 - 第2のソフトウェアモジュールが、第1のソフトウェアモジュールインスタンスに割り当てられた前記少なくとも1つのオブジェクトを間接的に操作できるようにするロジック(450)と、
前記第1のソフトウェアモジュールが、前記第2のソフトウェアモジュールインスタンスに割り当てられた前記少なくとも1つのオブジェクトを間接的に操作できるようにするロジック(450)と
をさらに備えた請求項1記載のシステム。 - 第1のソフトウェアモジュールインスタンスに関連するソフトウェアフォールトを識別するロジック(455)と、
前記第1のソフトウェアモジュールインスタンスの不安定性を報告するメッセージを送るロジック(420、450)と、
前記第1のソフトウェアモジュールインスタンスを再構築するロジック(460)と、
前記第1のソフトウェアモジュールインスタンスの安定性を報告するメッセージを送るロジック(420、450、460)と
をさらに備えたシステム。 - 前記第1のソフトウェアモジュールインスタンスをリロードするロジック(460)と、
前記第1のソフトウェアモジュールインスタンスに割り当てられた前記少なくとも1つのオブジェクトをリロードするロジック(435、460)と
をさらに備えた請求項7記載のシステム。 - 前記第1のソフトウェアモジュールインスタンスに関連するソフトウェアフォールトを識別するロジックは、
前記第1のソフトウェアモジュールインスタンスによる、前記第2のソフトウェアモジュールインスタンスに割り当てられたデータを直接操作しようとする試みを識別するロジック(455)
を備える
請求項7記載のソフトウェアフォールトを封じ込めるシステム。 - 前記第1のソフトウェアモジュールインスタンスを修復するロジックは、
前記第1のソフトウェアモジュールインスタンスの既知の良好な状態を識別するロジック(460)と、
前記既知の良好な状態から前記第1のソフトウェアモジュールインスタンスを再構築するロジックと
を備える
請求項7記載のソフトウェアフォールトを封じ込めるシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/641,985 US7134050B2 (en) | 2003-08-15 | 2003-08-15 | Method and system for containing software faults |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005063435A true JP2005063435A (ja) | 2005-03-10 |
Family
ID=34136501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004230380A Pending JP2005063435A (ja) | 2003-08-15 | 2004-08-06 | ソフトウェアフォールトを封じ込める方法およびシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7134050B2 (ja) |
JP (1) | JP2005063435A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305336A (ja) * | 2007-06-11 | 2008-12-18 | Nippon Telegr & Teleph Corp <Ntt> | アクセス許可設定方法、アクセス許可設定装置およびアクセス許可設定プログラム |
JP2015517140A (ja) * | 2012-03-20 | 2015-06-18 | エフティーエス コンピューターテクニク ジーエムビーエイチ | 分散リアルタイムシステムにおけるソフトウェア故障封じ込めユニット(SWFCUs)を形成するための方法および装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8196130B2 (en) * | 2000-11-17 | 2012-06-05 | Hewlett-Packard Development Company, L.P. | Tri-phase boot process in electronic devices |
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US7698597B2 (en) * | 2006-02-28 | 2010-04-13 | International Business Machines Corporation | Method of isolating erroneous software program components |
US8209676B2 (en) | 2006-06-08 | 2012-06-26 | Hewlett-Packard Development Company, L.P. | Device management in a network |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US8364910B2 (en) * | 2007-03-08 | 2013-01-29 | Daniel Shawcross Wilkerson | Hard object: hardware protection for software objects |
US7930596B2 (en) * | 2008-05-29 | 2011-04-19 | International Business Machines Corporation | Managing execution stability of an application carried out using a plurality of pluggable processing components |
US20100125830A1 (en) * | 2008-11-20 | 2010-05-20 | Lockheed Martin Corporation | Method of Assuring Execution for Safety Computer Code |
US9934166B2 (en) | 2010-12-10 | 2018-04-03 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US8959402B2 (en) * | 2012-10-04 | 2015-02-17 | Qualcomm Incorporated | Method for preemptively restarting software in a multi-subsystem mobile communication device to increase mean time between failures |
US9569612B2 (en) | 2013-03-14 | 2017-02-14 | Daniel Shawcross Wilkerson | Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality |
US11783209B2 (en) * | 2020-07-09 | 2023-10-10 | Bank Of America Corporation | Artificial intelligence based dynamic orchestration engine for automatically processing application service requests |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247681A (en) * | 1990-12-18 | 1993-09-21 | International Business Machines Corporation | Dynamic link libraries system and method |
US5594903A (en) * | 1991-02-26 | 1997-01-14 | Lynx Real-Time Systems, Inc. | Operating System architecture with reserved memory space resident program code identified in file system name space |
US5627987A (en) * | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
US5715386A (en) * | 1992-09-30 | 1998-02-03 | Lucent Technologies Inc. | Apparatus and methods for software rejuvenation |
US5590277A (en) * | 1994-06-22 | 1996-12-31 | Lucent Technologies Inc. | Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications |
JPH08272625A (ja) * | 1995-03-29 | 1996-10-18 | Toshiba Corp | マルチプログラム実行制御装置及び方法 |
US6141722A (en) * | 1995-05-31 | 2000-10-31 | Microsoft Corporation | Method and apparatus for reclaiming memory |
US6044475A (en) * | 1995-06-16 | 2000-03-28 | Lucent Technologies, Inc. | Checkpoint and restoration systems for execution control |
US6105148A (en) * | 1995-06-16 | 2000-08-15 | Lucent Technologies Inc. | Persistent state checkpoint and restoration systems |
US6542926B2 (en) * | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
US6085296A (en) * | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
US6085265A (en) * | 1998-01-09 | 2000-07-04 | Toshiba America Information Systems, Inc. | System for handling an asynchronous interrupt a universal serial bus device |
US6757289B1 (en) * | 1999-04-23 | 2004-06-29 | Nortel Networks Limited | Apparatus and method for managing communication between a failed application and other executing applications |
US6618851B1 (en) * | 1999-08-31 | 2003-09-09 | Autodesk, Inc. | Method and apparatus for state-reversion |
US20010037450A1 (en) * | 2000-03-02 | 2001-11-01 | Metlitski Evgueny A. | System and method for process protection |
US6502111B1 (en) * | 2000-07-31 | 2002-12-31 | Microsoft Corporation | Method and system for concurrent garbage collection |
US7213098B2 (en) * | 2000-11-28 | 2007-05-01 | Sun Microsystems, Inc. | Computer system and method providing a memory buffer for use with native and platform-independent software code |
-
2003
- 2003-08-15 US US10/641,985 patent/US7134050B2/en active Active
-
2004
- 2004-08-06 JP JP2004230380A patent/JP2005063435A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305336A (ja) * | 2007-06-11 | 2008-12-18 | Nippon Telegr & Teleph Corp <Ntt> | アクセス許可設定方法、アクセス許可設定装置およびアクセス許可設定プログラム |
JP2015517140A (ja) * | 2012-03-20 | 2015-06-18 | エフティーエス コンピューターテクニク ジーエムビーエイチ | 分散リアルタイムシステムにおけるソフトウェア故障封じ込めユニット(SWFCUs)を形成するための方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
US7134050B2 (en) | 2006-11-07 |
US20050039080A1 (en) | 2005-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5359713A (en) | Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system | |
Chin et al. | Distributed, object-based programming systems | |
US6766471B2 (en) | User-level checkpoint and restart for groups of processes | |
US6854108B1 (en) | Method and apparatus for deterministic replay of java multithreaded programs on multiprocessors | |
US6886081B2 (en) | Method and tool for determining ownership of a multiple owner lock in multithreading environments | |
US7698700B2 (en) | System quiesce for concurrent code updates | |
US8032740B2 (en) | Update in-use flash memory without external interfaces | |
US20040107416A1 (en) | Patching of in-use functions on a running computer system | |
US7134050B2 (en) | Method and system for containing software faults | |
US7747996B1 (en) | Method of mixed lock-free and locking synchronization | |
JPH03278126A (ja) | 計算機システム立上げ方式 | |
JPH0296849A (ja) | Tpキューイングシステムにおける正確に1回のセマンティクス | |
JPH01188965A (ja) | データ処理方法 | |
WO2001055845A2 (en) | System and method for flexible software linking | |
KR20090084881A (ko) | 멀티프로세서 시스템 상에서 멀티스레드 프로그램으로부터의 메모리 액세스를 관리하기 위한 방법 및 시스템 | |
JP3030658B2 (ja) | 電源故障対策を備えたコンピュータシステム及びその動作方法 | |
US6957367B2 (en) | System and method for controlling activity of temporary files in a computer system | |
US20060117320A1 (en) | Sharing dynamically changing resources in software systems | |
JPH05250182A (ja) | プログラム条件処理 | |
US8689206B2 (en) | Isolating operating system in-memory modules using error injection | |
TWI467491B (zh) | 用於使用協調物件之修正式電腦結構之方法、系統與電腦程式產品 | |
JP3219082B2 (ja) | データ格納方法 | |
US10678595B2 (en) | Dynamic saving of registers in transactions | |
JP2019008437A (ja) | データアクセス装置及びアクセスエラーの通知方法 | |
KR100928865B1 (ko) | 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061017 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061102 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070327 |