基于映像寄存器构建的实时操作系统内核.pdf

上传人:tbuqq 文档编号:5508479 上传时间:2020-05-26 格式:PDF 页数:4 大小:180.72KB
返回 下载 相关 举报
基于映像寄存器构建的实时操作系统内核.pdf_第1页
第1页 / 共4页
基于映像寄存器构建的实时操作系统内核.pdf_第2页
第2页 / 共4页
基于映像寄存器构建的实时操作系统内核.pdf_第3页
第3页 / 共4页
基于映像寄存器构建的实时操作系统内核.pdf_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于映像寄存器构建的实时操作系统内核.pdf》由会员分享,可在线阅读,更多相关《基于映像寄存器构建的实时操作系统内核.pdf(4页珍藏版)》请在三一文库上搜索。

1、ISSN 100020054 CN 1122223 N 清华大学学报(自然科学版) J T singhuaU niv (Sci 2. 浙江大学 超大规模集成电路设计研究所 , 杭州 310027) 收稿日期: 2007203225 基金项目:国家“八六三”高技术项目(2006AA 01Z431); 浙江省自然科学基金资助项目 (Y 105355) 作者简介:孙康(1980),男(汉),天津,博士研究生。 E2m ail: k sunzju. edu . cn 通讯联系人:沈海斌,副教授 , E 2 m ail: shbvlsi. zju. edu. cn 摘 要:为提高系统实时性,缩短中断响应

2、时间,提出了一种基于映像寄存器的操作系统内核实现方案。 在分析实 时操作系统中中断处理过程基础上,总结了影响系统中断响应时间的因素,给出了利用映像寄存器提高中断响应 效率的方法 。 该方法利用处理器中提供的映像寄存器,将内核运行于映像寄存器上,用户进程运行在通用寄存器 上,这样对于内核空间发生的中断可以免去保存上下文的开销。 该方案成功用于CK 520处理器平台上的COS2II 实时操作系统中 。 实验结果表明,提出的实时操作系统设计方案在每个中断处理程序中可以平均减少执行54. 97条 指令。 关键词:实时操作系统;中断响应;映像寄存器;CO S2II 中图分类号:TP 316 文献标识码

3、: A 文章编号: 100020054 (2007) S2 21899204 Real-time kernelforin terruptsbased on shadow reg isters SUN Ka ng 1, SHEN Ha ibin1, 2, W ANG Jim in1, PAN Xue zeng1 (1 . College of Com puter Science, Zhej iang Un iversity , Hangzhou310027, Ch ina; 2.In stituteof VL SID esign, Zhej iang Un iversity , Hangzhou

4、310027 , Ch ina ) Abstract :Interrup t response is a crucial featu re in a real2tim e operatingsystem.To reduce interrupt response tim e andimprovesystemperfo rm ance.Areal2tim e kernelw as im plem entedusingshadowregisters .Thesystem im proves in terrup t handlingand reduces the influenceof facto r

5、 thatlong thenthe in terrup t respon se tim e .T he kernelruns on shadowregisters w hile user p rocesses run on the generalpu rpo se registers .T hus,if an interrup t occursin the kernelspace, the overheadfo r the in terrup t is substantiallyreduced.F inally,the schemew as applied by po rtingCOS2II

6、ontoa CK520platfo rm.T est resultsshowthatth is methodhas an averagesave of54. 97 instructi ons in each interrup t handler . Key words :real2tim e operatingsystem ;interrup t respon se; shadowregisters; COS2II 近年来 , 固定优先级的实时操作系统任务调度 理论得到了广泛而深入的研究 1-3。 这些以提高实 时系统效率为目的而开展的研究工作主要关注于实 时任务的可调度性分析, 但是忽略了在

7、实时操作系 统中 , 降低任务切换代价和提高中断响应速度也是 提高系统效率的一个重要途径。 在抢占调度的操作系统中, 中断可能会频繁地 发生 。 当发生中断时 , 必须要保存 CPU 当前的上下 文。通常这个过程是将CPU 的通用寄存器(GPR s ), 状态寄存器和程序寄存器保存到位于内存的堆栈 中。 在执行完中断服务程序后, 还要从堆栈中将保存 的上下文取出并恢复。 在精简指令集结构的CPU 中, 这个压栈和弹出的过程通常需要很多load store 指令来完成 。 为了在中断处理时尽量减少上下文保存和恢复 的开销 , 有些CPU提供了映像寄存器(SRs) 加速中 断处理 4-5。在有映像

