SensortWare編程模型
發布時間:2012/4/6 18:49:08 訪問次數:1025
根據主動分布式模型,腳本看起來像是 CS8416-CZZ/CSZ受外部事件影響的狀態機,這樣的外部事件包括網絡消息、傳感數據和定時器到期。采用的編程模型是:事件被描述,并和一個事件處理器的定義綁定;根據當前狀態,事件處理器將會做出處理并可能創造出一些新的事件和(或)改變當前狀態。圖7-22就展示了SensorWare的編程模型的一個例子。
圖7-22描述了通過等待命令實現事件。通過命令,程序員能夠定義腳本在一個給定的時間中等待時的所有的事件,這些時間包括:受理一個給定格式的消息,或是用給定采樣率的傳感信息來填充緩存,也可以是等待若干個定時器的時間到期。當任何一個事件在等待命令發生中進行聲明時,命令就會終止,返回引起終止的事件。在等待命令下面的代碼會處理返回的變量信息并喚醒已掛起的適合此事件的部分代碼。在執行掛起事件之后,腳本移動到一個新的等待命令或是等待前命令的循環執行。
和編程模型同等重要的是支持腳本的運行環境。圖7-23描述了環境執行的基本任務。SensorWare將任務劃分為固定的和平臺相關的,固定任務通常包含在SensorWare的實現中,而平臺相關任務依賴于節點平臺的具體模塊和服務。另外,有可能出現可擴展性和可移植性問題。腳本管理器的任務是接受新的腳本盧生請求,它將請求傳遞給接入控制任務并接收回復,并啟動一個新的線程/任務,為新的腳本運行一個腳本解釋器。腳本管理器也在腳本活動期間,保存任意腳本相關的狀態,例如腳本數據等。
接入控制和資源使用策略任務負責所有的腳本接入決策,確保腳本在它們的資源限制之內,并且更重要的是檢查總的能量消耗。如果整體呈現出巨大的消耗,則按照Sensorware的一定策略選擇性的終止一些腳本。
運行環境還包括資源抽象和資源計量任務,每個任務支持相關的API命令并管理具體的資源,這其中有兩個固定的任務,因為每個平臺都假設有至少一個“RADIO”任務和一個定時器服務。“RADIO”任務從腳本中接受所要求的網絡消息格式的請求,根據需要的腳本接受網絡中的信息,并為每個腳本測量無線電利用率。定時器服務通過所有的腳本為定時器接受各種請求,并且為系統提供的嵌入式真實事件計時器服務。從根本上說任務依靠系統提供的單個定時器來提供多個虛擬的定時器。
即使兩個平臺具有相同的能力(即同樣的模塊/服務),它們也依賴于不同的硬件和(或)操作系統,因此SensorWare的代碼分為不會改變的(平臺獨立的代碼)和隨平臺能力變化的(設備定義代碼),如圖7-24所示。
根據主動分布式模型,腳本看起來像是 CS8416-CZZ/CSZ受外部事件影響的狀態機,這樣的外部事件包括網絡消息、傳感數據和定時器到期。采用的編程模型是:事件被描述,并和一個事件處理器的定義綁定;根據當前狀態,事件處理器將會做出處理并可能創造出一些新的事件和(或)改變當前狀態。圖7-22就展示了SensorWare的編程模型的一個例子。
圖7-22描述了通過等待命令實現事件。通過命令,程序員能夠定義腳本在一個給定的時間中等待時的所有的事件,這些時間包括:受理一個給定格式的消息,或是用給定采樣率的傳感信息來填充緩存,也可以是等待若干個定時器的時間到期。當任何一個事件在等待命令發生中進行聲明時,命令就會終止,返回引起終止的事件。在等待命令下面的代碼會處理返回的變量信息并喚醒已掛起的適合此事件的部分代碼。在執行掛起事件之后,腳本移動到一個新的等待命令或是等待前命令的循環執行。
和編程模型同等重要的是支持腳本的運行環境。圖7-23描述了環境執行的基本任務。SensorWare將任務劃分為固定的和平臺相關的,固定任務通常包含在SensorWare的實現中,而平臺相關任務依賴于節點平臺的具體模塊和服務。另外,有可能出現可擴展性和可移植性問題。腳本管理器的任務是接受新的腳本盧生請求,它將請求傳遞給接入控制任務并接收回復,并啟動一個新的線程/任務,為新的腳本運行一個腳本解釋器。腳本管理器也在腳本活動期間,保存任意腳本相關的狀態,例如腳本數據等。
接入控制和資源使用策略任務負責所有的腳本接入決策,確保腳本在它們的資源限制之內,并且更重要的是檢查總的能量消耗。如果整體呈現出巨大的消耗,則按照Sensorware的一定策略選擇性的終止一些腳本。
運行環境還包括資源抽象和資源計量任務,每個任務支持相關的API命令并管理具體的資源,這其中有兩個固定的任務,因為每個平臺都假設有至少一個“RADIO”任務和一個定時器服務。“RADIO”任務從腳本中接受所要求的網絡消息格式的請求,根據需要的腳本接受網絡中的信息,并為每個腳本測量無線電利用率。定時器服務通過所有的腳本為定時器接受各種請求,并且為系統提供的嵌入式真實事件計時器服務。從根本上說任務依靠系統提供的單個定時器來提供多個虛擬的定時器。
即使兩個平臺具有相同的能力(即同樣的模塊/服務),它們也依賴于不同的硬件和(或)操作系統,因此SensorWare的代碼分為不會改變的(平臺獨立的代碼)和隨平臺能力變化的(設備定義代碼),如圖7-24所示。
上一篇:SensorWare
上一篇:Agilla