有关进程间通信的问题
=========
第一个问题:
=========
我所了解的,忙等待互斥、信号量、互斥量、管程这4个东东都应该是属于对共享资源所采取的保护机制,为何与IPC(进程间通信)关联在一起呢?这4个东东又是如何实现进程间通信的呢?进程间通信应与“消息传递”这个机制关联在一起才对阿.......
=========
第二个问题:
=========
如何实现信号量?我所指的是不用现成的函数实现,而是用C或汇编实现(可以只列伪代码,简单介绍实现步骤,如第一步、第二步等)。
=========
第三个问题:
=========
关于原子操作,我的理解是只能由2条指令实现(可能还有其他指令,这得根据不同CPU而定),TSL和XCHG。而实现共享资源的有效保护就有以下方法,如:忙等待互斥、信号量、互斥量、管程等。不论他们4种方法当中的哪一种实现,都是由相关的“锁“或“信号量“或“条件变量“实现互斥的。而对“锁“或“信号量“或“条件变量“的读、写就需要原子操作,以防多个进程“同时”获得“允许“而进入临界区。我的理解对吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
回复 1# kallytin
先顶一下
回复 1# kallytin
有人知道吗?
........似乎还没有回答到问题.........且忙等待互斥、信号量、互斥量、管程这4个都是几十年前的技术,何来先进华丽?....
回复 5# kallytin
有人知道吗?
第一个问题:利用互斥机制告诉其他上下文“我要独占资源”、“我要释放资源”,本身不就是“消息传递”吗?
第二个问题是条件变量的标准例题,能讲一堂课...
第三个问题要看你如何定义“原子操作”
楼上,谢谢你的回复。对于你的回复,我仍有以下疑问:
第一个问题,如果要实现将字符串"abc"从进程A“传递"到进程B,使用信号量、互斥、忙等待、管程等该如何实现?(用消息传递的方式我清楚)。
第二个问题,可否列出大致步骤?
第三个问题,不太明白你的解释.......可否说明得详细些
我觉得unix 网络编程 第二卷 可以完全解决你的问题,我觉得 socket 信号 也可以作为ipc 的一种手段
unix 网络编程 第二卷 中有关于 可以实现posix 信号量的源码,我记得好像用了管道方式 svr4 信号量 共享内存 中 的pthread_cond 三种方式
用户态 一窜 中间不能被别人打断的代码,我觉得就可以认为是原子操作
楼上,是否可以说得具体点,因为似乎第一个问题和第三个问题并不能在你的回答中反映出(但从你的回答里似乎已包括了)........