CN101848549B - 无线传感器网络节点任务调度方法 - Google Patents
无线传感器网络节点任务调度方法 Download PDFInfo
- Publication number
- CN101848549B CN101848549B CN2010101635901A CN201010163590A CN101848549B CN 101848549 B CN101848549 B CN 101848549B CN 2010101635901 A CN2010101635901 A CN 2010101635901A CN 201010163590 A CN201010163590 A CN 201010163590A CN 101848549 B CN101848549 B CN 101848549B
- Authority
- CN
- China
- Prior art keywords
- task
- operating system
- sensor network
- wireless sensor
- instruction
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
无线传感器网络节点任务调度方法,该方法基于无线传感器网络专用操作系统实现,所述的专用操作系统包括一种二进制代码翻译工具和一种操作系统内核,其中二进制代码翻译工具运行在基站节点上,提供对应用程序的预处理;操作系统内核运行在传感节点上,提供一系列内核服务;两者共同作用,实现传感节点中的抢占式多任务调度;本发明克服现有技术的不足,在传感节点这样的硬件条件下,实现类似于传统操作系统的分时、并发、抢占式多任务调度功能。每个任务在执行时有独立的时间片,时间片信息由操作系统进行维护,任务无需主动让出执行权,操作系统自动将时间片用完的任务挂起,并切换到其他任务,从而满足应用程序的多任务需求。
Description
技术领域
本发明主要属于无线传感器网络系统软件技术领域,特指一种应用于无线传感器网络操作系统的抢占式多任务调度方法。
背景技术
无线传感器网络近年来已在各个领域得到了越来越广泛的应用。无线传感器网络通常包括了大量的传感节点和少量的基站节点,由前者采集数据,并以无线传输的方式发送到后者进行汇总和分析。传感节点通常由传感器、处理器、无线通信部件、电源等几个部分组成。其中处理器作为整个传感节点的核心,一般采用价格、能耗均较低的单片机,以降低成本、减小体积,并且能够用普通干电池驱动,便于大规模部署。作为一种典型的传感节点,美国的Crossbow公司制造的MICA2节点采用8位的ATMega128L单片机作为处理器,不支持特权指令、虚地址保护等现代微处理器的常见功能。
随着无线传感器网络的深入应用,其软件系统日趋复杂。单一任务的应用程序在很多情况下已经很难满足要求,需要有传感节点专用的操作系统,支持多任务并发执行。比如一个传感节点可能既需要执行环境监测的任务,同时还要对传感器网络自身的连通程度进行监测,两个任务相互独立,不能彼此影响。
在这种情况下,无线传感器网络中硬件的简单性和软件的复杂性形成了矛盾。传统操作系统能够很好的支持抢占式多任务调度,但需要通过硬件支持,确保时钟中断不被屏蔽,从而能够定期执行调度程序。而传感节点的处理器过于简单,传统操作系统(包括VxWorks等嵌入式操作系统)中常用的技术都不能直接应用于无线传感器网络,或者即使采用传统技术,也具有较大的局限性。
TinyOS(http://www.tinyos.net)是目前在无线传感器网络中应用最广泛的专用操作系统。TinyOS通过在编程语言层面上的封装,隐藏了多种硬件平台的细节,大大简化了无线传感器网络应用程序开发的难度。但考虑到传感节点的硬件限制,TinyOS的任务调度是非抢占式的,每个任务必须在恰当的时候主动让出执行权,否则其他任务无法得到执行。这样简单的多任务模型仅能满足最基本的要求,对于较复杂的应用,会大大增加程序开发人员的负担。
C.Duffy,U.Roedig,J.Herbert,et al.Adding preemption to TinyOS.InProceedings of the 4th workshop on Embedded networked sensors,pages88-92.2007.
由于TinyOS的不足,这篇论文试图在TinyOS的基础上增加抢占式调度的功能,各个任务可以有不同的优先级,优先级较高的任务能够抢占优先级较低的任务,但优先级最高的任务仍然无法被抢占,如果这样的任务不主动让出执行权,其他任务仍然无法得到执行。
S.Bhatti,J.Carlson,H.Dai,et al.MANTIS OS:an embeddedmultithreaded operating system for wireless micro sensor platforms.In MobileNetwork Applications.10(4):563-579,2005.
A.Dunkels,B.Gronvall,and T.Voigt.Contiki-a lightweight and flexibleoperating system for tiny networked sensors.In Proceedings of the 29thAnnual IEEE International Conference on Local Computer Networks,pages455-462.2004.
A.Eswaran,A.Rowe,and R.Rajkumar.Nano-RK:An energy-awareresource-centric RTOS for sensor networks.In Proceedings of the 26th IEEEInternational Real-Time Systems Symposium,pages 256-265,2005.
H.Cha,S.Choi,I.Jung,H.Kim,et al.RETOS:resilient,expandable,andthreaded operating system for wireless sensor networks.In Proceedings ofthe 6th international conference on Information processing in sensornetworks,pages 148-157.ACM,2007.
上述几篇论文从不同的角度,设计并实现了MANTIS OS等几种支持抢占式多任务的无线传感器网络专用操作系统,但其多任务的实现方式都采用了与传统计算机类似的技术,即依靠时钟中断执行调度程序,并且假设应用程序不会屏蔽中断。而目前很多传感器网络应用程序恰恰需要依靠屏蔽中断来确保独占式访问硬件,不能满足这一基本假设。也就是说,由于硬件限制,传统操作系统中的技术即使应用于传感节点中,仍然存在难以弥补的缺陷。
Lin Gu and John A.Stankovic.t-kernel:providing reliable OS support towireless sensor networks.In Proceedings of the 4th international conferenceon embedded networked sensor systems,pages 1-14.ACM,2006
这篇论文采用代码翻译技术实现面向传感节点的任务调度方法,操作系统在应用程序被传感节点加载后,对关键指令进行翻译,确保操作系统能够随时抢占应用程序的执行,并且大多数非关键指令的执行仍然不受影响,从而提高了速度。但传感节点的硬件过于简单,使得其翻译能力受限,难以进行全局分析和优化。因此只能令操作系统抢占应用程序的执行,而不能实现真正的抢占式多任务调度。
P.Levis and David Culler.Maté:a virtual machine for tiny networkedsensors.In Proceedings of the 10th international conference on ArchitecturalSupport for Programming Languages and Operating Systems.2002.
这篇论文采用了语言级虚拟机的方法,设计了一套虚拟指令集,并把应用程序全部编译为使用该指令集的二进制代码,通过解释执行上述代码,能够确保应用程序的执行始终受到操作系统的直接控制。但这种逐指令解释的方法严重影响了执行性能,实验表明,应用程序该操作系统中执行的速度比一般的传感节点专用操作系统慢两个数量级以上。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种无线传感器网络专用操作系统中的任务调度方法,在传感节点这样的硬件条件下,实现类似于传统操作系统的分时、并发、抢占式多任务调度功能。每个任务在执行时有独立的时间片,时间片信息由操作系统进行维护,任务无需主动让出执行权,操作系统自动将时间片用完的任务挂起,并切换到其他任务,从而满足应用程序的多任务需求。
本发明的技术解决方案是:无线传感器网络节点任务调度方法,该方法基于无线传感器网络专用操作系统实现,所述的专用操作系统包括一种二进制代码翻译工具和一种操作系统内核,其中二进制代码翻译工具运行在基站节点上,提供对应用程序的预处理;操作系统内核运行在传感节点上,提供一系列内核服务;两者共同作用,实现传感节点中的抢占式多任务调度;其主要步骤如下:
(1)对无线传感器网络应用程序进行编译,生成二进制执行代码和符号表;
(2)将上述生成的二进制执行代码和符号表集中到基站节点上进行代码分析和翻译,所述的代码分析和翻译过程如下:
(2.1)二进制代码翻译工具通过分析符号表,识别每个应用程序所包含的二进制执行代码和内联数据,并对二进制执行代码和内联数据进行分离;
(2.2)对二进制执行代码进行反编译,扫描其指令序列,识别所有可能改变CPU执行流程的敏感指令,包括跳转和调用指令、内联数据读写指令、休眠指令和中断指令,并将上述敏感指令修改为调用内核服务的指令;
(3)将经过分析和翻译的所有应用程序与操作系统内核共同进行链接,形成二进制代码映像文件,并分发至传感节点开始运行,运行阶段包括下列步骤:
(3.1)应用程序的执行实例被称为任务,当任务执行到被修改的跳转和调用指令时,调用相应的内核服务,内核服务统计每个任务的时间片,判断是否需要切换任务,若不需要进行任务切换,则恢复任务的执行,否则,进行下一步;
(3.2)内核服务挂起当前任务,自动保存当前任务的状态信息,并恢复即将执行的任务的状态信息,切换到该任务;
(3.3)当任务执行到被修改的内联数据读写指令时,内核服务动态计算其内联数据的实际地址,并进行读写访问;
(3.4)当任务执行到被修改的休眠指令时,内核服务会挂起当前任务,选择其他任务继续执行,直到没有合适的任务可以运行时,将传感节点置于休眠状态;
(3.5)当执行过程中发生中断时,内核服务依次调用每个任务的中断处理例程。
所述步骤(2)代码翻译过程中内存地址产生偏移,采用偏移表记录翻译过程中发生偏移的内存地址,内核服务在运行时,利用查找偏移表的方法计算偏移前后的程序内存地址对应关系。
所述步骤(3.1)根据时间片轮转的调度算法统计每个任务的时间片并判断是否需要切换任务。
所述步骤(3.2)在切换任务时,内核服务把所有的通用寄存器、必要的I/O寄存器和其他的任务状态信息一起进行保存,并在任务恢复执行时,对上述状态信息进行恢复。
所述步骤(3.2)利用行程编码算法对当前任务的状态信息采用环形队列结构进行压缩保存和恢复。
所述步骤(3.2)中恢复即将执行的任务的状态信息时,可能造成环形队列不连续,出现内存碎片的问题,需进行碎片整理。
如果检测到内存碎片,则评估将碎片左侧所有状态信息右移、或者将右侧所有状态信息左移的代价,并选择其中代价较小者进行移动操作,从而消除碎片。
本发明的原理是:由于传感节点的硬件过于简单,使其操作系统的能力受到了很大限制,无法对应用程序进行有效的翻译。而通常传感器网络的应用程序是由基站节点分发到传感节点的,基站节点一般使用通用计算机构建,具有丰富的硬件资源。如果基站节点在分发应用程序之前即对其关键代码进行分析和翻译,传感节点仅仅负责执行翻译后的代码,则能够在基站节点上进行更彻底的分析,从而实现更复杂、更完备的功能。具体来说,一方面基站节点的内存空间足够大,能够将传感节点上的应用程序一次性载入内存,在对其中关键指令进行修改的过程中,不会受到内存空间的限制,而且代码翻译效率更高。另一方面,基站节点上的信息更充分,不仅包括应用程序代码,还可以根据编译过程中产生的符号表信息,准确识别代码中的内联数据,避免误修改。通过上述方法,不仅能实现完整的抢占式多任务调度等功能,也避免了在传感节点上进行代码翻译带来的计算能力和电能的消耗。
本发明与现有技术相比有益效果为:
(1)利用基站节点的硬件资源,对应用程序的二进制代码进行高效的翻译,翻译的过程不消耗有限的传感节点的资源,翻译后的代码在执行时的时间和空间开销较小。实验表明,与非抢占式调度的操作系统如TinyOS相比,执行效率仅降低不到20%。与全解释执行的语言级虚拟机如Maté相比,执行效率提高1-2个数量级。
(2)其他基于代码翻译的无线传感器网络专用操作系统往往需要占用传感节点的资源,对未修改的代码进行备份,并把内联数据的访问重定向到未修改的代码中。本发明利用符号表,在基站节点上即可准确区分执行代码和内联数据,从根本上防止误修改。并能自动处理翻译前后程序内存地址发生的偏移。
(3)采用共享环形队列和行程编码的方式,以较小的内存开销保存多个任务的状态,并支持对环形队列中内存碎片的检测和整理。实验表明,在MICA2节点上仅需大约50个字节即可保存一个任务的状态。应用程序不需要考虑任务切换和状态保存,有效降低了应用程序的开发难度。
(4)全面兼容大量已有的TinyOS应用程序,不需要重新开发。并且支持多个独立的应用程序以分时的方式在同一个传感节点上执行,进一步增加了无线传感器网络应用程序的灵活性。
附图说明
图1为目前常见的TinyOS应用程序的开发、发布和执行的总体过程;
图2为采用本发明进行无线传感器网络应用程序开发、发布和执行的总体过程;
图3为本发明基站节点将应用程序中的关键指令修改为调用内核服务,从而实现抢占式任务调度的示例;
图4为本发明重新构造中断向量表,由相应的内核服务把多个任务的中断处理例程连接执行的过程;
图5为本发明采用环形队列保存经过行程编码的任务状态的过程。
具体实施方式
为方便叙述,下面以常用的MICA2传感节点为例进行说明。该节点采用8位ATMega128L单片机,其硬件结构的简单性使得通用操作系统无法适用。因此,开源的操作系统和开发平台TinyOS成为了事实标准。目前的无线传感器网络应用程序大都面向TinyOS进行开发,其过程大致如下(如图1所示):
(1)利用TinyOS提供的编程环境,在传统计算机上编写应用程序的源代码,编译后形成二进制执行代码。
(2)采用无线传输的方式,通过基站节点,把二进制执行代码分发到各个传感节点。如果传感节点尚未部署或部署后易于回收,也可以采用硬件编程器将二进制执行代码直接写入传感节点。
(3)二进制执行代码在传感节点上以独占方式执行。代码中包含一个或多个轻量级的任务。轻量级的含义是指:任务可以主动让出执行权,但不能被抢占执行。任务在主动让出执行权的时候,其状态必须由任务进行保存,以备之后再次取得执行权的时候恢复状态。
由此可见,虽然TinyOS具有诸多优点,但其任务调度功能过于简单,不能满足无线传感器网络应用程序日益复杂的需求。本发明在无线传感器网络专用操作系统中,设计一种二进制代码翻译工具和一种操作系统内核,系统运行环境是一个基于通用计算机构建的基站节点和多个资源受限的传感节点共同组成的无线传感器网络;其中二进制代码翻译工具运行在基站节点上,提供对应用程序的预处理;操作系统内核运行在传感节点上,提供一系列内核服务;利用二进制代码翻译和操作系统内核的配合,使翻译后的代码能够按照传统操作系统中的抢占式多任务调度方式,以时间片的方式分时执行,并由操作系统内核提供任务挂起时的状态保存和任务恢复执行时的状态恢复等功能。
与现有方式相比,采用本发明的无线传感器网络应用程序开发、发布和执行过程,具有一定的变化(如图2所示),如下所述:
(1)仍然利用TinyOS提供的编程环境,在传统计算机上编写应用程序的源代码,编译后形成二进制执行代码和对应的符号表。
(2)通过基站节点向传感节点分发执行代码。但在分发之前,基站节点结合二进制代码和符号表进行分析,并对二进制代码进行翻译。
(3)翻译后的代码和操作系统内核(已预先编译)进行链接,形成统一的二进制映像文件,并采用已有的分发技术,分发至传感节点。
(4)翻译后的代码在传感节点上执行时的实例即为任务,操作系统内核维护每个任务的时间片,并以分时的方式调度和切换任务的执行。在运行阶段包括下列步骤:
(4.1)当任务执行到被修改的跳转和调用指令时,将会调用相应的内核服务;
(4.2)内核服务按照时间片轮转的算法统计每个任务的时间片,并决定是否需要进行任务切换。如果不需要进行任务切换,则恢复任务的执行,否则,挂起当前任务,并切换到另一个任务;
(4.3)操作系统内核在切换任务时,能够自动保存当前任务的状态信息,并恢复即将执行的任务的状态信息;
(4.4)当任务执行到被修改的内联数据读写指令时,操作系统内核会动态计算其内联数据的实际地址,并进行读写访问。
(4.5)当任务执行到被修改的休眠指令时,操作系统内核将会挂起当前任务,选择其他任务继续执行,直到没有合适的任务可以运行时,才会实际将传感节点置于休眠状态;
(4.6)当执行过程中发生中断时,操作系统内核将会依次调用每个任务的中断处理例程。
对二进制代码进行分析和翻译的具体细节如下:
无线传感器网络应用程序通常会在编译时将所有的常量数据直接插入二进制执行代码之中,并与执行代码一起发布到传感节点。我们称这样的数据为内联数据。编译完成后,仅依靠二进制执行代码无法识别出其中的内联数据,而如果把内联数据也当作机器指令进行修改,则有可能破坏其原有内容,使程序无法正常运行。对于这一问题,目前使用二进制代码翻译的传感节点操作系统通常会把所有未修改的二进制代码(包括内联数据)全部复制一份,并在运行时将对内联数据的访问重定向到未经修改的二进制代码中。这种方法需要消耗大量程序内存,对于资源受限的传感节点来说,往往难以接受。本发明利用基站节点进行二进制代码翻译,由于基站节点的资源充足,可以在翻译代码的同时,分析其对应的符号表,从而准确识别和分离内联数据,避免误修改。
为保证执行性能,在二进制代码翻译的过程中,代码中的大部分内容并不进行修改。需要修改的内容包括:
(1)跳转和调用指令:包括相对跳转、直接跳转、间接跳转以及对应的相对、直接、间接调用指令。需要把这些指令修改为一条调用内核服务的指令,在此内核服务中,会更新任务的时间片,并根据时间片轮转的调度算法判断是否需要切换任务。执行完毕上述调度逻辑后,将会跳转到原有的跳转或调用目标地址。如图3所示。上述时间片轮转调度算法为传统的调度算法,为本领域技术人员的公知常识,这里不再进行赘述。
(2)内联数据读写指令:由于程序内存地址可能产生偏移,需要对内联数据读写指令进行修改,使其调用内核服务例程,在运行时计算和调整其目标地址,具体的偏移产生原因和计算过程在下文中详述。
(3)休眠指令:该指令会将传感节点置于休眠状态,直到发生中断的时候才被唤醒,以达到省电的目的。在多任务系统中,需要把该指令修改为一条向操作系统内核主动请求切换其他任务的调用指令,直到没有合适的任务可以运行时,才会实际将传感节点置于休眠状态。
(4)中断向量表:由于每个任务是单独开发和编译的,其中断向量表各有不同。需要重新设置一个中断向量表,把每个需要处理的中断都指向相应的内核服务,在运行时由内核服务判断各个任务的中断处理例程是否存在、是否打开,并依次调用相应的中断处理例程。如图4所示,图中ISR代表中断处理例程(Interrupt Service Routine)。
值得注意的是,上述二进制代码翻译的过程可能会导致程序内存地址产生偏移。偏移源于两个方面:一方面,由于每个任务都是独立编译的,编译器总是为其分配从程序内存的起始地址开始的空间,而实际上,在多任务环境中需要对各个任务所占用的程序内存进行调整,使其互不交叉。另一方面,由于代码翻译时会将一条指令替换为保存和恢复寄存器、调用内核服务等多条指令,导致程序内存占用量变大,从而令后续指令产生偏移。
由于程序内存地址产生偏移,对于操作系统内核来说,需要在执行内联数据读写指令,以及间接跳转指令时,计算偏移前后的程序内存地址对应关系。为了使偏移规整化,从而便于计算,本发明在修改指令时,会将保存和恢复寄存器等程序逻辑移至程序内存末端,并把被修改的指令替换为一个调用上述程序逻辑的指令,如图3所示。对于使用ATMega128L单片机的MICA2传感节点,被修改的指令通常占用2个字节,而修改后的调用指令需要占用4个字节,因此仍然会产生2个字节的偏移,但由于偏移量总是2个字节,其计算过程可以大大简化。本发明将每个发生偏移的地址按顺序依次记录下来,称为偏移表。对于任意程序内存地址,其偏移量总是相当于该地址在偏移表中所处位置,乘以每次偏移的2个字节。通过对顺序的偏移表进行二分查找,能够快速计算某个地址在偏移表中的位置,进而计算出其偏移后的地址。
操作系统内核与经过翻译的应用程序在传感节点上运行的细节如下:
对于抢占式任务调度来说,应用程序并不负责保存其执行状态,而需要操作系统内核在任务切换的时候进行保存和恢复。执行状态包括通用寄存器、I/O寄存器和其他的状态信息,对于采用ATMega128L单片机的MICA2传感节点来说,这些信息总共需约90-100字节来保存,而传感节点仅有4KB数据内存。如果在一个传感节点上并发执行6个任务,其执行状态就需要占用大约14%的数据内存,这对于资源受限的传感节点来说是难以接受的。本发明采用基本的行程编码算法对任务的执行状态进行压缩保存,实践表明,对于大部分应用程序其压缩率均可达到50%左右,因而降低了内存开销。
但是,采用压缩方式保存任务状态,也会由于压缩率的不同,导致每个任务的状态大小不一,无法为其分配固定大小的存储空间。因此,本发明设计了一种环形队列结构对其进行保存,该结构为所有任务状态分配统一的、共享的存储空间,并由系统内核维护每个任务的状态在队列中的保存位置。当任务切换时,将被挂起的任务的状态保存在队列尾,同时将需要执行的任务的状态从队列中取出。由于压缩率的不同,也有可能出现环形队列的空间不足,无法容纳全部任务的状态信息的情况。这时,操作系统内核将自动结束当前任务,保证其他任务仍然能够正常运行。
本发明在现有的实现过程中采用了最基本的时间片轮转调度算法,即为每个任务分配固定长度的执行时间片,并按照固定的顺序轮流执行。对于这种调度算法来说,在任务切换时,将要执行的任务的状态总是位于队列头部。但是,根据实际需求,本发明也可以采用其他调度算法(例如带优先级的时间片轮转调度算法等等),此时可能出现将要执行的任务的状态不在队列头部的情况,进而导致环形队列中所保存的任务状态信息不连续,出现难以利用的“碎片”,如图5所示。为了解决这一问题,本发明在操作系统内核中设计了相应的碎片检测和整理机制,当任务的状态信息从环形队列中恢复的时候,操作系统内核会检测其左右两端是否有其他任务的状态信息,如果检测到,则评估将左侧所有状态信息右移、或者将右侧所有状态信息左移的代价,并选择其中代价较小者进行移动操作,以消除环形队列中的碎片。
本发明未详细说明部分属于本领域技术人员公知常识。
Claims (7)
1.无线传感器网络节点任务调度方法,其特征在于:该方法基于无线传感器网络专用操作系统实现,所述的专用操作系统包括一种二进制代码翻译工具和一种操作系统内核,其中二进制代码翻译工具运行在基站节点上,提供对应用程序的预处理;操作系统内核运行在传感节点上,提供一系列内核服务;两者共同作用,实现传感节点中的抢占式多任务调度;其主要步骤如下:
(1)对无线传感器网络应用程序进行编译,生成二进制执行代码和符号表;
(2)将上述生成的二进制执行代码和符号表集中到基站节点上进行代码分析和翻译,所述的代码分析和翻译过程如下:
(2.1)二进制代码翻译工具通过分析符号表,识别每个应用程序所包含的二进制执行代码和内联数据,并对二进制执行代码和内联数据进行分离;
(2.2)对二进制执行代码进行反编译,扫描其指令序列,识别所有可能改变CPU执行流程的敏感指令,包括跳转和调用指令、内联数据读写指令、休眠指令和中断指令,并将上述敏感指令修改为调用内核服务的指令;
(3)将经过分析和翻译的所有应用程序与操作系统内核共同进行链接,形成二进制代码映像文件,并分发至传感节点开始运行,运行阶段包括下列步骤:
(3.1)应用程序的执行实例被称为任务,当任务执行到被修改的跳转和调用指令时,调用相应的内核服务,内核服务统计每个任务的时间片,判断是否需要切换任务,若不需要进行任务切换,则恢复任务的执行,否则,进行下一步;
(3.2)内核服务挂起当前任务,自动保存当前任务的状态信息,并恢复即将执行的任务的状态信息,切换到该任务;
(3.3)当任务执行到被修改的内联数据读写指令时,内核服务动态计算其内联数据的实际地址,并进行读写访问;
(3.4)当任务执行到被修改的休眠指令时,内核服务会挂起当前任务,选择其他任务继续执行,直到没有合适的任务可以运行时,将传感节点置于休眠状态;
(3.5)当执行过程中发生中断时,内核服务依次调用每个任务的中断处理例程。
2.根据权利要求1所述的无线传感器网络节点任务调度方法,其特征在于:所述步骤(2)代码翻译过程中内存地址产生偏移,采用偏移表记录翻译过程中发生偏移的内存地址,内核服务在运行时,利用查找偏移表的方法计算偏移前后的程序内存地址对应关系。
3.根据权利要求1所述的无线传感器网络节点任务调度方法,其特征在于:所述步骤(3.1)根据时间片轮转的调度算法统计每个任务的时间片并判断是否需要切换任务。
4.根据权利要求1所述的无线传感器网络节点任务调度方法,其特征在于:所述步骤(3.2)在切换任务时,内核服务把所有的通用寄存器、必要的I/O寄存器和其他的任务状态信息一起进行保存,并在任务恢复执行时,对上述状态信息进行恢复。
5.根据权利要求1所述的无线传感器网络节点任务调度方法,其特征在于:所述步骤(3.2)利用行程编码算法对当前任务的状态信息采用环形队列结构进行压缩保存和恢复。
6.根据权利要求1所述的无线传感器网络节点任务调度方法,其特征在于:所述步骤(3.2)中恢复即将执行的任务的状态信息,当采用带优先级的时间片轮转调度算法时,造成环形队列不连续,出现内存碎片的问题,需进行碎片整理。
7.根据权利要求6所述的无线传感器网络节点任务调度方法,其特征在于:如果检测到内存碎片,则评估将碎片左侧所有状态信息右移、或者将右侧所有状态信息左移的代价,并选择其中代价较小者进行移动操作,从而消除碎片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101635901A CN101848549B (zh) | 2010-04-29 | 2010-04-29 | 无线传感器网络节点任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101635901A CN101848549B (zh) | 2010-04-29 | 2010-04-29 | 无线传感器网络节点任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101848549A CN101848549A (zh) | 2010-09-29 |
CN101848549B true CN101848549B (zh) | 2012-06-20 |
Family
ID=42772965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101635901A Expired - Fee Related CN101848549B (zh) | 2010-04-29 | 2010-04-29 | 无线传感器网络节点任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101848549B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163163A (zh) * | 2010-12-17 | 2011-08-24 | 北京凯思昊鹏软件工程技术有限公司 | 无线传感器网络传感器小节点操作系统及其实现方法 |
CN102740393A (zh) * | 2012-07-13 | 2012-10-17 | 南京邮电大学 | 一种基于动态规划的无线传感器网络路由方法 |
CN104022963B (zh) * | 2014-01-02 | 2017-06-13 | 烽火通信科技股份有限公司 | 多种通信方式并存的通信方法及装置 |
CN106470228B (zh) * | 2015-08-19 | 2020-12-15 | 研祥智能科技股份有限公司 | 网络通信方法和系统 |
US10817224B2 (en) * | 2016-06-23 | 2020-10-27 | Qualcomm Incorporated | Preemptive decompression scheduling for a NAND storage device |
CN107820276B (zh) * | 2017-10-27 | 2019-09-20 | 北京邮电大学 | 一种无线传感器任务分配方法 |
CN112559141B (zh) * | 2019-09-26 | 2024-04-30 | 上海亮衡信息科技有限公司 | 任务切换方法、装置、计算机设备及存储介质 |
CN111158919B (zh) * | 2020-01-20 | 2020-09-22 | 北京一流科技有限公司 | 内存资源原地共享决策系统及其方法 |
CN115168060B (zh) * | 2022-09-08 | 2023-05-16 | 深圳比特微电子科技有限公司 | 神经网络处理器npu调度方法和计算机存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195676B1 (en) * | 1989-12-29 | 2001-02-27 | Silicon Graphics, Inc. | Method and apparatus for user side scheduling in a multiprocessor operating system program that implements distributive scheduling of processes |
CN101425917A (zh) * | 2007-10-29 | 2009-05-06 | 吉林市曼博科技有限公司 | 一种用于无线传感器网络的休眠调度方法 |
-
2010
- 2010-04-29 CN CN2010101635901A patent/CN101848549B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195676B1 (en) * | 1989-12-29 | 2001-02-27 | Silicon Graphics, Inc. | Method and apparatus for user side scheduling in a multiprocessor operating system program that implements distributive scheduling of processes |
CN101425917A (zh) * | 2007-10-29 | 2009-05-06 | 吉林市曼博科技有限公司 | 一种用于无线传感器网络的休眠调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101848549A (zh) | 2010-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101848549B (zh) | 无线传感器网络节点任务调度方法 | |
US11500778B2 (en) | Prefetch kernels on data-parallel processors | |
ES2933675T3 (es) | Sistemas, métodos y aparatos para informática heterogénea | |
Soares et al. | {FlexSC}: Flexible system call scheduling with {Exception-Less} system calls | |
Mittal | A survey of techniques for architecting and managing asymmetric multicore processors | |
Dubois | Fighting the memory wall with assisted execution | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
US20130246773A1 (en) | Hardware based run-time instrumentation facility for managed run-times | |
Olivier et al. | Hexo: Offloading hpc compute-intensive workloads on low-cost, low-power embedded systems | |
Soares et al. | {Exception-Less} System Calls for {Event-Driven} Servers | |
JP7525101B2 (ja) | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 | |
Honarmand et al. | RelaxReplay: Record and replay for relaxed-consistency multiprocessors | |
Hughes et al. | Memory-side prefetching for linked data structures for processor-in-memory systems | |
Hankins et al. | Multiple instruction stream processor | |
Troester et al. | AMD Next Generation “Zen 4” Core and 4th Gen AMD EPYC™ 9004 Server CPU | |
Gottschlag et al. | Reducing avx-induced frequency variation with core specialization | |
Li et al. | Nextgen-malloc: Giving memory allocator its own room in the house | |
Mowry et al. | Software-controlled multithreading using informing memory operations | |
Chakraborty et al. | Supporting overcommitted virtual machines through hardware spin detection | |
Zheng et al. | Characterizing OS behaviors of datacenter and big data workloads | |
Faravelon | Acceleration of memory accesses in dynamic binary translation | |
Chen et al. | A compiler-assisted runtime-prefetching scheme for heterogeneous platforms | |
Zhou et al. | Cross-layer customization for rapid and low-cost task preemption in multitasked embedded systems | |
Sato et al. | The KIT COSMOS Processor: Introducing CONDOR. | |
Revilla-Duarte et al. | Proactive Load Balancing to Reduce Unnecessary Thread Migrations on Chip Multi-Processor (CMP) Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120620 Termination date: 20140429 |