CN113835851A - 一种实时操作系统定时器实现方法 - Google Patents

一种实时操作系统定时器实现方法 Download PDF

Info

Publication number
CN113835851A
CN113835851A CN202110953871.5A CN202110953871A CN113835851A CN 113835851 A CN113835851 A CN 113835851A CN 202110953871 A CN202110953871 A CN 202110953871A CN 113835851 A CN113835851 A CN 113835851A
Authority
CN
China
Prior art keywords
timer
sys
list
linked list
operating system
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.)
Pending
Application number
CN202110953871.5A
Other languages
English (en)
Inventor
陈超鑫
肖林松
范律
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Willfar Information Technology Co Ltd
Original Assignee
Willfar Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Willfar Information Technology Co Ltd filed Critical Willfar Information Technology Co Ltd
Priority to CN202110953871.5A priority Critical patent/CN113835851A/zh
Publication of CN113835851A publication Critical patent/CN113835851A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying

Abstract

本发明适用于操作系统技术领域,涉及一种实时操作系统定位器实现方法,包括:S10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断时钟节拍sys_tick加1;S20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到内核对象容器中进行管理;S30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;S40、使用增加索引的方法加快搜索定时器链表sys_timer_list中定时器的速度。本发明可快速高效的实现操作系统定时器模块,方法简单,适用性强,稳定可靠。

Description

