JP2009522664A - メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム - Google Patents

メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム Download PDF

Info

Publication number
JP2009522664A
JP2009522664A JP2008548840A JP2008548840A JP2009522664A JP 2009522664 A JP2009522664 A JP 2009522664A JP 2008548840 A JP2008548840 A JP 2008548840A JP 2008548840 A JP2008548840 A JP 2008548840A JP 2009522664 A JP2009522664 A JP 2009522664A
Authority
JP
Japan
Prior art keywords
application module
memory
application
state
mic
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
JP2008548840A
Other languages
English (en)
Other versions
JP5203967B2 (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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2009522664A publication Critical patent/JP2009522664A/ja
Application granted granted Critical
Publication of JP5203967B2 publication Critical patent/JP5203967B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

センサネットワークで使用可能なメモリ障害を処理するための方法及びシステムが開示されている。センサノードのオペレーティングシステムを保護するため、センサノードのデータメモリアドレス空間にアプリケーション障害ドメインを作り、実現することにより、粗粒度のメモリ保護が提供される。アプリケーションモジュールによりアクセスされたデータメモリは、データメモリアドレス空間内の(アプリケーション障害ドメインを定める)領域に制限される。アプリケーションモジュールは、ソフトウェアベースの実行時間チェックにより、アプリケーション障害ドメイン外のメモリへのアクセスを防止される。オペレーションシステムの状態は、アプリケーション障害ドメイン外に維持され、従って、あらゆるアプリケーションモジュールによるメモリの破損から保護される。アプリケーションモジュールが破損した状態では動作しないことを保証するため、細粒度の誤り検出及び回復がアプリケーション障害ドメインの中で提供される。アプリケーション障害ドメイン内のメモリのどのような破損でも、オペレーティングシステムカーネルに実現された実行時間メモリ完全性検証により検出される。回復は、破損状態を取り除き、破損していない状態で動作するため、影響を受けたアプリケーションモジュールのみを再起動することを含んでいる。

Description

本発明は、メモリ障害の処理に関し、特に、メモリ障害を処理するためにセンサーネットワークで使用可能なシステム及び方法に関する。
センサーネットワークは、通常、複数の無線センサー装置を有する。それぞれの無線センサー装置は、センサーネットワーク内でノードとして動作する。それぞれのセンサーノードにおいて検知されたデータは、センサーネットワークを介して基地局に送信される。
センサーネットワーク技術の最近の発展は、センサーネットワーク上で動作する分散アプリケーションを可能にした。センサーネットワークは、工業用、民生用、医療用のアプリケーションにおいて、ますます使われるようになってきている。これらの分野におけるセンサーネットワークの評判及び重要性の高まりは、センサーネットワークの需要の増大を招いた。
例えば、救急医療及び災害対応計画に使用されるプロトタイプ的な医療センサーネットワークプラットフォームであるコードブルーは、継続的な高信頼性、長寿命及び安全な動作を必要とする。他の例としては、産業用プロセス及びセキュリティシステムに使用するために作られたセンサーネットワークがある。
センサーネットワークシステムにおいては、いかなる予期しない障害も、経済的損失から生命を脅かす状況に至る広い範囲に悪影響を及ぼす恐れがある。
ソフトウェアの欠陥は、センサーノードの障害の一般的な原因である。特に、他のアプリケーションからの保護の欠如によるアプリケーションやカーネルの状態の破損は、ノードのクラッシュもしくはフリーズ、または検知されたデータの破損を招く恐れがある。
センサーノードは、一般的に、単純なアーキテクチャーを有する。従って、センサーノードのアーキテクチャーは、通常、デスクトップ/サーバクラスのシステムにおいて1つのプログラムのデータやコードを他のプログラムから分離するために、または保護するために使用されるメモリ管理ユニット、特権モードの実行等のような特徴を有しない。さらに、センサーノードで使用されるマイクロコントローラは、一般的には、プログラムのためのメモリとデータ蓄積のためのメモリとを別々に有し、センサーノードの全てのデータメモリは、センサーノード上で実行される全てのプログラムモジュールが単一のアドレス空間を介してアクセス可能である。
センサーノードアーキテクチャーは比較的単純であるが、センサーノード上で実行されるソフトウェアは複雑であり得る。ソフトウェアの複雑さは、多様な形式のセンサーと、複数の分散型ミドルウェアサービスと、ダイナミックなコードアップデートと、リソースが制約された環境下で同時に実行するアプリケーションと、をサポートする必要があることから生ずる。
ソフトウェアコンポーネントを実装するために、プログラマーは、幾つかのリソース制約条件、同時実行及び競合条件の問題を取り扱う必要がある。さらに、センサーノードハードウェアのデバッギングのためのサポートが限定されていることにより、プログラム作成上のエラーが頻繁に発生する。これらのエラーは、あるアプリケーションが他のアプリケーションにより使用されているメモリを破損するというメモリ障害を招く恐れがある。
他のアプリケーションによる破損に加え、ハードウェア障害や一時的なエラー等によっても、メモリ障害を招く恐れがある。メモリ障害の影響は、ノードフリーズ(フェールストップ)から無症状の破損にまで至り、非常に深刻な場合がある。この場合、障害のあるセンサーノードにより生成された欠陥のあるデータは、センサーネットワークを介してさらに伝搬し、ネットワーク内の他のセンサーノードの動作を混乱に陥れる。
ハイエンドのデスクトップ/サーバクラスのシステムにおいてメモリの破損から保護する方法は、一般的に、静的なプログラム解析ツールまたはランタイムメモリアクセスチェッカーの2つのカテゴリーのうちの1つである。
静的なプログラム解析ツールは、Java及びコントロールCのような型安全な言語の言語制約、または、不正なメモリアクセスにフラグを立てるためのプログラマー注釈/言語拡張に依存する。これらのツールは、言語に少なからぬ制限を課したり、安全性を保証するためにプログラマーに特別な負担を課したり、または、センサーネットワークシステムに効率良く実装することができなくなるような重大なリソースの非効率化を招いたりする。
デスクトップ/サーバクラスのシステムにおいて不正なメモリアクセスを阻止するための実行時間チェックは、オーバーヘッドの増加を犠牲にして追求されてきた。例えば、ソフトウェアベースの障害分離(SFI)は、複数の協調的なモジュールにより仮想アドレス空間を安全に共有するために、静的に分割された広い仮想アドレス空間に依存している。このような静的な分割は、センサーノードに特有の厳しく制限されたアドレス空間では使用することができない。
ハイエンドのデスクトップ/サーバクラスのシステムにおいては、幾つかのハードウェアアシスト型の技術がさらに提案されている。しかし、ハードウェアによる解決は、複雑で費用が嵩むハードウェアの拡張を必要とし、センサーノードの単純なハードウェアアーキテクチャーでは実現不可能である。
無線センサーネットワークの分野では、問題の診断/局所化のために、または、そのような概念に賛同して信頼性の欠如を克服するために、ネットワークレベルのプロトコルを開発することに大部分の研究は集中した。しかし、センサーノードに適用される最も一般的な方法である全てのノードのリブートによってメモリ障害から保護するためのノードレベルのサポートに及ぶ研究は、非常に限定されている。
本発明は、メモリ障害を処理する方法とシステムに重点を置いている。この方法とシステムは、センサーネットワークのセンサーノードに実装される。例えば、本方法は、センサーネットワークのセンサーノード上で、ソフトウェアのみのソリューションとして実装される。
本発明は、センサーノード上で実行されるアプリケーションモジュールによる不正なメモリ書き込みに起因するあらゆる破損から、センサーノードのオペレーティングシステムのカーネルの状態を保護することができる。
本発明は、アプリケーションモジュールが破損状態にある場合、アプリケーションモジュールが決して動作しないことも保証できる。
本発明は、センサーネットワークに限定されるものではなく、様々な他の形式のコンピュータシステムにおいてメモリの破損を処理するために同様に使用できる。
センサーノードのオペレーティングシステムを保護するために、センサーノードのデータメモリアドレス空間にアプリケーション障害ドメインを作り、実現することにより、粗粒度のメモリ保護が提供される。アプリケーションモジュールによるアクセスが可能なデータメモリは、データメモリアドレス空間内の領域に制限される。本明細書では、この領域は、「アプリケーション障害ドメイン」と定義される。
アプリケーションモジュールは、ソフトウェアベースの実行時間チェックにより、アプリケーション障害ドメイン外のメモリへのアクセスを防止される。オペレーティングシステムの状態は、アプリケーション障害ドメインの外に保たれ、従って、任意のアプリケーションモジュールによるメモリの破損から保護される。
アプリケーションモジュールが破損状態では動作しないことを保証するために、細粒度の破損検出及び回復がアプリケーション障害ドメイン内で提供される。他のあらゆるアプリケーションモジュールに起因するアプリケーション障害ドメイン内のメモリの破損は、オペレーティングシステムのカーネルの中に実装された実行時間メモリ完全性検証により検出される。
障害検出は、破損したメモリが任意のアプリケーションモジュールによって使用されることができるようになる前、通常、その直前に実行される。回復には、破損状態を取り除くことと、新しい初期状態で動作するために、影響を受けたアプリケーションモジュールのみを再起動することとを含む。
本発明の1つの実施形態によれば、複数のアプリケーションモジュールが、単一のデータメモリ空間で実行される。それぞれのアプリケーションモジュールのそれぞれの実行の前に、システムは、アプリケーションモジュールの状態が破損しているか否かを検出する。アプリケーションモジュールが破損状態であれば、そのアプリケーションモジュールはマイクロリブートされる。
本発明による方法及びシステムは、センサーノードの持つ動作特性により使用できるが、それに限定されるものではない。本発明は、メモリ保護を誤り検出及び回復と組み合わせることが可能である。センサーノードの上の限定されたアドレス空間は、全てのアプリケーションモジュールに別々の障害ドメインを実装することを不可能にするので、センサーノードのオペレーティングシステムの状態を保護するために、粗粒度のメモリ保護が使用される。
本発明は、また、その時のリソースの必要条件に基づき、実行時間中に自動的にサイズの調整が可能な障害ドメインを実装する。さらに、実行時間チェックは、通常、アプリケーションモジュールにのみ影響を与えるので、オペレーティングシステムの性能は影響を受けない。割り込み処理のような時間依存形の動作は、通常、オペレーティングシステムのカーネルによって実行され、破損検出のための実行時間完全性チェックによっては影響を受けない。
本発明による以上の利点および他の利点は、下記の詳細な説明と添付図面を参照すれば、当業者には明白であろう。
本発明は、メモリ障害の処理に重点を置いている。本発明は、センサーネットワーク内のセンサーノードにおけるメモリの破損を処理するために、センサーネットワークで使用可能である。本明細書において本発明は、センサーネットワークのセンサーノードに実装されると説明されているが、本発明は、センサーネットワークに限定されるものではなく、様々な他の形式のコンピュータシステムにおいてメモリの破損を処理するため、同様に利用されることができる。
図1は、典型的なセンサーネットワーク100のネットワークトポロジーを示す。
図1に示すようにセンサーネットワークは、基地局102と、複数のセンサーノード104,106,108,110,112,114,116,118,120とを有する。
センサーノード104,106,108,110,112,114,116,118,120のそれぞれは、何らかの形式のデータを検知する無線センサー装置である。センサーノード104,106,108,110,112,114,116,118,120のそれぞれは、限定された無線信号範囲内の他のセンサーノード104,106,108,110,112,114,116,118,120の少なくとも1つと通信する。
センサーネットワーク100において少なくともセンサーノード104,108は、基地局102と通信する。
センサーノード104,106,108,110,112,114,116,118,120のそれぞれにおいて検知されたデータは、データパケットに変換され、そのデータパケットは、センサーノード104,106,108,110,112,114,116,118,120を介して基地局に送られる。
図1に示すネットワークトポロジーは、センサーネットワークを単純化して図示したものである。公知のようにセンサーネットワーク内の通信は、距離に加え、混信、隠れノード等のような様々な他の問題により影響を受ける恐れがある。
図2は、本発明を実装することが可能なセンサーノードハードウェアの高レベルブロック図を示す。
図2に示すようにセンサーノード200は、カーネル及びアプリケーションモジュールにより定義されたセンサーノード200の全体的な動作を実行するマイクロコントローラ(MCU)202を有する。SOSカーネル及びアプリケーションモジュールは、プログラムメモリ204に2進イメージとして蓄積される。
プログラムメモリ204は、フラッシュメモリとして実装される。
アプリケーションモジュールは、センサーノード200のオペレーティングシステムを定義するコアモジュール(カーネル)に加え、検知、局所化、時間同期、ルーティング、更新等のような様々なタスクを実行するためのモジュールを有する。
データメモリ206は、様々なアプリケーションモジュールの状態を蓄積している。特定のアプリケーションモジュールの状態は、そのアプリケーションモジュールに関連する任意のデータを参照する。例えば、ルーティングモジュールの状態は、データ経路内の次のホップを識別するデータを有することができ、また、検知アプリケーションモジュールの状態は、検知モジュールを実行する場合に検知されるデータであり得る。
データメモリ206は、RAMのようなダイナミックメモリである。
検知ハードウェア208は、条件を検知してデータを収集するために、MCU202により制御される。様々な形式の検知ハードウェア208が、センサーノード200の目的に応じ、温度・圧力・磁界等のような多種多様な条件を検知するために使用できる。
無線トランシーバー210は、他のセンサーノード及び/または基地局と通信するために無線信号を送受信する。
検知ハードウェア208により収集されたデータは、無線トランシーバー210によってセンサーネットワーク内を1つまたは複数のホップを経由し、基地局に送信される。
無線トランシーバー210は、通常、限定された信号範囲を有する低エネルギートランシーバーとして実装される。
センサーネットワーク用には、様々なオペレーティングシステムが存在する。オペレーティングシステムは、主に、スケジューリングとリソース管理とノード内通信及びノード間通信の両方とを制御する。
一般的なオペレーティングシステムであるタイニーOSは、一般的なサービスを実装するために再利用可能なソフトウェアコンポーネントを使用するが、センサーネットワーク内の全てのノードは、1つの静的にリンクされたシステムイメージを実行する。しかし、メモリ保護、障害分離及び効率的な回復のためには、単一の2進イメージは適用できない。これに対し、カーネルとユーザーコンポーネントとが明確に分離されているモジュール式のソフトウェアアーキテクチャーは、このような特徴を実現するために、自然な境界を提供する。
このようなモジュール式のソフトウェアアーキテクチャーは、SOS、MANTIS及びContikiを含む最近開発されたオペレーティングシステムで使用されている。これらのオペレーティングシステムは、タイニーOSと比べ、効率性を損なわずに2進レベルでのモジュール性を維持する。
本明細書において本発明は、SOSを使用して実装されるものとして説明される。しかし、本発明はSOSに限定されるものではなく、任意のモジュール式のオペレーティングシステムは本発明を実装するのに適している。
SOSは、センサーネットワーク内の全てのノードにカーネルがインストールされるセンサーオペレーティングシステムである。システムの残りの部分とアプリケーションレベルの機能とは、本明細書においてモジュールと呼ぶ1組の動的にロード可能な2進モジュールにより実装される。このモジュール性は、明確な境界を定め、各モジュールが実行時間中にロードされ、アンロードされることを可能するため、SOSソフトウェアアーキテクチャーの基盤を構成する。さらに、この分離は、SOSカーネルが各メモリブロックの所有権を実行時間中に追跡することと、実行コンテキストを識別することとを可能にする。
図3A,図3Bは、SOS内の基本的な通信アーキテクチャーを示す。図に示すようにモジュール302,304,308は、相互に情報を交換し合うために、また、SOSカーネル310と相互に情報を交換し合うために、明確に定義された通信経路を使用する。
各モジュール302,304,308は、所要のメッセージハンドラーを実装し、オプションとしてシステムの残りの部分に提供する1つまたは複数の機能を実装する。
他のモジュール302,304,308は、後者の機能の利用を選択することができる。
図3Aに示すようにモジュール302,304は、それぞれ、対応するメッセージハンドラーに引き渡されるメッセージを送ることにより、または、提供される機能を呼び出すことにより実現される非同期メッセージパッシングまたは同期関数呼出しを通じ、相互に通信することが可能である。
ダイナミックリンカー306は、モジュールをロードする時に、利用される機能を提供される機能にリンクするのを補助する。
図3Bは、同様に、モジュールとカーネルとの間の通信を示す。
モジュール308は、公知のシステムコールを呼び出し、モジュールのメッセージハンドラーに非同期に引き渡されるシステムメッセージを受信する。これらの明確に定義されたモジュール間、または、モジュールとカーネルとの間の通信経路は、SOSカーネル310が実行コンテキスト及びメモリ所有権情報の両方を実行とデータとが交差する境界として正確に追跡できるような明確な介在点を提供する。
図4は、本発明の実施形態によるセンサーノード内のメモリ障害の処理方法を示している。
この方法は、2階層のソフトウェアに実装される。第1の階層(ステップ410)は、アプリケーションモジュールを原因とするメモリ障害による破損から、センサーノードのオペレーティングシステムの中核となるサービス(リソース管理、通信、スケジューリング等)を保護するために、粗粒度のメモリ保護を使用する。
第2の階層(ステップ420)は、破損したアプリケーションモジュールの細粒度の検出と、破損したアプリケーションモジュールの回復を提供する。
破損の処理は、データ構造とカーネル内で維持される状態とに依存するため、カーネル自身をアプリケーションモジュールによる破損から保護することが重要である。
図4に示すようにステップ410において、カーネルのメモリ空間は、アプリケーションモジュールによる破損から保護される。カーネルのメモリ空間は、粗粒度のメモリ保護を使用して保護され、アプリケーション障害ドメインは、センサーノードのデータメモリアドレス空間の中で定義される。
アプリケーション障害ドメインは、データメモリアドレス空間の全体の一部であり、アプリケーションモジュールが使用するために割り当てられた部分のことである。
図5は、センサーノードの典型的なデータメモリアドレス空間500を示している。
図5に示すようにアプリケーション障害ドメイン502は、カーネルの状態504から分離されている。アプリケーションモジュールの状態(データ)は、完全にアプリケーション障害ドメイン502内に常駐する。
カーネルの状態504は、完全にアプリケーション障害ドメイン502外に常駐する。
アプリケーション障害ドメイン502は、動的なメモリ割り当てを使用して実現される。従って、アプリケーション障害ドメイン502のサイズは、利用できるリソースに応じて変わり得る。
アプリケーションモジュールがメモリを必要とする場合、SOSカーネルは、アプリケーション障害ドメイン502内のメモリのブロックをアプリケーションモジュールの使用のために割り当てる。
本発明の実現可能な実施形態によれば、動的なメモリ割り当ての技術を使用して、メモリを割り当てることができる。動的なメモリ割り当ての技術は、全てのアプリケーションモジュール(アプリケーション障害ドメイン)のアドレス範囲とカーネルのメモリブロックのアドレス範囲とが連続的であり、かつ、重なり合わないことを保証する。この具体例を図5に示す。
図5においてアプリケーション障害ドメイン502は、メモリの1つの連続的な範囲であり、カーネルの状態504は、メモリの別の連続的な範囲であり、これらの範囲は重なり合わない。これは、アプリケーション障害ドメイン502がメモリアドレスの1つの範囲により定義されること可能にし、アプリケーション障害ドメイン502とカーネルの状態504との間に容易に識別可能な境界が存在している。
カーネルに割り当てることができないアプリケーション障害ドメイン502内の使用されていないメモリブロックのフラグメンテーションによる疑似的なリソース制約を防止するため、連続的な順序でのブロックの割り当てを促進し、その結果、アプリケーション障害ドメイン502のフラグメンテーションが限定的になるように、割り当てアルゴリズムを最適化することが可能である。
アプリケーション障害ドメインとカーネルの状態とがメモリの連続的な範囲になるようなメモリ割り当てについて上述したが、本発明はこの実施形態に限定されるものではない。
アプリケーション障害ドメインが、アプリケーションモジュールとカーネルとが使用するために割り当てられる非連続的なデータブロックを含むことも可能である。この場合、メモリブロックの連続的な範囲によってアプリケーション障害ドメインとカーネルの状態とを識別する代わりに、どのデータブロックがカーネルに割り当てられ、どのデータブロックがアプリケーション障害ドメインに割り当てられるかを追跡することが必要である。
データシェアリングやメモリ割り当ての間に、アプリケーション障害ドメインを実現することが必要である。アプリケーションモジュールとSOSカーネルとは、上述したように、非同期メッセージを介して相互に情報を交換し、データを共有する(図3B参照)。
カーネルからアプリケーションモジュールに渡されたこれらのメッセージは、オペレーティングシステムのデータ構造へのポインタを含むことは決してない。例えば、SOSにおいてカーネルからモジュールへの同期関数呼出しは、動的にロード可能なセンサードライバモジュールに制限される。この場合、カーネルは、センサードライバモジュールが実装すべきインタフェイスを記述し、インタフェイス定義には、いかなるポインタパラメタも含まない。従って、アプリケーションモジュールは、いかなるオペレーティングシステム(カーネル)の状態に対する参照もリーガルに含むことはできない。
逆に、SOSカーネルは、アプリケーションが所有するメモリブロックに対する参照を有してもよい。しかし、カーネルは、それらのブロックに対して決して動作(すなわち、読み取りまたは書き込み)をせず、単に、他のモジュールまたはドライバーにそれらを渡すだけである。
カーネルは、メッセージのペイロード内にある実際のデータを渡すことにより、アプリケーションモジュールへ情報を伝達する。モジュールは、メッセージのペイロードの読み取りは可能であるが、メッセージのペイロードの記憶場所への書き込みをすることやメッセージのペイロードを参照し続けるにはペイロードの所有権を得る必要がある。例えば、SOSでは、メッセージのペイロードの所有権移転は、ker_msg_take_dataシステムコールを通じて発生する。
アプリケーション障害ドメインを実現するために、メッセージのペイロードの所有権を得るためのシステムコールは、まず、メッセージのペイロードが障害ドメイン内から割り当てられているか否かを調べる。
もし、そのペイロードがアプリケーション障害ドメイン外に常駐していれば、アプリケーション障害ドメイン内から割り当てられた新しいバッファにそのペイロードはコピーされる。従って、もし、メッセージのペイロードの記憶場所がカーネルに割り当てられていれば、記憶場所は、アプリケーションモジュールに再び割り当てられない。その代わりに、アプリケーション障害ドメイン内の新しいメモリブロックがアプリケーションモジュールに割り当てられ、メッセージペイロードは、このメモリブロックにコピーされる。
図6は、本発明の実施形態による実行時間チェックによってアプリケーション障害ドメインを実現する方法を示す。
図6に示すようにステップ610において、アプリケーション障害ドメインの境界は追跡される。メモリは動的に割り当てられるので、アプリケーション障害ドメインのサイズ及び境界は、メモリがアプリケーションモジュールまたはSOSカーネルに割り当てられるかに応じ、変化することができる。従って、アプリケーション障害ドメインの境界は、それらが変化するのに応じ、カーネル内で追跡される。
ステップ620においてアプリケーションモジュールは、アプリケーション障害ドメイン外のメモリへの書き込みを実行時間チェックを通じて防止される。これは、SOSカーネルに実装された境界チェッカーにより実行される。
アプリケーションモジュールは、データメモリへの書き込みを試みる任意の動作の前に、境界チェッカーへ呼出しを行う。アプリケーションモジュールの2進またはソースコードを書き直すことにより、これらの呼出しはアプリケーションモジュールに挿入できる。従って、アプリケーションモジュールの設計者の介在の有無に拘わらず、呼出しは実装され得る。
次に、境界チェッカーは、アプリケーションモジュールが書き込みを試みている記憶場所がアプリケーション障害ドメイン内であるか否かを判定する。アプリケーション障害ドメインがメモリブロックの連続的範囲として割り当てられている場合、記憶場所がアプリケーション障害ドメイン内であるか否かを判定するために、境界チェッカーは、記憶場所をアプリケーション障害ドメインの境界と比較することができる。
もし、記憶場所がアプリケーション障害ドメイン内であれば、アプリケーションモジュールは、その記憶場所に書き込みをすることが許可される。
もし、記憶場所がアプリケーション障害ドメイン内でなければ、アプリケーションモジュールは、その記憶場所への書き込みをすることが防止される。
この場合、アプリケーションモジュールのためにカスタマイズされたエラーハンドラーが呼び出される。例えば、エラーハンドラーは、障害となったアプリケーションモジュールを停止及び/または再起動することが可能である。アプリケーションモジュールのエラーハンドラーの動作は、カスタマイズ可能である。従って、異なるアプリケーションモジュールのエラーハンドラーは、アプリケーション障害ドメイン外の記憶場所への書き込みを試みるアプリケーションモジュールに応じて異なる動作をすることが可能である。
データメモリ内の限定されたアドレス空間は、それぞれのアプリケーションモジュールに対して連続した障害ドメインを作ることを不可能にする。従って、複数のアプリケーションモジュールは、単一のメモリ空間(アプリケーション障害ドメイン)の中で実行される。従って、アプリケーションモジュールの状態は、アプリケーション障害ドメイン内の他のアプリケーションモジュールにより破損される恐れがある。
図4に戻って、ステップ420においてメモリの破損は、アプリケーション障害ドメイン内のアプリケーションモジュールの状態の中で検出され、任意の破損したアプリケーションモジュールは回復される。このステップは、メモリの破損が発生した後、破損したメモリが影響を受けたモジュールによって使用できるようになる前に、メモリの破損を検出するためにSOSカーネル内に実装されたメモリ完全性検証方法を使用する。
メモリの破損を発見すると、影響を受けたモジュールは、破損していない状態に回復される。
メモリの完全性検証を行うためには、カーネルは、ブロックレベルのメモリ所有権モデルを維持することが可能でなければならない。SOSカーネルは、アプリケーション障害ドメイン内の全てのメモリブロックのモジュール所有権を正確に追跡する。
カーネルもまたさらに、センサーノード上のアプリケーションモジュールの実行を追跡することが可能であり、これをシステムの制御流れと呼ぶ。SOSカーネルは、モジュールへの及びモジュールからの制御流れの入口点/出口点の全てをモニタすることができる。
SOSは、非プリエンプティブな協力的計画的システムであるため、アプリケーションモジュールは、他のモジュールの実行に割り込むことはできない。従って、アプリケーションモジュールにより所有されるメモリブロックの内容は、モジュールの連続した実行中に変更すべきではない。従って、メモリ完全性検証方法は、モジュールにより所有されるメモリブロックの内容がモジュールの連続した実行中に変化しているか否かを検出する。
アプリケーション障害ドメイン内の各メモリブロックのメモリ完全性コード(MIC)が、メモリブロックの内容の関数として計算され、蓄積される。
MICは、メモリの内容を要約するために、メモリの内容の関数として計算される値である。例えば、MICはチェックサムでもよい。チェックサムは、公知のCRC16アルゴリズムを使用して実装される。アプリケーション障害ドメインの各メモリブロックに対するMICは、カーネルに割り当てられたメモリアドレス空間内のテーブルに蓄積される。これにより、MICは、破損から保護されている。上述したように、カーネルのアドレス空間は、アプリケーションモジュールによる破損から保護されているためである。
アプリケーションモジュールが呼び出される時にはいつでも(すなわち、アプリケーションモジュールへの制御流れの入口点において)、アプリケーションモジュールに対してメモリ完全性検証が実行される。
図7は、本発明の実施形態によるメモリ完全性の検証方法と、破損したアプリケーションモジュールの回復方法とを示している。
ステップ710において、アプリケーションモジュールが呼び出される。上述したように(図3参照)、制御流れは、システム内の明確に定義された点からのみモジュールに入ることが可能である。これらの点は、他のモジュール及びカーネルからのメッセージを処理するメッセージハンドラーであり、また、他のモジュールから呼び出された同期関数呼出しである。
ステップ720において、メモリブロックの内容に基づき、アプリケーションモジュールによって所有される各メモリブロックのMICが計算される。上述したように、MICはチェックサムでもよい。
ステップ730において、計算されたMICと蓄積されたMICとが各メモリブロックにおいて同一であるか否かを判定するために、アプリケーションモジュールにより所有された各メモリブロックの計算されたMICは、各メモリブロックの蓄積されたMICと比較される。
計算されたMICと蓄積されたMICとが、アプリケーションモジュールにより所有された各メモリブロックにおいて同一であれば、本方法はステップ740に進む。
計算されたMICと蓄積されたMICとが、アプリケーションモジュールにより所有されたメモリブロックのいずれとも同一でなければ、アプリケーションモジュールのメモリは破損しており、本方法はステップ760に進む。
図7の実施形態においてアプリケーションモジュールのメモリの完全性は、アプリケーションモジュールを実行する前にチェックされるが、本発明の他の実施形態によれば、アプリケーションモジュールの実行中で、アプリケーションモジュールがメモリに対して最初にアクセスを試みる直前にメモリ完全性検証を実行することが可能である。
ステップ740において、アプリケーションモジュールが実行される。これは、計算されたMICと蓄積されたMICとがアプリケーションモジュールにより所有される各メモリブロックで一致したことが、ステップ730において判定されているからであり、アプリケーションモジュールのメモリは破損しておらず、モジュールを実行することが可能である。
アプリケーションモジュールの実行中にメモリ完全性検証が実行される実施形態では、アプリケーションモジュールがアクセスを試みているメモリブロックの計算されたMICと蓄積されたMICとが一致していると判定された場合、アプリケーションモジュールは、メモリにアクセスすることが許され、実行を継続する。
ステップ750において、アプリケーションモジュールの実行後、アプリケーションモジュールにより所有される各メモリブロックのMICが再計算され、メモリブロックのそれぞれについて蓄積されたMICは、再計算されたMICに置換される。これは、アプリケーションモジュールの実行中におけるメモリブロックの内容のあらゆる正当な変化を考慮に入れている。
アプリケーションモジュールの実行中に内容が修正されたメモリブロックについてのみ、MICが再計算され置換されることは可能である。
ステップ760において、破損したメモリに関連するアプリケーションモジュールは、マイクロリブートされる。本明細書において使用される用語であるマイクロリブートは、特定のアプリケーションモジュールのみを再起動し、その状態を以前の破損していない状態に回復させることを意味する。この破損していない状態は、アプリケーションモジュールの初期状態でもよく、または、アプリケーションモジュールが破損していないと判明している最近の状態であってもよい。これは、アプリケーションモジュールの破損状態を除去する。
マイクロリブートは、破損したアプリケーションモジュールを再起動するのみであることに気づくことは重要である。従って、センサーノードの完全なリブートと比べて回復時間は非常に短い。さらに、マイクロリブートは、ノード上にある、破損したアプリケーションモジュールと直接的には相互に関連していない実行中の他のアプリケーションモジュールに及ぼす混乱を最小限にする。
SOSカーネルは、実行時間中にアプリケーションモジュールをロードしたり、アンロードしたりすることが可能である。モジュールがシステムにロードされるとき、カーネルは、モジュールが必要とするリソースを割り当て、モジュールが利用する機能群を関連付け、通知する。
モジュールのアンロードの間に、カーネルは、モジュールのリソースを解放し、モジュールの機能群を切り離す。例えば、アプリケーションモジュールをアンロードし、次に、そのアプリケーションモジュールをシステムに再ロードすることにより、マイクロリブートはSOSの中に実装される。これは、アプリケーションモジュールを初期状態で再起動することとなる。
モジュールは、直ちにシステムに再ロードされるので、モジュールにより提供される機能群の切り離しのような不必要なステップを除外することも可能である。
本発明の1つの実施形態によれば、アプリケーションモジュールの状態が破損しているとき、そのアプリケーションモジュールを破損したと疑われる1つまたは複数の疑わしいアプリケーションモジュールを、カーネルが識別することも可能である。疑わしいアプリケーションモジュールの識別は、アプリケーションモジュールの実行ログをカーネルが保持することによって実装される。
アプリケーションモジュールの状態が破損していると判定されると、次に、カーネルは、疑わしいアプリケーションモジュールを判定するために、破損したアプリケーションモジュールの前回の実行以降、他のどのアプリケーションモジュールが実行されたかをログでチェックすることが可能である。
他のアプリケーションモジュールの状態の破損を招いた疑わしいアプリケーションモジュールを絞り込むために、疑わしい実行中のアプリケーションモジュールのリストをカーネルが保持することが可能である。
本発明のこの実施形態は、メモリの破損の検出と、破損状態のアプリケーションモジュールの回復とに加えて、メモリの破損に関して可能性のある原因をカーネルが診断することを可能にする。
上述のように、本発明は、センサーネットワークのセンサーノードにおいて使用可能な、ノードレベルのソフトウェアベースのメモリの障害検出方法及び回復方法を提供する。この方法は、局所的にメモリ障害を検出し、効率的な局所的な回復を提供する。この局所的な回復は、ネットワークレベルの回復メカニズムを支援し、または加速することができるはずである。
以上、本発明は、センサーノードに実装されるとして説明したが、本発明は、他の様々な形式のコンピュータシステムにおいて実装されることができる。
以上の詳細説明は、あらゆる点で説明的であり典型的であるが、制約的なものではないと理解されるべきであり、また、本明細書に開示されている本発明の範囲は、詳細説明から判断されるべきではなく、より正確に言えば、特許法により許容される最大限によって解釈される特許請求の範囲から判定されるべきである。
本明細書において例示し説明した実施形態は、本発明による原理の単なる実例であり、本発明の範囲と技術思想から逸脱することなく、様々な修正が当業者により実現可能であると理解されるべきである。当業者は、本発明の範囲と技術思想から逸脱することなく、さまざまな他の特徴の組み合わせを実現することができるはずである。
本出願は、2006年1月3日に出願し、その開示が参考文献として本明細書に包含される、米国仮特許出願第60/743,092号による優先権を主張する。
典型的なセンサーネットワークのネットワークトポロジーを示す。 本発明を実装することができるセンサーノードハードウェアの高レベルブロック図を示す。 SOS(センサーオペレーティングシステム)におけるモジュール間の通信を示す。 SOSにおけるモジュールとカーネルとの間の通信を示す。 本発明の実施形態によるセンサーノードをメモリ破損障害から保護する方法を示す。 センサーノードの典型的なデータメモリアドレス空間を示す。 本発明の実施形態による実行時間チェックによってアプリケーション障害ドメインを実現する方法を示す。 本発明の実施形態によるメモリ完全性検証方法及び破損したアプリケーションモジュールの回復方法を示す。

Claims (31)

  1. 単一のメモリアドレス空間内でメモリにアクセスする複数のアプリケーションモジュールを実行するステップと、
    アプリケーションモジュールによるアプリケーションの状態へのメモリアクセスよりも前に、前記アプリケーションモジュールの前記状態が破損しているか否かを検出するステップと、
    前記アプリケーションモジュールの前記状態が破損している場合、前記アプリケーションモジュールをマイクロリブートするステップとを含む方法。
  2. 請求項1に記載の方法において、
    前記アプリケーションモジュールの前記状態が破損していない場合、前記アプリケーションモジュールによる前記メモリアクセスを可能にすることをさらに含む方法。
  3. 請求項1に記載の方法において、
    前記アプリケーションモジュールの状態が破損しているか否かを検出するステップは、前記アプリケーションモジュールの実行よりも前に行われる方法。
  4. 請求項1に記載の方法において、
    前記アプリケーションモジュールのそれぞれが前記単一のデータメモリ空間内にメモリの少なくとも1つのブロックを割り当てられ、
    前記アプリケーションモジュールの状態が破損しているか否かを検出するステップが、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックに蓄積された内容の関数として、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックのメモリ完全性コード(MIC)を計算するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICを蓄積されたMICと比較するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICが前記蓄積されたMICと同一である場合、前記アプリケーションモジュールの前記状態が破損していないと判定するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICが前記蓄積されたMICと同一ではない場合、前記アプリケーションモジュールの前記状態が破損していると判定するステップとを含む方法。
  5. 請求項4に記載の方法において、
    メモリ完全性コード(MIC)を計算するステップがチェックサム機能を使用して前記MICを計算することを含む方法。
  6. 請求項4に記載の方法において、
    前記アプリケーションモジュールの前記状態が破損していない場合、前記アプリケーションモジュールの現在の実行が完了するまで、前記アプリケーションモジュールが前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックにアクセスすることを可能にし、前記アプリケーションモジュールの前記実行の直後に、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記MICを再計算し、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記蓄積されたMICを、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記再計算されたMICに置換することをさらに含む方法。
  7. 請求項1に記載の方法において、
    前記破損状態を有する前記アプリケーションモジュールをマイクロリブートするステップが、前記アプリケーションモジュールを再起動し、前記アプリケーションモジュールの前記状態を破損していない状態に回復させることを含む方法。
  8. 請求項1に記載の方法において、
    前記破損状態を有する前記アプリケーションモジュールをマイクロリブートするステップが、
    前記アプリケーションモジュールをアンロードすることと、
    前記アプリケーションモジュールを再ロードすることとを含む方法。
  9. 請求項1に記載の方法において、
    前記アプリケーションモジュールが前記単一のデータメモリ空間内に定められたアプリケーション障害ドメイン外の記憶場所へ書き込むことを防止するステップと、
    前記アプリケーション障害ドメイン外の前記単一のデータメモリ空間の一部に、オペレーティングシステムのカーネルの状態を維持するステップとをさらに含む方法。
  10. 請求項9に記載の方法において、
    プログラムモジュールに関連する記憶場所を連続したメモリアドレスの第1の範囲に動的に割り当て、オペレーティングシステムのカーネルに関連する記憶場所を連続したメモリアドレスの第2の範囲に動的に割り当て、連続したメモリアドレスの前記第1の範囲及び前記第2の範囲は重なり合わないようにすることと、
    連続したメモリアドレスの前記第1の範囲を前記アプリケーション障害ドメインと定めることとをさらに含む方法。
  11. 請求項10に記載の方法において、
    前記アプリケーションモジュールがアプリケーション障害ドメイン外の記憶場所へ書き込むことを防止するステップが、
    メモリアドレスの前記第1の範囲の境界を追跡することと、
    アプリケーションモジュールの目標メモリアドレスをメモリアドレスの前記第1の範囲の前記境界と比較することと、
    前記目標メモリアドレスがメモリアドレスの前記第1の範囲の前記境界内にある場合、前記アプリケーションモジュールが前記目標メモリアドレスに書き込むことを可能にすることと、
    前記目標メモリアドレスがメモリアドレスの前記第1の範囲の前記境界内にない場合、前記アプリケーションモジュールが前記目標メモリアドレスに書き込むことを防止することとを含む方法。
  12. 請求項1に記載の方法において、
    前記アプリケーションモジュールの前記状態が破損している場合、前記アプリケーションモジュールの前記状態を破損したと疑われる1つまたは複数の疑わしいアプリケーションモジュールを識別することをさらに含む方法。
  13. メモリ障害を処理するためのコンピュータプログラム命令を蓄積するコンピュータで読み取り可能な媒体であって、
    前記コンピュータプログラム命令が、
    単一のメモリアドレス空間内でメモリにアクセスする複数のアプリケーションモジュールを実行するステップと、
    アプリケーションモジュールによるアプリケーション状態へのメモリアクセスよりも前に、前記アプリケーションモジュールの前記状態が破損しているか否かを検出するステップと、
    前記アプリケーションモジュールの前記状態が破損している場合、前記アプリケーションモジュールをマイクロリブートするステップとを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  14. 請求項13に記載のコンピュータで読み取り可能な媒体において、
    前記アプリケーションモジュールの状態が破損しているか否かを検出するステップを定義する前記コンピュータプログラム命令が、前記アプリケーションモジュールの実行よりも前に、前記アプリケーションモジュールの状態が破損しているか否かを検出するステップを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  15. 請求項13に記載のコンピュータで読み取り可能な媒体において、
    前記アプリケーションモジュールのそれぞれが前記単一のデータメモリ空間内にメモリの少なくとも1つのブロックを割り当てられ、
    前記アプリケーションモジュールの状態が破損しているか否かを検出するステップを定義する前記コンピュータプログラム命令が、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックに蓄積された内容の関数として、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックのメモリ完全性コード(MIC)を計算するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICを蓄積されたMICと比較するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICが前記蓄積されたMICと同一である場合、前記アプリケーションモジュールの前記状態が破損していないと判定するステップと、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICが前記蓄積されたMICと同一ではない場合、前記アプリケーションモジュールの前記状態が破損していると判定するステップとを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  16. 請求項15に記載のコンピュータで読み取り可能な媒体において、
    メモリ完全性コード(MIC)を計算するステップを定義する前記コンピュータプログラム命令が、チェックサム機能を使用して前記MICを計算するステップを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  17. 請求項15に記載のコンピュータで読み取り可能な媒体において、
    前記アプリケーションモジュールの前記状態が破損していない場合、前記アプリケーションモジュールの現在の実行が完了するまで、前記アプリケーションモジュールが前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックにアクセスすることを可能にし、前記アプリケーションモジュールの前記実行の直後に、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記MICを再計算し、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記蓄積されたMICを、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記再計算されたMICに置換するステップを定義するコンピュータプログラム命令をさらに含むコンピュータで読み取り可能な媒体。
  18. 請求項13に記載のコンピュータで読み取り可能な媒体において、
    前記破損状態を有する前記アプリケーションモジュールをマイクロリブートするステップを定義する前記コンピュータプログラム命令が、前記アプリケーションモジュールを再起動し、前記アプリケーションモジュールの前記状態を破損していない状態に回復するステップを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  19. 請求項13に記載にコンピュータで読み取り可能な媒体において、
    前記破損状態を有する前記アプリケーションモジュールをマイクロリブートするステップを定義する前記コンピュータプログラム命令が、
    前記アプリケーションモジュールをアンロードするステップと、
    前記アプリケーションモジュールを再ロードするステップとを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  20. 請求項13に記載のコンピュータで読み取り可能な媒体において、
    前記アプリケーションモジュールが前記単一のデータメモリ空間内に定められたアプリケーション障害ドメイン外の記憶場所へ書き込むことを防止するステップと、
    前記アプリケーション障害ドメイン外の前記単一のデータメモリ空間の一部に、オペレーティングシステムのカーネルの状態を維持するステップとを定義するコンピュータプログラム命令をさらに含むコンピュータで読み取り可能な媒体。
  21. 請求項20に記載のコンピュータ読み取り可能な媒体において、
    プログラムモジュールに関連する記憶場所を連続したメモリアドレスの第1の範囲に動的に割り当て、オペレーティングシステムのカーネルに関連する記憶場所を連続したメモリアドレスの第2の範囲に動的に割り当て、連続したメモリアドレスの前記第1の範囲及び前記第2の範囲は重なり合わないようにするステップと、
    連続したメモリアドレスの前記第1の範囲を前記アプリケーション障害ドメインと定めるステップとを定義するコンピュータプログラム命令をさらに含むコンピュータで読み取り可能な媒体。
  22. 請求項21に記載のコンピュータ読み取り可能な媒体において、
    前記アプリケーションモジュールがアプリケーション障害ドメイン外の記憶場所へ書き込むことを防止するステップを定義する前記コンピュータプログラム命令が、
    メモリアドレスの前記第1の範囲の境界を追跡するステップと、
    アプリケーションモジュールの目標メモリアドレスをメモリアドレスの前記第1の範囲の前記境界と比較するステップと、
    前記目標メモリアドレスがメモリアドレスの前記第1の範囲の前記境界内にある場合、前記アプリケーションモジュールが前記目標メモリアドレスに書き込むことを可能にするステップと、
    前記目標メモリアドレスがメモリアドレスの前記第1の範囲の前記境界内にない場合、前記アプリケーションモジュールが前記目標メモリアドレスに書き込むことを防止するステップとを定義するコンピュータプログラム命令を含むコンピュータで読み取り可能な媒体。
  23. 請求項13に記載のコンピュータ読み取り可能な媒体において、
    前記コンピュータプログラム命令がセンサーノード上にインストールされたオペレーティングシステムのカーネルに実装されるコンピュータで読み取り可能な媒体。
  24. 請求項23に記載のコンピュータで読み取り可能な媒体において、
    前記オペレーティングシステムは、センサーオペレーティングシステム(SOS)を含むコンピュータで読み取り可能な媒体。
  25. 請求項13に記載のコンピュータで読み取り可能な媒体において、
    前記コンピュータプログラム命令が、前記アプリケーションモジュールの前記状態が破損している場合、前記アプリケーションモジュールの前記状態を破損したと疑われる1つまたは複数の疑わしいアプリケーションモジュールを識別するステップを定義するコンピュータプログラム命令をさらに含むコンピュータで読み取り可能な媒体。
  26. 単一のデータメモリ空間内でメモリにアクセスする複数のアプリケーションモジュールを実行する手段と、
    アプリケーションモジュールによる状態へのメモリアクセスよりも前に、アプリケーションモジュールの状態が破損しているか否かを検出する手段と、
    破損状態の検出に応じて前記アプリケーションモジュールをマイクロリブートする手段とを有する装置。
  27. 請求項26に記載の装置において、
    前記アプリケーションモジュールのそれぞれが前記単一のデータメモリ空間内にメモリの少なくとも1つのブロックを割り当てられ、
    実行すべきアプリケーションモジュールの状態が別のアプリケーションモジュールによって破損しているか否かを検出する手段は、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロック内に蓄積された内容の関数として、前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックのメモリ完全性コード(MIC)を計算する手段と、
    前記アプリケーションモジュールに割り当てられたメモリの前記少なくとも1つのブロックの前記計算されたMICを蓄積されたMICと比較する手段とを有する装置。
  28. 請求項26に記載の装置において、
    前記アプリケーションモジュールをマイクロリブートする手段は、前記アプリケーションモジュールを再起動し、前記アプリケーションモジュールの前記状態を破損していない状態に回復させる手段を有する装置。
  29. 請求項26に記載の装置において、
    前記アプリケーションモジュールをマイクロリブートする手段は、
    前記アプリケーションモジュールをアンロードする手段と、
    前記アプリケーションモジュールを再ロードする手段とを有する装置。
  30. 請求項26に記載の装置において、
    前記単一のデータメモリ空間内に定められたアプリケーション障害ドメイン外の記憶場所に前記アプリケーションモジュールが書き込むことを防止する手段と、
    前記アプリケーション障害ドメイン外の前記単一のデータメモリ空間の一部に、オペレーションシステムのカーネルの状態を維持する手段とをさらに有する装置。
  31. 請求項26に記載の装置において、
    プログラムモジュールに関連する記憶場所を連続したメモリアドレスの第1の範囲に動的に割り当て、オペレーティングシステムのカーネルに関連する記憶場所を連続したメモリアドレスの第2の範囲に動的に割り当て、連続したメモリアドレスの前記第1及び前記第2の範囲は重なり合わないようにする手段と、
    連続したメモリアドレスの前記第1の範囲を前記アプリケーション障害ドメインと定める手段とをさらに有する装置。
JP2008548840A 2006-01-03 2006-12-28 メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム Expired - Fee Related JP5203967B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US74309206P 2006-01-03 2006-01-03
US60/743,092 2006-01-03
US11/616,086 US7581142B2 (en) 2006-01-03 2006-12-26 Method and system usable in sensor networks for handling memory faults
US11/616,086 2006-12-26
PCT/US2006/062638 WO2007081661A2 (en) 2006-01-03 2006-12-28 Method and system usable in sensor networks for handling memory faults

Publications (2)

Publication Number Publication Date
JP2009522664A true JP2009522664A (ja) 2009-06-11
JP5203967B2 JP5203967B2 (ja) 2013-06-05

Family

ID=38226013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008548840A Expired - Fee Related JP5203967B2 (ja) 2006-01-03 2006-12-28 メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム

Country Status (3)

Country Link
US (1) US7581142B2 (ja)
JP (1) JP5203967B2 (ja)
WO (1) WO2007081661A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198929A (ja) * 2012-06-18 2012-10-18 Toyota Motor Corp 情報処理装置

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327192B2 (en) * 2006-02-06 2012-12-04 Intel Corporation Method for memory integrity
US9378108B2 (en) 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US7921206B2 (en) * 2007-04-18 2011-04-05 Nec Laboratories America, Inc. Visibility and control of wireless sensor networks
EP2020776A1 (en) * 2007-07-30 2009-02-04 Nederlandse Organisatie voor toegepast- natuurwetenschappelijk onderzoek TNO Restarting networks
US8006055B2 (en) 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
US8875219B2 (en) * 2009-07-30 2014-10-28 Blackberry Limited Apparatus and method for controlled sharing of personal information
US8392750B2 (en) * 2010-02-16 2013-03-05 Hewlett-Packard Development Company, L.P. Method and apparatus for crash recovery and resynchronization
CN102316590A (zh) * 2010-07-07 2012-01-11 中兴通讯股份有限公司 在长期演进系统中进行资源碎片整理的方法及基站侧设备
US9626127B2 (en) * 2010-07-21 2017-04-18 Nxp Usa, Inc. Integrated circuit device, data storage array system and method therefor
US9690703B1 (en) * 2012-06-27 2017-06-27 Netapp, Inc. Systems and methods providing storage system write elasticity buffers
US9697111B2 (en) * 2012-08-02 2017-07-04 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method
US9542254B2 (en) * 2014-07-30 2017-01-10 International Business Machines Corporation Application-level signal handling and application-level memory protection
US9703661B2 (en) 2015-02-05 2017-07-11 International Business Machines Corporation Eliminate corrupted portions of cache during runtime
US9678681B2 (en) * 2015-06-17 2017-06-13 International Business Machines Corporation Secured multi-tenancy data in cloud-based storage environments
FR3063553B1 (fr) * 2017-03-06 2021-07-16 Safran Architecture electronique embarquee de nœuds de capteur
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
CN108089977B (zh) * 2017-11-28 2020-07-31 维沃移动通信有限公司 一种应用程序的异常处理方法、装置及移动终端
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291419A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 複数ロードモジュール保護方式
JPH0566936A (ja) * 1991-09-06 1993-03-19 Casio Comput Co Ltd データ処理装置
JPH11353186A (ja) * 1998-06-10 1999-12-24 Hitachi Ltd 障害自動回復方式
JP2002091784A (ja) * 2000-09-14 2002-03-29 Toshiba Corp Java言語を用いた制御装置
JP2004326331A (ja) * 2003-04-23 2004-11-18 Hitachi Ltd 不正メモリアクセス検知方法及びそのプログラム
JP2005234855A (ja) * 2004-02-19 2005-09-02 Yokogawa Electric Corp 情報処理装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3905023A (en) * 1973-08-15 1975-09-09 Burroughs Corp Large scale multi-level information processing system employing improved failsaft techniques
EP0853291B1 (en) 1996-06-28 2016-11-23 Sony Corporation Method and device for processing information
JP3721725B2 (ja) 1997-07-09 2005-11-30 ソニー株式会社 情報処理方法および情報処理装置
GB2369690B (en) 2000-11-29 2002-10-16 Sun Microsystems Inc Enhanced protection for memory modification tracking
US6438408B1 (en) 2000-12-28 2002-08-20 Medtronic, Inc. Implantable medical device for monitoring congestive heart failure
US7161926B2 (en) 2001-07-03 2007-01-09 Sensoria Corporation Low-latency multi-hop ad hoc wireless network
US20030023933A1 (en) * 2001-07-27 2003-01-30 Sun Microsystems, Inc. End-to-end disk data checksumming
US7117422B2 (en) * 2002-01-22 2006-10-03 Sun Microsystems, Inc. Error detection in storage data
US7383490B2 (en) * 2005-04-14 2008-06-03 International Business Machines Corporation Methods and apparatus using commutative error detection values for fault isolation in multiple node computers
US7107487B2 (en) 2002-04-12 2006-09-12 Lenovo (Singapore) Pte Ltd. Fault tolerant sleep mode of operation
US7036066B2 (en) * 2002-05-24 2006-04-25 Sun Microsystems, Inc. Error detection using data block mapping
US7036125B2 (en) 2002-08-13 2006-04-25 International Business Machines Corporation Eliminating memory corruption when performing tree functions on multiple threads
US7231634B2 (en) 2002-09-17 2007-06-12 Sun Microsystems, Inc. Method for determining scope and cause of memory corruption
US20050182862A1 (en) 2004-02-12 2005-08-18 Ritz Andrew J. System and method for detecting DMA-generated memory corruption in a PCI express bus system
US7490268B2 (en) * 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7386352B2 (en) 2004-10-06 2008-06-10 Sandia Corporation Modular sensor network node
US20060095518A1 (en) 2004-10-20 2006-05-04 Davis Jesse H Z Software application for modular sensor network node
US7434105B1 (en) * 2005-11-07 2008-10-07 Symantec Operating Corporation Selective self-healing of memory errors using allocation location information
US7568136B2 (en) * 2005-11-08 2009-07-28 M2000 Sa. Reconfigurable system and method with corruption detection and recovery

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291419A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 複数ロードモジュール保護方式
JPH0566936A (ja) * 1991-09-06 1993-03-19 Casio Comput Co Ltd データ処理装置
JPH11353186A (ja) * 1998-06-10 1999-12-24 Hitachi Ltd 障害自動回復方式
JP2002091784A (ja) * 2000-09-14 2002-03-29 Toshiba Corp Java言語を用いた制御装置
JP2004326331A (ja) * 2003-04-23 2004-11-18 Hitachi Ltd 不正メモリアクセス検知方法及びそのプログラム
JP2005234855A (ja) * 2004-02-19 2005-09-02 Yokogawa Electric Corp 情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198929A (ja) * 2012-06-18 2012-10-18 Toyota Motor Corp 情報処理装置

Also Published As

Publication number Publication date
US20070156951A1 (en) 2007-07-05
US7581142B2 (en) 2009-08-25
JP5203967B2 (ja) 2013-06-05
WO2007081661A2 (en) 2007-07-19
WO2007081661A3 (en) 2008-08-21

Similar Documents

Publication Publication Date Title
JP5203967B2 (ja) メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム
US7516361B2 (en) Method for automatic checkpoint of system and application software
KR101374455B1 (ko) 메모리 에러와 리던던시
US8627140B2 (en) Failure management method and computer
US8219851B2 (en) System RAS protection for UMA style memory
JP4925973B2 (ja) 装置、システム、方法およびプログラム
US20100318746A1 (en) Memory change track logging
US6141771A (en) Method and system for providing a trusted machine state
JP2010039895A (ja) 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
US20230115158A1 (en) Method for detecting and recovery from soft errors in a computing device
US10346269B2 (en) Selective mirroring of predictively isolated memory
US9195550B2 (en) Method for guaranteeing program correctness using fine-grained hardware speculative execution
KR101063720B1 (ko) 피어 프로그램 가능 하드웨어 장치에 대한 자동화 펌웨어 복구
US8601215B2 (en) Processor, server system, and method for adding a processor
JP5716824B2 (ja) マルチコアプロセッサシステム
CN116724297A (zh) 一种故障处理方法、装置及系统
JP2004252525A (ja) エミュレータおよびプログラム
US7890798B1 (en) Computer cluster with second-node instance of application having access to state snapshot of first-node instance of application
CN104657227A (zh) 硬盘写操作失败时的处理方法及系统
JP2002229811A (ja) 論理分割システムの制御方法
CN108415788B (zh) 用于对无响应处理电路作出响应的数据处理设备和方法
KR20180065881A (ko) 멀티 코어 프로세서 및 그것의 캐시 관리 방법
US9135110B2 (en) Method and device for enhancing the reliability of a multiprocessor system by hybrid checkpointing
JP7074291B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2015133148A (ja) コントローラの制御プログラム、およびコントローラの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121212

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: 20130115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130214

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160222

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

LAPS Cancellation because of no payment of annual fees