8、寄存器的情况下 , 当中断发生 时, CPU 会从使用通用寄存器的状态切换到使用 ? 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http:/ 映像寄存器的状态, 然后执行中断处理程序。 中断处 理完成后 , CPU 又会从重新转换到使用通用寄存 器的状态 , 继续执行被中断的程序。 使用这种机制 , 可以避免在发生中断时保存和恢复 CPU 的上下文 , 从而缩短了中断响应和中断恢复的时间。 但是上述的中断加速机制存在一些缺陷。 首先 , 由于 CPU 资源限制 , 一般只

9、具有一套映像寄存器, 因此 , 当发生中断嵌套时, 仍需要保存和恢复CPU 的执行上下文 。 其次 , 在通用寄存器中, 通常会有一 个寄存器作为堆栈指针寄存器。 因为映像寄存器和 通用寄存器的作用完全一样 ,所以,映像寄存器组中 也会存在一个堆栈指针寄存器。 然而 , 由于两组寄存 器是互相独立的, 每次只能有其中一组被选中而有 效 , 因此 , 这两组寄存器的内容无法做到直接同步。 假设 R 0 和 SR0 分别是通用寄存器组和映像寄存器 组中的堆栈指针寄存器。 在系统启动后正常运行时, R 0 的内容会被初始化为堆栈指针, 但此时 , SR0 的 内容未初始化, 可能还是非法值, 如果发

10、生中断 , 映 像寄存器被选中处理中断程序, 则中断处理程序中 一些堆栈访问操作会引起非法内存地址访问错误, 导致系统崩溃 。 为了解决这些不足 ,通常可以采取3种方案 。第 1 种是要系统保证通用寄存器组和映像寄存器组中 的堆栈指针寄存器内容一致, 但这需要硬件支持 ,实 现起来会增加硬件的复杂度。 第 2 种方案是通过软 件方法同步两组寄存器中的堆栈指针。 这样 , 在中断 处理程序中 , 首先要把堆栈指针拷贝到内存中, 然后 再切换到映像寄存器, 最后还需要把先前保存的堆 栈指针装入到映像寄存器组的堆栈指针寄存器中。 这个方案类似于 CPU 的上下文保存和恢复机制 , 使 得映像寄存器失

11、去了加速的意义。 第 3 种方法分别 在通用寄存器和映像寄存器中维护一个单独的堆栈 指针 , 并分配相应的内存空间作为堆栈进行管理。 这 种方案使得除了普通的堆栈, 系统还需要管理一个 专门用于中断处理的堆栈, 从而增加了系统复杂度。 本文提出了一种新的利用映像寄存器实现实时 操作系统的方案, 通过将操作系统内核和用户进程 分离 , 使它们分别运行于映像寄存器和通用寄存器 上 , 解决了上述问题, 并降低了中断处理开销, 提高 了系统的效率 。 1 系统方案 1. 1 中断处理 中断是用于通知CPU 有异步事件发生的硬件 机制 6。当中断产生时 , CPU 会在保存上下文后跳 转执行中断服务程

12、序, 当中断服务程序执行完毕后, CPU 会按如下情况返回 6 : 1) 对于非抢占内核,返回执行被中断的任务; 2) 对于抢占性调度内核, 返回执行最高优先级 的就绪任务 。 图 1 和图 2 分别说明了在非抢占和抢占调度内 核中 , 中断处理的过程 。 图1 非抢占内核的中断处理 图2 抢占内核的中断处理 由图 1 可见 , 在非抢占调度的内核中, 中断处理 之后内核会立即返回执行被中断的任务。 图2所示 的抢占调度内核中, CPU 总是执行处于就绪状态 的最高优先级任务。 如果中断导致某个具有较高优 先级的任务进入就绪状态,则中断返回时, 中断的任 务就会被抢占 。 现在大多数商用实时操

13、作系统都是 抢占调度方式 7-8 , 因此本文详细讨论抢占调度内 核中影响中断的因素: 1)中断延迟时间。 由于系统中存在一些临界 区, 实时操作系统在进入临界区时, 必须关闭中断, 在访问结束后 , 重新开启中断 。 如果中断在内核处于 临界区时发生 , 那么中断处理会被延迟, 中断延迟时 间记做L, 是中断拖延处理的时间。 2) 中断响应时间 。 由于抢占内核中, 中断发生 0091清 华 大 学 学 报(自 然 科 学 版)2007, 47 (S2) ? 1994-2008 China Academic Journal Electronic Publishing House. All r

14、ights reserved. http:/ 时要执行一个特殊程序, 用以通知内核进入中断处 理 , 并且记录中断嵌套层数。 中断响应时间记做R, R= 中断延迟时间+ 保存上下文时间+ 中断处理 时间 。 3) 中断恢复时间 。 在抢占内核中, 中断恢复过 程比较复杂 , 通常要在中断处理完成后执行一个专 门程序 。 该程序首先判断是否存在中断嵌套 ,如果不 存在 , 还要判断中断处理结束后是否有更高优先级 任务变为就绪 。 若此时最高优先级的任务就是刚才 被中断的任务, 则继续执行该任务; 否则 , 就要执行 当前优先级最高的就绪任务。中断恢复时间记做Y。 Y= 判断是否有更高优先级任务就

