社区
Linux_Kernel
帖子详情
信号量的实现机制
小魔菇
2010-01-07 10:32:15
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
那么为什么信号量在多核的情况下 不能实现同步功能
请大牛指点一下
...全文
697
11
打赏
收藏
信号量的实现机制
自旋锁是锁总线实现的 那么信号量是怎么实现的? 也是锁总线吗? 那么为什么信号量在多核的情况下 不能实现同步功能 请大牛指点一下
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小魔菇
2010-01-16
打赏
举报
回复
[Quote=引用 10 楼 cdbdyx 的回复:]
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
[/Quote]
恩 你说的是对的
充电宝111
2010-01-08
打赏
举报
回复
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
也是锁总线
lock;
那么为什么信号量在多核的情况下 不能实现同步功能
谁说的?
都能实现同步,只是应用场合不同,spin_lock用在不能睡眠(中断)或获得资源较快的情况下,信号量用在较长时间才能获得资源的情况下,因为信号量会引起睡眠,所以上下文切换的时间小于这个时间,那么用它就算合理
小魔菇
2010-01-07
打赏
举报
回复
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
Wenxy1
2010-01-07
打赏
举报
回复
信号量在多核下能实现同步吗? 可以
信号量不是以自旋锁为前提的吗?不是,自旋锁只在SMP有效。
自旋锁都能实现多核同步, 信号量能不能实现多核同步?应当可以
快乐田伯光
2010-01-07
打赏
举报
回复
我所理解的,
信号量跟自旋锁在多核下都可以实现同步。
但自旋锁一般用于多线程环境,也就是说,在多核的情况下,同一个进程的线程分配到不同的核上,一直在运行,自旋的意思就是自己一直检测直到条件满足就继续运行,没有一个挂起切换的状态。
而信号量的话必需经常挂起就绪运行这个状态。
所以同步都是可以实现,只是在运行的多核机器的多线程程序自旋锁会更快。
[Quote=引用 2 楼 eclipse_2 的回复:]
想请教的是
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
[/Quote]
小魔菇
2010-01-07
打赏
举报
回复
想请教的是
信号量在多核下能实现同步吗?
信号量不是以自旋锁为前提的吗?
自旋锁都能实现多核同步
信号量能不能实现多核同步?
Wenxy1
2010-01-07
打赏
举报
回复
Linux系统内核的锁机制一般通过3 种基本方式来实现,即原语、关中断和总线锁。
参考:
http://blog.sina.com.cn/s/blog_4c275d990100de45.html###
http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c93.html
小魔菇
2010-01-07
打赏
举报
回复
3Q
猫已经找不回了
2010-01-07
打赏
举报
回复
[Quote=引用 6 楼 eclipse_2 的回复:]
引用 5 楼 eclipse_2 的回复:
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
好象是2。0版本吧
[/Quote]
2.0的内核已经有支持SMP,2.6时代在逐渐完善。
http://www.ibm.com/developerworks/cn/linux/l-linux-smp/index.html
这方面的东西可以去IBM.com看看。
xhy_851221
2010-01-07
打赏
举报
回复
[Quote=引用 5 楼 eclipse_2 的回复:]
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
[/Quote]2.4
小魔菇
2010-01-07
打赏
举报
回复
[Quote=引用 5 楼 eclipse_2 的回复:]
明白了 谢谢各位大牛的解答
顺便问个小问题
linux是从那个内核版本开始支持SMP的?
[/Quote]
好象是2。0版本吧
linux2.6.1内核源码注释
在Linux内核中,常见的同步原语包括自旋锁(spinlock)、读写锁(rwlock)、
信号量
(semaphore)和完成标志(completion)。自旋锁用于保护短时间的临界区,防止其他CPU核同时访问;读写锁则允许同时有多个读取者但...
Qt之模型/视图(实时更新数据)
这通常通过定义特定的信号和槽来
实现
,当数据发生变化时,模型会发出信号通知视图更新。 其次,视图(View)是用户看到和交互的部分,它负责呈现模型中的数据。在本例中,视图可能是一个表格视图(QTableView),...
信号量
实现
的
机制
信号量
实现
的
机制
信号量
是一种睡眠锁。它是
实现
同步操作,防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的
信号量
,否则不能供访问权限,
信号量
会把这个访问进程放进一个等待...
深入Linux内核
信号量
的设计与
实现
简介:Linux内核中的
信号量
机制
是进程间同步的关键,用于共享资源的管理和访问协调。...通过理解
信号量
的工作原理、等待与唤醒
机制
,以及死锁预防的规则,读者可以掌握如何有效地应用这些概念,
实现
高效的...
操作系统-
信号量
机制
;用
信号量
机制
实现
进程互斥、同步、前驱关系
文章目录
信号量
机制
信号量
整形
信号量
记录型
信号量
信号量
机制
的应用
信号量
机制
实现
进程互斥
信号量
机制
实现
进程同步
信号量
机制
实现
进程的前驱关系
信号量
机制
信号量
用户可以通过使用操作系统提供的一对原语来对信号...
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章