一种实时操作系统定时器实现方法
技术领域
本发明属于操作系统技术领域,尤其涉及一种实时操作系统定时器实现方法。
背景技术
当前正处于5G、人工智能、边缘计算、物联网、大数据快速发展的信息化时代,国家明确表示要“加强新型基础设施建设”,国家要求各行业向运行更安全、管理更精益、投资更精准、服务更优质等方向开辟新路,同时充分发挥各行业独特优势,开拓数字经济市场。
研发统一的操作系统平台可以满足系统安全性,并提供更优通用的功能组件及系统服务,设备厂商可以更专注于产品业务研发,缩短产品开发周期,节约开发成本,统一操作系统标准,使用一体化管理平台,支持对设备进行统一升级管理,设备维护更方便,维护成本更低。
操作系统的核心部分,主要包括内核系统中对象的实现:多进程及调度、信号量、邮箱、消息队列、定时器、事件、内存管理以及硬件密切相关的芯片移植、外设驱动、板级支持包等。操作系统需要通过时间来规范其任务的运行,操作系统中最小的时间单位是时钟节拍(sys tick),任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间相关的任务,如进程延时、进程时间片轮转调度以及定时器超时等。
定时器是指从指定的时刻开始,经过一定的指定时间后触发一个事件。定时器分为硬件定时器和软件定时器。硬件定时器是芯片本身提供的定时功能,芯片硬件定时器模块向软件提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时钟中断;软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时服务,定时器操作的高效性对操作系统具有重要意义。
因此,如何提供一种快速高效的操作系统软件定时器模块是本技术领域人员亟待解决的技术问题。
发明内容
针对现有技术的不足,本发明的目的是提供一种实时操作系统定时器实现方法,以解决现有技术中定时器操作效率低的问题。
为了解决上述技术问题,本发明采用了如下的技术方案:
本发明提供了一种实时操作系统定时器实现方法,包括以下步骤:
S10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断所述时钟节拍sys_tick加1;
S20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到所述内核对象容器中进行管理;
S30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
S40、使用增加索引的方法加快搜索所述定时器链表sys_timer_list中定时器的速度。
进一步的,所述时钟节拍sys_tick随着所述硬件定时器的触发一直增加,当与定时器的timeout值相等时,就会触发并运行与定时器相关联的超时函数,同时将定时器从所述定时器链表sys_timer_list中移除。
进一步的,所述步骤S30中所有定时器在定时超时后都会从所述定时器链表sys_timer_list中移除,周期性定时器再次启动时会再次被加入所述定时器链表sys_timer_list中。
进一步的,所述步骤S20中内核对象容器中的管理包括创建并初始化定时器、启动定时器、运行定时器、停止定时器和删除定时器。
进一步的,所述步骤S20中定时器控制块中含有定时器相关的参数,包括初始时间节拍数、超时节拍数、超时回调函数和定时器之间连接用的链表结构。
进一步的,所述步骤S40中增加索引方法的动态数据结构支持查找操作和动态插入、删除操作。
进一步的,所述动态插入、删除操作的时间复杂度为O(logn)。
进一步的,通过一个随机函数维持所述索引与原始链表之间大小平衡。
进一步的,所述时钟节拍sys_tick是特定的周期性中断。
本发明提供的一种实时操作系统定时器实现方法与现有技术相比,至少具有如下有益效果:
本发明可快速高效的实现操作系统定时器模块,方法简单,适用性强,稳定可靠。
附图说明
为了更清楚地说明本发明的方案,下面将对实施例描述中所需要使用的图作一个简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种实时操作系统定时器实现方法的流程图;
图2为本发明实施例提供的一种实时操作系统定时器实现方法的定时器链表示意图;
图3为本发明实施例提供的一种实时操作系统定时器实现方法的定时器相关操作图;
图4为本发明实施例提供的一种实时操作系统定时器实现方法的有序链表索引及多级索引示意图。
具体实施方式
除非另有定义,本文所使用的所有技术和科学术语与属于本发明技术领域的技术人员通常理解的含义相同;本文在说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明,例如,术语“长度”、“宽度”、“上”、“下”、“左”、“右”、“前”、“后”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置为基于附图所示的方位或位置,仅是便于描述,不能理解为对本技术方案的限制。
本发明的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含;本发明的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书及上述附图说明中,当元件被称为“固定于”或“安装于”或“设置于”或“连接于”另一个元件上,它可以是直接或间接位于该另一个元件上。例如,当一个元件被称为“连接于”另一个元件上,它可以是直接或间接连接到该另一个元件上。
此外,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明提供了一种实时操作系统定时器实现方法,用于操作系统软件定时器模块,所述实时操作系统定时器实现方法包括以下步骤:
S10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断时钟节拍sys_tick加1;
S20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到内核对象容器中进行管理;
S30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
S40、使用增加索引的方法加快搜索定时器链表sys_timer_list中定时器的速度。
本发明可快速高效的实现操作系统定时器模块,方法简单,适用性强,稳定可靠。
为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供了一种实时操作系统定时器实现方法,用于操作系统软件定时器模块,如图1所示,本实施例中,所述实时操作系统定时器实现方法包括:
S10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断时钟节拍sys_tick加1;
微控制单元MCU提供一个精准的硬件定时器产生时钟节拍,时钟节拍是特定的周期性中断;
S20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到内核对象容器中进行管理;
定时器控制块中含有定时器相关的重要参数,在定时器各种状态间起到纽带的作用。包括初始时间节拍数,超时节拍数,超时回调函数,定时器之间连接用的链表结构等信息;
对定时器的管理操作包含:创建并初始化定时器、启动定时器、运行定时器、停止定时器、删除定时器,所有定时器在定时超时后都会从定时器链表 sys_timer_list中移除,周期性定时器会在它再次启动时被加入定时器链表 sys_timer_list中;
S30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
S40、使用增加索引的方法加快搜索定时器链表sys_timer_list中定时器的速度。
增加索引方法的动态数据结构支持查找操作和动态插入、删除操作,而且动态插入、删除操作的时间复杂度都为O(logn),效率极高。
进一步的,本实施例中,时钟节拍sys_tick随着所述硬件定时器的触发一直增加,当与定时器的timeout值相等时,就会触发并运行与定时器相关联的超时函数,同时将定时器从所述定时器链表sys_timer_list中移除。
进一步的,本实施例中,需要维护索引与原始链表大小之间的平衡,通过一个随机函数,来决定将这个结点插入到哪几级索引中,比如随机函数生成了值K,就将这个结点添加到第一级到第K级索引中。随机函数的选择很有讲究,从概率上来讲,能够保证链表的索引大小和数据大小平衡性,不至于性能过度退化。
本实施例中,如图2所示,系统当前时钟节拍sys_tick值为100,在当前系统中创建并启动了三个定时器,定时时间分别为130个tick的Timer#1、200个 tick的Timer#2和550个tick的Timer#3,这三个定时器分别加上系统当前时间 sys_tick=100,从按小到大排序链接在sys_timer_list链表中,形成如图2所示的定时器链表结构。
本实施例中,如图3所示,对定时器的操作包含:创建并初始化定时器、启动定时器、运行定时器、停止定时器、控制定时器、删除定时器。所有定时器在定时超时后都会从定时器链表中移除,周期性定时器会在它再次启动时被加入定时器链表,在每次操作系统时钟中断发生时,都会对已经超时的定时器状态参数做改变。
本实施例中,如图4所示,对sys_timer_list有序链表建立索引,索引可以放在链表中,从链表的头结点开始,每n个元素取第一个元素放到索引链表中,索引链表的结点中保存了元素值和指向原始链表中值地址的指针,这个索引叫做一级索引,可以在一级索引的基础上,建立二级、三级索引等。
以上实施例所述的一种实时操作系统定时器实现方法,实现了操作系统定时器快速查找、插入、删除,特别针对目前轻量级实时操作系统,对实时性要求相对较高的应用场合,该方法适用性强、占用资源少、软件实现简单、稳定可靠。
显然,以上所描述的实施例仅仅是本发明较佳实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。