15、绪的时间+ 恢复 保存的上下文的时间+ 中断返回的时间 。 除了执行 中断处理程序本身的时间, 中断处理的开销可以记 做I=R+Y。 1. 2 基于映像寄存器构建实时内核 由上述的分析可知,减少R(包括L ) , Y中任何 一个值都可以提高中断处理的速度。 在没有中断嵌 套情况下 , 使用映像寄存器可以避免上下文的保存 和恢复过程 。 将内核运行在映像寄存器之上, 而用户 进程运行于通用寄存器上, 具有以下优点 : 1) 将内核空间和用户空间分隔开来。由于映像 寄存器通常需要在超级用户模式下才能访问, 这就 使得内核实际上是在硬件保护的空间中运行的。 当 执行用户程序时, CPU会转换到用户模

16、式下, 并且 使用通用寄存器 ,这个转换过程对用户是透明的 。 2) 由于操作系统内核具有自己的堆栈, 当中断 发生时 ,中断处理会在内核空间进行, 使用的是内核 堆栈 , 因此 , 对用户进程的上下文无需进行保存和 恢复 。 当然 , 这种方法也存在一些不足。 一个是在抢占 调度的内核中, 当中断处理引发了一次进程切换时, 具有较高优先级的进程会占用 CPU 资源 , 这个切换 过程不可避免地也会进行进程上下文的保存和恢 复 , 但这种情况在引言部分提到的3 种解决方案中 也会存在 。 如果不发生进程切换,即中断处理后仍然 恢复执行原来的进程, 则会避免进程上下文保存和 恢复的开销 。 另一

17、个不足是在中断嵌套时,上下文保 存和恢复的开销也不能避免, 这点同样在前述 3 种 方案中存在 。 图 3 描述了本文提出的操作系统设计方案。 内 核和用户进程分别运行于属于自身的寄存器组上。 当内核占用 CPU 时, 多路选择器会选中映像寄存器 进行处理 ; 而当用户进程占用CPU 时, 多路选择器 会选择通用寄存器进行处理。 切换过程由操作系统 完成 , 对于用户是透明的。 图3 内核和用户进程运行方案 2 系统实现 将抢占式调度的实时操作系统 COS2II 按照 1 . 2 节中所述方案移植到CK 520 平台上 , 并对系统进 行了验证 。CK520 结构有 16 个通用寄存器和16

18、个 映像寄存器 9。 通过使用控制指令设置程序状态寄 存器 (program status register , PSR) 的状态位 , 可 以对这 2 组寄存器进行控制。 当PSR 中A F 位被置位 时, 映像寄存器有效, 反之 A F 被清除时 , 通用寄存 器有效 。 为 了 处 理 中 断 嵌 套, COS2II 中 定 义 了 O SIntN esting 变量 , 每发生一次中断, 该变量值就 增加 1, 每返回一层中断, 该变量值就减少1。对这个 变量操作时 , 需要关闭中断 , 此间新发生的中断会被 延迟 6。 中断处理程序中 , 首先要检查这个变量 , 如 果不为 0, 表

19、明有中断嵌套, 需要在处理中断前保存 上下文 , 否则 , 可以直接处理中断。 中断处理结束时, 需要再次检查这个变量, 如果不等于0, 则需要进行 上下文恢复过程, 否则就直接返回 。 CK 520 平台中 , 所有中断均有各自的优先级, 低优先级中断不能打断高优先级中断。 频繁出现的 中断 , 如时钟中断具有较高的优先级。 在 COS2II 系统中 , 任务优先级和任务I D 是一 致的。 内核可以通过比较当前就绪任务和被中断任 务的 ID 决定是否进行任务切换。 这两个进程I D 分 别保存在全局变量中。 下面是系统实现时中断处理过程的伪代码: 1) if OSIntN esting=

20、0 goto (3) , 2) Context Save, 3) OSIntN esting + + , 4) U ser H andler Code, 5) Select H ighest Priority Task, 6)OSIntN esting -, 7) if OSIntN esting= 0 goto (9) , 1091孙 康,等: 基于映像寄存器构建的实时操作系统内核 ? 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http:/ 8) Context Rec

