[导读]一种支持I/O的核外中断执行算法
ARTs-OS是一个基于微内核的嵌入式实时操作系统。ARTs-OS中的中断管理应该提供的基本功能包括:管理中断处理设备、中断服务例程的管理、中断嵌套的管理、中断栈的维护、线程/进程切换时的现场保护和恢复等。但是ARTs-OS作为嵌入式实时操作系统,上述基本功能不能满足所有的要求,它还必须拥有更多体现嵌入和实时特性的功能。ARTs-OS在实现中必须采取一些措施将中断分配时间(IDT)和中断服务时间(IST)减到最小,并使用户能够很容易地在ARTs-OS上开发、调试驱动程序。
1 ARTs-OS的I/O特点
ARTs-OS的I/O体系结构的主要特点有:(1)基于微内核构架。(2)支持动态加载。(3)核内/核外驱动。(4)进程/线程模型。(5)中断硬连接。
中断管理对I/O的支持由I/O的设计方式决定,集中体现在核内中断管理和核外中断管理。本文集中讨论核外中断管理。
2 ARTs-OS的核外中断
所有的操作系统都实现了核内驱动,并且核内驱动对中断管理的要求相对简单。ARTs-OS的中断管理在这一部分只简单地提供一些函数调用。下面重点介绍核外驱动。
ARTs-OS中断管理只需提供核外硬中断机制便可实现对核外驱动的支持,即提供如下的功能:当硬件产生中断时,系统核心保存现场,然后跳转到核外驱动程序ISR并执行;执行完后,恢复现场重新回到核内。整个过程如同核外驱动程序的ISR在核内运行。
要实现这个过程需要明确以下几点:
(1)系统如何从核心跳转到核外的驱动程序ISR。若该ISR的代码段在核内,由于处于同一个保护层次中,则可以直接调用。但若驱动在核外,一般系统的保护机制是不允许这样调用的。
(2)驱动程序ISR执行完毕后,跳转到何处。比较好的方法是:返回到系统内核ISR调用驱动程序ISR的地方,但实现起来比较困难。因为一般的过程调用是通过CALL和RETURN指令以及返回地址的堆栈保存这种“过程调用/返回”协议自动地返回到调用点(的下一条指令)。然而,当驱动程序在核外时,它们使用的根本就不是同一个堆栈,核内ISR使用0层堆栈,核外驱动ISR使用被中断应用程序的地址空间中的3层堆栈。如何实现这种切换返回需要仔细考虑。
(3)如何处理驱动程序ISR对驱动程序中全局变量(例如:驱动程序缓冲区)的访问。一般函数中不存在这样的问题,但在驱动程序ISR中,这将成为一个很重要的问题。一般的函数是由该函数所在地址空间的其他函数所调用,当执行到该指令时,CPU的进程/线程调度机制已经将该进程的地址空间恢复,普通函数根本就不知道进程的地址空间在CPU上被不断切换这一事实。但对于中断响应函数ISR就不是这样。驱动ISR是由操作系统内核(具体为:内核的中断ISR)调用,而内核中断ISR被调用的时机与操作系统自身的运行是异步的,也就是说,在任何时候都有可能发生硬件中断。因此,有可能在另外一个应用程序运行时发生硬件中断,从而调用驱动程序ISR。如果不进行特别的处理,驱动程序ISR访问的全局变量将是另外一个应用程序空间中的地址。
为了解决以上问题,ARTs-OS使用了一种与UNIX系统实现信号[1]类似的方法。采用这种方法的一个前提条件是核外驱动程序必须常驻内存。道理很简单:中断随时可能发生,如果核外驱动程序不在内存而是在硬盘中,要执行驱动程序的中断服务例程就必须将驱动程序加载到内存中,这非常耗时;同时因为中断服务例程执行时系统的特殊状态,这个加载过程是难于实现的。所以ARTs-OS假定所有的核外驱动程序都常驻内存。作为一个嵌入式实时系统,ARTs-OS本来就要求程序能够常驻内存,所以这样的假设是成立的。
ARTs-OS采用的算法和一般的程序调用方法类似。而要实现在核内核外之间的跳转,系统必须保存和恢复必要的信息。这些信息包括:内核的当前上下文环境、核外驱动程序的上下文环境。
执行核外中断程序的算法如下:
输入:中断号iid,线程号tid
输出:无
步骤:
(1)根据iid和tid得到中断程序的地址。
(2)在内核中保存信息以便中断程序执行完毕后返回。
(3)在tid对应的线程堆栈中写入返回到核内的代码。
(4)跳到线程的中断函数执行。
(5)使用刚才写入的代码跳回内核。
(6)使用在内核中保存的信息,恢复内核的上下文环境。
[!--empirenews.page--]3 用户态挂接中断的实现
实现核外中断实际上包含三个步骤:
(1)跳到核外中断处理程序。在IA32平台下,由于CALL/JMP类指令有保护机制的约束,只能由外向内跳转,而RET和IRET指令恰好相反,只能由内向外跳。因此,一个很常用的技术的就是采用RET或IRET指令实现由内向外的“调用”。首先在堆栈上压入需要调用的核外驱动ISR代码的首地址CS:IP及相应堆栈的地址SS:ESP。在保护模式下,CS为用户代码的段选择子,SS为用户堆栈的段选择子。执行RET或IRET,硬件将从堆栈上弹出CS:IP和SS:ESP。CPU进行安全检查之后,就可以执行ISR。ARTs-OS使用IRET指令完成此功能。
(2)从核外驱动返回内核。核外驱动ISR执行完后,要返回到内核ISR的调用处。因为IA32平台的限制不能采用常规的返回执行,所以应采用“堆栈执行”的技巧。即在堆栈上压入汇编代码,然后利用返回指令执行该代码,实现重返内核。具体步骤:①调用驱动ISR之前,应作一定准备工作;②保存内核的当前运行状态;③找到核外驱动程序ISR将使用的堆栈;④在堆栈中压入代码,该代码主要实现INT n的系统调用,重返内核,该堆栈中还包括用于平衡堆栈的代码;⑤将代码的首地址压入堆栈,作为返回地址;⑥建立好过程调用的“调用帧”的前半段后,用IRET指令进入该驱动程序ISR;⑦进入内核后,根据以前保存的信息恢复到内核以前的状态。
当执行到驱动程序ISR的RET语句时(该RET编译后为一个段内近调用,因为编译器并不知道该函数会被系统“回调”,所以把它当作一个普通的函数进行编译),由于返回地址为堆栈上事先压入代码的首地址,所以执行该代码;在平衡堆栈后,用INT指令重返内核。
(3)驱动程序地址空间的恢复。为了方便驱动程序ISR访问驱动程序空间中的全局变量,应当在进入核外驱动ISR之前恢复该驱动程序的地址空间。这类似于进程切换。首先将该驱动程序强制性切换到运行态,即恢复其寄存器上下文环境等,然后执行其中的ISR。
在这个过程中要用到描述一个用户态中断的数据结构,用C语言表示为:
typedef struct UserInterrupt_t{
ThreadId id;//表示注册此中断的线程id
unsigned long interruptId;//惟一表示一个中断
InterruptFunction function;//中断的服务函数指针
unsigned long parameter;//中断服务程序使用的参数
struct UserInterrupt_t *next;//用来维护一个链表
} UserInterrupt,*UserInterruptPtr;
实现中断挂接的主要系统调用:
SyscallError tmAttachInterrupt(unsigned char irqno,InterruptFunction function,unsigned
long parameter,unsigned long *intId);
SyscallError tmDetachInterrupt(unsigned long intId);
实际上,因为IA32平台的限制,用户态线程/进程不能直接操纵I/O。为了更好地实现核外驱动,中断管理模块还提供了一个关闭这种限制的函数:
SyscallError tmIOPL(unsigned char on);
4 核外中断的评价
ARTs-OS的核外硬中断可以满足I/O管理的要求,它具有下列优点:
(1)实现简单。ARTs-OS的核外硬中断实现起来非常简单,内核只需额外提供几个系统调用。而这些系统调用的实现方法也很简单,且结构清晰、所需的代码少,完全能够满足ARTs-OS作为嵌入式系统的需要。
(2)驱动程序编写简单。中断管理为核外驱动程序提供几个系统调用,如:挂接中断、删除中断等。驱动程序只需准备好相应的中断处理函数调用系统调用即可。驱动程序使用核外驱动和使用其他系统调用一样简单,无需特殊的操作。
(3)调试方便。通常,驱动程序在核内运行,其中断服务程序也在核内运行。一般的调试工具不能调试核内的程序,ARTs-OS则不同。因为核外中断的中断服务程序是核外的函数,这些函数使用的数据、函数都在核外,所以核外中断的中断服务程序和运行在核外的其他函数没有本质的区别,便于使用GDB等调试工具。
但是核外硬中断方法也有不足之处,例如运行效率较低。因为中断服务程序在核外运行,每当中断到达时,为了执行相应的中断服务程序必须到核外,执行完毕后又必须切换回核内。这样执行每个中断服务程序都必须来回进行上下文切换,从而导致运行速率下降。实际上,ARTs-OS针对这种来回切换的情况进行了一些优化,切换时只需保护和恢复必须的上下文,这样的速率延迟还是可以接受的。另外,核外中断方法还会对系统的安全性产生一定的影响,因为驱动程序能够使用核外的驱动方式,必然导致运行在核外的驱动程序拥有一些特权。但实际上这种安全性的保障应该是驱动程序编制者的任务,即驱动程序编制者应该自己保障其中断服务程序不破坏系统的安全性。
综合考虑系统的扩展性、简洁性和功能,ARTs-OS的实现应该是可以接受的。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
南京2022年10月19日 /美通社/ -- 10月16日是第42个世界粮食日,今年世界粮食日的主题是"不让任何人掉队,更好生产、更好营养、更好环境、更好生活",向全社会倡导爱惜粮食,拒绝浪...
关键字:
西门子
SE
OS
可持续发展
强生公司(Johnson & Johnson)公布最近结束的季度销售额和利润实现增长,即使美元走强和劳动力成本上升削弱了业绩。这家保健用品公司周二下调了全年销售指引,因美元相对于全球其他货币的上涨带来的持续影响。...
关键字:
JOHNSON
SE
OS
2019年上映的《复仇者联盟4:终局之战》无疑是漫威和超级英雄粉丝心中的剧痛,该片中最受观众喜爱的钢铁侠为了打败灭霸,一个响指也夺走了自己的生命。影片最后,复联成员们还为钢铁侠举办了一个葬礼,一众英雄出席让人泪奔。钢铁侠...
关键字:
漫威
HELLO
TI
OS
上海2022年10月17日 /美通社/ -- 近日,第17届中国研究生电子设计竞赛(下简称:研电赛)全国总决赛评审工作圆满完成。今年,来自全国63个高校的114支参赛队伍报名了TI企业命题,创下历史新高。并且,...
关键字:
TI
德州仪器
OS
模拟
(全球TMT2022年10月13日讯)Bossard柏中推出的亮灯拣选系统(Pick by Light and Put to Light)帮助客户减少寻料和补货时间。这种“摘果式”灯光拣选系统采用LED信号灯引导物料员...
关键字:
SAR
亮灯拣选系统
OS
LIGHT
亮灯拣选系统将成为SmartBin Cloud云智能料盒和SmartLabel Cloud云智能电子标签的组成部分,引导客户快速准确地找到物料。 上海2022年10月13日 /美通社/ -- Bossard柏中推出的亮...
关键字:
SAR
亮灯拣选系统
快速定位
OS
北京2022年10月11日 /美通社/ -- 在四川大凉山深处,有一只"凉山黑鹰"少年篮球队:队员平均年龄12岁,平均身高1米3,球队刚成立时,连个像样的球场都没有。然而,凭着一腔热情和惊人天赋,这只...
关键字:
网络
BSP
内核
腾讯
加利福尼亚州埃尔塞贡多, Sept. 27, 2022 (GLOBE NEWSWIRE) -- Phoenix Software International, Inc.今天宣布自2022年9月30日起普遍提供JES3pl...
关键字:
PHOENIX
SOFTWARE
OS
INTERNATIONAL
利安德巴塞尔宣布将在其德国法兰克福工厂启动一家新的催化剂生产工厂。该项目直接关系到基础设施项目的投资、不断增长的人口(特别是在新兴国家和地区)对聚合物需求的增加,以及Hostalen ACP聚乙烯(PE)技术的价值。此项...
关键字:
ST
OS
AC
上海2022年9月28日 /美通社/ -- 维亚生物投资孵化和以服务换股权(EFS)业务的核心部门——维亚生物创新中心致力于成为全球创新生物医药企业孵化及成长的开放式合作平台。维亚生物投资孵化生态圈近期动态更新...
关键字:
AC
GEN
LINK
OS
未来投资倡议(FII)机构与市场研究机构益普索(Ipsos)合作,对来自13个国家的13万名公民进行了一项全球调查。调查显示,对大部分人来说,生活成本上涨是他们的当务之急。对此感到担心的人数要多于对贫困和社会不平等(第2...
关键字:
PS
OS
IP
南京2022年9月23日 /美通社/ -- 在全球性粮食危机的背景下,联合国粮农组织将每年的9月29日确定为"国际粮食损失和浪费问题宣传日",并向国际社会发起减少粮食损失和浪费的号召。作为粮...
关键字:
西门子
SE
OS
传感器
(全球TMT2022年9月22日讯)Granite River Labs(简称"GRL")日前宣布,其位于中国东莞的实验室已获英特尔公司(Intel® Corporation)授权,可为Windows系统平台开展Thu...
关键字:
Windows
THUNDERBOLT
ST
OS
GRL东莞实验室将与上海和台北实验室一同,提供Windows Host认证服务 加利福尼亚州圣克拉拉市2022年9月22日 /美通社/ -- 高速信号和充电技术测...
关键字:
Windows
THUNDERBOLT
USB
OS
上海2022年9月20日 /美通社/ -- 北京时间2022年9月20日,君实生物(1877.HK,688180.SH)宣布,由公司自主研发的抗PD-1单抗药物特瑞普利单抗注射液(拓益®)联合培美曲塞和铂类适用于...
关键字:
PD
OS
CHOICE
AC
ARM的全称为Advanced RISC Machines,直译为高级精简指令集处理器;RISC即为精简指令集,那么对应的就存在CISC,其为复杂指令集。
关键字:
ARM
内核
SoC
加利福尼亚州波威2022年9月15日 /美通社/ -- 开发VyOS网络平台并提供支持服务的公司VyOS Networks Corporation今天宣布,公司在GigaOm Radar中小企业、企业和云/托管服务提供商...
关键字:
OS
RATIO
RADAR
NETWORKS
(全球TMT2022年9月16日讯)思享无限公布截至2022年6月30日的2022年第二季度暨上半年财务业绩。2022年第二季度,营收同比增长28.8%,从2021年同期的3.932亿元人民币增至5.065亿元人民币(...
关键字:
ST
GARTNER
MOBILE
OS
上海2022年9月8日 /美通社/ -- 中国家居人齐聚沪上,点亮行业高质量发展之光。9月6日,家居行业盛事——家居产业高质量发展大会暨"月星之夜"在上海月星国际家居生活MALL举行,数百位...
关键字:
BSP
HID
内核
大赛
(全球TMT2022年9月7日讯)9月2日,荣耀终端有限公司CEO赵明在欧洲最大消费电子展 2022德国柏林消费电子展(International Funkausstellung Berlin,以下简称IFA)的主舞台...
关键字:
MAGIC
荣耀
折叠手机
OS