Claims (9)

1.一种实时操作系统定时器实现方法,其特征在于,包括以下步骤:
S10、操作系统时钟节拍sys_tick由硬件定时器定时中断管理,每产生一次中断所述时钟节拍sys_tick加1;
S20、定时器控制块由结构体struct sys_timer形成定时器内核对象并链接到所述内核对象容器中进行管理;
S30、将系统新创建并激活的定时器按照以超时时间排序的方式插入到定时器链表sys_timer_list中;
S40、使用增加索引的方法加快搜索所述定时器链表sys_timer_list中定时器的速度。
2.根据权利要求1所述的一种实时操作系统定时器实现方法,其特征在于,所述时钟节拍sys_tick随着所述硬件定时器的触发一直增加,当与定时器的timeout值相等时,就会触发并运行与定时器相关联的超时函数,同时将定时器从所述定时器链表sys_timer_list中移除。
3.根据权利要求2所述的一种实时操作系统定时器实现方法,其特征在于,所述步骤S30中所有定时器在定时超时后都会从所述定时器链表sys_timer_list中移除,周期性定时器再次启动时会再次被加入所述定时器链表sys_timer_list中。
4.根据权利要求2所述的一种实时操作系统定时器实现方法,其特征在于,所述步骤S20中内核对象容器中的管理包括创建并初始化定时器、启动定时器、运行定时器、停止定时器和删除定时器。
5.根据权利要求4所述的一种实时操作系统定时器实现方法,其特征在于,所述步骤S20中定时器控制块中含有定时器相关的参数,包括初始时间节拍数、超时节拍数、超时回调函数和定时器之间连接用的链表结构。
6.根据权利要求2所述的一种实时操作系统定时器实现方法,其特征在于,所述步骤S40中增加索引方法的动态数据结构支持查找操作和动态插入、删除操作。
7.根据权利要求6所述的一种实时操作系统定时器实现方法,其特征在于,所述动态插入、删除操作的时间复杂度为O(logn)。
8.根据权利要求7所述的一种实时操作系统定时器实现方法,其特征在于,通过一个随机函数维持所述索引与原始链表之间大小平衡。
9.根据权里要求1所述的一种实时操作系统定时器实现方法,其特征在于,所述sys_tick是特定的周期性中断。
CN202110953871.5A 2021-08-19 2021-08-19 一种实时操作系统定时器实现方法 Pending CN113835851A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110953871.5A CN113835851A (zh) 2021-08-19 2021-08-19 一种实时操作系统定时器实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110953871.5A CN113835851A (zh) 2021-08-19 2021-08-19 一种实时操作系统定时器实现方法

Publications (1)

Publication Number Publication Date
CN113835851A true CN113835851A (zh) 2021-12-24

Family

ID=78960845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110953871.5A Pending CN113835851A (zh) 2021-08-19 2021-08-19 一种实时操作系统定时器实现方法