21、overy, 9) retu rn. 3 实验结果 本文移植了2 个版本的内核, 分别是基于映像 寄存器的版本和通用寄存器版本。 SAV E-ALL和 RESTO R E-ALL分别是保存和恢复CPU 上下文的 2段程序 。 表1给出了这2段程序的指令数 。 对于运行于通用寄存器版本的系统, 在每次处 理中断时 , 必定要执行SAV E-ALL和 RESTO RE- ALL2 段程序 , 一共 59 条指令 。对于运行于映像寄 存器版本的系统,在没有中断嵌套时, 中断处理无需 执行 SAV E-ALL 和 RESTO RE-ALL , 但是 , 这时 中断处理程序需要判断是否存在中断嵌套, 判

22、断需 要4条指令,因此,这种情况比前者少执行 59-4= 55 条指令 。 将CK 520 系统板设置成每50m s 发生一次定时 器 中 断, 这 样 每 分 钟 会 发 生 1 200 次 时 钟 中 断。 内核中定 义 了2 个 全 局 变 量 O SIntN um和 O SNestNum, 分别记录中断发生次数和中断嵌套 次数 。 在实验过程中 , 随机地通过外接信号产生一些 中断 , 然后 , 分别计算在1、2、5m in 的时间间隔内, 中断和中断嵌套发生的次数。 从表 2 的实验数据可以看出, 中断嵌套发生的 几率很低 , 在一定程度上 , 中断嵌套的发生依赖于中 断的优先级 。

23、 如果发生频率高的中断具有较高的优 先级 , 中断嵌套发生的频率就会降低。 使用平均中断 嵌套频率 , 可以计算出基于映像寄存器实现的内核 的中断处理平均效率(A E) : A E= 59- 4 ( 1- 0. 055% ) -(59+ 4) 0. 055%= 54. 97, 因此 , 该方 案可以平均为每个中断处理程序节省54. 97 条 指令 。 表1 保存恢复过程的指令数统计 程序名指令数功能 SAV E-ALL30 将 寄存器和PC指针存于堆 栈中 R ESTOR E-ALL29 将寄存器内容恢复并从中断 程序返回 表2 中断和中断嵌套次数统计 t m in中断次数中断嵌套次数中断嵌套

24、率 % 12 61310 . 038 24 98030 . 060 511 70080 . 068 4 结 论 本文提出了一种新的实时操作系统内核设计。 该设计方案使用映像寄存器来保护内核空间和处理 中断。 在 CK 520 平台上使用该方案实现了 COS2II 实时操作系统的改进和移植。 实验结果表明, 通过将 实时内核运行在映像寄存器上, 可以避免内核在中 断处理时执行多余的指令。 这个方案提供了一种利 用映像寄存器的新途径。 目前该方案还无法对中断 嵌套的开销进行优化。 参考文献 (References) 1 L iuCL ,L aylandJW.Schedulingalgorithm

25、sfor m ulti2p rogramm ingin a hardreal2tim e environm entJ . J ourna l ofthe A CM, 1973,20(1):46 -61. 2 H arbour MG, Klein MH , L ehoczky J P.T iming analysis fo r fixed2priorityscheduling of hard real2tim e systems J . IE E E T ransactionson Sof tw are E ng ineering, 1994, 20(1): 13 -28. 3 Burns A

26、, T indell K W , W ellings A J. Effectiveanalysis for engineeringreal2tim e fixed priorityschedulersJ .IE E E T ransactionsonS of tw a reE ng ineering,1995,21(5): 475 -480. 4 Seal D.A RM A rchitectureReference M anual M .2nd Ed U SA: A ddison2W esley Longm an PublishingCo, 2000. 5 L ipovsk i G J.Em

27、bedded M icrocontro llerInterfacingfor M2Core System s M .U SA: A cademic Press.2000. 6 L abrosse J J. M icroC OS II:The Real T im e KernelM . 2nd Ed U SA: CM P Books,2002 . 7 BarrM.Howtochoose areal2timeoperatingsystem EBOL .2003.h ttp:rino. com A rticles RTO Ses index. php. 8 刘文峰,李程远,李善平.嵌入式L inux

28、操作系统的研究 J .浙江大学学报(工学版) , 2004,38(4):447 -452. L IU W enfeng,L I Chengyuan,L I Shanping.Researchon embedded L inux operatingsystem J .J ou rnalofZ hej iang U niversity(Eng ineeringS cience) , 2004, 38 (4) : 447 -452. ( in Chinese ) 9 潘国振,王界兵,严晓浪.高性能嵌入式CPU特殊指令单元 的设计与实现J .浙江大学学报 (工学版 ) , 2005, 39(2): 2

29、11 -215. PAN Guozhen, WAN G J iebing, YANX iaolang. D esign and implem entation of special instructi on unit in high perfo rmance embeddedCPUJ .J ourna lofZhej iangU niversity (E ng ineeringScience ) , 2005,39 (2) :211-215 . ( in Chinese ) 2091清 华 大 学 学 报(自 然 科 学 版)2007, 47 (S2) ? 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1