CN103389913B - 一种用于Linux系统的实时中断处理方法 - Google Patents

一种用于Linux系统的实时中断处理方法 Download PDF

Info

Publication number
CN103389913B
CN103389913B CN201310324245.5A CN201310324245A CN103389913B CN 103389913 B CN103389913 B CN 103389913B CN 201310324245 A CN201310324245 A CN 201310324245A CN 103389913 B CN103389913 B CN 103389913B
Authority
CN
China
Prior art keywords
real
user
time
space
business procedure
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.)
Active
Application number
CN201310324245.5A
Other languages
English (en)
Other versions
CN103389913A (zh
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.)
Wuhan Research Institute of Posts and Telecommunications Co Ltd
Original Assignee
Wuhan Research Institute of Posts and Telecommunications 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 Wuhan Research Institute of Posts and Telecommunications Co Ltd filed Critical Wuhan Research Institute of Posts and Telecommunications Co Ltd
Priority to CN201310324245.5A priority Critical patent/CN103389913B/zh
Publication of CN103389913A publication Critical patent/CN103389913A/zh
Application granted granted Critical
Publication of CN103389913B publication Critical patent/CN103389913B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种用于Linux系统的实时中断处理方法,将业务相关的FPGA外部中断指定为硬中断,将Linux系统的其它中断作为软中断;将软中断处理程序的执行环境从中断上下文变为进程上下文,硬中断处理程序的执行环境定义为中断上下文;将Linux系统中用户空间业务程序外其它用户空间进程改为非实时进程,将用户空间业务程序的相应进程和软中断处理程序的相应进程改为实时进程,实时进程优先于非实时进程;实时进程中,用户空间业务程序的相应进程优先于软中断处理程序的相应进程。本发明能够解决中断延迟和任务延迟的问题,并提供了无限循环方法和空闲调度两种方式来解决调度延迟的问题,提高了Linux作为嵌入式操作系统应用的实时性。

Description

