一种实时操作系统定时器实现方法与流程

文档序号:28161751发布日期:2021-12-24 20:18阅读:244来源:国知局
一种实时操作系统定时器实现方法与流程

1.本发明属于操作系统技术领域,尤其涉及一种实时操作系统定时器实现方法。


背景技术:

2.当前正处于5g、人工智能、边缘计算、物联网、大数据快速发展的信息化时代,国家明确表示要“加强新型基础设施建设”,国家要求各行业向运行更安全、管理更精益、投资更精准、服务更优质等方向开辟新路,同时充分发挥各行业独特优势,开拓数字经济市场。
3.研发统一的操作系统平台可以满足系统安全性,并提供更优通用的功能组件及系统服务,设备厂商可以更专注于产品业务研发,缩短产品开发周期,节约开发成本,统一操作系统标准,使用一体化管理平台,支持对设备进行统一升级管理,设备维护更方便,维护成本更低。
4.操作系统的核心部分,主要包括内核系统中对象的实现:多进程及调度、信号量、邮箱、消息队列、定时器、事件、内存管理以及硬件密切相关的芯片移植、外设驱动、板级支持包等。操作系统需要通过时间来规范其任务的运行,操作系统中最小的时间单位是时钟节拍(sys tick),任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间相关的任务,如进程延时、进程时间片轮转调度以及定时器超时等。
5.定时器是指从指定的时刻开始,经过一定的指定时间后触发一个事件。定时器分为硬件定时器和软件定时器。硬件定时器是芯片本身提供的定时功能,芯片硬件定时器模块向软件提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时钟中断;软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时服务,定时器操作的高效性对操作系统具有重要意义。
6.因此,如何提供一种快速高效的操作系统软件定时器模块是本技术领域人员亟待解决的技术问题。


技术实现要素:

