Linux内核抢占补丁的基本原理.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 内核抢占补丁的基本原理 - China Linux Forum 中国Linux论坛首页 技术论坛 | 文章荟萃 | 藏经阁| 项 目计划 | 在线调查 | 网站镜像 | 软件仓库 | 关于本站 | 讨论区列表 | 搜寻文章 | 新用户注册 | 登入论坛 | 在线用户 | 常见问题 Linux 高级应用 此话题阅读次数 : 2821 上一篇 索引 下一篇 平坦模式 树状模式 Linux内核技术 打印 jkl Linux内核抢占补丁的基本原理 (addict) 01-04- 18 CPU在内核中运行时并不是处处不可抢占的,内核中存在一些空隙,在这时进行抢占是安全的,内?br饲勒疾苟〉幕 •驹 •砭褪墙玈 13:45 MP可并行的代码段看成是可以进行 内核抢占的区域。 2.4内核正好细化了多CPU下的内核线程同步机构,对不可并行的指令块用spinlock和rwlock作了细 致的表示,该苟〉氖迪挚晌剿•角 •伞? 具体的方法就是在进程的任务结构上增加一个preempt_count变量作为内核抢占锁 ,它随着spinloc k和rwlock一起加锁和解锁 。当preempt_count为0时表示可以进行 内核调度。 内核调度器的入口为p reempt_schedule() ,它将当前进程标记为TASK_PREEMPTED状态再调用schedule() ,在TASK_PREEMP TED状态 ,schedule()不会将进程从运行队列中删除。 下面是内核抢占补丁的主要代码示意: arch/i386/kernel/entry.S: preempt_count = 4 # 将task_struct中的flags用作preempt_count,flags被移到了别的位置 ret_from_exception: # 从异常返回 #ifdef CONFIG_SMP GET_CURRENT(%ebx) movl processor(%ebx),%eax shll $CONFIG_X86_L1_CACHE_SHIFT,%eax movl SYMBOL_NAME(irq_stat)(,%eax),%ecx # softirq_active testl SYMBOL_NAME(irq_stat)+4(,%eax),%ecx # softirq_mask #else movl SYMBOL_NAME(irq_stat),%ecx # softirq_active testl SYMBOL_NAME(irq_stat)+4,%ecx # softirq_mask #endif jne handle_softirq #ifdef CONFIG_PREEMPT cli incl preempt_count(%ebx) # 异常的入口没有禁止 内核调度的指令,与ret_from_intr匹配一下 #endif ENTRY(ret_from_intr) # 硬件中断的返回 GET_CURRENT(%ebx)

文档评论(0)

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

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

1亿VIP精品文档

相关文档