免费注册 查看新帖 |

Chinaunix

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

[进程管理] 单处理器的自旋锁问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2013-04-26 09:17 |只看该作者
回复 19# skychgg

自旋锁的确有原子操作,但在单处理器下就没有了,它就变成了空操作,也就是直接是正常的c语言的一个return,甚至傻都没有!
这样的函数如何保证互斥!我的工作就是arm平台的,smp情况下,自旋锁的确可以保证,但通过不同的头文件包含,这个你可以看到3楼的“瀚海书香 ”版主已经回答了,单处理器和smp的自旋实现函数是不一样的,这个是内核很简单的技巧!
   

论坛徽章:
0
22 [报告]
发表于 2013-04-26 09:23 |只看该作者
本帖最后由 uliux 于 2013-04-26 09:42 编辑

回复 17# qq948299114

我看到了!我没懂!
我也不清楚他如何在单处理器的情况下,用自旋锁来实现内核锁的功能的。而且自旋锁也不是一直都是原子操作。
另外他说的还有一个可能是通过自旋锁的源码来实现单处理器的锁机制,只是这个cpu效率太低,不建议用?不知道是不是这个意思!
但我认为这个说法也是行不通的(这也是内核为什么没用自旋锁作为和其他锁机制一样的通用的原因(自己的想法)),因为自旋的意思就是cpu一直在执行空操作,一直在查询锁的状态,但在单处理器的情况下,这样的锁机制也太笨拙了,搞不好还能造成死锁,而且
这个内核代码怎么移植才能实现9楼提出的设想呢?

论坛徽章:
0
23 [报告]
发表于 2013-04-26 10:32 |只看该作者
回复 21# uliux

我有可能一直没说明我的重点,我不是说这个东西可以用在Linux, 我只是把它的实现与硬件结合学习一些东西,有可能有点跑题。因为以前我们一看到自旋锁就一定认为它肯定是在多核中才会用。单核肯定不能用。我认为这样是不是有点不准确。然后提出单核也可以用。只不过在一些特定的应用场合下才可以用。比如一些简单的系统,简单的应用场合为实现互斥。

如果你也是在ARM平台,那你看看我说的那两条指令的意思。以及下面这个文档
ARM Synchronization Primitives Development Article - DHT0008A_arm_synchronization_primitives.pdf

我想强调的是现在Linux平台的自旋锁的实现是与硬件如何相关的,然后我们其它地方是不是可以使用这个特殊,比如一些实时性有些特殊要求的地方。

还有一些利用无锁机制实现的学习。
lock-free-linked-lists.pdf

论坛徽章:
0
24 [报告]
发表于 2013-04-26 11:09 |只看该作者
回复 23# skychgg

ok!
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP