免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: icanth
打印 上一主题 下一主题

[内核同步] 内核抢占时的内核屏障作用 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-06-11 16:48 |只看该作者
回复 10# icanth


    我是这么理解的。cpu我也不懂。

论坛徽章:
0
12 [报告]
发表于 2012-06-11 17:52 |只看该作者
回复 8# blake326
看了点资料,barrer()好像能保证前后顺序依次执行。你的后半段解说又让我迷糊了,唉

   

论坛徽章:
0
13 [报告]
发表于 2012-06-11 18:12 |只看该作者
zhenggn123 发表于 2012-06-11 17:52
回复 8# blake326
看了点资料,barrer()好像能保证前后顺序依次执行。你的后半段解说又让我迷糊了,唉

...


你的资料需要重新选择

论坛徽章:
0
14 [报告]
发表于 2012-06-11 18:28 |只看该作者
回复 13# blake326
但是,cpu每发射一批指令之后,不管有没有乱序执行,必须等到所有指令全部执行完成后,才能接着处理中断等问题。所以现在即使cpu的乱序使do_xxx在inc_preempt_count之前执行了,由于这个时候cpu上没有办法产生中断,其他内核路径无法抢占它也去执行do_xxx之类的代码,所以说是安全的。



能保证do_xxx是无法中断的一批指令能完成的?do_xxx执行完而inc_preempt_count没执行之前发生中断不会出问题?

   

论坛徽章:
0
15 [报告]
发表于 2012-06-11 18:38 |只看该作者
回复 14# zhenggn123

    ulk讲,cpu每执行完一条指令,会去检查intr引脚有没有中断,有的话就去处理。
   
    这里我认为更精确的来说,是cpu每执行完一组指令后,再去检查intr引脚有没有中断,有的话就去处理。
   

论坛徽章:
0
16 [报告]
发表于 2012-06-11 18:41 |只看该作者
回复 15# blake326
我不认为do_xxx总是一条或少数几条指令。

   

论坛徽章:
0
17 [报告]
发表于 2012-06-11 18:46 |只看该作者
回复 16# zhenggn123


   
   
    算了,你说的话我都不理解了。

论坛徽章:
0
18 [报告]
发表于 2012-06-11 21:08 |只看该作者
回复 9# icanth

一个进程在运行状态中,是不会迁移到别的cpu的。preempt_count只有本cpu会访问。对本cpu来说,程序是不会"看到"乱序的,所以,barrier()防止编译器的reorder就够了。
   

论坛徽章:
0
19 [报告]
发表于 2012-06-12 10:55 |只看该作者
回复 17# blake326


    可能是我没理解你的话。我的qq:2469103484 方便的话加上,互相探讨。

论坛徽章:
0
20 [报告]
发表于 2012-06-12 11:05 |只看该作者
回复 18# honkiko


    牛人! 一针见血。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP