(57)【要約】  物理的な侵入検知／警報を管理するネットワーク化されてシステムには、サーバ装置の上位が含まれ、プロセッサ装置と通信するプロセッサ装置及びメモリと、上位層サーバと通信するゲートウェイ装置の中間層と、ノード機能を提供するルーチンを実行するアプリケーションレイヤーを含む少なくともいくつかの機能ノードを有するフリーファンクショナルノード、及び、装置の下位層を管理するための装置とが含まれ、該装置は、状態機械を実行し機能ノードの少なくともいくつかにおけるアプリケーションレイヤー制御するプログラムマネージャーを例示する。【選択図】図３
2017513099.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ読み取り可能なハードウェア記憶装置に明らかに保存されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ネットワーク上の制約のあるセンサ装置を管理するためのものであり、前記コンピュータプログラム製品は、プロセッサに、
ロードされたイメージに組み込まれるか、又は、制約のあるセンサ装置の通常動作中にダウンロードされるかした、ユーザが定義する独立の機能又はタスクの動的なセットを管理する命令であって、
前記管理は、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のあるセンサ装置上で動作させるスケジュール機能により行うことを特徴とする、
命令を具備することを特徴とするコンピュータプログラム製品。
【請求項２】
前記コンピュータプログラム製品は、前記制約のあるセンサ装置上で動作させるためのリアルタイムオペレーティングシステムであることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項３】
前記スケジュールについての命令は、現在起動していない機能のいずれかが起動準備完了しているかどうかを判断するために、前記現在起動していない機能を周期的に評価することを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項４】
実行中の機能にデータを提供すること、又は、実行停止中の機能のタイマーイベントのカウントダウンのいずれかにより、機能の起動準備が完了していることを判断するために割り込みを用いることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項５】
スタックは、それぞれの優先順位に従い保存される機能を有し、１つの機能が現在起動している機能より高い優先順位であり、起動準備が完了していることが見つかったとき、見つけられた前記機能は起動し、そのデータを、ＲＡＭの他の場所に古い機能を先に保存することなく、アクティブな機能のスタックの先頭に押し上げることを特徴とする請求項１に記載のコンピュータプログラム製品。
【請求項６】
新しい機能が動作を完了し戻ってきたとき、すべての使用スタックは、押し上げられ、古い機能は動作を再開することを特徴とする請求項５に記載のコンピュータプログラム製品。
【請求項７】
ロードされたイメージに組み込まれるか、又は、制約のあるセンサ装置の通常動作中にダウンロードされるかした、ユーザが定義する独立の機能又はタスクの動的なセットを１以上のコンピュータにより管理するステップであって、
前記ステップは、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のあるセンサ装置上で動作させるスケジュール機能により行うことを特徴とする、
ステップを具備することを特徴とする方法。
【請求項８】
前記１以上のコンピュータは、リアルタイムオペレーティングシステムを実行することを特徴とする請求項７に記載の方法。
【請求項９】
現在起動していない機能のいずれかが起動準備完了しているかどうかを判断するために、前記現在起動していない機能を周期的に評価することを特徴とする請求項７に記載の方法。
【請求項１０】
実行中の機能にデータを提供すること、又は、実行停止中の機能のタイマーイベントのカウントダウンのいずれかにより、機能の起動準備が完了していることを判断するために割り込みを用いることを特徴とする請求項７に記載の方法。
【請求項１１】
スタックは、それぞれの優先順位に従い保存される機能を有し、
１つの機能が現在起動している機能より高い優先順位であり、起動準備が完了していることを判断するステップと、
判断された前記機能を起動するステップと、
判断された前記機能のデータを、ＲＡＭの他の場所に古い機能を先に保存することなく、アクティブな機能のスタックの先頭に押し上げるステップと、
を有することを特徴とする請求項７に記載の方法。
【請求項１２】
処理装置と、
物理的状態を検知するセンサエレメントであって、前記センサエレメントは、処理のためにデータを前記処理装置に送り、前記処理装置により、ユーザが定義する実行可能な独立の１以上の機能を前記データに適用することを特徴とするセンサエレメントと、
前記プロセッサ装置に
ロードされたイメージに組み込まれるか、又は、制約のあるセンサ装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能又はタスクの動的なセットを管理する命令であって、
前記管理は、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のあるセンサ装置上で動作させるスケジュール機能により行うことを特徴とする、
命令を具備するコンピュータプログラム製品を保存する記憶装置と、
を具備する制約のあるセンサ装置。
【請求項１３】
前記コンピュータプログラム製品は、制約のあるセンサ装置上で動作させるためのリアルタイムオペレーティングシステムであることを特徴とする請求項１２に記載の装置。
【請求項１４】
スタックは、それぞれの優先順位に従い保存される機能を有し、１つの機能が現在起動している機能より高い優先順位であり、起動準備が完了していることが見つかったとき、見つけられた前記機能は起動し、そのデータを、ＲＡＭの他の場所に古い機能を先に保存することなく、アクティブな機能のスタックの先頭に押し上げることを特徴とする請求項１２に記載の装置。
【請求項１５】
前記制約のある装置は、検知システムで用いられる他のコンピュータ装置、センサ、等より、実質的に制約がない揮発性のメモリを有することを特徴とする請求項１２に記載の装置。
【請求項１６】
前記制約のある装置は、約１メガバイト以下のフラッシュ／不揮発性メモリ、及び、１０〜２０キロバイトのＲＡＭ／揮発性メモリを有する装置であることを特徴とする請求項１２に記載の装置。
【請求項１７】
センサ及びコンピュータ装置のネットワークを具備するネットワーク化された検知システムであって、
前記ネットワークは、
１以上の制約のあるセンサ装置であって、各々、
第１の処理装置と、
物理的状態を検知するセンサエレメントであって、前記センサエレメントは、処理のためにデータを前記第１の処理装置に送り、前記第１の処理装置により、ユーザが定義する実行可能な独立の１以上の機能を前記データに適用することを特徴とするセンサエレメントと、
前記プロセッサ装置に
ロードされたイメージに組み込まれるか、又は、制約のあるセンサ装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能又はタスクの動的なセットを管理する命令であって、
前記管理は、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のあるセンサ装置上で動作させるスケジュール機能により行うことを特徴とする、
命令を具備するコンピュータプログラム製品を保存する記憶装置と、
を具備することを特徴とするセンサ装置と、
１以上の十分機能的なセンサセンサ装置であって、各々、
第１の処理装置より大きな処理能力を有する第２の別の形式の処理装置と、
前記第２の別の形式の処理装置に結合した第２の別のメモリと、
前記１以上の制約のあるセンサ装置を前記ネットワークに接続するネットワーク接続と、
を具備することを特徴とするセンサ装置と、
を具備することを特徴とするネットワークを具備することを特徴とするネットワーク化された検知システム。
【請求項１８】
コンピュータ読み取り可能なハードウェア記憶装置に明らかに保存されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ネットワーク上の制約のある装置を管理するためのものであり、前記コンピュータプログラム製品は、プロセッサに、
ロードされたイメージに組み込まれるか、又は、制約のある装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能の動的なセットを、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のある装置上で実行させるために、スケジュールさせる命令を具備することを特徴とするコンピュータプログラム製品であって、前記スケジュールさせる命令は、
実行準備完了した特定の機能を特定し、
特定された前記機能が現在実行中の機能より高い優先順位のものかどうかを判断し、
ランダムアクセスメモリで現在実行中のレジスタ値を保存することなく特定された前記機能を実行するよう構成されていることを特徴とする、
コンピュータプログラム製品。
【請求項１９】
前記コンピュータプログラム製品は、前記制約のあるセンサ装置上で実行するリアルタイムオペレーティングシステムの一部であることを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記スケジュールさせる命令は、特定された前記機能が現在実行中の機能と同じ優先順位をもち、そして、前記現在実行中の機能がデータ待ちで実行停止中であるとき、特定された前記機能を実行させることを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２１】
前記制約のある装置の前記リアルタイムオペレーティングシステムのすべての機能及びタスクのための、前記プロセッサの１つのスタックを管理する命令をさらに具備することを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２２】
特定された前記機能の実行準備完了したとき、特定された前記機能がそのデータを前記スタック中の前記現在実行中の機能の位置に押し上げるので、残りの機能のスタック機能は前記プロセッサの前記１つのスタック上の位置にとどまることを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２３】
前記新しい機能が動作を完了し戻ってきたとき、使っていたすべてのスタックが押し上げられ、前記現在実行中の機能が実行を再開することを特徴とする請求項２２に記載のコンピュータプログラム製品。
【請求項２４】
ロードされたイメージに組み込まれるか、又は、制約のある装置の通常動作中にダウンロードされるかした、ユーザが定義する独立の機能又はタスクの動的なセットを、プロセッサ装置により管理するステップと、
前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のある装置上での前記機能を、前記プロセッサ装置によりスケジューリングするステップと、
実行準備完了した特定の機能を、前記プロセッサ装置により特定するステップと、
特定された前記機能が現在実行中の機能以上の優先順位を有する場合、前記現在実行中の機能のレジスタ値をＲＡＭに保存することなく、特定された前記機能を、前記プロセッサ装置により実行するステップと、
を具備することを特徴とするコンピュータにより実行される方法。
【請求項２５】
前記プロセッサ装置により管理するステップは、前記コンピュータにおいて実行するリアルタイムオペレーティングシステムにより行われることを特徴とする請求項２４に記載の方法。
【請求項２６】
前記スケジュール命令により、特定された前記機能が現在実行中の機能と同じ優先順位をもち、そして、前記現在実行中の機能がデータ待ちで実行停止中であるとき、特定された前記機能を実行させることを特徴とする請求項２４に記載の方法。
【請求項２７】
前記制約のある装置の前記リアルタイムオペレーティングシステムのすべての機能及びタスクのための、前記プロセッサの１つのスタックを、前記プロセッサにより管理するステップをさらに具備することを特徴とする請求項２６に記載の方法。
【請求項２８】
特定された前記機能の実行準備完了したとき、特定された前記機能がそのデータを前記現在実行中のスタックに押し上げるので、残りの機能のスタック機能は前記プロセッサの前記１つのスタック上の位置にとどまることを特徴とする請求項２４に記載の方法。
【請求項２９】
前記新しい機能が動作を完了し戻ってきたとき、使っていたすべてのスタックが押し上げられ、前記現在実行中の機能が実行を再開することを特徴とする請求項２８に記載の方法。
【請求項３０】
処理装置と、
物理的状態を検知するセンサエレメントであって、前記センサエレメントは、処理のためにデータを前記処理装置に送り、前記処理装置により、ユーザが定義する実行可能な独立の１以上の機能を前記データに適用することを特徴とするセンサエレメントと、
ネットワークインターフェースと、
前記プロセッサ装置に、
ロードされたイメージに組み込まれるか、又は、制約のある装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能の動的なセットを、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のある装置上で実行させるために、スケジュールさせる命令を具備するコンピュータプログラム製品を保存する記憶装置であって、前記スケジュールさせる命令は、
実行準備完了した特定の機能を特定し、
特定された前記機能が現在実行中の機能より高い優先順位のものかどうかを判断し、
ランダムアクセスメモリで現在実行中のレジスタ値を保存することなく特定された前記機能を実行するよう構成されていることを特徴とする、
記憶装置と、
を具備することを特徴とする制約のあるセンサ装置。
【請求項３１】
前記コンピュータプログラム製品は、前記制約のあるセンサ装置上で実行するリアルタイムオペレーティングシステムの一部であることを特徴とする請求項３０に記載の装置。
【請求項３２】
前記スケジュールさせる命令は、特定された前記機能が現在実行中の機能と同じ優先順位をもち、そして、前記現在実行中の機能がデータ待ちで実行停止中であるとき、特定された前記機能を実行させることを特徴とする請求項３０に記載の装置。
【請求項３３】
前記制約のある装置の前記リアルタイムオペレーティングシステムのすべての機能及びタスクのための、前記プロセッサの１つのスタックを管理する命令をさらに具備することを特徴とする請求項３１に記載の装置。
【請求項３４】
特定された前記機能の実行準備完了したとき、特定された前記機能がそのデータを前記スタック中の前記現在実行中の機能の位置に押し上げるので、残りの機能のスタック機能は前記プロセッサの前記１つのスタック上の位置にとどまることを特徴とする請求項３０に記載の装置。
【請求項３５】
前記新しい機能が動作を完了し戻ってきたとき、使っていたすべてのスタックが押し上げられ、前記現在実行中の機能が実行を再開することを特徴とする請求項３４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権の主張）
本出願は、表題「無線センサネットワーク」として、２０１４年４月２日に出願した米国仮特許出願６１／９７３，９６２、表題「無線センサネットワーク」として、２０１４年２月２８日に出願した米国仮特許出願６１／９４６，０５４、表題「制約のある装置及びオペレーティングシステムのサポート」として、２０１４年８月２０日に出願した米国実用特許出願１４／４６３，７５４、及び、表題「制約のある装置及びオペレーティングシステムのサポート」として、２０１５年１月２３日に出願した米国実用特許出願１４／６０３，６０２について、３５Ｕ.Ｓ.Ｃ.セクション１１９（ｅ）に基づく優先権を主張するものであり、これらの出願内容のすべてを参照することにより本出願に組み込むものとする。
【背景技術】
【０００２】
本明細書は、一般に、商用敷地や住居用敷地に設けられた保安システムや侵入警報システムのような、センサネットワークの動作に関する。
【０００３】
会社や自宅所有者が敷地での警報状態を監視するため、及び、監視場所又は保安システムの公認されたユーザに状況を送信するために保安システムを持つことは一般的である。保安システムには、多くの場合、電気的又は無線で種々のセンサに接続された侵入検知パネルが含まれる。これらのセンサの形式には、一般に、動作検出器、カメラ、及び、近接センサ（扉又は窓が開いているかどうかを判断する）が含まれる。一般に、このようなシステムは、監視している特定の状況が変化したか安全ではなくなったかを示すために、これらの１以上のセンサから、非常に単純な信号（電気的に開いているか閉じているか）を受け取る。
【０００４】
他のコンピュータ装置、センサ、等より実質的に制約がない揮発性のメモリと共にここで用いられるような制約のあるコンピュータ装置が、検知システムで用いられる。制約のある装置の今までの例は、約１メガバイト以下のフラッシュ／不揮発性メモリ、及び、１０〜２０キロバイトのＲＡＭ／揮発性メモリとともに用いられている。
【０００５】
このような装置上のファームウェアの更新では、コードの一部だけが変わる場合でも、通信インターフェースを介して、実行可能なコードイメージの伝送を必要とするブートローディングを必要とする。
【発明の概要】
【０００６】
制約のある装置はこのように特徴づけられ、一般にコスト／物理的構成を考慮してこのように構成される。これらの形式の装置は、一般に、固定的なソフトウェアイメージ（すなわち、装置内にプログラムされたロジックは常に同じ）を有する。一般に、制約のある装置は、関連するセンサとともに配置され、加えて、例えば、ハブ及びインターネット接続のようなネットワーク接続を介して、中央のハブ（コンピュータ／制御パネル）又は遠隔サーバへ、「イベント」として収集したデータを報告する、分散データ収集ネットワークを提供する。
【０００７】
このような制約のある装置上でファームウェアを更新することは難しく、このような更新が生じるとき、更新は、通信リンクを介してこの新しいファームウェアを受け取り新しいファームウェアを不揮発性メモリに保存し、新しいコードを有効にし、そして、古いコード又は「イメージ」を新しいイメージで置き換えるために、（ブートローダの管理のもとで）特定のリブート処理を行う、「ブートローダ」を介して行われる。しかしながら、従来のブートローディングを用いる、ファームウェアの更新では、コードの一部だけが変わる場合でも、通信インターフェースを介して、実行可能なコードイメージ全体の伝送を必要とする。
【０００８】
従って、保存したパラメータ又はコンピュータコードの少しの変更があってもイメージ全体を置き換える必要があるので、このブートローディング処理には欠点がある。ブートローディングは時間を費やし、新しいコードを最終位置に書き込むときに何か不具合があれば（例えば、停電）、装置は、使用できなくなることがあるので、全体システムに対して潜在的な危険性を有する。また、ブートローディングは、必然的に、すべての周辺ドライバ及び通信リンクの初期化、ネットワーク接続、アプリケーションの再構築、等を必要とする、装置の「リブ‐ティング」を意味する。このような欠点があるので、ブートローディング及びブートローディングに依存するファームウェア更新は、制約のある装置の日常の動作の一部にすべきでない。
【０００９】
１つの態様によれば、コンピュータプログラム製品は、コンピュータ読み取り可能なハードウェア記憶装置に明らかに保存される。コンピュータプログラム製品は、ネットワーク上の制約のあるセンサ装置を管理するためにあり、他の機能と比べて有用性及び優先順位の高さに従い制約のあるセンサ装置上で動作するスケジュール機能により、制約のあるセンサ装置の通常動作中に、ロードしたイメージ組み込まれたか又はダウンロードされたかした、ユーザが定義する独立に実行可能な動的な機能又はタスクをプロセッサに管理させる命令を含む。
【００１０】
このような動的なプログラミング技法により、制約のある装置は、時間を使い問題の多いブートローディングの処理なしで、動作及び能力を変更することができる。時間に対する状況及び必要性に応じて、一時的なサブプログラムを加えたり除去したりして、効果的に装置の持つ実行可能なコードの変更を行う。多くのアプリケーションにおいて、このことは、大した注意を払わずに、また、従来のブートローディングを導入することなく、実行することができる。例えば、装置は、アプリケーションをサポートするために新しいコードを、あるいは、適切に規定された関連するアプリケーションを一日に何度もロードする必要があるかもしれない。コードの更新のあいだに、装置は他の仕事（例えば、中断ベースの収集、センサイベントの外部装置へのレポート及び通信）を必要とするかもしれない。このような考えから、（１）安全で、（２）速く、（３）リアルタイムで、（４）通常動作を妨げることのない、（５）装置をリブートすることのない、方法でコードの更新を行う必要が導かれる。
【００１１】
不揮発性メモリの動的なプログラミングは、従来のどのようなリアルタイムオペレーティングシステム（ＲＴＯＳ）でも不可能であり、したがって明らかに、どのようなＲＴＯＳも、制約のある装置に組み込むことはできない。これら従来のオペレーティングシステムは、実行可能なコードイメージの準備にリンクするときに、コードの配置とリンク（ポインタ値、リターンアドレス、等）を確立する。このアプローチは、本質的に元来静的であり、新しい動作コードが再ブートすることなく、進行中にイメージ中に導入される。
【００１２】
制約のある装置に動的プログラミングを可能とするオペレーティングシステムを使用することによる、制約のある装置でのオペレーティングシステムの新しいアプローチを開示する。
【００１３】
別の態様によれば、コンピュータ読み取り可能なハードウェア記憶装置に明らかに保存されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、ネットワーク上の制約のある装置を管理するためのものであり、前記コンピュータプログラム製品は、プロセッサに、ロードされたイメージに組み込まれるか、又は、制約のある装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能の動的なセットを、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のある装置上で実行させるために、スケジュールさせる命令を具備することを特徴とするコンピュータプログラム製品であって、前記スケジュールさせる命令は、実行準備完了した特定の機能を特定し、特定された前記機能が現在実行中の機能より高い優先順位のものかどうかを判断し、ランダムアクセスメモリで現在実行中のレジスタ値を保存することなく特定された前記機能を実行するよう構成されていることを特徴とする。
【００１４】
他の態様には、コンピュータにより実行される方法及び制約のあるセンサ装置が含まれる。
【００１５】
前記センサ装置には、処理装置と、物理的状態を検知するセンサエレメントであって、前記センサエレメントは、処理のためにデータを前記処理装置に送り、前記処理装置により、ユーザが定義する実行可能な独立の１以上の機能を前記データに適用することを特徴とするセンサエレメントと、ネットワークインターフェースと、前記プロセッサ装置に、ロードされたイメージに組み込まれるか、又は、制約のある装置の通常動作中にダウンロードされるかした、ユーザが定義する実行可能な独立の機能の動的なセットを、前記機能の有用性及び優先順位の他の機能と比べた高さに従い、前記制約のある装置上で実行させるために、スケジュールさせる命令を具備するコンピュータプログラム製品を保存する記憶装置であって、前記スケジュールさせる命令は、実行準備完了した特定の機能を特定し、特定された前記機能が現在実行中の機能より高い優先順位のものかどうかを判断し、ランダムアクセスメモリで現在実行中のレジスタ値を保存することなく特定された前記機能を実行するよう構成されていることを特徴とする、記憶装置と、が含まれる。
【００１６】
本願発明の１以上の実施例の詳細を添付図と下記説明により記述する。さらなる特徴、態様、及び、利点は、この記載、図面、及び、特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【００１７】
【図１】例示的なネットワーク化された保安システムの概念図である。
【図２】制約のある装置のブロック図である。
【図３】スタック構造を理解するのに役立つブロック図である。
【図４】リアルタイムオペレーティングシステムでのスケジューラ処理のフローチャートである。
【図５】スケジューリングを理解するのに役立つブロック図である。
【図６】機能の処理を示すフローチャートである。
【図７】機能のカプセル化を示すブロック図である。
【図８】ヒープのブロック図である。
【図８Ａ】ヒープに関する処理のフローチャートである。
【図８Ｂ】ヒープに関する処理のフローチャートである。
【図８Ｃ】ヒープに関する処理のフローチャートである。
【図９】例示的ネットワーク化された保安コンポーネントのブロック図である。
【発明を実施するための形態】
【００１８】
ここに記載するのは、保安／侵入及び警報システムを含むがこれに限定されない種々の文脈で用いられるネットワーク機能の実施例である。例示的な保安システムには、種々のセンサと電気的に又は無線で接続された侵入検知パネルを含むことができる。これらのセンサの形式には、動作検出器、カメラ、及び、近接センサ（例えば、扉又は窓が開いているかどうかを判断するために用いる）を含むことができる。一般的に、このようなシステムは、監視している特定の状況が変化したか安全ではなくなったかを示すために、比較的単純な信号（電気的に開いているか閉じているか）を受け取る。
【００１９】
例えば、一般的な侵入システムは建物の入り口扉を監視するよう設定することができる。扉が閉まっているとき、近接センサは電磁接触器を検知し電気的に閉じた回路を生成する。扉が開いているとき、近接センサは回路を開き、警報状態が生じた（例えば、入り口扉が開いている）ことを示す信号をパネルに送る。
【００２０】
データ収集システムは、家庭用安全監視のようなアプリケーションにおいて、より一般的になっている。データ収集システムは、無線センサネットワーク及び無線装置を採用し、サーバベースの遠隔監視及び報告書自動作成を含むことができる。以下に詳細説明するように、無線センサネットワークは、一般に、コンピュータ装置同士の有線及び無線リンクの組み合わせを用い、無線リンクは、通常、最も低いレベルでの（例えば、エッジノード装置からハブ／ゲートウェイへの）接続に用いられる。例示的なネットワークにおいて、ネットワークのエッジ（無線接続された）層は、具体的な機能を有するリソースに制約のある装置で構成されている。これらの装置は、小から中程度の処理電力及びメモリを有し、バッテリーから電源供給されることがあり、従って多くの時間をスリープモードとすることでエネルギーを保持する必要がある。一般的なモデルは、エンドノードがハブ及びスポークのスタイル構造でペアレントノードと直接通信する単一の無線ネットワークを各エッジ装置が形成するようなものとなる。ペアレントノードは、例えば、アクセスポイント又は他のサブコーディネータに接続されるゲートウェイ上のアクセスポイント又はサブコーディネータとすることができる。
【００２１】
ここで、図１を参照すると、無線センサネットワーク（ＷＳＮ）の例示的な（グローバル）分散型ネットワークトポロジーが示されている。図１において、分散型ネットワーク１０は、層又は階層レベル１２ａ〜１２ｃに分割される。
【００２２】
ネットワークの上位層、即ち階層レベル１２ａに、インターネットプロトコルのような、又は、インターネットを全く使わないか又は一部用いる私的ネットワークのような、十分確立されたネットワーク技術を用いてネットワーク化された「クラウドコンピューティング」パラダイムを起動させる、サーバ及び／又は仮想サーバ１４が配置される。これらのサーバ１４上を走るアプリケーションは、ウェブインターネットネットワークＸＭＬ/ＳＯＡＰ、ＲＥＳＴｆｕｌウェブサービスのような種々のプロトコル、及び、ＨＴＴＰやＡＴＯＭのような他のアプリケーションレイヤー技術を用いて通信を行う。分散型ネットワーク１０は、以下に図示し説明するように、装置（ノード）間で直接リンクを有する。
【００２３】
分散型ネットワーク１０には、中央の、個々の建物及び構造物の内部の便利な場所におかれたゲートウェイ１６を含む中間層とここでは称される、第２の論理的に分割された層、即ち階層レベル１２ｂが含まれる。これらのゲートウェイ１６は、スタンドアローンの専用サーバ及び／又はウェブプログラミング技術を用いたクラウドアプリケーションを起動させるクラウドベースのサーバであったとしても、上位層のサーバ１４と通信する。中間層ゲートウェイ１６は、ローカルエリアネットワーク１７ａ（例えば、イーサネット又は８０２.１１）及び携帯ネットワークインターフェース１７ｂの両方で示されている。
【００２４】
分散型ネットワークトポロジーもまた、十分機能的なセンサノード１８（例えば、無線装置、例えば、トランシーバ又は少なくともトランスミッタを含むセンサノード、これらは図１で「Ｆ」のマークが付されている）と、制約のある無線センサノード又はセンサエッジノード２０（図１で「Ｃ」のマークが付されている）とを必要とする、装置の下位層（エッジレイヤー）１２ｃを含む。いくつかの実施形態では、有線センサ（不図示）を分散型ネットワーク１０の態様として必要とすることがある。
【００２５】
図２を参照すると、一般の制約のあるコンピュータ装置２０が示されている。ここで用いられる制約のある装置２０は、特定のネットワーク化された検出／センサ／警報システム中に実質的に少量の永久メモリ及び揮発性メモリ、他の計算装置、センサ、システムを有する装置である。制約のある装置２０は、プロセッサ装置２１ａ、例えば、ハイエンドのコンピュータ及びマイクロプロセッサで用いられる３２ビット及び６４ビットのロジックではなく、８ビット及び１６ビットのロジックを一般に有する、オペレーティングシステムのもとで実行する、ＣＰＵその他の形式の制御装置を含む。制約のある装置２０は、ネットワーク上の他のコンピュータ装置と比べて、比較的小さなフラッシュ／不揮発性記憶装置２１ｂ及び揮発性メモリ２１ｃを有する。一般に不揮発性記憶装置２１ｂは、約１メガバイト以下の記憶装置であり、揮発性メモリ２１ｃは、数キロバイト以下のＲＡＭメモリである。制約のある装置２０は、制約のある装置２０とネットワーク１０とのインターフェースを行うネットワークインターフェースカード２１ｄを有する。一般に無線インターフェースカードが用いられるが、いくつかの例では有線インターフェースを使うことができる。代田的に、無線ネットワークプロトコルスタック（例えば、８０２．１５．４／６ＬｏＷＰＡＮ）を（無線）ネットワークインターフェースとして用いることできる。これらのコンポーネントはバス構造により相互に連結される。制約のある装置２０にはまた、センサ２２及び、プロセッサ２１ａとのインターフェースを行うセンサインターフェース２２ａが含まれる。センサ２２はどのような形式のセンサ型装置でもよい。一般的にセンサの形式として、温度、簡単な動き、１軸、２軸、又は３軸の加速度、湿度、圧力、選択された化学品、音／音圧変換、及び／又は、その他の、複雑な事象を検出するための単一又は組み合わせて用いるものが含まれる。
【００２６】
開示された制約のある装置２０の実施形態は、フラッシュ／不揮発性記憶メモリ及びＲＡＭメモリの現在の制約、及び、ＲＡＭ／揮発性メモリの１０〜２０キロバイトの制約があるが、構成及びオペレーティングシステムにさらに依存する。このような制約のある装置２０は、一般に、コスト／物理的構成を考慮して、構成される。制約のある装置２０の形式は、一般に、固定的なソフトウェアイメージを有する（即ち、制約のある装置にプログラムされた論理はいつも同じである）。
【００２７】
図１に戻って、一般的なネットワークにおいて、ネットワークのエッジ（無線接続された）層は、大部分が、具体的な機能を有する高度にリソースに制約のある装置から成り立っている。これらの装置は、小から中程度の処理電力及びメモリを有し、バッテリーから電源供給されることがあり、従って多くの時間をスリープモードとすることでエネルギーを保持する必要がある。一般的なモデルは、エンドノードがハブ及びスポークのスタイル構造でペアレントノードと直接通信する単一の無線ネットワークを各エッジ装置が形成するようなものとなる。ペアレントノードは、例えば、アクセスポイント又は他のサブコーディネータに接続されるゲートウェイ上のアクセスポイント又はサブコーディネータとすることができる。
【００２８】
各ゲートウェイは、アクセスポイントに物理的に取り付けられたアクセスポイント（フリーファンクショナルノード又は「Ｆ」ノード）を装備し、無線ネットワーク中の他のノードとの無線接続ポイントを提供する。図１に示されたリンク（付番されていない直線にて示す）は、装置同士を直接（シングルホップＭＡＣレイヤーで）接続する。形式的な（図１で示す３つの層の各々で機能することができる）ネットワークのレイヤーは、ネットワークを介して１つの装置から他の装置へ（断片化された又は断片化されていない）メッセージを送るために、適切なルーティング技術とともに、これらの一連のリンクを用いることができる。
【００２９】
ＷＳＮ１０は、下位層装置１８及び２０上で走るアプリケーションレイヤーにアプローチする状態機械を実行する。このようなアプローチの特定の実施形態の例を以下に説明する。状態機械の状態は、一体的に実行される一連の機能から成り立ち、これらの機能は、特定の下位層の装置の状態機械における状態を変化させるために、個々に削除又は置き換え又は付加することができる。
【００３０】
ＷＳＮステートファンクションベースのアプリケーションレイヤーは、装置をリブートすることなく個々の機能をロードして（装置をブートした後）実行させることができる（いわゆる、「ダイナミックプログラミング」）、エッジ装置オペレーティングシステム（不図示、しかし、上述の仮出願に開示されたようなもの）を用いる。他の実施形態において、エッジ装置は、エッジ装置をリブートしないことが好ましい個々の機能をロードして（装置をブートした後）実行させることができるシステムを提供する他のオペレーティングシステムを用いることができる。
（制約のある装置のＲＴＯＳ）
図３を参照すると、無線によるダイナミックプログラミングとサポートを含む、制約のある装置２０のオペレーティングシステムにおけるスタック処理の詳細が示されている。制約のある装置２０には、ロードされたイメージ（ソフトウェア及び制約のある装置上で実行されるＲＴＯＳ）に組み込まれるか、又は、制約のある装置２０の通常動作の間にダウンロードされるか、又は、これらを組み合わせたかされたものであって、前者（イメージ中に組み込まれたもの）は、後者（動作の間にダウンロードされもの）のサブルーチンとして用いる、ユーザが定義する独立に実行可能な機能またはタスクを実行または管理する、リアルタイムオペレーティングシステム（ＲＴＯＳ）が含まれる。
（スタック管理）
ＲＴＯＳは制約のある装置のためのものであり、有用性（機能を起動させる迅速性）及び優先順位（他の機能に対するその機能の重要性）に従い、管理構造（例えば、位置決め機能のポインタのアレー又はリンクリスト）を介して参照されるスケジューリング機能２６を用いる。スケジューラ２６機能は、制約のある装置上で現在起動していない機能を、例えば、リスト２８にあるように、これらの機能を起動させる準備が完了しているかどうかを判断するために、周期的に評価する。さらに、スケジューラ２６は、実行中の機能にデータを提供すること、又は、実行停止中の機能についてのタイマーイベント３１のカウントダウンにより機能が起動可能であることを示す割り込みに応答する。
【００３１】
いずれの場合も、現在起動している機能より高い優先順位（又は、現在の機能がデータを待っているため、実行停止中の場合は、同じ優先順位）であると特定された機能が起動準備完了している場合、ＲＡＭ内の他の場所に古い機能をあらかじめ保存しなくても（即ち、従来のコンテキスト切り替え又はプロセッサの動作レジスタ値の保存というこれまでのやり方をとらなくても）、この特定された機能が起動する。スタック２４は、例えば、それぞれの優先順位に従って、２４ｃ、２４ｚ、２４ｄ、及び２４ａの順に保存された機能を有する。新しい機能が最も高い優先順位、例えば、２４ｃ、での起動準備完了しているとき、残りの機能、例えば、２４ｚ、２４ｄ、及び２４ａは、新しく動作しているプロセッサの１つのスタック２４に単に残り、先制機能がそのデータをアクティブな機能のスタックの先頭に押し上げる。
【００３２】
新しい機能が動作を完了し戻ってきたとき、使っていたスタックがスタック制御２５により押し上げられ、古い機能、例えば、２４ｚは、中断前に記憶していた動作を、あたかも従来のコンテキスト切り替え動作が起こったかのような、透明性を有したまま、再開する。このように、スケジューラ２６は、先に空にした機能の状態を保存するために、公式にコンテキスト切り替えを行うのではなく、単一のプロセッサスタックを用いる。
【００３３】
このことは、複数のスタックを持たないＲＡＭにより少なからぬ量のＲＡＭを節約し、従って、より多くの独立に実行可能な機能が可能となり、又、公式にコンテキスト切り替えを行うために必要なプロセッサ時間を節約し、そして、ロジックを単純にし、従って、スケジューラ２６に関連するコードサイズを、単純にする。
（動的なプログラミング）
開示されたオペレーティングシステムにより、単純に新しい機能を管理構造（ファンクションポイントのアレー又はリンクされたリスト）に加え、スケジューラ変数における関連する素早さ及び順位情報を更新し、そして、古いコードと新しいコードとの間に必要なリンク（リターンアドレス、グローバルな変量位置、等）を生成することにより、新しい機能（通信リンクを介して装置にロードされた実行可能な機能）を実行可能なスケジューラのリストに加えることができるので、動的なプログラミングを助長することとなる。動的動的機能が長くない場合又は長くないとき、動的機能は、単に、管理構造から除去され、除去と再請求されるメモリとをリンクさせる。
【００３４】
オペレーティングシステムの上部で走る動的なプログラミング手法を用いることにより、以下に説明するオペレーティングシステムは、制約のある装置が、メモリに固定されている場合よりも数倍多くの実行可能な機能を、時間的にいつでも用いることができるようにする。以下のオペレーティングシステムには、ノードが必要とし、取得を必要としない実行可能なコードをノードが要求する一方、ノードの現在の実行可能な機能はすべて適切な形式であり適切なバージョンである（自己矛盾のない実行可能なセット）ような方法が含まれる。さらに、実行可能なコードは、制約のある装置が実行可能なコードを必要とする時すぐに迅速に制約のある装置に移送するのに便利なネットワークの場所にキャッシュしておくことができる。また、以下に記載するのは、「最新のデータ」及び制約のある装置内で限られた時間内でのみ用いるべき実行可能なコードの終了の管理する方法についてである。
【００３５】
ここで、図４を参照すると、一連のルート機能の優先順位をつけての実行を管理するオペレーティングシステムのスケジューラ２６がとるアクションが示されている。スケジューラ２６により直接管理される機能は、他の機能を呼び出すことができ、この他の機能もやはり種々の他の機能を呼び出すことができ、そして、この機能呼び出しの分岐は器の枝の分岐に類似する構造を持つので、「ルート機能」と称される。
【００３６】
最終的にすべての実行機能は、木の枝のように、スケジューラ２６により最初に呼び出された（即ち、実行された）初級の機能／第１の機能／ルート機能へと戻る。ルート機能と通常の（ルートでない）機能との区別は、ルートでない機能は、スケジューラ２６で管理されず、現在は強いている機能により明示的に呼び出されたときのみ起動することができる点である。ルート機能は、通常のオペレーティングシステムのスレッド又はタスクに幾分似ている。
【００３７】
スケジューラ２６は、代替的に、単純に連続的にルート機能を優先順位の高いものから低いものへと、おのおの動作準備完了したものを実行することができ、あるいは、スケジューラ２６は、動作準備完了した優先順位の最も高いものを実行し、それを実行した後、動作準備完了した優先順位の最も高いものを再度探しだし、優先順位が最も低いルート機能に到達し実行するまでこの手順を繰り返すよう（最もあり得るシナリオとみなすことで）構成することができる。
【００３８】
いくつかの実施形態では、最も低い優先順位のルート機能は、電源に制約のある装置に対して、タイマーを開始させて待機させ（スリープモードに入る）、そして、設定された割り込みにより装置が目覚め、スケジュールされた順序により再び実行する。電源に制約のない装置において、最も低い優先順位の機能は、単にウオッチドッグタイマーとして、又はセルフテストとして、又は、その両方として動作し、そして、スケジュールされた順序が繰り返される。
【００３９】
従って、図４に示すように、タイマーを設定し４２、スケジューラ２６がルート機能の設定を調べるための周波数を制御する目的で起動する。スケジューラ２６はスケジューラタイマーイベントを待つ（スリープモードに入る）４４。タイマーが終了すると４６、スケジューラ２６は、リスト中のいずれかのルート機能が起動準備完了しているかどうかを（例えば、各ルート機能に関連する、「起動準備完了」、「未決」、「中止」、等の変数を介して）判断する４８。いずれかのルート機能が起動準備完了している場合、スケジューラ２６は、次の判断、すべての起動準備完了しているルート機能のうちのどれが最も高い優先順位５０を持つ機能（これが「提示されたルート機能」となる）であるかを判断する必要がある。他のいずれのルート機能も起動していない場合、５２、提示されたルート機能がすぐ起動し、起動完了させて、終了する５４（ここで記載された処理５６を用いるより優先順位の高いルート機能によりプリエンプトされることにより、起動中に中断することもある）。
【００４０】
ルート機能がすでに起動している場合、スケジューラ２６は、現在起動しているルート機能と提示されたルート機能との優先順位を比べる５８。提示されたルート機能の優先順位が低い場合は、何も起こらず、スケジューラ２６は、スリープ状態に戻り他のスケジューラタイマーのウェイクアップイベントを待つ。一方、提示されたルート機能の優先順位のほうが高い場合は、スケジューラ２６は、提示されたルート機能を直ちに起動させる６０。図７において、点線で示したボックス及び矢印は、新しいルート機能に応答するプロセッサの動作を示す（例えば、現在起動中のルート機能はスタックに押し付けられる）。起動している機能は、すべてのより優先順位の高い機能が処理を終了した場所で再起動する６２。
【００４１】
ここで、図５を参照すると、他の機構、例えば、ここで示された４つの機構はルート機能を生じさせることができる。例えば、ルート機能は、将来周期的なタイマーの割り込みにより生じる、データを消耗させ、ポインタと共にルート機能に結合するリングバッファを実行する特別な構造が、その消耗するルート機能を目覚めさせる、別のルート機能に実施のスケジュールを自ら行うことができ、未決状態であっても、データの閾値を受け取ると、ルート機能は、例えば他のルート機能が処理すべきデータを到着させるために直接別のルート機能を呼び出すこと、又は、割り込み機能がルート機能の実行を生じさせることができる。これらすべての事例において、スケジューラ２６は、ルート機能がそのルート機能と優先順位が同じかそれ以上である場合、生じさせるよう要求させたルート機能を直ちに実行させ起動させる。さもなくば、前者が後者より優先順位が低い場合、前者を、
次のチャンスに起動するよう予定することを許す「起動準備完了」状態にする。
【００４２】
図６を参照すると、ポストリンクされた機能（即ち、通信リンクを介してロードされた機能）に対して、特にポストリンクされたルート機能に対していくつかの機構が提供される。例えば、機能を通信リンク８１を介して受け取ったとき、単一のファイルシステムが消去可能不揮発性メモリ（例えば、フラッシュ）８２に、機能が通信リンクを介して受け取られたとき、ポストリンクされた機能を保存するために実行される、スケジュールにより、機能が必要でなくなったとき、その機能が削除され、機能のインデックスを保存し８６、その機能が多くのルート機能中に含まれ、ファイルシステムのデフラグメントを行うことができるように、パワーアップが開始されると、インデックスがつけられ保存されたルート機能に報告される８８。
【００４３】
ファイルシステムをデフラグメントするためには、デフラグメントに続いて実行中の機能が再配置されること、又は、デフラグメント中に動かされた機能が実行されることを防止するため、ロックする（バイナリ信号を送る）必要がある。
【００４４】
ポストリンクされた機能は、以下に説明するように、使用するために、追加データを必要とし、従って、これらの機能は他のデータと一緒にファイル中にラップされる必要があり、ルートではないポストリンクされた機能は、以下に言及するように、このようなラップを必要とするデータはこれよりも少ない。
【００４５】
ポストリンクされたルート機能は、ファイルシステムに受け入れられたとき、ルート機能の配列に加えられる必要があり、使用をやめたときこの配列から削除する必要があり、従って、この配列がリンクされたリストとなる必要がある。従って、ポストリンクされたルート機能は、アプリケーションをスケジューラ２６にリンクさせたルート機能のように、スケジュールされる。
【００４６】
ここで、図７を参照すると、ポストリンクされたルート機能が、ルート機能の配列になるために、他のルート機能のように記述子構造を必要とする。しかしながら、記述子構造はルート機能で実行可能なコードのアドレスのようなアドレスを含む必要があるので、記述子は、メモリ中のその位置がファイルマネージャーが位置を記述するまでわからないためポストリンクされたルート機能が存在するファイル中に必ずしも文字通りには存在しない。
【００４７】
この問題は、ポストリンクされた機能の記述子をＲＡＭ中に構築することができる機能９２を含むファイルのラッパー９４を含めることにより対処する。他のルート機能の記述子がＲＯＭ中に存在し決して変更されることがない一方、ポストリンクされたルート機能の記述子は、機能がデフラグメントのために再配置されたときはいつでも変更する必要があり、従って、ファイルマネージャー９６は機能の再配置を追求するとき、適切な信号装置９７を取得し、機能を含有するファイルを移動させることに加えて記述子を調整する。
【００４８】
ルート機能ではないポストリンクされた機能は同様に再配置可能なアドレスを有し、再配置処理において、実施されないようロックする必要があり、実施の間は配置されないようロックする必要があるが、このために構成されたルート機能記述子がないので、再配置により、ルート機能の一部の再配置が生じる。
【００４９】
オペレーティングシステムは、加えて、以下に説明し記載したようにＲＯＭ及びＲＡＭのベースアドレスの保存に必要となるポストリンクされた機能のＲＡＭの再配置を必要とし、そして、随意的に、固定的に機能の寿命の間、ルート機能のために存続するグローバル変数、及び上述の記述子の再配置を必要とする。リアルタイムシステムは、システムに決定論的でない振る舞いを導入するので、一般的にメモリを動的に割り付けられたメモリを持たない。
【００５０】
スケジューラ２６は、さらに、コードフットプリント及び実行時間の観点から、ごみ回収（メモリ復旧）のための資源を持たないということによる制限を受ける。
【００５１】
ここで図８を参照すると、専門化したヒープ１００を実行し、従って、ポストリンクされた機能がルート機能変数データ及び他の必要な変数データを取得する。ヒープ１００からの割り当ては、ポストリンクされた機能の初期化のときのみ、そして各初期化機能呼び出しのとき一度だけ行うことができる。装置が単一で近接するＲＡＭのバンクを有すると仮定すると、ヒープは、スタック２４と同様に、ＲＡＭの反対側の端からスタック２４に向かって成長し、ごく最近付加されたポストリンクされた機能が終了するときシュリンクバックする。ヒープ１００は、ポストリンクされた機能のためにＲＡＭを提供するためだけに存在するので、その構造は、その存在理由と密接に絡み合うことができ、また、絡み合っている。
【００５２】
ＲＡＭ中の第１の可能な位置から始まり、各エレメント１００ａ〜１００ｎは、次に有効なエレメントは、ポストリンクされた機能を除去した後の矛盾点を反映するので、その大きさは必ずしもその前のフィールドから決定するとは限らないので、次に有効なエレメントを開始させるポインタを含有する。
【００５３】
ここで図８Ａを参照すると、そのような矛盾点は、スケジューラ２６に組み込まれた高い優先順位のルート機能１１０を用いて一掃される。このルート機能は、他の場所でロックを必要と記載された３つの状態をお互いに除外する１１２ために４番目のロックを用いる。一旦ロックを取得すると、変数データは、長時間、低い優先順位のルート機能を禁止しないように、少しずつ取り除かれる１１４。ルート機能のＲＡＭ記述子のルート機能への配列への記入は、動かすときに変化１１６が必要であり、他のデータ１１８のブロックと一緒に、スケジューラ２６における混乱をもたらす、矛盾した状態にあるＲＡＭデータを見ないようにすることをロックする必要がある。データのブロックは、以下に説明するように、ルート機能の記述子のＲＡＭでのコピー、ルート機能の記述子による変数データの特定、及びルート機能のデータの位置決めの機能を実行したとき、機能のＲＡＭ及びＲＯＭを復元させるためのベースアドレスである。
【００５４】
ここで図８Ｂを参照すると、ヒープにエレメントを加えることには、上述のルート機能のクリーンアップをできなくするために、割り込みができないようにし１３２、ヒープを最初からトラバースし１３４、そして、各項目に対して、次のエレメントへのポインタを、現在のエレメントの終端から減算して１３６、要求したバイト数との差を比較し１３８、後者のほうが前者より小さい場合は、穴部の第１の未使用バイトで新たな項目を開始する１４０、さもなくば、ヒープの最後の項目に突き当たった場合、１４２、ヒープを加えることがスタックを十分押し付けなかったかどうかをチェックし１４４、その場合は、失敗としエラーを記録し１４６、そうでない場合は、ヒープの最後であった新しい項目を開始することが伴う。
【００５５】
ポストリンクされたルート機能のために、ここで記述子を構成し他のＲＡＭを初期化する必要があるが、その詳細は簡単にするため詳述していない。
【００５６】
ここで図８Ｃを参照すると、ヒープからエレメントを除去するために、スケジューラ２６は、エレメントがヒープの終端にあるかどうかを判断し１５１、その場合は、ヒープは単に調整することができるが１５２、他の場合は、項目のポインタの削除に先だって、ヒープエレメントを次のヒープエレメントに設定し１５４、すなわち、存在しないパラメータの要素をリンクから外し、従って、ヒープ中に穴を作り、出来た穴を埋めるために先に参照したルート機能を呼び出す１５６。従って、これはごみ掃除アルゴリズムより簡単になるのみならず、リアルタイムであることの要請により制限を受け、革新的な複雑さを有する。
【００５７】
他の短時間のロックは、スケジューラ２６がルート機能のリストをトラバースするとき、この記述子を有する処理又は移動させた関連データの処理における機能をバイパスする。
【００５８】
オペレーティングシステムはまた、ポストリンクされたルート機能がスケジューラ２６にリンクされたユーティリティ、特に、他のルート機能及び装置のドライバと通信するポストリンクされた機能にアクセスできるようにする。ポストリンクされた機能は、このような機能が特別に構築される場所を必ずしも知らなくてもよいので、スケジューラ２６は、ポストリンクされた機能が使うことのできる参照用ベクトルテーブル及びすべての内部機能を実行する。
【００５９】
ベクトルテーブル中の機能の中でリングバッファにインターフェースし、ルート機能が中断状態から目覚めることができるよう、また、ポストリンクされたルート機能がそのような待ち行列及び他のルート機能を発行することができるよう、又は、中断されてサービスのルーチンが、ポストリンクされた機能が割り振られた疑似グローバルデータから例示することができるような待ち行列を特定することができるように、随意的にルート機能に組み込まれる。パブリッシング機構は、ポストリンクされた機能のＲＡＭデータにこの目的で保存された項目を指し示すことができるスケジューラ２６にリンクされたポインタにより開始するリンクされたリストを伴い、ＲＡＭデータは、他のこのような存在その他を指し示すことができる。スケジューラ２６とリンクされたどのルート機能又は割り込みサービスルーチンも、そのようなリンクを期待してプログラムされる必要があり、相互に通信することが期待されるポストリンクされたルート機能のどのような組み合わせも、同様にプログラムされる必要がある。ハンドシェーク機構が、説明した待ち行列にアクセスする機能により供給される。
【００６０】
オペレーティングシステムは、１）構造中にすべてのそのようなデータを宣言する機能を必要とし、２）そのような構造にポインタを生成し、３）そのポインタを初期化しないために、内部のグローバルデータを用いるために、ポストリンクされた機能を提供する。ポストリンクされた機能が実行されるたびに、スケジューラ２６によりこの構造に対してポインタが提供される。
【００６１】
従って、ＲＡＭのクリーンアップを行うとき、ポインタの値は、先にポストリンクされた機能が実行されたときの値とは異なるが、その内容は移動されているので、ポストリンクされた機能に対して透明となる。ポインタは、ルート機能の配列により、又は、ルート機能ではないポストリンクされた機能のために固定され、ヒープ内の項目をトラバースすることにより確かめられる特別な記述子により固定されることに注意すべきである。
【００６２】
オペレーティングシステムは、再配置可能なコードをサポートしないプロセッサで実行するために、それ自身の言及される部分へのポストリンクされた機能のために、例えば、分岐機能又は定数のために、これらの部分へのポインタが構造等として集められる同様の機構により、グローバルデータとして、同様に供給されるが、このような装置が必要とするこのような機能の作者は、従って、それらのポインタ経由ですべての分岐機能を呼び出すことに注意すべきである。
【００６３】
スケジューラ２６は、上述の通り、ロックされたポストリンクされたルート機能の実行を禁止することができるが、ＲＯＭに再配置されているか又はＲＡＭを移動した他のポストリンクされた機能については、スケジューラ２６はこれに注目するだけで、その状態に対して一意的なエラーコードを返し、従って、その一意的なコードを用いないことが、そのような機能を実行するのに有利であり、このことは、さらに、同じ形式がすべてのルートポストリンクされていない機能により返される必要がある。
【００６４】
ポストリンクされた（動的にロードされ実行された）機能が有効なのは、装置がプログラムされ実行されたときに、制約のある装置でどのロジックが必要なのかをあらかじめ予測することが必ずしも可能ではないという事実に起因する。例えば、装置は、扉、窓、又は動くもの（例えば、手押し車又は台車）の非常に具体的な動きの様式を検知し、選択し、報告するよう設計された無線センサネットワークのノードであるかもしれない。特定の動きフィルターアルゴリズム／ロジックは、これらの対象毎に異なるので、そして、サプライチェーンにおける高価な在庫コスト及び装置の問題に入り込まずに具体的な用途に対する具体的な装置をあらかじめ割り当てることが困難であるため、装置の製造業者がこれらの非常に一意的な動きの形式の各々に対して、ファームウェアベースの動きフィルターを製造することは、厄介なこと又は高価なものとなる。
【００６５】
他のアプローチは、すべての動きについての事象の報告を扱うことがでのできる十分一般的なベーシックファームウェアを作り、この一般的なソフトウェアにより工場で装置にプログラムを組み込むことである。そして、各ノードをフィールドに（例えば、窓に、又は台車に）配備し、必要となる具体的な形式の動きフィルターを、各ノードの固有の配備の状態に従い、各ノードに送る。このコンテキストに応じたルート機能（例えば、動きの形式に応じた動きフィルター）は、現場の装置上で走るソフトウェアスタックを備えるように、他のより一般的なルート機能と結合する。
【００６６】
時々必ず生じる別の状況は、現場での実際の結果に基づきファームウェアを「調整」又は変更する必要が動きフィルターに生じることである。フィルターの動作を閾値及び他の構成パラメータ値を変更することで簡単に変更することができ、このことは動的プログラミング（新たなフィルタリングロジックを具体化する新たな実行コードのローディング）を必要としないが、別のタイミングで、動きのフィルタリングアルゴリズムを実行するために用いられる機能の様式（数学的ロジック）を変える必要があり、これは、（１）工場でのプログラム時に膨大な数式の選択肢を含めること（非常に膨大で、実現不可能なコードサイズとなる）か、又は（２）ここで記載した方法を用いて、現場におけるノードを動的にプログラミングするかによってのみ達成することができる。後者のアプローチのほうが、反復手段、又は、機械の学習能力及び人工知能の概念を用いて簡単に実行できるので、便利である。
【００６７】
ノードは、メインフレームワークステーション、パーソナルコンピュータ、サーバ、ポータブルコンピュータ装置、又は、命令を実行しネットワークに接続し、ネットワークを介してデータパケットを転送する能力のあるあらゆるのタイプの優れた装置のような、適切な形式のコンピュータ装置を用いて実施することができる。ノードは、ネットワーク上で使用するデータパケットを生成し、受け取り、送信するための、適切なあらゆるコンピュータプログラムを実行することができる。
【００６８】
図９は、図１に関して説明したＷＳＮの特徴を有し、ここに記載した種々の機能を有する保安システムの例を示す。図９に示すように、相関処理は、特定の制約のあるノード（これらはフリーファンクショナルノードであることもできるが）から入力を受け取る。これらの入力には、認定情報及びビデオ情報を含むことができ、相関処理により、ネットワークを介して送信される関連付けられた結果が生成される。文脈管理処理は、特定の制約のあるノード（これらもフリーファンクショナルノードであることもできるが）から入力、例えば、認定情報及びビデオ及びグループ化情報を受け取り、相関処理を行い、結果がネットワークを介して送信される。ネットワークは、分配されたルール処理及びルールエンジン／メッセージング処理のみならず、非常出口表示、非常カメラの動作をサポートする。範囲拡大装置は、例えば、ゲートウェイとともに用いられ、リアルタイム位置決めシステムは、示された種々のセンサ（例えば、制約のあるタイプ）からの入力を受け取る。クラウドコンピューティング構成及びネットワーク経由のＷＳＮへのサーバインターフェースをサブネットとして走らせることができる。
【００６９】
センサの範囲内の領域で検出されたものを表示するのに加えて、特定のセンサへの入力を広く分析するために必要となる侵入検知パネルなしで、その表示が意味するものを評価するために使うことができる詳細な追加情報を、センサは提供する。
【００７０】
例えば、動作検出器は、部屋の中で動いている暖かい物体の熱形跡を分析し、物体が人物かペットかを判断するよう構成することができる。この分析結果は、検出した物体についての情報を伝達するメッセージ又はデータとなる。種々のセンサがこのようにして、侵入検知パネルでの真の又は確認された警報状態を検知するために、音、動き、振動、圧力、熱、イメージ、等を、適切に組み合わせて検出するために用いられる。
【００７１】
認識ソフトウェアは、人物である対象物と動物である対象物とを区別するために用いることができ、さらに顔認識ソフトウェアを、ビデオカメラに組み込み、周辺への侵入は、認識され認可された個人によるものであるかどうかを確かめるために用いることができる。このようなビデオカメラは、プロセッサ及びメモリを具備し、カメラからの入力（捕捉されたイメージ）を処理し、ビデオカメラで捕捉された個人の認識がなされたか、認識が欠けていたかに関する情報を伝達するメタデータを生成する。この処理は、代替的に又は付加的に、ビデオカメラにより捕捉された／監視された領域内の個人の特徴に関する情報を含めることもできよう。従って、周囲状況に応じて、この情報は、センサへの入力に対する機能強化された分析を行い周辺への侵入対象の特徴を与える、機能強化された動作検出器及びビデオカメラから受信したメタデータ、又は、対象物の認識を確立するために追及する非常に複雑な処理から得られたメタデータのどちらかとなろう。
【００７２】
センサ装置は、さらに複雑な出力を生成し、侵入検知パネルがその処理能力を用いて、侵入の有効性についての理にかなった判断を下すために、周囲の建物の実質的なイメージ又は形跡により、周辺を分析するアルゴリズムを実行するように、複数のセンサを統合することができる。
【００７３】
メモリは、侵入検知パネルのプロセッサで用いられるプログラム命令及びデータを保存する。メモリは、ランダムアクセスメモリ及びリードオンリーメモリの適切な組み合わせとすることができ、適切なプログラム命令（例えば、ファームウェア又はオペレーティングソフトウェア）及び構成データ及びオペレーティングデータを受け入れることができ、ファイルシステム等としてまとめられる。保存されたプログラム命令には、１以上のユーザを認証するための１以上の認証処理が含まれる。パネルのメモリに保存されたプログラム命令は、ネットワーク通信及びデータネットワークとの接続を確立させるソフトウェアコンポーネントをさらに保存することができる。ソフトウェアコンポーネントには、例えば、インターフェース及びキーパッドを含む種々のインターフェースのドライバーコンポーネントのみならず、インターネットプロトコル（ＩＰ）スタックを含めることができる。ネットワークを介しての接続及び通信を確立するのに適した他のソフトウェアコンポーネントは、当業者には明らかであろう。
【００７４】
メモリ中に保存されたプログラム命令は、構成データとともに、パネルの全体的な動作を制御する。
【００７５】
監視サーバには、１以上の処理装置（例えば、マイクロプロセッサ）、ネットワークインターフェース、及び、メモリ（すべて不図示）が含まれる。監視サーバは、物理的にラックマウントのカードの形式をとることができ、１以上の動作端子で通信することができる（不図示）。例示的監視サーバは、ＳＵＲＧＡＲＤ（登録商標）ＳＧ−システムIIIＶｉｒｔｕａｌ又は類似のシステムである。
【００７６】
各監視サーバのプロセッサは、各監視サーバの制御装置としての役割を果たし、各サーバのと通信して全体的な動作を制御する。プロセッサには、監視サーバの全体的な動作を制御する、プロセッサで実行可能な命令を保存するメモリを含むか又はこのメモリと通信することができる。適切なソフトウェアは、各監視サーバが警報を受け取り適切な動作を生じさせることを可能にする。ソフトウェアには、適切なインターネットプロトコル（ＩＰ）スタック及びアプリケーション／クライアントを含むことができる。
【００７７】
中央監視場所の各監視サーバは、ＩＰアドレス及びポートと関連付けることができ、それにより、制御パネル及び／又はユーザ装置と通信して警報イベント等を扱うことができる。監視サーバアドレスは、固定とすることができ、従って、監視サーバの特定の１つを侵入検知パネルであると特定することがいつもできる。代替的に、ダイナミックアドレスを用いることができ、固定ドメインネームと関連付け、固定ドメインネームサービスを介して決定する。
【００７８】
ネットワークインターフェースカードは、ネットワークとインターフェースし入力信号を受け取り、そして、例えば、イーサネットネットワークインターフェースカード（ＮＩＣ）の形態をとる。サーバは、コンピュータ、シンクライアント、等とすることができ、受け取った警報イベントを表すデータが、人間のオペレータに送られる。監視場所には、さらに、データベースエンジンにより制御されているデータベースを含む、サブスクライバーデータベースを含めること、又はこれにアクセスすることができる。データベースは、監視場所でサービスを受けるパネルのような、パネルに対して行う種々のサブスクライバー装置／処理に対応していくつかの項目を包含することができる。
【００７９】
ここに記載したすべて又は一部の処理、及びその種々の変形（ここでは「処理」と称す）は、少なくとも部分的には、コンピュータプログラム製品、すなわち、例えば、プログラマブルプロセッサ、コンピュータ、又は、複数のコンピュータのような、データ処理設備の動作を制御するために、又は、このデータ処理設備に実行させるための、コンピュータ及び／又は機械読み取り可能記憶装置である、１以上の具体的な物理的ハードウェア記憶装置に明らかに組み込まれたコンピュータプログラムを介して実行することができる。コンピュータプログラムは、コンパイラ言語又はインタプリタ言語を含む、どのような形式のプログラム言語で記載してもよく、スタンドアローンプログラム又はモジュールとして、コンポーネント、サブルーチン、又は、コンピュータ環境に適した他のユニットを含む、どのような形式で展開することもできる。コンピュータプログラムは、１つのコンピュータ、又は、１つの場所にある又は複数の場所に分散配置されネットワークで相互に接続された複数のコンピュータに展開し実行することができる。
【００８０】
処理の実施と関連する動作は、校正処理の機能を行う１以上のコンピュータプログラムを実行する１以上のプログラマブルプロセッサにより実行することができる。この処理のすべてまたは一部は、専用ロジック回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）及び／又はＡＳＩＣ（特定用途向け集積回路）とすることができる。
【００８１】
コンピュータプログラムを実行するのに適したプロセッサには、例示として、汎用マイクロプロセッサ及び専用マイクロプロセッサ、種々の種類のディジタルコンピュータの１以上の様々なプロセッサが含まれる。一般に、プロセッサは、リードオンリー保存領域又はランダムアクセス保存領域又はそれらの両方から命令及びデータを受け取る。コンピュータのエレメント（サーバを含む）には、命令を実行するための１以上のプロセッサ及び、命令及びデータを保存する１以上の保存装置が含まれる。一般に、コンピュータはまた、データを保存するための大容量記憶装置、例えば、磁気ディスク、磁気光ディスク、又は、光ディスクのような、１以上の機械読み取り可能記憶媒を含み、又は、これらから受け取ったデータと動作可能に結合し、又はこれらにデータを送信し、又は、その両方を行う。
【００８２】
コンピュータプログラム命令及びデータを具体化するのに適切な、物理的ハードウェア記憶装置には、例として、半導体記憶領域装置、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及び、フラッシュ記憶領域装置、磁気ディスク、例えば、内部ハードディスク又はリムーバブルディスク、磁気光ディスク、ＣＤ−ＲＯＭディスク、及びＤＶＤ−ＲＯＭディスク、及び、揮発性コンピュータメモリ、例えば、消去可能メモリ、例えば、フラッシュメモリのみならず、スタティックＲＡＭ及びダイナミックＲＡＭを含む、すべての形式の非揮発性記憶領域を含む。
【００８３】
加えて、図面に示したロジックフローは、好ましい結果を達成するために、図示したような特定の順序、一連の順序でなくてもよい。加えて、記載したフローに他の動作を加えてもよく、動作を削除してもよく、そして、他のコンポーネントを記載したシステムに加えても削除してもよい。同様に、図面に示した動作は、別のもので実行してもよく統合してもよい。
【００８４】
ここに記載したものと異なる実施形態の要素を、具体的に上述していない他の実施形態を形成するために統合することができる。要素は、ここに記載したものに反する動作を行わないようにして、ここに記載した処理、コンピュータプログラム、等を除外することができる。さらに、ここに記載した機能を実行するために種々の別個の要素を１以上の独立な要素に統合することができる。
【００８５】
ここに具体的に記載されていない他の実施形態も、以下の特許請求の範囲の技術的範囲になる。
【図１】
2017513099.tif 000003
【図２】
2017513099.tif 000004
【図３】
2017513099.tif 000005
【図４】
2017513099.tif 000006
【図５】
2017513099.tif 000007
【図６】
2017513099.tif 000008
【図７】
2017513099.tif 000009
【図８】
2017513099.tif 000010
【図８Ａ】
2017513099.tif 000011
【図８Ｂ】
2017513099.tif 000012
【図８Ｃ】
2017513099.tif 000013
【図９】
2017513099.tif 000014
【国際調査報告】
2017513099.tif 000015