CN111984412A - 一种基于信号量机制的用户态定时器实现方法 - Google Patents
一种基于信号量机制的用户态定时器实现方法 Download PDFInfo
- Publication number
- CN111984412A CN111984412A CN202010835405.2A CN202010835405A CN111984412A CN 111984412 A CN111984412 A CN 111984412A CN 202010835405 A CN202010835405 A CN 202010835405A CN 111984412 A CN111984412 A CN 111984412A
- Authority
- CN
- China
- Prior art keywords
- user mode
- timer
- mode timer
- kernel
- management unit
- 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
Links
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于信号量机制的用户态定时器实现方法,用于解决用户态应用程序的定时器超时回调问题。主要包括:内核定时器管理单元;信号量机制;用户态定时器管理单元。采用本发明提供的一种基于信号量机制的用户态定时器实现方法,可以实现内核定时器在定时时间到达之后以用户态模式调用用户态设置的超时回调函数,避免了直接以内核态模式调用用户态回调函数,保护了内核态的安全。
Description
技术领域
本公开涉及嵌入式领域和实时操作系统领域,具体而言是指涉及一种基于信号量机制的用户态定时器实现方法。
背景技术
在传统的嵌入式实时操作系统上,操作系统内核和应用程序都是运行在同一特权级,应用程序中任何一个部分的设计缺陷都会危害整个系统的稳定。所以又出现了应用程序与内核分离的嵌入式实时操作系统,在这种操作系统上,用户态应用程序的设计缺陷不会波及到内核,可以有效地保证操作系统稳定性。
在传统的嵌入式实时操作系统上,定时器的超时回调函数在超时时间到达后被操作系统内核所调用,且与操作系统内核处于同一特权级。但是在应用程序与内核分离的嵌入式实时操作系统上,用户态应用程序如果仍然使用传统的定时器实现方式,将会造成用户态定时器回调函数被操作系统内核以内核同一特权级运行,从而破坏系统稳定性。这里通过一种基于信号量机制的用户态定时器实现方法,使得用户态应用程序的定时器超时函数以用户态应用同一特权级运行,进而避免对内核的隔离保护失效,同时减少系统资源占用。
发明内容
本发明所要解决的技术问题在于提供一种基于信号量机制的用户态定时器实现方法,以解决以低资源占用在用户态安全地实现定时器回调。
本发明提供的实现的一种基于信号量机制的用户态定时器实现方法,包括:
用户态定时器管理单元,其用于管理用户态定时器,并根据用户态定时器设置内核态定时器;
信号量机制,其用于管理程序创建的各种信号量,内核定时器在超时时间达到后通过信号量通知用户态定时器管理单元;
内核态定时器管理单元,其用于实际超时时间的计量,并在超时时通知用户态定时器管理单元。
进一步地,所述的内核态定时器是存在于传统的嵌入式实时操作系统上的。
进一步地,所述的信号量机制是嵌入式实时操作系统所提供的机制。
进一步地,所述的用户态定时器管理单元是实现在用户态的,并通过系统调用控制内核态定时器单元。
进一步地,所述的内核态定时器单元在每一个进程中是仅需要创建一个定时器的。
进一步地,所述的一个进程中是仅需在信号量机制中占用一个信号量的。
进一步地,所述的用户态定时器管理单元在每一个进程中是可以存在多个的。
附图说明
为了更加清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单介绍,应当理解,以下附图仅仅示出了本公开的某些实施例,因此不应被看作是对本发明的限定,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取前提相关的附图。
图1为本发明具体实施方式的实现方法的框架图。
图2为本发明具体实施方式的运行过程的流程图。
图3为本发明具体实施方式的在运行过程中用户态定时器、信号量机制以及内核态定时器关系示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。提供的实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而仅仅表示本发明的选定实施例。基于本发明的实施例,本领域的普通技术人员在没有做出创造性劳动的前提下所有获得的前提实施例,都属于本发明保护的范围。
本发明实施例提供一种基于信号量机制的用户态定时器实现方法说明,如图1所示,该方法由是用户态定时器管理单元11、信号量机制12、内核态定时器单元13组成。
用户态定时器管理单元11,其用于管理用户态定时器,并通过系统调用设置内核态定时器;
信号量机制12,其用于管理程序创建的各种信号量,内核定时器在超时时间达到后通过信号量通知用户态定时器管理单元;
内核态定时器单元13,其用于实际超时时间的计量,并在超时时通过信号量机制释放信号量通知用户态定时器管理单元。
图2基于信号量机制的用户态定时器运行过程的流程图。所述流程从步骤S201开始。
在步骤S201中,在使用之前,用户态进程会对用户态定时器管理单元进行初始化,包括创建定时器线程,创建一个对应的内核定时器,创建用于通知定时器线程的信号量、用于多线程保护的互斥锁,初始化用户态定时器链表,最后启动定时器线程。
在步骤S202中,用户态应用程序在用户态定时器管理单元中创建一个定时器并设置一个超时回调函数。
在步骤S203中,用户态应用程序启动步骤S202中创建的用户态定时器,此时用户态定时器管理单元计算所有已经启动的定时器中最近一次触发的超时时间,将内核定时器的超时时间设置为最近的超时时间,此时定时器线程等待获取到信号量。
在步骤S204中,内核定时器在超时时间达到后,执行内核态的超时回调函数,释放信号量,唤醒用户态定时器线程。
在步骤S205中,用户态定时器线程取出超时间最近的定时器的回调函数并执行。
在步骤S206,在用户态定时器回调函数执行完毕后,用户态定时器线程更新所有用户态定时器的超时时间,把内核定时器的超时时间设置为最近的超时时间,如果没有活动的定时器则关闭内核定时器。
在步骤S207,用户态定时器线程等待获取到信号量,等到下一次超时时间到达。
图3为基于信号量机制的用户态定时器在运行过程中用户态定时器、信号量机制以及内核态定时器关系示意图。所述流程从步骤S301开始。
在步骤S301中,展示的是用户态进程的结构;
在步骤S302中,展示的是与步骤S301同样的用户态进程,表示支持多个进程使用用户态定时器;
在步骤S303中,展示的是用户态定时器管理单元,负责管理用户态定时器,同时根据用户态定时器的超时情况设置内核定时器,每个进程有一个用户态定时器管理单元;
在步骤S304中,展示的是用户态定时器,一个用户态定时器管理单元管理多个用户态定时器;
在步骤S305中,展示的是信号量机制,整个系统只存在一个信号量机制;
在步骤S306中,展示的是信号量,每个进程的用户态定时器管理单元在初始化时都会创建一个对应的信号量。
在步骤S307中,展示的是内核定时器管理单元,整个系统只存在一个内核定时器管理单元;
在步骤S308中,展示的是内核定时器,每个进程的用户态定时器管理单元在初始化时都会创建一个对应的内核定时器。
Claims (5)
1.一种基于信号量机制的用户态定时器实现方法,其特征在于,运行在用户态模式的应用程序在设置了用户态定时器超时函数并启动该定时器时,同时在内核中将内核态定时器超时时间设置为超时时间最短的用户态定时器的超时时间,在内核态定时器超时后,将通过信号量机制通知用户态定时器管理单元,由用户态定时器管理单元在用户态定时器线程中执行用户态定时器的回调函数。
2.根据权利要求1所述的基于信号量机制的用户态定时器实现方法,其特征在于:管理用户态定时器,并根据用户态定时器设置内核态定时器。
3.根据权利要求1所述的基于信号量机制的用户态定时器实现方法,其特征在于:管理程序创建的各种信号量,内核定时器在超时时间达到后通过信号量机制所管理的信号量通知用户态定时器管理单元。
4.根据权利要求1所述的基于信号量机制的用户态定时器实现方法,其特征在于:负责实际的时间计量,在超时时通知用户态定时器管理单元,由用户态定时器管理单元以用户态模式执行用户态定时器的回调函数。
5.根据权利要求1所述的基于信号量机制的用户态定时器实现方法,其特征在于:内核定时器每一次的超时时间由用户态定时器管理单元根据所有用户态定时器的超时时间计算得到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010835405.2A CN111984412A (zh) | 2020-08-18 | 2020-08-18 | 一种基于信号量机制的用户态定时器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010835405.2A CN111984412A (zh) | 2020-08-18 | 2020-08-18 | 一种基于信号量机制的用户态定时器实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984412A true CN111984412A (zh) | 2020-11-24 |
Family
ID=73434137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010835405.2A Pending CN111984412A (zh) | 2020-08-18 | 2020-08-18 | 一种基于信号量机制的用户态定时器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984412A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888441A (zh) * | 2014-01-03 | 2014-06-25 | 北京太一星晨信息技术有限公司 | 一种应用程序与协议栈之间的信息传输方法及处理装置 |
JP2015014966A (ja) * | 2013-07-05 | 2015-01-22 | 日本電気株式会社 | 情報処理装置、情報処理方法、および、情報処理プログラム |
CN109753368A (zh) * | 2018-12-20 | 2019-05-14 | 清华大学 | 一种实时数据发送方法及系统 |
-
2020
- 2020-08-18 CN CN202010835405.2A patent/CN111984412A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015014966A (ja) * | 2013-07-05 | 2015-01-22 | 日本電気株式会社 | 情報処理装置、情報処理方法、および、情報処理プログラム |
CN103888441A (zh) * | 2014-01-03 | 2014-06-25 | 北京太一星晨信息技术有限公司 | 一种应用程序与协议栈之间的信息传输方法及处理装置 |
CN109753368A (zh) * | 2018-12-20 | 2019-05-14 | 清华大学 | 一种实时数据发送方法及系统 |
Non-Patent Citations (2)
Title |
---|
晋磊等: "Linux平台下增强型定时器服务的研究", 《微型电脑应用》, vol. 21, no. 11, pages 5 * |
陈浩;: "Linux下用户态和内核态内存共享的实现", 电脑编程技巧与维护, no. 04 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101689450B1 (ko) | 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치 | |
CN105373207B (zh) | 一种无线通信终端的待机方法 | |
CN104252389A (zh) | 应用程序运行方法、系统及应用程序 | |
US20210149732A1 (en) | Resource Conservation for Containerized Systems | |
CN111683287B (zh) | 智能设备启动方法、装置、智能设备和可读存储介质 | |
US8984527B2 (en) | System and method for execution time donation in a time-partitioning scheduler | |
CN110673927B (zh) | 一种虚拟机的调度方法和装置 | |
US8661236B2 (en) | Partial initialization of divided programs in response to pre-boot and post-boot activation events to rapidly boot a computer system | |
KR100246120B1 (ko) | 컴퓨터 시스템 | |
CN115237644A (zh) | 系统故障处理方法、中央运算单元以及车辆 | |
CN111625322B (zh) | 数据处理方法、系统及设备 | |
CN111984412A (zh) | 一种基于信号量机制的用户态定时器实现方法 | |
US20080313652A1 (en) | Notifying user mode scheduler of blocking events | |
CN109885340A (zh) | 一种应用程序冷启动加速方法、装置、电子设备 | |
CN107305507B (zh) | 死锁控制方法和装置 | |
US10540320B2 (en) | Temporary file management method for operating system or applications | |
CN116610370A (zh) | 一种启动方法、装置、设备及存储介质 | |
JP2003186681A (ja) | マルチコンピュータシステム | |
CN111026526B (zh) | 程序的定时器配置方法、装置、存储介质及终端设备 | |
CN110879726A (zh) | 移动终端应用程序的保活方法及装置 | |
CN112579346A (zh) | 一种通过断电恢复出厂设置的方法 | |
JP3122371B2 (ja) | 計算機システム | |
CN116991374B (zh) | 构建持续集成任务的控制方法、装置、电子设备及介质 | |
CN115328629A (zh) | 裸金属上扩展uefi固件进行实时性嵌入式管理的方法 | |
JP5299681B2 (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 |