7.针对现有技术的不足,本发明的目的是提供一种实时操作系统定时器实现方法,以解决现有技术中定时器操作效率低的问题。
8.为了解决上述技术问题,本发明采用了如下的技术方案:
9.本发明提供了一种实时操作系统定时器实现方法,包括以下步骤:
10.s10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断所述时钟节拍sys_tick加1;
11.s20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到所述内核对象容器中进行管理;
12.s30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
13.s40、使用增加索引的方法加快搜索所述定时器链表sys_timer_list中定时器的
速度。
14.进一步的,所述时钟节拍sys_tick随着所述硬件定时器的触发一直增加,当与定时器的timeout值相等时,就会触发并运行与定时器相关联的超时函数,同时将定时器从所述定时器链表sys_timer_list中移除。
15.进一步的,所述步骤s30中所有定时器在定时超时后都会从所述定时器链表sys_timer_list中移除,周期性定时器再次启动时会再次被加入所述定时器链表sys_timer_list中。
16.进一步的,所述步骤s20中内核对象容器中的管理包括创建并初始化定时器、启动定时器、运行定时器、停止定时器和删除定时器。
17.进一步的,所述步骤s20中定时器控制块中含有定时器相关的参数,包括初始时间节拍数、超时节拍数、超时回调函数和定时器之间连接用的链表结构。
18.进一步的,所述步骤s40中增加索引方法的动态数据结构支持查找操作和动态插入、删除操作。
19.进一步的,所述动态插入、删除操作的时间复杂度为o(logn)。
20.进一步的,通过一个随机函数维持所述索引与原始链表之间大小平衡。
21.进一步的,所述时钟节拍sys_tick是特定的周期性中断。
22.本发明提供的一种实时操作系统定时器实现方法与现有技术相比,至少具有如下有益效果:
23.本发明可快速高效的实现操作系统定时器模块,方法简单,适用性强,稳定可靠。
附图说明
24.为了更清楚地说明本发明的方案,下面将对实施例描述中所需要使用的图作一个简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1为本发明实施例提供的一种实时操作系统定时器实现方法的流程图;
26.图2为本发明实施例提供的一种实时操作系统定时器实现方法的定时器链表示意图;
27.图3为本发明实施例提供的一种实时操作系统定时器实现方法的定时器相关操作图;
28.图4为本发明实施例提供的一种实时操作系统定时器实现方法的有序链表索引及多级索引示意图。
具体实施方式
29.除非另有定义,本文所使用的所有技术和科学术语与属于本发明技术领域的技术人员通常理解的含义相同;本文在说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明,例如,术语“长度”、“宽度”、“上”、“下”、“左”、“右”、“前”、“后”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置为基于附图所示的方位或位置,仅是便于描述,不能理解为对本技术方案的限制。
30.本发明的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它
们的任何变形,意图在于覆盖不排他的包含;本发明的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书及上述附图说明中,当元件被称为“固定于”或“安装于”或“设置于”或“连接于”另一个元件上,它可以是直接或间接位于该另一个元件上。例如,当一个元件被称为“连接于”另一个元件上,它可以是直接或间接连接到该另一个元件上。
31.此外,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
32.本发明提供了一种实时操作系统定时器实现方法,用于操作系统软件定时器模块,所述实时操作系统定时器实现方法包括以下步骤:
33.s10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断时钟节拍sys_tick加1;
34.s20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到内核对象容器中进行管理;
35.s30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
36.s40、使用增加索引的方法加快搜索定时器链表sys_timer_list中定时器的速度。
37.本发明可快速高效的实现操作系统定时器模块,方法简单,适用性强,稳定可靠。
38.为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
39.本发明提供了一种实时操作系统定时器实现方法,用于操作系统软件定时器模块,如图1所示,本实施例中,所述实时操作系统定时器实现方法包括:
40.s10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断时钟节拍sys_tick加1;
41.微控制单元mcu提供一个精准的硬件定时器产生时钟节拍,时钟节拍是特定的周期性中断;
42.s20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到内核对象容器中进行管理;
43.定时器控制块中含有定时器相关的重要参数,在定时器各种状态间起到纽带的作用。包括初始时间节拍数,超时节拍数,超时回调函数,定时器之间连接用的链表结构等信息;
44.对定时器的管理操作包含:创建并初始化定时器、启动定时器、运行定时器、停止定时器、删除定时器,所有定时器在定时超时后都会从定时器链表 sys_timer_list中移除,周期性定时器会在它再次启动时被加入定时器链表 sys_timer_list中;
45.s30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
46.s40、使用增加索引的方法加快搜索定时器链表sys_timer_list中定时器的速度。
47.增加索引方法的动态数据结构支持查找操作和动态插入、删除操作,而且动态插
入、删除操作的时间复杂度都为o(logn),效率极高。
48.进一步的,本实施例中,时钟节拍sys_tick随着所述硬件定时器的触发一直增加,当与定时器的timeout值相等时,就会触发并运行与定时器相关联的超时函数,同时将定时器从所述定时器链表sys_timer_list中移除。
49.进一步的,本实施例中,需要维护索引与原始链表大小之间的平衡,通过一个随机函数,来决定将这个结点插入到哪几级索引中,比如随机函数生成了值k,就将这个结点添加到第一级到第k级索引中。随机函数的选择很有讲究,从概率上来讲,能够保证链表的索引大小和数据大小平衡性,不至于性能过度退化。
50.本实施例中,如图2所示,系统当前时钟节拍sys_tick值为100,在当前系统中创建并启动了三个定时器,定时时间分别为130个tick的timer#1、200个 tick的timer#2和550个tick的timer#3,这三个定时器分别加上系统当前时间 sys_tick=100,从按小到大排序链接在sys_timer_list链表中,形成如图2所示的定时器链表结构。
51.本实施例中,如图3所示,对定时器的操作包含:创建并初始化定时器、启动定时器、运行定时器、停止定时器、控制定时器、删除定时器。所有定时器在定时超时后都会从定时器链表中移除,周期性定时器会在它再次启动时被加入定时器链表,在每次操作系统时钟中断发生时,都会对已经超时的定时器状态参数做改变。
52.本实施例中,如图4所示,对sys_timer_list有序链表建立索引,索引可以放在链表中,从链表的头结点开始,每n个元素取第一个元素放到索引链表中,索引链表的结点中保存了元素值和指向原始链表中值地址的指针,这个索引叫做一级索引,可以在一级索引的基础上,建立二级、三级索引等。
53.以上实施例所述的一种实时操作系统定时器实现方法,实现了操作系统定时器快速查找、插入、删除,特别针对目前轻量级实时操作系统,对实时性要求相对较高的应用场合,该方法适用性强、占用资源少、软件实现简单、稳定可靠。
54.显然,以上所描述的实施例仅仅是本发明较佳实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1