有关进程间通信
=========
第一个问题:
=========
我所了解的,忙等待互斥、信号量、互斥量、管程这4个东东都应该是属于对共享资源所采取的保护机制,为何与IPC(进程间通信)关联在一起呢?这4个东东又是如何实现进程间通信的呢?进程间通信应与“消息传递”这个机制关联在一起才对阿.......
=========
第二个问题:
=========
如何实现信号量?我所指的是不用现成的函数实现,而是用C或汇编实现(可以只列伪代码,简单介绍实现步骤,如第一步、第二步等)。
=========
第三个问题:
=========
关于原子操作,我的理解是只能由2条指令实现(可能还有其他指令,这得根据不同CPU而定),TSL和XCHG。而实现共享资源的有效保护就有以下方法,如:忙等待互斥、信号量、互斥量、管程等。不论他们4种方法当中的哪一种实现,都是由相关的“锁“或“信号量“或“条件变量“实现互斥的。而对“锁“或“信号量“或“条件变量“的读、写就需要原子操作,以防多个进程“同时”获得“允许“而进入临界区。我的理解对吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
回复 1# kallytin
先顶一下
回复 1# kallytin
有人知道吗?
回复 3# kallytin
.........
1.进程间通信为啥非要和消息联系呢?同步和互斥这本身就是一种信息的传递啊。比如一个信号量被一个进程p了,另一个进程再去获取就会阻塞住,这不就是相当于消息告诉他资源暂时不可用吗?说话是通信,手语也是,眼神也是。
2.这个你可以参考linux信号量的实现机制,虽然基本原理简单,但是细节处理的地方很多
3.我觉得你理解的对,比如涉及到一些计数器之类的变量,需要使用原子加或者减
Second: Pls refer to ULK v3 /
Third: The reading and writing of Semaphore and Mutex are not required atomic, because the implement of them are making it!
楼上,我没有看过ULK V3,但信号量的读、写(或者说检测、修改及可能发生的睡眠操作均属于原子操作)应为原子操作。你提供的原文是否还有上下文环境说明?
Sorry these opinions are all my personal thinking, not original saying from ULK.
对于1,我不太明白你的解释。如果A和B两个进程间要传递数据(比如将字符串“abc”从进程A传递到进程B,用消息传递就比较简单直接,将该字符串从进程A复制到进程B),那通过信号量或忙等待等(之前列举的4种方法)该如何实现?
对于2,可否列出步骤?本人是个新手.......
回复 9# kallytin
......