社区
Linux_Kernel
帖子详情
信号量的实现机制
小魔菇
2010-01-07 10:32:15
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
那么为什么信号量在多核的情况下 不能实现同步功能
请大牛指点一下
...全文
787
11
打赏
收藏
信号量的实现机制
自旋锁是锁总线实现的 那么信号量是怎么实现的? 也是锁总线吗? 那么为什么信号量在多核的情况下 不能实现同步功能 请大牛指点一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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版本吧
信号量
机制
实现
进程的互斥、同步、前驱
本文详细介绍了
信号量
机制
,包括整型
信号量
、记录型
信号量
、AND型
信号量
和
信号量
集。
信号量
用于解决进程间的互斥和同步问题,确保资源的有效管理和避免死锁。通过P、V操作,进程可以
实现
对资源的有序访问。此外,文章还探讨了
信号量
在
实现
进程前驱关系中的应用,并总结了
信号量
在进程控制中的重要作用。
认识
信号量
机制
、以及用
信号量
来
实现
进程互斥于进程同步
本文介绍了
信号量
机制
,包括
信号量
及 P、V 原语。阐述了整型
信号量
的定义、操作逻辑及
实现
进程互斥的方式,指出其不满足“让权等待”的缺陷。重点讲解记录型
信号量
解决“忙等”问题的原理与优势,还说明了
信号量
在进程互斥和同步中的应用。
Hystrix
信号量
机制
实现
资源隔离
本文介绍基于 Hystrix
信号量
机制
实现
资源隔离。Hystrix
实现
资源隔离主要有线程池和
信号量
两种技术,默认用线程池模式。文中阐述了
信号量
机制
原理、与线程池的区别及适用场景,还给出
信号量
简单 Demo,如对本地缓存访问用
信号量
做隔离。
什么是
信号量
,
信号量
的
实现
机制
本文围绕
信号量
展开,介绍其基本概念,它是用于进程同步和互斥的
机制
,本质是记录可用资源数量的非负整数变量。阐述了基于操作系统内核和 C++ 语言层面的
实现
机制
,包括 P、V 操作。还说明了其应用场景,如
实现
共享资源互斥访问和进程或线程间同步。
信号量
实现
的
机制
本文深入探讨了
信号量
在并发控制中的应用,包括
信号量
的
实现
机制
、使用方式及与其他并发控制方法如互斥、读写锁、完成条件、Spinlocks等的比较。详细解释了如何使用
信号量
实现
同步操作,防止竞态条件,以及如何在不同场景下选择合适的并发控制策略。
Linux_Kernel
4,469
社区成员
17,458
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章