一种用于Linux系统的实时中断处理方法
技术领域
本发明涉及嵌入式操作系统技术领域,尤其是涉及嵌入式操作系统实时性的方法。
背景技术
在嵌入实时操作系统领域,一直是Wind River公司的vxworks系统占据领导地位,占有了大部分的市场份额。Vxworks系统虽然实时性好,但因为是商业操作系统,授权费用高。
Linux操作系统免费,开放源代码,获得了非常多的应用,特别是在服务器,计算机网络,数据通信,云计算等非实时领域成功应用的例子不计其数。
实时技术分为硬实时和软实时两个领域,像无线通信,数据机床行业,不要求非常高的实时性,20us的精度已经足够,这些属于软实时领域。
Linux要达到20us的实时精度要求,即可应用于这些领域,用于替代vxworks操作系统,但有以下几个重大技术问题未解决:
1.在Linux中,当CPU(中央处理器)正在处理中断时,Linux会禁止中断(在多核情况下,禁止本CPU的中断),此时,CPU不再响应其它中断。如果当FPGA(现场可编程门阵列)中断到来时,CPU正在处理其它中断,如网络,键盘,USB,磁盘等中断,从而导致中断响应延迟,甚至丢失,此问题即“中断延迟”。
2.在Linux中,中断的优先级比任何程序的优先级高,当中断完成后,CPU控制权会回到之前被中断的程序,继续执行之前被中断的程序,无法运行调度程序,从而也无法运行所需要的实时程序,此问题即“调度延迟”
3.Linux调度器在调度任务时,对所有任务是一视同任,因此即使1和2解决之后,仍然无法保证调度器选择出来的程序就是所需要的实时任务处理程序,此问题即“任务延迟”。
发明内容
本发明的目的就是解决上述3个重大技术问题,提出一种用于Linux系统的实时中断处理方法。
本发明的技术方案为一种用于Linux系统的实时中断处理方法,其特征在于:
将CPU中断分为两级,分别为硬中断和软中断;划分方式为,将业务相关的FPGA外部中断指定为高优先级中断,作为硬中断,将Linux系统的其它中断设定为低优先级中断,作为软中断;并且,将软中断处理程序的执行环境从中断上下文变为进程上下文,硬中断处理程序的执行环境定义为中断上下文;
将Linux系统中除用户空间业务程序的相应进程以外的其它所有用户空间进程修改为非实时进程,将用户空间业务程序的相应进程和软中断处理程序的相应进程修改为实时进程,实时进程优先于非实时进程;实时进程中,用户空间业务程序的相应进程优先于软中断处理程序的相应进程。
而且,将用户空间业务程序和硬中断处理程序绑定到同一个CPU,同时将用户空间业务程序设置成一直运行状态,在硬中断到来后执行中断,等硬中断处理完成后继续执行用户空间业务程序。
或者,当用户空间业务程序和硬中断处理程序不在同一个CPU上时,通过时间序列和任务分配设计,使硬中断到来时用户空间业务程序所需要的CPU资源是空闲状态,当硬中断处理完成后进行调度时,优先级最高的用户空间业务程序被调度程序选中并获得CPU运行。
本发明能够将Linux的实时性提高到20us级别,达到软实时领域的精度要求,从而可以让Linux在无线通信和数控机床领域得到应用。
具体实施方式
以下结合实施例详细说明本发明技术方案。
Linux操作系统分为用户空间和内核空间,实时程序运行在用户空间,中断响应程序运行在内核空间,内核空间和用户空间采用某种通信方式进行通信,以达到协作目的。另外Linux系统是多用户分时系统,不同用户和不同任务共享CPU资源,资源的使用通过调度器来实现。
Linux实时使用场景一般如下:
1.外部FPGA产生中断;
2.Linux内核中断处理程序运行;
3.CPU调度器运行,选择合适的用户程序;
4.用户程序运行。
本发明实施例提出技术方案如下:
1.中断延迟解决:Linux操作系统本身不区别中断优先级,本发明将CPU中断分为两级,分别为硬中断和软中断,划分方式为,将业务相关的FPGA外部中断指定为高优先级中断,即硬中断;将Linux操作系统的其它原有的中断,如串口,网卡,flash中断等设定为低优先级中断,即软中断。硬中断优先级高于软中断,当操作系统在正在处理软中断时,如果有硬中断到来,操作系统可以立即切换到硬件中断处理程序,除此之外,将软中断处理程序(即Linux系统原有的中断处理程序)的执行环境降低为进程上下文,即相当于一个实时进程(参见以下“3.任务延迟解决”所提供解决方案),而硬中断处理程序的执行环境保持为中断上下文,因为中断上下文是可以抢占进程上下文,从而保证硬中断的实时性。
2.调度延迟解决:采用两种办法
a)无限循环方法:因为Linux完成中断处理程序后,CPU控制权会回到之前被中断的程序,因此可以利用此特性,将所期望用户空间业务程序和硬中断处理程序绑定到同一个CPU (多核CPU中CPU之一),同时将用户空间业务程序设置成一直运行状态,这样硬中断到来后,就会中断用户空间业务程序执行,等中断处理完好,继续执行用户空间业务程序。
b)空闲调度方法:通过时间序列和任务分配设计,在中断到来时,从理论上保证CPU是空闲状态,这样,当CPU执行完硬中断处理程序并退出中断上下文后,因为没有程序可以运行,就会运行调度程序,这种方法适用于用户空间业务程序和中断处理程序不在同一个CPU上。常用的实时系统应用,通常都要求定时完成一些工作,如无线通信系统是定时频率是1ms(毫秒),数控机床系统是4ms,在这种系统中当中断到来时,完成指定的业务工作,至下一个周期到来时就是空闲的。具体实施时,可通过时序序列和任务分配设计,保证指定的业务工作在下一个时序到来时肯定完成,同时运行此业务工作的CPU(多核CPU中CPU之一)没有其它进程或者任务需要运行,即可保证CPU是空闲状态。当中断处理完成后进行调度时,根据Linux的调度策略,会选择优先级最高的程序(除硬中断外),而经过本方法后,用户空间业务程序的优先级是最高(除硬中断外),所以用户空间业务程序肯定可以被调度程序选中,并获得CPU运行。
3.任务延迟解决:不考虑硬中断,将Linux系统原有的进程分为两种类型,分别为实时进程和非实时进程,一般将用户空间业务程序和软中断处理程序相应进程划分为实时进程,其它系统默认进程全部划分为非实时进程。实时进程优先于非实时进程,这种就可以保证实时进程获取CPU的概率永远优先于非实时进程。因为Linux是多任务系统,可能会存在多个同类型进程的问题,他们如果不加以区别,可能存在不确定性,因此本发明提出可以为每个同类型进程(包含实时和非实时进程)设置优先级属性,同类进程中,优先级高的进程先获取CPU资源运行。这样Linux调度程序的调度顺序为实时进程类中的高优先级->实时进程类中的低优先级->非实时进程类中的高优先级->非实时进程类中的低优先级。在实时进程类中,可以将软中断的优先级设置低于期望的用户空间业务程序,这样只有硬中断可以抢占CPU,运行中断处理程序。即实际的优先级顺序为硬中断->用户空间业务程序的相应进程->软中断->非实时进程类中的高优先级->非实时进程类中的低优先级。具体实施时,本领域技术人员可以自行设定优先级划分方式,例如优先级设定为0-99,数字越小优先级越高,默认为50,可将业务进程的优先级设置为20,使业务进程在实时类进程的优先级最高。因为Linux是时间片调度,为了不影响实时任务执行,在实时任务未执行完成前,不允许再进行调度,直至实时任务执行完毕。
例如采用Powerpc P4080硬件平台,Linux 2.6.34的官方内核,其中,PowerPC为一种CPU体系架构,P4080为美国飞思卡尔公司的一种嵌入式多核CPU产品,八核分别标记为CPU0至CPU7。相应实现方式包括如下几种具体措施:
1.将业务相关的FPGA外部中断指定为高优先级中断,即硬中断;将Linux操作系统的其它中断,如串口,网卡,flash中断等设定为低优先级中断,即软中断;同时将所有的软中断处理程序执行环境降低为进程上下文,而硬中断处理程序的执行环境定义为中断上下文,这样根据Linux的内置任务优先级,中断上下文>进程上下文,所以当实时硬中断到来时,无论CPU是否在执行什么,FPGA硬中断处理程序会发生抢占,获得CPU资源,并开始执行中断处理程序。通过上述两个操作,保证了硬中断处理程序可以在第一时间内获得CPU资源,并投入运行,完善地解决了“中断延迟”问题。
2.利用多核特性,例如指定P4080的CPU 7专用于处理硬中断,保证此中断的处理不受其它同级硬中断及操作系统内置任务的影响,排除干扰;所期望用户空间业务程序和硬中断处理程序绑定到同一个CPU,在指定P4080的CPU 7专用于处理硬中断的情况下,也指定业务进程运行于CPU 7。
3.将Linux操作系统中除用户空间业务程序的相应进程以外的其它所有用户空间进程修改为非实时进程,将用户空间业务程序的相应进程和软中断处理程序的相应进程修改为实时进程,实时进程优先于非实时进程;实时进程中,用户空间业务程序的相应进程优先于软中断处理程序的相应进程。
4.调度延迟有两种解决办法;
4.1 无限循环方法:当业务进程处理业务完毕后,可通过现有技术实现添加一个自定义系统调用,利用自定义的系统调用让业务程序陷入内核,保持用户空间业务程序的运行状态,防止其他进程占用CPU,直至硬中断到来,此时CPU被抢占,开始执行硬中断处理程序,当硬中断处理程序执行完成后,CPU即恢复到所期望的业务程序开始执行业务;
4.2 空闲调度:将Linux系统中除业务进程以外的所有进程移到CPU0至CPU6,保证CPU7只有业务进程和中断处理程序,这样,当硬中断到来后,CPU处理完硬中断,硬中断处理程序完成后,进行调度,因为CPU7上只有一个业务进程,这样业务进程可以立即获得CPU7并运行。在此种调度方式下,不要求第2步时必需指定CPU7指定处理硬中断, 可以指定为CPU0至CPU7中的任何一个,或者不指定。
这样可以避免传统的epoll,select,信号量等机制造成的中间开销过大的问题。
最后需要说明的是,本发明还可有其他多种实施例,在不脱离本发明的精神及其实质的情况下,对被发明作出各种相应的修改或者变形,其均应属于本发明所附的权利要求的保护范围。

