Linux内核抢占的实现机制分析(论文版).docVIP

Linux内核抢占的实现机制分析(论文版).doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核抢占的实现机制分析(论文版)

Linux内核抢占的实现机制分析(论文版) ??第28卷第3期 2008年6月惠州学院学报(自然科学版)JOURNALOFHUIZHOUUNIVERSITYVol??28??No??3Jun??2008 Linux内核抢占的实现机制分析 曾树洪,刘卫国1,21 (1.中南大学??信息科学与工程学院,湖南??长沙??410083; 2.惠州学院??计算机科学系,广东??惠州??516015) ????摘??要:早期的Linux内核是不可抢占的,在Linux对SMP多处理器系统支持的基础上,linux内核2.6版支持内核抢占。本文以Linux2.6.11版本内核为基础,深入地分析了Linux可抢占内核的实现原理。 关键词:Linux系统;实时;可抢占;SMP 中图分类号:TP39????文献标识码:A????文章编号:1671-5934(2008)03-0056-04 1??引言 随着计算机技术和信息化技术的发展,信息家电、手持设备、无线设备等个性化设备的出现,嵌人式系统成为了现在研究的热点。Linux以其开放源码、功能强大以及广泛支持等优点而广泛应用于嵌入式系统。嵌人式系统往往对实时性能要求比较高,运用在嵌入式系统中的Linux系统必须具有很好的实时响应性能。??实时 不仅要求逻辑结果正确,而且还有时间要求,一个实时任务应当在限定的时间内完成[1]。 影响Linux实时性能的因素有很多,中断处理机制、定时器的时钟精度、内核是否可被抢占、实时任务调度机制和调度算法等,我们只有很好的理解了Linux在这些方面的处理机制,才能对内核代码进行改进使其应用于具体的实时系统中。因此,分析研究Linux内核抢占的实现机制是非常重要的。 2??Linux的内核抢占机制 早期的LINUX内核是不可抢占。当进程处在用户态时,不论内核是不是抢占的,在适当的时候都可能发生进程切换,比如有更高优先级的任务被唤醒时,但是当一个进程处于内核态,除非它自愿放弃CPU,否则将一直占用CPU,直到完成或退出内核。为了分析内核不可抢占时进程的切换过程,假设当前系统中只有两个进程A和B,图1,进程A运行在用户态,在t1时刻,进程A被中断(如频繁发生的时钟中断等),在中断处理程序结束前的某一时刻,优先级更高的进程B变为了可执行状态,在中断返回时(t2时刻),调度程序被调用,切换到进程B,进程B开始运行,直到进程B结束的t3时刻,调度程序再次被调用,切换到进程A,进程A 继续运行。 ?? ?? 图1??用户态图2??内核态 图2,进程A运行在内核态,在t1时刻,进程A被中断(如频繁发生的时钟中断等),在中断处理程序结束前的某一时刻,优先级更高的进程B变为了可执行状态,由于内核是不可抢占的,在中断返回后,进程A继续运行, 收稿日期:2008-05-26 作者简介:曾树洪(1979-),男,四川泸州人,讲师,在读工程硕士研究生,研究方向为嵌入式操作系统。 ??第3期曾树洪等:Linux内核抢占的实现机制分析?57?直到进程A结束时,调度程序被调用,切换到进程B,进程B才开始运行。这种情况下,优先级高的进程B的执行被延迟了,严重影响了实时系统的性能。 把Linux内核设计成不可抢占,主要是为了简化内核代码设计,在单CPU情况下,避免了多个进程同时执行所带来的并发问题,大大简化了内核的同步和保护机制。但内核的不可抢占,也严重的影响了Linux的实时性能。Linux内核从2.0版本开始支持SMP多处理器,在多处理器系统上,内核中可以有多个进程同时在不同的CPU上运行,SMP多处理器系统面临同样的进程并发执行问题。这样在支持SMP多处理器的基础上,内核抢占的实现也就容易了,Linux内核从2.6版本开始,正式加入了对内核抢占的支持。下面以2.6.11版本的内核代码为基础来分析Linux可抢占内核的实现。 为了实现内核抢占,在每个进程的thread_info描述符里定义了一个preempt_count的变量和一个flags变量[2]: /include/asm-i386/Thread_info.h structthread_info{ ????structtask_struct*task; !! unsignedlongflags; __s32preempt_count; !! }; preempt_count变量作为抢占计数器使用,初始值为0,当preempt_countgt;0时,禁止内核抢占。flags变量里存放的是一些

您可能关注的文档

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档