Country Status (1)

Country Link
CN (1) CN113835851A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658278A (zh) * 2022-12-07 2023-01-31 中国电子科技集团公司第三十研究所 一种支持高并发协议交互的微任务调度机
CN115934000A (zh) * 2023-03-07 2023-04-07 苏州浪潮智能科技有限公司 一种存储系统的定时方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299193A (zh) * 2008-04-07 2008-11-05 谢维信 一种提高计算机内核定时器控制精度的方法
CN101359294A (zh) * 2008-10-09 2009-02-04 北京佳讯飞鸿电气股份有限公司 一种嵌入式系统定时器的管理方法
CN101859260A (zh) * 2010-05-14 2010-10-13 中国科学院计算技术研究所 用于操作系统中的定时器管理装置和管理方法
CN102103520A (zh) * 2010-12-14 2011-06-22 深圳市金宏威实业发展有限公司 一种定时器的实现方法和装置
CN108845872A (zh) * 2018-06-21 2018-11-20 武汉虹信通信技术有限责任公司 一种用于嵌入式系统的软件定时器实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299193A (zh) * 2008-04-07 2008-11-05 谢维信 一种提高计算机内核定时器控制精度的方法
CN101359294A (zh) * 2008-10-09 2009-02-04 北京佳讯飞鸿电气股份有限公司 一种嵌入式系统定时器的管理方法
CN101859260A (zh) * 2010-05-14 2010-10-13 中国科学院计算技术研究所 用于操作系统中的定时器管理装置和管理方法
CN102103520A (zh) * 2010-12-14 2011-06-22 深圳市金宏威实业发展有限公司 一种定时器的实现方法和装置
CN108845872A (zh) * 2018-06-21 2018-11-20 武汉虹信通信技术有限责任公司 一种用于嵌入式系统的软件定时器实现方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658278A (zh) * 2022-12-07 2023-01-31 中国电子科技集团公司第三十研究所 一种支持高并发协议交互的微任务调度机
CN115934000A (zh) * 2023-03-07 2023-04-07 苏州浪潮智能科技有限公司 一种存储系统的定时方法及相关装置
CN115934000B (zh) * 2023-03-07 2023-06-09 苏州浪潮智能科技有限公司 一种存储系统的定时方法及相关装置

Similar Documents

Publication Publication Date Title
US6976257B2 (en) Context based execution prioritization in Workflow-Management-Systems
CN113835851A (zh) 一种实时操作系统定时器实现方法
CN101452404B (zh) 一种嵌入式操作系统的任务调度装置及方法
CN101178664A (zh) 实时操作系统中的任务调度方法及系统
US20030233392A1 (en) Method and system for managing the execution of threads and the processing of data
US11269692B2 (en) Efficient sequencer for multiple concurrently-executing threads of execution
Rossi et al. Preemption of the partial reconfiguration process to enable real-time computing with FPGAs
CN108875381A (zh) 一种支持内核模块隔离的消息服务模块的设计方案
US8225320B2 (en) Processing data using continuous processing task and binary routine
CN111459622A (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN111475312B (zh) 基于实时操作系统的消息驱动方法和装置
CN102929770A (zh) 嵌入式linux系统用户态任务独占的监测定位方法
Levis et al. Schedulers and tasks
Madl et al. Automatic verification of component-based real-time corba applications
CN204302959U (zh) 一种硬件实时操作系统
Prenzel et al. Real-time dynamic reconfiguration for IEC 61499
CN113094260B (zh) 一种分布式系统时序关系建模与仿真分析方法
CN112286697B (zh) 基于无操作系统单片机平台的互斥资源访问方法
Zuberi et al. EMERALDS: A small-memory real-time microkernel
Harbour Real-time POSIX: an overview
WO2024065186A1 (en) Method for scheduling function block, apparatus for scheduling function block, electronic device, and storage medium
WO1992003794A1 (en) Dual level scheduling of processes
WO2014110701A1 (zh) 独立主动构件和可运行主动构件组装模型及构件拆分方法
US20080181254A1 (en) Data transmission method
JPH02125339A (ja) オペレーティングシステムにおけるプロセス消滅方式

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