Claims (1)

1.一种用于Linux系统的实时中断处理方法,其特征在于:
将CPU中断分为两级,分别为硬中断和软中断;划分方式为,将业务相关的FPGA外部中断指定为高优先级中断,作为硬中断,将Linux系统的其它中断设定为低优先级中断,作为软中断;并且,将软中断处理程序的执行环境从中断上下文变为进程上下文,硬中断处理程序的执行环境定义为中断上下文;
将Linux系统中除用户空间业务程序的相应进程以外的其它所有用户空间进程修改为非实时进程,将用户空间业务程序的相应进程和软中断处理程序的相应进程修改为实时进程,实时进程优先于非实时进程;实时进程中,用户空间业务程序的相应进程优先于软中断处理程序的相应进程;优先级顺序为硬中断->用户空间业务程序的相应进程->软中断->非实时进程类中的高优先级->非实时进程类中的低优先级;每个同类型进程设置优先级属性,同类进程中,优先级高的进程先获取CPU资源运行;
将用户空间业务程序和硬中断处理程序绑定到同一个CPU,同时将用户空间业务程序设置成一直运行状态,在硬中断到来后执行中断,等硬中断处理完成后继续执行用户空间业务程序;对于要求定时完成工作的实时应用系统,当用户空间业务程序和硬中断处理程序不在同一个CPU上时,通过时间序列和任务分配设计,使硬中断到来时用户空间业务程序所需要的CPU资源是空闲状态,当硬中断处理完成后进行调度时,优先级最高的用户空间业务程序被调度程序选中并获得CPU运行。
CN201310324245.5A 2013-07-30 2013-07-30 一种用于Linux系统的实时中断处理方法 Active CN103389913B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310324245.5A CN103389913B (zh) 2013-07-30 2013-07-30 一种用于Linux系统的实时中断处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310324245.5A CN103389913B (zh) 2013-07-30 2013-07-30 一种用于Linux系统的实时中断处理方法

