免费注册 查看新帖 |

Chinaunix

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

谁能解释一下,自旋锁spinlock [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-03 09:40 |只看该作者
能否说说spinlock in user mode是怎样用的呢
只知道有信号量

论坛徽章:
0
12 [报告]
发表于 2005-11-03 09:41 |只看该作者
原帖由 bleem1998 于 2005-11-3 08:24 发表
有三果问题不清楚
1,单CPU内核中,假设好几个内核线程用spinlock共享一块数据,一个时间只有一个线程得到锁,那是不是其它没有得到锁的线程都在疯狂的自旋中?

2,内核里似乎到处都有spinlock,在单CPU系统下 ...



1. 通常如果一个线程没有得到锁会调用 sleep() 或者 yield() 之类的函数让调度器重新进行调度,不会疯狂自旋的。

2. 自旋锁是一种很低级的操作,是为了实现资源的互斥而不是同步,在单 CPU 中其实可以用关闭中断的方法代替自旋锁,在多 CPU 中自旋锁必须要实现,这如前面一个朋友所说的,自旋锁需要锁总线,你可以查看 X86 的 lock 指令和 compare and exchange 指令或者 test and set 指令得到更多的信息。

3. 通常在用户空间不使用自旋锁,在用户空间通常使用 Mutex 互斥,Semaphore 同步。自旋锁有可能用于实现 Mutex 和 Semaphore.

论坛徽章:
0
13 [报告]
发表于 2005-11-03 10:07 |只看该作者
谢谢
明白了一些
bow all above

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
14 [报告]
发表于 2005-11-03 22:08 |只看该作者
原帖由 bleem1998 于 2005-11-3 09:40 发表
能否说说spinlock in user mode是怎样用的呢
只知道有信号量

前边有的说话不是十分确切。补充一下。

spin的意思,就是自旋、旋转。意思是说,如果加锁操作不成功,CPU就一直在spinning旋转,直到成功加锁为止。很显然,用户态不存在自旋锁,否则OS就乱套了。
大体上,spinlock只存在于SMP上,UP上的spinlock没有多大意义。你可能会说:抢占怎么办?回答是:如果你担心被抢占,请直接preempt_disable。 因为SMP上的互斥基本分两种:1, 防止其他CPU来竞争;2,防止本CPU被夺走执行了别的代码,导致竞争。解决第1种竞争的手段是自旋锁和信号量,解决第2种竞争的手段是禁止中断、禁止抢占和禁止下半部。

另外注意一点,在OS内核我们谈到信号量时,指的是与POSIX、System V信号量完全不同的东西。

论坛徽章:
0
15 [报告]
发表于 2005-11-03 22:28 |只看该作者
原帖由 帅绝人寰 于 2005-11-3 22:08 发表

前边有的说话不是十分确切。补充一下。

spin的意思,就是自旋、旋转。意思是说,如果加锁操作不成功,CPU就一直在spinning旋转,直到成功加锁为止。很显然,用户态不存在自旋锁,否则OS就乱套了。
大体上, ...

楼上说 "很显然,用户态不存在自旋锁,否则OS就乱套了". 是OS不准许用户用自旋锁吗? 还是用户用了自旋锁OS就乱套?

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
16 [报告]
发表于 2005-11-03 22:30 |只看该作者
原帖由 Alligator27 于 2005-11-3 22:28 发表

楼上说 "很显然,用户态不存在自旋锁,否则OS就乱套了". 是OS不准许用户用自旋锁吗? 还是用户用了自旋锁OS就乱套?


OS不可能提供如此之大的权限给用户程序,因为如果这样,我可以非常简单的在用户层制造死锁事件。

论坛徽章:
0
17 [报告]
发表于 2005-11-03 22:42 |只看该作者
惨绝
能否推荐我看点这方面的资料?
我想彻底搞明白这个

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
18 [报告]
发表于 2005-11-03 22:43 |只看该作者
原帖由 bleem1998 于 2005-11-3 22:42 发表
惨绝
能否推荐我看点这方面的资料?
我想彻底搞明白这个


如果是linux,推荐你看《情景分析》;如果是别的,可以泛泛的看《现代体系结构上的Unix系统》。

论坛徽章:
0
19 [报告]
发表于 2005-11-03 22:48 |只看该作者
yes linux
刚扫了两眼
是否看情景分析的SMP那章

论坛徽章:
0
20 [报告]
发表于 2005-11-03 22:52 |只看该作者
原帖由 帅绝人寰 于 2005-11-3 22:30 发表


OS不可能提供如此之大的权限给用户程序,因为如果这样,我可以非常简单的在用户层制造死锁事件。

死锁用户程序? 还是死锁OS?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP