CN107209669A - 无上下文切换的抢占式操作系统 - Google Patents
无上下文切换的抢占式操作系统 Download PDFInfo
- Publication number
- CN107209669A CN107209669A CN201580075133.8A CN201580075133A CN107209669A CN 107209669 A CN107209669 A CN 107209669A CN 201580075133 A CN201580075133 A CN 201580075133A CN 107209669 A CN107209669 A CN 107209669A
- Authority
- CN
- China
- Prior art keywords
- function
- user
- executable function
- independent
- definition
- 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
Links
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/461—Saving or restoring of program or task context
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
Abstract
诸如包括处理设备和存储器的受约束设备之类的设备根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行,并且通过将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的单个堆栈上来抢占当前运行的用户定义独立可执行函数。
Description
背景技术
本描述涉及受约束设备的操作,其中受约束设备诸如是用于需要周期性地对设备进行进程更新的嵌入式应用的那些设备。
受约束设备的一个示例是安装在商业或住宅处所的安全、入侵和报警系统中的传感器元件。安全系统通常包括电气或无线地连接到各种传感器的入侵检测面板。这些传感器类型通常包括运动检测器、照相机、接近传感器、热传感器、烟雾传感器等。这些传感器通常被实现为受约束计算设备,其是具有比其它计算设备、传感器等实质上更少的持久性和易失性存储器的设备。受约束设备的当前示例会是具有少于约兆字节的闪存/持久性存储器,以及少于约10-20千字节的RAM/易失性存储器的设备。
对这样的设备更新固件通常涉及引导加载(boot-loading),即使在只有一部分代码发生改变的情况下引导加载也需要通过通信接口传输整个可执行代码图像。另一种方法涉及抢占式操作系统。商业实时操作系统(RTOS)通常以具有使用上下文切换以每个任务为基础来描述RAM使用的数据来营销。
发明内容
受约束设备的特征如此,并且通常由于成本/物理配置的考虑而以这种方式配置。难以更新这样的受约束制设备上的固件,并且当这样的更新发生时,它是通过“引导加载器”发生的,其通过通信链接接收新固件并将新固件存储在持久性存储器中,验证新代码,并且然后执行特殊的重新启动过程(由引导程序控制)来用新的图像替换旧的代码或“图像”。然而,即使只有一部分代码发生变化,使用传统的引导加载来更新固件也需要通过通信接口传输整个可执行代码图像。然而,这种方法浪费了宝贵的通信带宽。
因此,此引导加载进程有缺点,因为存储参数或计算机代码中的即使小的更改都要求更换整个图像。引导加载对于整个系统来说是耗时且潜在危险的,因为如果在将新的代码写入最终位置时发生错误(例如,功率损耗),则该设备可能变得毫无用处,从而需要工厂维修。此外,引导加载必然意味着“重新引导”设备,这需要重新初始化其所有外围驱动器和通信链接、网络连接、应用的重新配置等。由于这些缺点,引导加载和依赖引导加载的固件更新不应该是受约束设备的日常操作的一部分。
采用上下文切换的抢占操作系统在RAM使用和速度方面必然会发生将当前执行的进程的状态条件转移到RAM中的成本。这样的考虑使得这种操作系统对于硬实时操作系统(RTOS)不是令人期望的。
根据一个方面,有形地存储在计算机可读硬件存储设备上的计算机程序产品包括指令,该指令:根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过处理器从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行,利用所示指令进行调度进一步配置所述处理器:将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;通过如下的指令来抢占当前运行的用户定义独立可执行函数,该指令将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的所述单个堆栈上,在堆栈中将当前运行的用户定义独立可执行函数的状态数据往下推低;执行所述特定的用户定义独立可执行函数;以及在执行特定的用户定义独立可执行函数之后从堆栈中弹出当前运行的用户定义独立可执行函数的那些寄存器值。
根据一方面,在包括处理器和存储器的计算系统中执行的方法包括:根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过所述计算系统中的处理器从所有用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行;通过处理器将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;通过处理器通过如下的操作来抢占当前运行的用户定义独立可执行函数,将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的单个堆栈上,在堆栈中将当前运行的用户定义独立可执行函数的状态数据往下推低;通过处理器执行所述特定的用户定义独立可执行函数;以及通过处理器,在执行特定的用户定义独立可执行函数之后从堆栈中向上推出当前运行的用户定义独立可执行函数的那些寄存器值。
根据一方面,受约束设备包括:处理器设备,处理器设备被配置为:根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过处理器从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行,调度的指令还将处理器配置为:将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;通过如下的指令来抢占当前运行的用户定义独立可执行函数,该指令将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的单个堆栈上,在堆栈中将当前运行的用户定义独立可执行函数的状态数据往下推低;执行所述特定的用户定义独立可执行函数;以及在执行特定的用户定义独立可执行函数之后从堆栈中弹出当前运行的用户定义独立可执行函数的那些寄存器值。
以下是一个或多个上述方面中的一些实施例。
其是用于在受约束设备上执行的实时操作系统的一部分。调度通过直接调用特定的用户定义独立可执行函数的包装器函数(wrapper function)来调用抢占。调度通过中断服务例程来调用抢占,并且标记当前运行的用户定义独立可执行函数以用于从中断返回时执行。堆栈保存用于所有的用户定义独立可执行函数、中断服务例程和操作系统例程的寄存器值。用于任何被抢占的用户定义独立可执行函数、中断服务例程和操作系统例程的保存的寄存器值是被编译的保存值。当新的函数完成运行并返回时,所有其堆栈使用被弹出并且当前运行的函数恢复运行。
根据随时间推移的情况和需求,暂态子程序被添加和移除,这有效地改变了设备包含的可执行代码。对于许多应用,这可能需要以少的通知并且不利于传统的引导加载的方式实现。在代码更新期间,设备可用于其它工作(例如,基于中断的收集、传感器事件的报告和与外部设备通信)。通过将新的进程推送到存储寄存器值的单个堆栈上,在这些设备上对例程的执行发生,而无需上下文切换中涉及到的伴随开销。该设备包括用于将设备接口连接到网络的网络接口。该设备包括存储设备,该存储设备存储包括指令的计算机程序产品,该指令将处理器设备配置为调度用户定义独立可执行函数以执行。
在下面的附图和描述中阐述了本发明的一个或多个实施例的细节。根据说明书和附图以及权利要求,本发明的其它特征、目的和优点中都是清楚的。
附图说明
图1是示例性网络安全系统的示意图。
图2是受约束设备的框图。
图3是在理解堆栈结构中有用的框图。
图4是实时操作系统中的调度器处理的流程图。
图5是在理解调度中有用的框图。
图6是示出了函数的处理的流程图。
图7是示出了函数封装的框图。
图8是堆的框图。
图8A-图8C是涉及堆的处理的流程图。
图9是调度器的框图。
图9A是图形描绘了根函数的框图。
图10是调度器操作的流程图。
图11是网络安全系统的部件的框图。
具体实施方式
本文描述了可以在各种上下文(包括但不限于安全/入侵和报警系统)中使用的网络特征的示例。示例安全系统可以包括电气或无线地连接到各种传感器的入侵检测面板。这些传感器类型可以包括运动检测器、照相机和接近传感器(例如,用于确定门或窗口是否被打开)。通常,这样的系统从这些传感器中的一个或多个接收相对简单的信号(电气地打开或闭合),以指示正被监视的特定状况已经被改变或变得不安全。
例如,典型的入侵系统可以被设置以监视建筑物的入口门。当门被安全固定时,接近传感器感测到磁性接触并产生电气闭合的电路。当门被打开时,接近传感器打开电路,并向面板发送指示已经发生报警状况的信号(例如,打开的入口门)。
数据收集系统在一些应用(诸如家庭安全监视)中正变得越来越普遍。数据收集系统采用无线传感器网络和无线设备,并且可以包括远程的基于服务器的监视和报告生成。如下面更详细地描述的,无线传感器网络通常使用在计算设备之间的有线和无线链接的组合,其中无线链接通常用于最低级别的连接(例如,端节点设备到集线器/网关)。在示例网络中,网络的边缘(无线连接的)层由具有特定功能的资源受约束设备组成。这些设备可能具有小到中等量的处理能力和存储器,并且可能是电池供电的,因此需要通过将它们的许多时间花费在睡眠模式中来节省能量。典型的模型是其中边缘设备通常形成单个无线网络的模型,其中每个端节点以中心轴辐类型的架构与其父节点直接通信。父节点可以是例如网关上的接入点或子协调器,网关上的接入点或子协调器又连接到接入点或另一子协调器。
现在参考1,示出了用于无线传感器网络(WSN)的示例性(全局)分布式网络拓扑。在图1中,分布式网络10在逻辑上被划分成层集合或分级级别12a-12c。
在网络的上层或分级级别12a中,设置运行“云计算”范例的服务器和/或虚拟服务器14,该服务器和/或虚拟服务器14使用诸如因特网协议之类的良好建立的联网技术被联网在一起,或者可以是不使用因特网或者使用因特网的一部分的专用网络。在这些服务器14上运行的应用使用各种协议进行通信,所述各种协议诸如是用于Web Internet网络XML/SOAP、RESTful Web服务以及其它应用层技术(诸如HTTP和ATOM)的协议。如下所示和讨论的,分布式网络10在设备(节点)之间具有直接链接。
分布式网络10包括第二逻辑划分的层或分级级别12b,这里称为中间层,其涉及位于各个建筑物和结构内的中心、便利的位置处的网关16。这些网关16与上层的服务器14进行通信,无论这些服务器是独立的专用服务器和/或使用网络编程技术运行云应用的基于云的服务器。中间层网关16也被示出为具有局域网17a(例如,以太网或802.11)和蜂窝网络接口17b二者。
分布式网络拓扑还包括涉及全功能传感器节点18(例如,包括例如在图1中用“F”标记的收发器或至少发射机的无线设备的传感器节点)以及受约束的无线传感器节点或传感器端节点20(在图1中用“C”标记)的下层(边缘层)12c设备集合。在一些实施例中,可以在分布式网络10的方面中包括有线传感器(未示出)。
暂时参考图2,示出了通用受约束计算设备20。如本文所使用的受约束设备20是具有比特定联网检测/传感器/报警系统中的其它计算设备、传感器、系统实质上更少的持久性和易失性存储器的设备。受约束设备20包括处理器设备21a,例如CPU和/或其它类型的控制器设备,其在操作系统下执行,通常具有8位或16位逻辑,而不是由高端计算机和微处理器使用的32位和64位逻辑。与网络上的其它计算设备相比,受约束设备20具有相对小的闪存/持久性存储21b和易失性存储器21c。通常,持久性存储装置21b是约兆字节或更少的存储装置,并且易失性存储器21c是约数千字节或更少的RAM存储器。受约束设备20具有网络接口卡21d,其将受约束设备20接口连接到网络10。通常,使用无线接口卡,但在某些情况下,可以使用有线接口。可替代地,可以使用由无线网络协议栈(例如,802.15.4/6LoWPAN)驱动的收发器芯片作为(无线)网络接口。这些部件通过总线结构耦接在一起。受约束设备20还包括传感器22和传感器接口22a,传感器接口22a接口连接到处理器21a。传感器22可以是任何类型的传感器类型的设备。典型类型的传感器包括被单独或组合实现以检测复杂事件的温度传感器,简单运动传感器,1轴、2轴或3轴加速力传感器,湿度传感器,压力传感器,选择性化学传感器,声/压电转换传感器和/或许多其它传感器。
所公开的受约束设备20的实现可以遵循对闪存/持久性存储存储器和RAM存储器以及小于10-20千字节的RAM/易失性存储器的当前约束,但是可以更依赖于配置,并且在一些实例中,更依赖于操作系统。这些受约束设备20以这种方式配置:一般出于成本/物理配置的考虑。这些类型的受约束设备20通常具有静态软件图像(即,编程到受约束设备中的逻辑总是相同的)。
参考回图1,在典型的网络中,网络的边缘(无线连接的)层主要由具有特定功能的高资源受约束设备组成。这些设备具有小到中等量的处理能力和内存,并且通常是电池供电的,因此它们需要通过将它们的许多时间花费在睡眠模式中来节省能量。典型的模型是其中边缘设备通常形成单个无线网络的模型,其中每个端节点以中心轴辐类型的架构与其父节点直接通信。父节点可以是例如网关上的接入点或子协调器,网关上的接入点或子协调器又连接到接入点或另一子协调器。
每个网关配备有接入点(全功能节点或“F”节点),其物理上附接到该接入点并且向无线网络中的其它节点提供无线连接点。图1中所示的链接(由未编号的线示出)表示设备之间的直接(单跳MAC层)连接。正式联网层(在图1中所示的三个层中的每一层中起作用)使用一系列这些直接链接与路由设备一起通过网络将消息(分段的或非分段的)从一个设备发送到另一个设备。
WSN 10对在下层设备18和20上运行的应用层实现状态机方法。下面讨论的是这种方法的特定实现的示例。状态机中的状态由在协调中执行的函数集合组成,并且这些函数可以被单独删除或替换或添加,以变改变特定下层设备的状态机中的状态。
基于WSN状态函数的应用层使用如下的边缘设备操作系统(未示出,但是诸如在上述临时应用中公开的),其在不用重新启动设备(所谓“动态编程”)的情况下允许加载和执行各个函数(在设备启动之后)。在其它实现中,边缘设备可以使用其它操作系统,假如这样的系统优选地允许在不重新启动边缘设备的情况下加载和执行各个函数(在设备启动之后)。
受约束设备的RTOS
参考图3,示出了包括无线动态编程和支持的受约束设备20的操作系统的堆栈处理细节。受约束设备20包括实时操作系统(“RTOS”),实时操作系统用于执行和以其它方式管理用户定义独立可执行函数或任务的动态集合,用户定义独立可执行函数或任务的动态集合或者被内置到加载的图像中(在受约束设备上执行的软件和RTOS)或者在受约束设备20的正常操作期间被下载,或者两者的组合,其中前者(内置于图像中)用作后者(在操作期间下载)的子例程的实例。
堆栈管理
RTOS用于受约束设备,并且根据可用性(要运行的函数的准备状态)和优先级(该函数相对于其它函数的关键性)来使用调度函数26,函数26通过管理结构(例如,指向函数位置的指针的数组或链接列表)来引用。该调度器26函数周期性地评估当前未在受约束设备上运行的函数(例如在列表28中的那些)以确定这些函数中的任何函数是否准备好运行。此外,调度器26通过如下操作对指示(一个或多个)函数已经准备好运行的中断做出响应:向挂起的函数(pended function)供给数据或者对于已经暂停执行的函数的定时器事件31进行倒计时。
在任一情况下,如果已经识别出被发现准备好运行的、比当前运行的函数优先级高(或者如果当前函数的执行已经被挂起而在等待数据,则为同等优先级)的函数,则该识别的函数在不把旧的函数事先保存到RAM中的另一个位置的情况下运行(即,无需传统的上下文切换或保存处理器的操作寄存器值)。堆栈24根据各自的优先级来存储函数(例如按顺序24c、24z、24d和24a)。当具有最高优先级的新的函数(例如24c)准备运行时,剩余函数(例如24z、24d和24a)的堆栈函数在新运行的抢占函数将其数据推送到活动函数的堆栈的顶部时在处理器的单个堆叠24上简单地保持原位。
当新的函数完成运行并返回时,它的所有堆栈使用都通过堆栈控制25弹出,并且旧的函数(例如24z)恢复运行而不在意中断,就像发生了传统的上下文切换一样透明。因此,调度器26使用单个处理器堆栈,而不是正式的上下文切换来保存抢占的函数的状态。
通过不具有多个堆栈,这节省了非常大量的RAM,从而允许更独立可执行的函数,以及节省了进行正式的上下文切换所需的处理器时间,并且它简化了逻辑,并因此简化了与调度器26相关联的代码大小。
动态编程
所公开的操作系统有助于动态编程,因为通过简单地将新的函数添加到管理结构(函数指针的数组或者链接列表),更新调度器变量中的相关可用性和优先级信息,并在旧的代码和新的代码之间产生任何必要的链接(返回地址,全局变量位置等),可以将新的函数(通过通信链接加载到设备中的可执行函数)添加到可执行函数的调度器列表中。如果并且当不再需要动态函数时,则可以简单地从管理结构中移除动态函数,并且它的链接被解析且内存被回收。
如下所述的在操作系统的顶部运行的动态编程方法的使用允许受约束设备有效地使用可执行函数的集合,该可执行函数的集合是在任何单个时刻会被适配于它的存储器中的可执行函数的许多倍。下面的操作系统包括如下的方法:请求可执行代码(节点需要但不占有该可执行代码)的节点通过该方法获取代码,同时还保证节点的当前可执行函数集合都是正确的类型和版本(可执行集合自身一致性)。此外,可执行代码可以被缓存在网络位置中,便于一旦受约束设备需要可执行代码就被快速传送到受约束设备。下面还描述了用于管理在受约束设备中应当仅在有限的时间段内使用的代码的“新鲜度日期”和可执行代码到期的方法。
现在参考图4,示出了由操作系统的调度器26采取的用于管理根函数集合的优先执行的动作。由调度器26直接管理的函数被称为“根函数”,因为它们本身可以调用其它函数,而这些函数又可以调用各种其它函数,并且函数调用的这种分支具有类似于树的枝干的分支的结构。
最终,所有的函数执行都像树的分支一样返回到由调度器26最初调用(即执行)的主/第一/根函数。根函数和常规(非根)函数之间的区别在于非根函数不由调度器26管理,并且只能在被当前正在运行的函数显式调用时运行。根函数有点像标准操作系统的线程或任务。
调度器26可以可替代地从优先级最高到最低来简单地轮询根函数,执行准备好运行的每个根函数;或者调度器26可以被配置为(被认为是最可能的情形)执行准备好运行的优先级最高的根函数,并且在执行之后,再次寻求准备好运行的优先级最高的根函数,并且保持重复该序列直到到达和执行优先级最低的根函数为止。
在一些实施例中,对于功率受约束设备,最低优先级的根函数将启动定时器并等待(进入睡眠模式),并且当设备被某个配置的中断唤醒时,再次执行调度序列;在非功率受约束设备中,最低优先级函数将简单地服务看门狗定时器,或执行自检,或者执行两者,并且然后会重复调度序列。
因此,如图4所示,设置42并运行定时器,目的是控制调度器26检查根函数集合的状态的频率。调度器26等待(进入睡眠模式)44调度器定时器事件。当定时器到期46时,调度器26确定48它的列表中的任何根函数是否准备好了运行(例如,通过与每个根函数相关联的变量,可能的值为“准备运行”、“挂起”、“停止”等)。如果任何根函数准备好了运行,则调度器26需要接下来确定所有准备好运行的根函数中的哪一个是具有最高优先级的函数50(其变为“建议的根函数”)。如果没有其它根函数正在运行52,则建议的根函数立即运行,运行到完成,并退出54(虽然在运行过程中,它可能通过使用这里描述的进程被更高优先级的根函数预先抢占而被中断56)。
如果根函数已经在运行,则调度器26比较58当前运行的根函数和所建议的根函数的优先级。如果建议的根函数的优先级较低,则不发生任何事情,并且调度器26回到休眠以等待另一个调度器定时器唤醒事件。另一方面,如果建议的根函数的优先级较高,则调度器26立即运行60建议的根函数。图7中的虚线框和箭头示出了响应于新的根函数的运行(例如,当前运行的根函数被推送到堆栈上)的处理器行为。当所有较高优先级的函数完成处理时,正在运行的函数恢复原位62。
现在参考图5,其它机制(例如这里示出的四种机制)可以产生根函数。例如,根函数可以调度自身或另一根函数在将来的执行(这将由周期性的定时器的中断产生),实现的特殊结构;与指向根函数的指针耦接的环形缓冲器(根函数为环形缓冲器的数据的唯一消费者)在根函数被提供阈值量的数据后将唤醒本应处于挂起状态的消费根函数,根函数对于例如其它根函数应该处理的数据的到达可以直接调用另一根函数,或者中断服务例程可以产生根函数的执行。在所有这些情况下,如果请求生成的根函数具有等于或大于正在运行的根函数的优先级,则调度器26立即执行请求生成的根函数。否则,如果前者的优先级低于后者,则前者被置于“准备运行”状态,该“准备运行”状态允许其在下一次被调度时运行。
参考图6,为了实现80后链接函数(即,通过通信链接加载的函数),特别是后链接根函数,提供了几种机制。例如,当通过通信链接接收函数时81时,实现简单的文件系统以在通过通信链接接收函数时将后链接函数存储在可擦除持久性存储器(例如,闪存)中82,一旦(一个或多个)函数不再需要,则调度删除它/它们,并保持86函数的索引并且在上电初始化时报告88索引的存储的根函数,使得这些函数可以被包括在根函数数组中并对文件系统进行碎片整理。
对文件系统进行碎片整理需要进行锁定(二进制信号量(semaphore)),以防止执行函数由碎片整理引起的重新定位,或者防止在碎片整理期间正在移动的函数被执行。
后链接函数需要额外的数据,如下所述,为了被利用,因而它们需要用文件中的其它数据进行包装;如下所示,在这样的包装器中,非根后链接函数需要一些但是更少的数据。
当后链接根函数被接收到文件系统中时,它们需要被添加到根函数数组中,并且在停止被使用时它们需要从数组中删除,因此要求该数组为链接列表。因此,后链接根函数就像用调度器26被链接到应用中的根函数一样被调度。
现在参考图7,为了在根函数的数组中,与其它根函数一样,后链接根函数需要描述符结构。然而,因为描述符结构需要包括诸如根函数的可执行代码的那些地址之类的地址,所以描述符必然不会逐字地存在于后链接根函数所驻留的文件中,因为其在存储器中的位置直到文件管理器写入该位置才被知道。
该问题是通过包括文件91的包装器94、可以根据其在RAM中构建后链接函数的描述符的结构96来解决的,其中文件91包括函数92。虽然其它根函数的描述符驻留在ROM中并且从来不需要改变,但是每当该函数被重新定位以进行碎片整理时,需要更改后链接根函数的描述符,因此,当文件管理器96寻求重新定位该函数时,其获取适当的信号量97并且除了移动包含该函数的文件之外还调整描述符。
不是根函数的后链接函数同样具有可重新定位的基址(base address),并且在重新定位的过程中,需要被锁定以防止执行,并且在执行时需要被锁定以防止重新定位,但是由于没有为其构造的根函数描述符,所以它的重新定位涉及根函数的重新定位的子集。
操作系统附加地需要为后链接函数分配一些RAM,如下面进行说明和描述的,所有这些后链接函数都需要在它们的ROM和RAM中存储它们的基址,以及可选地,在函数的生命期间静态地保持的任何全局变量,以及对于根函数,为上述描述符。实时系统通常不具有动态分配的存储器,因为这会将非确定性行为引入系统中。
此外,调度器26受约束于不具有用于垃圾收集(存储器恢复)的资源,垃圾收集在代码占用空间和执行时间两方面都是昂贵的。
现在参考图8,操作系统实现专用堆100,因此,对于后链接函数来获取它们的根函数变量数据和所需要的任何其它变量数据。只有在后链接函数的初始化期间才能从堆100进行分配,并且然后对于每个初始化函数调用仅进行一次分配。假设该设备具有单个连续的RAM库(bank),则该堆就像堆栈24那样从RAM的相反端生长,朝向堆栈24生长,并且当最近添加的后链接函数终止时,该堆退回。因为堆100只存在于向后链接函数提供RAM,所以它的结构可以并且不可避免地与其存在的原因相互交织在一起。
从RAM中的第一可用位置开始,每个元素100a-100n包含指向下一个有效元素的开始的指针,因为其大小不一定能够从先前的字段确定(因为后者可以反映由后链接函数的去除引起的孔)。
现在参考图8A,使用内置于调度器26中的高优先级的根函数110来清除这些孔。此根函数使用第四锁定来相互排除112其它地方描述的要求锁定的三个条件。一旦获得锁定,可变数据被零碎地移动114,以便不长时间地阻止低优先级的根函数。在根函数数组中的根函数的RAM描述符的条目需要随着其被移动而被改变116,并且与某些其它数据块118一起,需要锁定中断以防止以不一致的状态查看RAM数据,这会在调度器26中造成严重破坏。如下所述,数据块是函数的RAM和ROM的基址,当执行函数时,来恢复根函数的描述符的RAM副本、由根函数的描述符指向的变量数据以及根函数的本地数据。
现在参考图8B,向堆中添加130元素需要禁用132中断来锁定上述清除根函数(clean-up root function),从开始遍历134堆,并且对于每个条目,从当前元素的末尾减去136指向下一个元素的指针,并且比较138与所请求的字节数的差异,并且如果后者小于前者,则在孔的第一个未使用字节处开始140新的条目,否则,如果遇到堆的最后的条目142,则检查144向堆添加并不紧密压靠堆栈(由应用来配置紧密程度的容差),如果是,则失败并日志记录错误146,否则在堆的末尾处开始新的条目。
对于后链接根函数,现在需要构造描述符并且初始化其它RAM,为了简洁起见,这里不详细描述其细节。
现在参考图8C,为了从堆中移除150元素,调度器26确定151元素是否位于堆的末尾,在这种情况下,可以简单地调整152堆的末尾,否则,把在删除的实体的指针前面的堆元素设置154为下一个堆元素,即,将参数的元素取消链接,从而在堆中产生孔,并且调用156上述根函数来开始填充所产生的孔。因此,这比垃圾清除算法简单,但也更受约束于实时要求,具有一些创新的复杂性。
短时期的另一个锁定被实现用于后链接根函数,使得当调度器26遍历根函数的列表时,它将绕过正在使其描述符或相关联的数据移动的进程中的任何函数。
操作系统还允许后链接根函数访问链接到调度器26中的实用程序;特别地,与其它根函数和设备驱动器通信的后链接函数。由于后链接函数可能不一定知道这些函数在任何特定构建中的位置,因此调度器26实现用于引用后链接函数可以使用的任何和所有内部函数的向量表。
在向量表的函数中有到环形缓冲器的接口,其可选地绑定到根函数,以使得该根函数可以从挂起状态被唤醒,并且还使得后链接根函数可以发布此类队列,并且其它根函数或中断服务例程可以识别这样的队列,使得后链接函数可以从其分配的伪全局数据实例化。发布机制涉及以链接到调度器26中的指针开始的链接列表,该指针可以指向在后链接函数的RAM数据中为此目的保留的条目,并且后者可以指向另一个这样的实体,等等。链接到调度器26中的任何根函数或中断服务例程需要被编程以期望这样的链接,并且期望彼此通信的任何一对后链接根函数需要同样被编程。为访问所描述队列的函数提供握手机制。
操作系统通过以下操作提供后链接函数以使用内部全局数据:1)要求函数在结构中声明所有这样的数据2)产生指向这样的结构的指针3)不初始化该指针。每次执行后链接函数时,指向所述结构的指针由调度器26供给。
因此,当执行RAM清除时,该指针的值将不同于上一次后链接函数被执行时其的值,但是由于其内容已被移动,所以该值将对于后链接函数是透明的。注意,指针本身由根函数的数组锚定,或者对于不是根函数的后链接函数,由通过遍历堆中的条目可确定的特殊描述符来锚定。
为了在不支持可重新定位代码的处理器上执行,操作系统同样提供引用它们自身的一部分的后链接函数(例如分支函数或常数),通过类似的机制,由此将指向这些部分的指针聚集到结构中,等等,但是请注意,对于全局数据,在这样的设备上的这样的函数的作者因此需要通过指向它们的指针调用所有分支函数。
如上所述,调度器26可以阻止被锁定的后链接根函数的执行,但是对于正在ROM中重新定位或其RAM正在被移动的其它后链接函数,调度器26仅注意到这一点,并返回对这种情况唯一的错误代码,因此,这样函数的实现不使用该唯一的代码是有必要的;这还要求所有非根后链接函数返回相同的类型。
后链接(动态加载和执行的)函数的实用性在于如下的事实,在设备被编程和部署时,并不总是能够预期在受约束设备中需要什么逻辑。例如,设备可以是被设计为感测、过滤和报告门、窗口或移动资产(例如,手推车或小车)的非常特定类型的运动的无线传感器网络节点。由于特定运动滤波器算法/逻辑对于这些对象中的每一个都是不同的,并且由于难以将特定设备预分配给特定用途,而不会遇到供应链中的高库存成本和设备分级(staging)的问题,所以对于要求设备的制造商生产特定于这些非常独特的运动类型中的每一种运动类型的基于固件的运动滤波器是不方便的或者是昂贵的。
另一种方法是生成一般足以处理所有运动事件报告的基本固件,并使用此通用软件对设备进行工厂编程。然后,在每个节点被部署在现场(例如,在窗口或小车上)之后,根据每个节点的独特部署情况将所需的特定类型的运动滤波器发送到每个节点。上下文特定的根函数(例如,运动型特定运动滤波器)与其它更通用的根函数组合以包括在现场设备上运行的软件堆栈。
时时肯定会出现的另一种情况是,运动滤波器需要根据现场观察到的结果“调谐”或改变它们的固件逻辑。一些滤波器行为可以通过改变阈值和其它配置参数值而被简单地改变,这当然不需要动态编程(加载新的可执行代码体现新的过滤逻辑),但是还有当用于实现运动滤波算法的函数形式(数学方程)需要改变的其它时候,并且这只能通过以下来实现:(1)在工厂编程期间包括大的方程选项集合(导致过大和可能不可行的代码大小),或(2)使用上述方法在现场动态编程节点。后一种方法更有用,因为它可以使用迭代手段,甚至从机器学习和人工智能概念衍生的方法来容易地完成。
可以使用任何适当类型的计算设备来实现节点,诸如大型机工作站、个人计算机、服务器、便携式计算设备或能够执行指令,连接到网络并且通过网络转发数据包的任何其它类型的智能设备。这些节点可以执行任何适当的计算机程序来生成、接收和发送用于在网络上使用的数据包。
现在参考图9,示出了使用调度器26(图5)的实现226、以通过使用准备运行的根函数的抢占来管理根函数集合的优先执行的硬实时操作系统(RTOS)225的实现。适当地,除了调度器226,在操作系统225的这种实现中,硬实时操作系统(RTOS)225还包括作为处理器设备的一部分或由处理器设备执行的堆栈227和堆栈控制227a、看门狗定时器228、“空闲根函数”230、方法任务232、队列234、系统心跳计时器236和用户定义独立可执行根函数238(一般而且具体地为所示的238a-238z)。可以如上所述地提供堆(未示出)。
堆栈控制227a维护堆栈指针,堆栈指针根据CPU的设计被初始化到在构建时未分配的RAM部分的顶部或底部(例如,到变量),并初始化指向堆栈末尾的指针以指向未分配的RAM的另一端。每当指向堆栈的末尾的堆栈指针被设置(最初地或被更改),则计算用于堆栈使用警告和用于错误的阈值,并且在该阈值会被超过时调用错误函数。
在操作系统中,用户定义独立可执行根函数238是可以抢占或被抢占的那些实体。然而,为了保证基本系统任务优先于用户定义独立可执行根函数,最高优先级应被保留以用于调度器226和操作系统225内部的根函数。用户定义独立可执行根函数238是未被实现为无限循环并且在此再次被称为“根函数”的那些。根函数基于调度器226中,并且这些根函数238可以调用总是返回它们的根的分支子例程。每个根函数238具有由用户配置的优先级。每个根函数238具有由操作系统维护的状态。状态可以是几个,但至少是“准备运行”、“挂起”和“空闲”的状态。一般来说,状态包括以下:
1.Idle—根函数无工作要执行,并且无需被执行。
2.RunNextPass-在空闲根函数下一次执行之后,根函数变为ReadyToRun;这种状态对基于优先级的调度是有意义的,因为使用轮询调度(上面讨论的),这与ReadyToRun的行为相同。
3.ReadyToRun—当轮到它发生时,根函数需要被执行。
4.Pended—根函数等待数据,并当数据变得可用时将被执行;当处于这种状态时调度例程不会开始执行。
5.Runing—主动地或者通过被抢占被动地执行根函数。
6.Killed—由于错误条件(其不再能被执行)而终止的已链接的根函数。
注意,后链接函数被简单地移除,因此,从来不需要进入此状态。
空闲根函数230是由调度器226执行的根函数。每当没有其它用户定义独立可执行根函数238正在执行,调度器226执行空闲根函数。空闲根函数230是最低优先级的根函数。结合执行空闲根函数230,调度器226将处于RunNextPass状态中的任何用户定义独立可执行根函数238的状态改变为处于状态ReadyToRun状态,并且服务看门狗定时器228。如果不执行空闲根函数,则调度器226可以运行得比看门狗到期的时间段更长。
堆栈227具有抢占式“堆栈深度”的被配置的最大深度,以确保由OS使用的堆栈深度是有界的,因为无法执行下面指定的根函数238将简单地导致根函数进入“准备运行(ready to run)”状态。在这种情况下,最糟糕的情况是,通过不被放置在堆栈上,简单地导致优先级反转,直到活动(当前执行的)根函数238返回并且其寄存器值从堆栈227弹出。
现在暂时参考图9A,在本实施例中,需要返回根函数238。因此,根函数238没有睡眠状态。相反,根函数238被构造为具有内部状态机238a,使得例如根函数238可以返回到“挂起”或“空闲”的状态,并且下一次根函数238被唤醒时,唤醒的根函数的内部状态机239a确定根函数退出的位置,并使得到适当的代码239b的分支继续执行。根函数238a还具有由用户配置的优先级239c。
现在参考图10,调度器226进程250根据优先级来遍历252所有根函数,并且将根据优先级来执行处于“准备运行”的状态中的任何根函数。调度器可以以轮询方式从最高优先级根函数到最低优先级根函数来配置遍历,或者可以将遍历配置为在执行任何根函数之后在新的最高优先级的根函数处开始。方法任务232被提供以请求254执行根函数。方法任务232检查256当前是否正在执行任何根函数,并且如果是,则检查258请求的根函数是否具有比执行的根函数更高的优先级。如果没有当前运行的根函数或者空闲的根函数正在运行,则该方法执行264请求函数。方法任务还检查262是否还未达到堆栈中的抢占的最大深度。如果还未达到最大深度,则执行264请求的根函数;否则将请求的根函数放置266在“准备运行”的状态,并返回268。
在执行期间,操作系统225在抢占期间禁用中断,使得序列被有效地原子化并防止根函数被部分启动并且由于抢占而处于无效状态。通过禁用中断,避免了诸如信号量的使用之类的信令技术,这将使ISR的抢占的逻辑极大地复杂化。
执行可以按照以下发生:
时间到期(Time Expiration)变为当前时间加上根函数的配置的最大运行时间加上执行调用和返回序列所需的开销时间。根函数被抢占地调用,并且然后收集抢占的根函数的统计数据的函数被采样为累计统计数据。接下来是任何抢占的根函数,以确定执行函数的计数,并且如果该计数超过根函数的配置的最大数量,则日志记录错误,并且根函数的调用停止。否则,如果适当,存储抢占的最大数量的值被更新,以反映同时抢占的根函数的最大数量。用于抢占的根函数抢占的时间成为当前时间,并且调用的根函数的指针变为指向抢占式根函数正在抢占的根函数的ROM描述符的指针。
返回到图9,调度器226直接调用该方法,并且任何根函数可以同样地直接调用该方法。另外,该方法可以被产生作为请求在将来使根函数执行一定数量的计时器滴答(timer tick)的方法。
队列234由根函数238共享。在该示例中,示出了来自根函数238z、238i和238r的数据。根函数允许从将数据写入队列234以用于消费者根函数的执行根函数中指定接收根函数作为队列234中的数据的消费者,在该示例中可以是产生根函数238z,写入数据用于消费根函数238k等。消耗根函数检查是否处于“挂起”状态,并且如果被更改为“准备运行”,则如上所述地该消费者的执行发生。
系统心跳计时器236被实现为计时器滴答,以用作调度器226的心跳。系统心跳计时器236对根函数的唤醒请求进行倒计数,并且当倒计数到零时,将相关联的根函数置于“准备运行”的状态。
包装器240用于中断服务例程(ISR),使得在ISR时,调度器226退出,IRS被调用以影响比运行的(如果有的话)优先级高的任何和所有根函数的执行。如本文所使用的,包装器240是软件库或调用处理ISR的方法的计算机程序中的包装器函数或子程序。否则,调度器226强制重入根函数从处于“准备运行”状态的最高优先级根函数进行调度。定时器滴答被包装,并且执行具有足够优先级的任何唤醒的根函数。
看门狗定时器228被提供并被周期性地初始化。看门狗定时器228在建立调度器时由调度器226指定的配置时间段处到期。在硬实时操作系统(RTOS)的实现中,对最低可能的优先级的根函数进行服务,并且只有当调度器遇到该根函数时,看门狗定时器228才进行服务,从而在看门狗定时器228的时间约束内强制执行处于“准备运行”状态的所有根函数,其中时间约束是在构建时在调度器226中确定的。
每个根函数238配置有最大允许执行时间(ta-tc...tz),并且在调用时,被调用的根函数的最大允许执行时间被添加到那时的当前时间。调用的根函数的最大允许执行时间和那时的当前时间的总和与根函数的状态和堆栈227上的其它变量数据一起保存。该值被调整用于被抢占(由方法任务232实现以请求执行根函数)和ISR(在其包装器240中实现)。
如果超过了活动根函数的配置时间,则系统心跳计时器236检查活动根函数(如果有的话),并且由活动根函数的调度器226引起“停止”。
因此,利用正常的操作,配置使得看门狗定时器228从不触发。由于在优先抢占被要求时系统心跳定时器236的终止(以及任何其它ISR)时调度器226的调用,因此可以计算确定性最差情况调度。
图11示出了具有关于图1描述的WSN的特征并且具有本文所述的各种函数的安全系统的示例。如图11所示,相关处理从某些受约束节点(尽管这些也可以是完全功能节点)接收输入。这些输入可以包括凭证信息和视频信息,并且相关处理可以产生通过网络发送的相关结果。上下文管理处理从某些受约束节点(尽管这些节点也可以是完全功能节点)接收输入,例如凭证信息和视频以及分组信息,并且执行上下文处理,其中结果通过网络来发送。网络支持紧急出口指示符的运行;紧急照相机以及分布式规则处理和规则引擎/消息处理。范围扩展器与例如网关一起使用,并且实时定位系统从所示的各种传感器(例如,受约束类型)接收输入。服务器通过云计算配置接口连接到WSN,并且一些网络的一部分可以作为子网来运行。
除了在传感器范围内的区域中检测到某物的指示之外,传感器还提供可用于评估该指示可能是什么的详细的附加信息,而不需要入侵检测面板来执行对特定传感器的输入的广泛分析。
例如,运动检测器可以被配置为分析在房间中移动的温暖主体的热特征,以确定主体是人还是宠物的主体。该分析的结果将是传达有关检测的主体的信息的消息或数据。因此,各种传感器被用于以适当的组合来感测声音、运动、振动、压力、热量、图像等,以检测入侵检测面板上的真实或已验证的报警状况。
识别软件可用于区分作为人类的对象和作为动物的对象;进一步的面部识别软件可以内置于视频照相机并且用于验证周边入侵是识别的授权个人的结果。这样的视频照相机将包括处理器和存储器以及用于处理照相机的输入(捕获的图像)并产生元数据的识别软件,该元数据传达关于由视频照相机捕获的个体的识别的信息或缺乏该识别的信息。该处理还可以替代地或附加地包括关于由视频照相机捕获/监视的区域中的个人的特征的信息。因此,根据情况,信息将是给出了周边入侵的特征的、从对传感器的输入执行增强的分析的增强的运动检测器和视频照相机接收到的元数据,或由寻求建立对象的识别的非常复杂的处理得到的元数据。
传感器设备可以集成多个传感器来生成更复杂的输出,使得入侵检测面板可以利用其处理能力来执行如下的算法,该算法通过构建虚拟图像或环境签名来分析环境,以便对违规的有效性做出明智的决定。
存储器存储入侵检测面板的处理器使用的程序指令和数据。存储器可以是随机存取存储器和只读存储器的适当组合,并且可以托管合适的程序指令(例如,固件或操作软件),并且配置和操作数据可以被组织为文件系统或其它。存储的程序指令可以包括用于认证一个或多个用户的一个或多个认证进程。存储在面板的存储器中的程序指令可以进一步存储允许网络通信和建立到数据网络的连接的软件组件。软件组件可以例如包括因特网协议(IP)栈,以及用于包括接口和键盘在内的各种接口的驱动器组件。适用于建立连接和跨网络通信的其它软件组件对于普通技术人员将是清楚的。
存储在存储器中的程序指令以及配置数据可以控制面板的整体操作。
监视服务器包括一个或多个处理设备(例如,微处理器),网络接口和存储器(未全部示出)。监视服务器可以物理地采取机架安装卡的形式,并且可以与一个或多个操作员终端(未示出)通信。示例监视服务器是SURGARD SG-System III Virtual或类似的系统。
每个监视服务器的处理器充当每个监视服务器的控制器,并且与每个服务器通信,并控制每个服务器的整体操作。处理器可以包括存储处理器可执行指令的存储器,或者与该存储器通信,该处理器可执行指令控制监视服务器的整体操作。合适的软件使每个监视服务器能够接收警报并引起适当的动作的发生。软件可以包括适当的因特网协议(IP)栈和应用/客户端。
中央监视站的每个监视服务器可以与IP地址和一个或多个端口相关联,通过IP地址和一个或多个端口,其与控制面板和/或用户设备通信以处理报警事件等。监视服务器地址可能是静态的,因此总是识别入侵检测面板的特定一个监视服务器。可替代地,可以使用动态地址,并且与静态域名关联,通过域名服务来解析。
网络接口卡与网络接口连接以接收传入信号,并且可以例如采用以太网接口卡(NIC)的形式。这些服务器可以是计算机、瘦客户端等,代表报警事件的接收数据被传递给这些服务器以用于人类操作员进行处理。监视站可以进一步包括或访问包括数据库引擎控制下的数据库的订户数据库。该数据库可以包含对应于对面板的各种订户设备/处理的条目,该面板像是由监视站服务的面板。
本文描述的全部或部分处理及其各种修改(以下称为“处理”)可以至少部分地通过计算机程序产品(即有形地体现在一个或多个有形的物理硬件存储设备中的、用于由数据处理装置(例如,可编程处理器,计算机或多台计算机)执行或控制数据处理装置的操作的计算机程序)来实现,所述一个或多个有形的物理硬件存储设备是计算机和/或机器可读存储设备。计算机程序可以以任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式部署,包括作为独立程序或模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署为在一个计算机上,或者在一个站点处或跨多个站点分布并由网络互连的多个计算机上执行。
与实现所述处理相关联的动作可由执行一个或多个计算机程序以执行校准处理的功能的一个或多个可编程处理器执行。全部或部分处理可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)和/或ASIC(专用集成电路)。
适用于执行计算机程序的处理器包括例如通用和专用微处理器以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储区域或随机存取存储区域或两者接收指令和数据。计算机(包括服务器)的元件包括用于执行指令的一个或多个处理器和用于存储指令和数据的一个或多个存储区域设备。通常,计算机还将包括或可操作地耦接以从一个或多个机器可读存储介质(诸如用于存储数据的大容量存储设备,例如磁盘、磁光学盘或光学盘)接收数据或向其传送数据或者进行这两者。
适用于体现计算机程序指令和数据的有形的物理硬件存储设备包括所有形式的非易失性存储器,包括例如半导体存储区域设备(例如,EPROM、EEPROM)和闪存存储区域设备;磁盘,例如内部硬盘或可移除盘;磁光盘;和CD-ROM和DVD-ROM盘和易失性计算机存储器,例如RAM,诸如静态和动态RAM,以及可擦除存储器,例如闪存。
此外,附图中所示的逻辑流程不需要所示的特定顺序或序列顺序来实现期望的结果。此外,可以从所描述的流程提供其它动作,或者可以从所描述的流程消除动作,并且可以向所描述的系统添加或移除其它组件。类似地,附图中描绘的动作可以由不同的实体执行或被合并。
本文描述的不同实施例的元素可以组合以形成上面没有具体阐述的其它实施例。元素可能不在本文所述的处理、计算机程序、网页等中,而不会对其操作产生不利影响。此外,各种独立的元素可以组合成一个或多个单独元素以执行本文所述的功能。
本文中未具体描述的其它实现也在所附权利要求的范围内。
Claims (18)
1.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读硬件存储设备上,所述计算机程序产品用于管理受约束的计算设备,所述计算机程序产品包括使处理器执行以下操作的指令:
根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过所述处理器从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行,用于调度的所述指令进一步使得所述处理器:
将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;
通过如下指令来抢占当前运行的用户定义独立可执行函数,该指令将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的所述单个堆栈上,将当前运行的用户定义独立可执行函数的状态数据在所述堆栈中向下推低;
执行所述特定的用户定义独立可执行函数;以及
在执行所述特定的用户定义独立可执行函数之后从堆栈中弹出当前运行的用户定义独立可执行函数的那些寄存器值。
2.根据权利要求1所述的计算机程序产品,其中,所述计算机程序产品是用于在受约束设备上执行的实时操作系统的一部分。
3.根据权利要求1所述的计算机程序产品,其中,调度指令通过直接调用用于所述特定的用户定义独立可执行函数的包装器函数来调用抢占。
4.根据权利要求15所述的计算机程序产品,其中,所述调度指令通过中断服务例程来调用抢占,并且通过指令来标记当前运行的用户定义独立可执行函数以用于从中断返回时执行。
5.根据权利要求1所述的计算机程序产品,其中,所述堆栈保存用于所有的用户定义独立可执行函数、中断服务例程和操作系统例程的寄存器值。
6.根据权利要求1所述的计算机程序产品,其中,使用由编译器生成的代码将用于任何被抢占的用户定义独立可执行函数、中断服务例程和操作系统例程的保存的寄存器值保存在堆栈上。
7.根据权利要求19所述的计算机程序产品,其中,当新的函数完成运行并返回时,所述新的函数的所有堆栈使用被弹出并且当前运行的函数恢复运行。
8.一种在计算系统中执行的方法,所述计算系统包括处理器和存储器,所述方法包括:
根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过所述计算系统中的处理器从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行;
通过所述处理器将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;
通过所述处理器通过以下操作来抢占当前运行的用户定义独立可执行函数:将所述特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的所述单个堆栈上,将当前运行的用户定义独立可执行函数的状态数据在堆栈中向下推低;
通过所述处理器执行所述特定的用户定义独立可执行函数;以及
通过所述处理器,在所述特定的用户定义独立可执行函数被执行之后从堆栈中弹出当前运行的用户定义独立可执行函数的那些寄存器值。
9.根据权利要求8所述的方法,其中,所述方法在受约束设备上的实时操作系统环境中执行。
10.根据权利要求8所述的方法,其中,调度还包括:
通过直接调用用于所述特定的用户定义独立可执行函数的包装器函数来调用抢占。
11.根据权利要求8所述的方法,其中,调度还包括:
通过中断服务例程调用抢占,以标记当前运行的用户定义独立可执行函数以用于在从所述中断返回时执行。
12.根据权利要求8所述的方法,其中,所述堆栈保存用于所有用户定义独立可执行函数、中断服务例程和操作系统例程的寄存器值。
13.根据权利要求12所述的方法,其中,使用由编译器生成的代码将用于任何被抢占的用户定义独立可执行函数、中断服务例程和操作系统例程的保存的寄存器值保存在堆栈上。
14.根据权利要求13所述的方法,其中,当新的函数完成运行并返回时,所述新的函数的所有堆栈使用被弹出并且当前运行的函数恢复运行。
15.一种受约束设备,包括:
处理器设备,被配置为:
根据用户定义独立可执行函数相对于其它的用户定义独立可执行函数的可用性和优先级,通过处理器从所有的用户定义独立可执行函数公用的单个堆栈调度用户定义独立可执行函数以进行执行,所述处理器还被配置为:
将特定的用户定义独立可执行函数识别为准备运行,所述用户定义独立可执行函数比当前运行的用户定义独立可执行函数优先级高;
通过如下指令来抢占当前运行的用户定义独立可执行函数,该指令将特定的用户定义独立可执行函数放置在具有用于当前运行的用户定义独立可执行函数的寄存器值的所述单个堆栈上,将当前运行的用户定义独立可执行函数的状态数据在所述堆栈中向下推低;
执行所述特定的用户定义独立可执行函数;以及
在执行特定的用户定义独立可执行函数之后从堆栈中弹出当前运行的用户定义独立可执行函数的那些寄存器值。
16.根据权利要求15所述的设备,还包括:
用于感测物理状况的传感器元件,所述传感器元件将用于处理的数据发送到处理设备,所述处理设备将一个或多个用户定义独立可执行函数应用于所述数据。
17.根据权利要求15所述的设备,还包括:
网络接口,用于将所述设备接口连接到网络。
18.根据权利要求15所述的设备,还包括:
存储设备,存储包括指令的计算机程序产品,所述指令配置所述处理器设备以调度用户定义独立可执行函数以进行执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/585,353 | 2014-12-30 | ||
US14/585,353 US9280389B1 (en) | 2014-12-30 | 2014-12-30 | Preemptive operating system without context switching |
PCT/US2015/068001 WO2016109627A1 (en) | 2014-12-30 | 2015-12-30 | Preemptive operating system without context switching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107209669A true CN107209669A (zh) | 2017-09-26 |
CN107209669B CN107209669B (zh) | 2021-07-27 |
Family
ID=55410426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580075133.8A Active CN107209669B (zh) | 2014-12-30 | 2015-12-30 | 无上下文切换的抢占式操作系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9280389B1 (zh) |
EP (1) | EP3241108A4 (zh) |
CN (1) | CN107209669B (zh) |
WO (1) | WO2016109627A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145700A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 用户进程抢占方法、装置、设备及计算机存储介质 |
WO2023283872A1 (en) * | 2021-07-15 | 2023-01-19 | Intel Corporation | System management mode runtime resiliency manager |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6427055B2 (ja) * | 2015-03-31 | 2018-11-21 | 株式会社デンソー | 並列化コンパイル方法、及び並列化コンパイラ |
US10896138B2 (en) * | 2016-05-27 | 2021-01-19 | Apple Inc. | Dynamically controlling random access memory retention in a wireless device |
KR102120868B1 (ko) * | 2017-08-09 | 2020-06-09 | 삼성전자주식회사 | 서비스형 함수(FaaS)를 제공하는 시스템 및 그 동작방법 |
US11507524B2 (en) * | 2018-09-30 | 2022-11-22 | Mazen Arakji | RTOS/OS architecture for context switching that solves the diminishing bandwidth problem and the RTOS response time problem using unsorted ready lists |
US11734051B1 (en) * | 2020-07-05 | 2023-08-22 | Mazen Arakji | RTOS/OS architecture for context switching that solves the diminishing bandwidth problem and the RTOS response time problem using unsorted ready lists |
US20220350645A1 (en) * | 2021-04-28 | 2022-11-03 | EMC IP Holding Company, LLC | Queue Management System and Method |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031838A1 (en) * | 2004-08-06 | 2006-02-09 | Rabih Chrabieh | Method and apparatus for implementing priority management of computer operations |
KR101037981B1 (ko) * | 2008-12-30 | 2011-05-31 | 대구대학교 산학협력단 | 원격 코드 업데이트가 용이한 무선 센서 노드용 운영체제 구현방법 |
CN102833812A (zh) * | 2012-08-31 | 2012-12-19 | 哈尔滨工业大学深圳研究生院 | 一种面向混合业务的无线传感器网络能量有效接入方法 |
CN103713948A (zh) * | 2013-12-30 | 2014-04-09 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
US8739176B1 (en) * | 2010-03-05 | 2014-05-27 | Sumner E. Darling | Task-driven multitasking method that constrains task suspension to task preemption |
CN106664316A (zh) * | 2014-02-28 | 2017-05-10 | 泰科消防及安全有限公司 | 受限的设备和支持操作系统 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5414812A (en) | 1992-03-27 | 1995-05-09 | International Business Machines Corporation | System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem |
US5613114A (en) * | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
US6658234B1 (en) | 1995-06-02 | 2003-12-02 | Northrop Grumman Corporation | Method for extending the effective dynamic range of a radio receiver system |
EP0913999B1 (en) | 1996-02-02 | 2005-10-05 | Thomson Consumer Electronics, Inc. | Copy management method |
US6112237A (en) | 1996-11-26 | 2000-08-29 | Global Maintech, Inc. | Electronic monitoring system and method for externally monitoring processes in a computer system |
US6134634A (en) * | 1996-12-20 | 2000-10-17 | Texas Instruments Incorporated | Method and apparatus for preemptive cache write-back |
US6766515B1 (en) * | 1997-02-18 | 2004-07-20 | Silicon Graphics, Inc. | Distributed scheduling of parallel jobs with no kernel-to-kernel communication |
US6418460B1 (en) * | 1997-02-18 | 2002-07-09 | Silicon Graphics, Inc. | System and method for finding preempted threads in a multi-threaded application |
US6119215A (en) | 1998-06-29 | 2000-09-12 | Cisco Technology, Inc. | Synchronization and control system for an arrayed processing engine |
US6771385B1 (en) | 1999-03-03 | 2004-08-03 | Konica Corporation | Method of using a server connected with a network and a server system |
WO2001006401A1 (en) | 1999-07-15 | 2001-01-25 | Pinpoint Corporation | Method and apparatus for mobile tag reading |
US7176808B1 (en) | 2000-09-29 | 2007-02-13 | Crossbow Technology, Inc. | System and method for updating a network of remote sensors |
GB0027863D0 (en) | 2000-11-15 | 2000-12-27 | Bligh Maurice | Emergency floor lighting system |
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
JP2003288237A (ja) | 2002-03-27 | 2003-10-10 | Hitachi Ltd | 制御装置における実行時間測定装置及び実行時間測定方法 |
US7899915B2 (en) | 2002-05-10 | 2011-03-01 | Richard Reisman | Method and apparatus for browsing using multiple coordinated device sets |
US20040090329A1 (en) | 2002-10-28 | 2004-05-13 | Hitt Dale K. | RF based positioning and intrusion detection using a wireless sensor network |
US20040109059A1 (en) | 2002-11-12 | 2004-06-10 | Kevin Kawakita | Hybrid joint photographer's experts group (JPEG) /moving picture experts group (MPEG) specialized security video camera |
AU2003210799A1 (en) | 2003-01-20 | 2004-08-23 | Futuretel Digital Imaging, Llc | Mpeg adaptive motion digital video (scss) security system |
US9032404B2 (en) * | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) * | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7433648B2 (en) | 2003-12-31 | 2008-10-07 | Symbol Technologies, Inc. | System and a node used in the system for wireless communication and sensory monitoring |
US7808906B2 (en) | 2004-07-23 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements |
JP2006048174A (ja) | 2004-07-30 | 2006-02-16 | A・T・Gジャパン株式会社 | ホームセキュリティシステム |
WO2006020658A1 (en) | 2004-08-09 | 2006-02-23 | Johnny Yau | Method and apparatus for ad hoc mesh routing |
US7908020B2 (en) | 2004-12-24 | 2011-03-15 | Donald Pieronek | Architecture for control systems |
US8156500B2 (en) | 2005-07-01 | 2012-04-10 | Microsoft Corporation | Real-time self tuning of planned actions in a distributed environment |
US20070058634A1 (en) | 2005-09-09 | 2007-03-15 | Vipul Gupta | Interaction with wireless sensor devices |
US8081955B2 (en) * | 2005-10-20 | 2011-12-20 | Research In Motion Limited | Managing content to constrained devices |
US9037152B1 (en) | 2005-11-12 | 2015-05-19 | Alberto Herrera | Small footprint real-time operating system for reactive systems |
US8581720B2 (en) * | 2005-11-17 | 2013-11-12 | Utc Fire & Security Americas Corporation, Inc. | Methods, systems, and computer program products for remotely updating security systems |
US7688808B2 (en) | 2006-03-21 | 2010-03-30 | Tropos Networks, Inc. | Mobile access node routing selections through a mesh network |
US20070239350A1 (en) | 2006-04-07 | 2007-10-11 | Zumsteg Philip J | Multi-function tracking device with robust asset tracking system |
US8738013B2 (en) | 2006-04-24 | 2014-05-27 | Marvell World Trade Ltd. | 802.11 mesh architecture |
US8149849B2 (en) | 2006-08-31 | 2012-04-03 | Sony Ericsson Mobile Communications Ab | Zigbee/IP gateway |
US20080068267A1 (en) | 2006-09-14 | 2008-03-20 | Huseth Steve D | Cost effective communication infrastructure for location sensing |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US8861367B2 (en) | 2006-12-13 | 2014-10-14 | Tropos Networks, Inc. | Deletion of routes of routing tables of a wireless mesh network |
US20080204267A1 (en) | 2007-02-28 | 2008-08-28 | Honeywell International, Inc. | Detector/Module Integrated Emergency Signs |
US7966660B2 (en) | 2007-05-23 | 2011-06-21 | Honeywell International Inc. | Apparatus and method for deploying a wireless network intrusion detection system to resource-constrained devices |
US8559344B2 (en) | 2007-06-29 | 2013-10-15 | Alcatel Lucent | Method and apparatus for dynamically creating and updating base station neighbor lists |
US7663692B2 (en) | 2007-07-17 | 2010-02-16 | Hai-Chin Chang | Infrared close-circuit television camera |
US8385322B2 (en) | 2007-07-30 | 2013-02-26 | Innovative Wireless Technologies, Inc. | Distributed ad hoc network protocol using synchronous shared beacon signaling |
US8068491B2 (en) | 2008-02-13 | 2011-11-29 | Telcordia Technologies, Inc. | Methods for reliable multicasting in local peer group (LPG) based vehicle ad hoc networks |
US20090222921A1 (en) | 2008-02-29 | 2009-09-03 | Utah State University | Technique and Architecture for Cognitive Coordination of Resources in a Distributed Network |
FR2929781B1 (fr) | 2008-04-04 | 2011-09-02 | Thales Sa | Station relais a double radio. |
TWI389063B (zh) | 2008-07-22 | 2013-03-11 | Ge Investment Co Ltd | 逃生指示燈以及逃生指示系統 |
US8020160B2 (en) * | 2008-07-28 | 2011-09-13 | International Business Machines Corporation | User-level read-copy update that does not require disabling preemption or signal handling |
EP2321983B1 (en) | 2008-09-04 | 2018-05-09 | Trilliant Networks, Inc. | Method for implementing mesh network communications using a mesh network protocol |
US8578153B2 (en) | 2008-10-28 | 2013-11-05 | Telefonaktiebolaget L M Ericsson (Publ) | Method and arrangement for provisioning and managing a device |
TWI491300B (zh) | 2009-06-10 | 2015-07-01 | 皇家飛利浦電子股份有限公司 | 無線網路系統、使用於一無線網路系統中之加入器件、用於委任一無線網路系統之方法及電腦程式產品 |
CN102933892A (zh) | 2010-04-15 | 2013-02-13 | 伊格内斯莱特有限公司 | 带投射方向指示的应急照明系统 |
US20110310791A1 (en) | 2010-06-22 | 2011-12-22 | Qualcomm Incorporated | Automatic neighbor relation (anr) functions for relay nodes, home base stations, and related entities |
US8832428B2 (en) | 2010-11-15 | 2014-09-09 | Trilliant Holdings Inc. | System and method for securely communicating across multiple networks using a single radio |
FR2974264B1 (fr) | 2011-04-14 | 2014-01-17 | Thales Sa | Station emettrice/receptrice pour former un noeud d'un reseau de telecommunication et procede de telecommunication associe |
US8572290B1 (en) | 2011-05-02 | 2013-10-29 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | System and architecture for robust management of resources in a wide-area network |
US9337913B2 (en) | 2011-06-15 | 2016-05-10 | Celeno Communications Ltd. | Repeater for enhancing performance of a wireless LAN network |
US9384193B2 (en) * | 2011-07-15 | 2016-07-05 | International Business Machines Corporation | Use and enforcement of provenance and lineage constraints |
US20130055282A1 (en) | 2011-08-22 | 2013-02-28 | Samsung Electronics Co., Ltd. | Task management method for embedded systems |
US20130086195A1 (en) | 2011-09-29 | 2013-04-04 | Siemens Industry, Inc. | DEVICE AND METHOD FOR ENABLING BACnet COMMUNICATION FOR WIRED AND WIRELESS DEVICES OPERABLE WITHIN A BUILDING AUTOMATION SYSTEM |
US20130239192A1 (en) | 2012-03-09 | 2013-09-12 | RAPsphere, Inc. | Method and apparatus for securing mobile applications |
EP2841963A4 (en) | 2012-04-24 | 2016-05-25 | Iloc Technologies Inc | APPARATUSES AND METHODS FOR GEOLOCATING A PERSON IN RELATION TO A PERIMETER |
US20130336230A1 (en) | 2012-06-14 | 2013-12-19 | Alcatel-Lucent Usa Inc. | Methods and apparatus for opportunistic offloading of network communications to device-to-device communication |
US9270520B2 (en) | 2012-08-17 | 2016-02-23 | Illinois Tool Works Inc. | Wireless communication network sensor information for control of industrial equipment in harsh environments |
CN203057531U (zh) | 2012-09-05 | 2013-07-10 | 江南大学 | 一种基于ZigBee网络的多网关传输系统 |
US9135062B2 (en) * | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
US9906608B2 (en) * | 2013-04-30 | 2018-02-27 | International Business Machines Corporation | Intelligent adaptation of mobile applications based on constraints and contexts |
-
2014
- 2014-12-30 US US14/585,353 patent/US9280389B1/en active Active
-
2015
- 2015-12-30 CN CN201580075133.8A patent/CN107209669B/zh active Active
- 2015-12-30 EP EP15876227.8A patent/EP3241108A4/en not_active Withdrawn
- 2015-12-30 WO PCT/US2015/068001 patent/WO2016109627A1/en active Application Filing
-
2016
- 2016-01-27 US US15/007,383 patent/US9910701B2/en active Active
-
2017
- 2017-12-28 US US15/856,223 patent/US10402221B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031838A1 (en) * | 2004-08-06 | 2006-02-09 | Rabih Chrabieh | Method and apparatus for implementing priority management of computer operations |
KR101037981B1 (ko) * | 2008-12-30 | 2011-05-31 | 대구대학교 산학협력단 | 원격 코드 업데이트가 용이한 무선 센서 노드용 운영체제 구현방법 |
US8739176B1 (en) * | 2010-03-05 | 2014-05-27 | Sumner E. Darling | Task-driven multitasking method that constrains task suspension to task preemption |
CN102833812A (zh) * | 2012-08-31 | 2012-12-19 | 哈尔滨工业大学深圳研究生院 | 一种面向混合业务的无线传感器网络能量有效接入方法 |
CN103713948A (zh) * | 2013-12-30 | 2014-04-09 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
CN106664316A (zh) * | 2014-02-28 | 2017-05-10 | 泰科消防及安全有限公司 | 受限的设备和支持操作系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145700A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 用户进程抢占方法、装置、设备及计算机存储介质 |
WO2023283872A1 (en) * | 2021-07-15 | 2023-01-19 | Intel Corporation | System management mode runtime resiliency manager |
Also Published As
Publication number | Publication date |
---|---|
CN107209669B (zh) | 2021-07-27 |
US9910701B2 (en) | 2018-03-06 |
EP3241108A4 (en) | 2018-08-22 |
WO2016109627A1 (en) | 2016-07-07 |
US10402221B2 (en) | 2019-09-03 |
US20180136969A1 (en) | 2018-05-17 |
US9280389B1 (en) | 2016-03-08 |
EP3241108A1 (en) | 2017-11-08 |
US20160188366A1 (en) | 2016-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209669A (zh) | 无上下文切换的抢占式操作系统 | |
US10854059B2 (en) | Wireless sensor network | |
EP3111588B1 (en) | Constrained device and supporting operating system | |
US7747556B2 (en) | Query-based notification architecture | |
US20090222921A1 (en) | Technique and Architecture for Cognitive Coordination of Resources in a Distributed Network | |
CN107071052A (zh) | 一种给物联网设备提供云后端服务的装置、系统和方法 | |
Cheng et al. | Modeling and optimization for collaborative business process towards IoT applications | |
Aguzzi et al. | From cloud to edge: Seamless software migration at the era of the web of things | |
Zhang et al. | On-demand deployment for IoT applications | |
CN100428154C (zh) | 基于曼迪斯的无线传感器网络移动代理平台的开发方法 | |
Margheri et al. | Linguistic abstractions for programming and policing autonomic computing systems | |
Usman et al. | Design Time Considedrations for Cyber Physical Systems | |
Banouar et al. | Analytical model for adaptive qos management at the middleware level in iot | |
Jovanovic et al. | Middleware for dynamic reconfiguration in distributed camera systems | |
WO2015131012A2 (en) | Distributed rules engines for robust sensor networks | |
CN116954887A (zh) | 一种进程管理方法和相关装置 | |
Vitorino et al. | Middleware for wireless sensor networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |