Linux内核并发与同步ppt课件.ppt

Linux内核并发与同步ppt课件.ppt

ID:59416607

大小:2.85 MB

页数:41页

时间:2020-09-19

Linux内核并发与同步ppt课件.ppt_第1页
Linux内核并发与同步ppt课件.ppt_第2页
Linux内核并发与同步ppt课件.ppt_第3页
Linux内核并发与同步ppt课件.ppt_第4页
Linux内核并发与同步ppt课件.ppt_第5页
资源描述:

《Linux内核并发与同步ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、制作:平台研发部日期:2012-04-26作者:彭耀Linux内核并发与同步培训目的了解抢占式内核和SMP环境下的同步方法学习重点1、并发名词解释2、内核抢占实现分析3、中断处理4、linuxkernel同步方法TBS研发人员培训对象2小时彭耀培训讲师培训课时第一篇:并发名词解释竞态条件: 两个或更多线程同时操作资源时将会导致不一致的结果。临界段:用于协调对共享资源的访问的代码段,坚持互斥原则,为解决竞态条件而产生。互斥锁 确保对共享资源进行排他访问的软件特性。死锁 由两个或更多进程和资源锁导致的一种特别情形,将会降低进程的工作效率。并发名字解释抢占(pree

2、mption):kernel的一种调度特性,通过临时中断一个线程以执行另一个线程的方式来实现CPU共享。并发:并发是一种特性,即在同一时间段出现两个或更多进程并且这些进程彼此交互(例如,共享相同的资源)。UP:单处理器,靠抢占创造并行执行。SMP:对称多处理器,天然的并行执行,抢占也可以创造并行执行。并发名字解释第二篇:内核抢占实现分析内核抢占概述:2.6.x新的可抢占式内核是指内核抢占,即进程于内核空间,有更高优先级的任务出现时,如果当前内核允许抢占,则可以将当前任务挂起,执行优先级更高的进程。2.5.4版本之前,Linux内核是不可抢占的,高优先级的进程不

3、能中止正在内核中运行的低优先级的进程而抢占CPU运行。进程一旦处于核心态(例如用户进程执行系统调用),则除非进程自愿放弃CPU,否则该进程将一直运行下去,直至完成或退出内核。内核抢占实现分析用户抢占:2.6.x新的可抢占式内核是指内核抢占,即进程于内核空间,有更高优先级的任务出现时,如果当前任务允许抢占,则可以将当前任务挂起,执行优先级更高的进程。2.5.4之前,Linux内核是不可抢占的,高优先级的进程不能中止正在内核中运行的低优先级的进程而抢占CPU运行。进程一旦处于核心态(例如用户进程执行系统调用),则除非进程自愿放弃CPU,否则该进程将一直运行下去,直

4、至完成或退出内核。内核抢占实现分析用户抢占:内核即将返回用户空间的时候,如果needresched标志被设置,会导致schedule()被调用,此时就会发生用户抢占。用户抢占在以下情况时产生:1、从系统调返回用户空间。2、从中断处理程序返回用户空间。内核抢占实现分析不可抢占内核特点:不支持内核抢占的内核中,内核代码可以一直执行,到它完成为止。调度程序没有办法在一个内核级的任务正在执行的时候重新调度。内核代码一直要执行到完成(返回用户空间)或明显的阻塞为止。单CPU情况下,这样的设定大大简化了内核的同步和保护机制,可以分两步对此加以分析:内核抢占实现分析首先,不

5、考虑进程在内核中自愿放弃cpu的情况(也即在内核中不发生进程的切换)。一个进程一旦进入内核就将一直运行下去,直到完成或退出内核。即进程在内核中的执行是串行的,不用考虑多个进程同时执行所带来的并发问题,只需再考虑中断的情况。其次是自愿放弃CPU的情况,因为对CPU的放弃是自愿的、主动的,也就意味着进程在内核中的切换是预先知道的,不会出现在不知道的情况下发生进程的切换,内核范围内无需考虑并发问题。内核抢占实现分析为什么要内核抢占:实现内核的可抢占对Linux具有重要意义。首先,这是将Linux应用于实时系统所必需的。其次可解决Linux对多媒体(video,aud

6、io)等要求低延迟的应用支持不够好的缺陷。在Linux2.5.4版本发布时,可抢占被并入内核,同SMP一样作为内核的一项标准可选配置。内核抢占实现分析什么情况不允许内核抢占:为保证Linux内核在特殊情况下不会被抢占,抢占式内核使用了一个变量preempt_count,称为内核抢占锁。这一变量被设置在进程的PCB结构task_struct中。1、内核正进行中断处理;例如:#define__irq_enter()do{account_system_vtime(current);add_preempt_count(HARDIRQ_OFFSET);trace

7、_hardirq_enter();}while(0)//进入中断处理前会增加HARDIRQ_OFFSET。内核抢占实现分析2、内核正在进行中断上下文的BottomHalf处理;voidirq_exit(void){trace_hardirq_exit();//hardirqtextcontent计数减一//IRQ_EXIT_OFFSET=HARDIRQ_OFFSET-1,preempt_count>0sub_preempt_count(IRQ_EXIT_OFFSET);//如果没有上一行代码,这里逻辑判断必是falseif(!in_interrupt()&&

8、local_softirq_pendi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。