Publications (2)

Publication Number Publication Date
CN103389913A CN103389913A (zh) 2013-11-13
CN103389913B true CN103389913B (zh) 2017-03-29

Family

ID=49534192

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310324245.5A Active CN103389913B (zh) 2013-07-30 2013-07-30 一种用于Linux系统的实时中断处理方法

Country Status (1)

Country Link
CN (1) CN103389913B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902371B (zh) * 2014-03-14 2017-11-28 汉柏科技有限公司 一种用户态程序获取内核jiffies的方法和系统
CN104572282A (zh) * 2015-01-05 2015-04-29 浪潮电子信息产业股份有限公司 一种将sas控制器中断绑定到cpu的自动化方法
WO2019095124A1 (zh) * 2017-11-15 2019-05-23 深圳配天智能技术研究院有限公司 切换串口数据传输状态的方法及装置
CN112470125B (zh) * 2018-07-24 2024-02-20 三菱电机株式会社 中断处理方法、计算机系统以及存储介质
CN110837415B (zh) * 2018-08-17 2024-04-26 嘉楠明芯(北京)科技有限公司 一种基于risc-v多核处理器的线程调度方法和装置
CN109800073B (zh) * 2019-01-28 2021-06-18 Oppo广东移动通信有限公司 实时进程的调度方法、装置、终端及存储介质
CN112286847B (zh) * 2020-11-05 2023-03-10 成都菁蓉联创科技有限公司 一种提升系统外部中断响应速度的方法、装置和控制器
CN113556264A (zh) * 2021-06-25 2021-10-26 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 实时云平台管理监控系统
CN114281492A (zh) * 2021-11-12 2022-04-05 北京智芯微电子科技有限公司 中断处理方法、装置、芯片、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995745A (en) * 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
CN102866917A (zh) * 2012-09-27 2013-01-09 深圳市金宏威技术股份有限公司 一种基于Linux平台的冷火实时处理方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995745A (en) * 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
CN102866917A (zh) * 2012-09-27 2013-01-09 深圳市金宏威技术股份有限公司 一种基于Linux平台的冷火实时处理方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Linux2.6中断机制研究及实时性改进;李海霞;《中国优秀硕士学位论文全文数据库》;20070915;第28-30页 *
两种嵌入式实时Linux实现技术研究及实时多核应用;刘海涛;《中国优秀硕士学位论文全文数据库》;20100315;第18-26页,图2-2,3-3,3-4 *

