社区
Linux_Kernel
帖子详情
信号量的实现机制
小魔菇
2010-01-07 10:32:15
自旋锁是锁总线实现的
那么信号量是怎么实现的? 也是锁总线吗?
那么为什么信号量在多核的情况下 不能实现同步功能
请大牛指点一下
...全文
698
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内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。
Qt之模型/视图(实时更新数据)
Qt
实现
的MVC编程 功能: (1)添加委托(进度条) (2)显示文件名称、大小、进度、速度、剩余时间、状态等。 (3)可进行添加、更新、删除、清空等操作。 (4)实时更新数据
信号量
实现
的
机制
信号量
实现
的
机制
信号量
是一种睡眠锁。它是
实现
同步操作,防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的
信号量
,否则不能供访问权限,
信号量
会把这个访问进程放进一个等待队列中(这个等待队列是在
信号量
初始化过程中被初始化的),然后让其进入睡眠状态。这是处理器重新调度,去执行其他进程的操作。保护共享数据的
信号量
被释放,被这个
信号量
放进等待队列的进程会被激活,获得该信号
深入Linux内核
信号量
的设计与
实现
本文还有配套的精品资源,点击获取 简介:Linux内核中的
信号量
机制
是进程间同步的关键,用于共享资源的管理和访问协调。本资料详细探讨了
信号量
在Linux内核中的设计与
实现
,包括互斥
信号量
(mutex)和普通
信号量
(semaphore)的不同类型及其在并发程序中的应用。通过理解
信号量
的工作原理、等待与唤醒
机制
,以及死锁预防的规则,读者可以掌握如何有效地应用这些概念,
实现
高效的...
操作系统-
信号量
机制
;用
信号量
机制
实现
进程互斥、同步、前驱关系
文章目录
信号量
机制
信号量
整形
信号量
记录型
信号量
信号量
机制
的应用
信号量
机制
实现
进程互斥
信号量
机制
实现
进程同步
信号量
机制
实现
进程的前驱关系
信号量
机制
信号量
用户可以通过使用操作系统提供的一对原语来对
信号量
进行操作,从而很方便的
实现
了进程互斥、进程同步(原语执行只能一气呵成,不可被中断,又关中断/开中断指令
实现
)
信号量
其实就是一个变量(可以是一个整数,也可以是一个更复杂的记录性变量),可以用一个
信号量
来表示系统中某种资源的数量。(比如:系统中只有一台打印,就可以设置一个处置为1的
信号量
) 一对原语:wai
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章