Also Published As

Publication number Publication date
CN103389913A (zh) 2013-11-13

Similar Documents

Publication Publication Date Title
CN103389913B (zh) 一种用于Linux系统的实时中断处理方法
CN103559045B (zh) 一种硬件实时操作系统
US7831980B2 (en) Scheduling threads in a multi-processor computer
CN100485625C (zh) 一种实时系统任务调度方法
CN104580396A (zh) 一种任务调度方法、节点及系统
CN102043667A (zh) 一种嵌入式操作系统的任务调度方法
CN111897637B (zh) 作业调度方法、装置、主机及存储介质
CN101561768A (zh) 一种通用的调度多个任务的方法
CN105373425A (zh) 一种嵌入式Linux系统性能优化的方法及装置
Behera et al. A new dynamic round robin and SRTN algorithm with variable original time slice and intelligent time slice for soft real time systems
US9961023B2 (en) Adjusting buffer size for network interface controller
CN103197971B (zh) Windows操作系统Pentium Ⅳ架构下高精度低CPU占用率定时器的实现方法
CN101968749B (zh) 虚拟机过度分配环境下的mpi消息接收方法
CN111475312B (zh) 基于实时操作系统的消息驱动方法和装置
US11061840B2 (en) Managing network interface controller-generated interrupts
CN104375883B (zh) 一种cfs调度器
Stavrinides et al. Scheduling different types of gang jobs in distributed systems
Prashanth et al. Real-time issues in embedded system design
US11301304B2 (en) Method and apparatus for managing kernel services in multi-core system
CN106775964A (zh) 时间/事件混合触发的操作系统架构及任务调度方法
CN116302420A (zh) 并发调度方法、装置、计算机设备及计算机可读存储介质
Bhoi et al. Enhancing CPU performance using subcontrary mean dynamic round robin (SMDRR) scheduling algorithm
CN103870313B (zh) 一种虚拟机任务调度方法及系统
CN109240815A (zh) 一种共享堆栈的多任务运行方法、装置及设备
Nosrati et al. Task scheduling algorithms introduction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 430074, No. 88, postal academy road, Hongshan District, Hubei, Wuhan

Patentee after: Wuhan post and Telecommunications Science Research Institute Co., Ltd.

Address before: 430074, No. 88, postal academy road, Hongshan District, Hubei, Wuhan

Patentee before: Wuhan Inst. of Post & Telecom Science

CP01 Change in the name or title of a patent holder