进程的交互方式
进程互斥的要求
- 强制排他,在具有相同资源或共享对象的临界区的所有进程中,一次只允许一个进程进入临界区
- 充分并发 一个在非临界区停止的进程必须不干涉其他进程
- 空闲让进 没有进程在临界区时,任何需要访问临界区资源的进程必须能够立即进入
- 有限等待 不允许出现一个需要访问临界区资源的进程被无限延迟
- 满足异步 相关进程的执行速度和处理器数目无要求和限制
- 让权等待 当进程不能进入临界区,应该立即释放处理器,防止忙等待(busy-waiting)
实现互斥的方法
-
硬件方法
中断禁用:单处理器系统中进程在进入临界区前禁用中断,离开临界区后启用中断,这样保证进程在临界区时不会被打断,不会被抢占,严重影响效率,可能让其他进程处于饥饿状态
TestSet指令:原子操作指令
Exchange指令:原子操作指令详细:https://blog.csdn.net/qq_36267931/article/details/103196271
-
软件方法
Dekker算法
Peterson算法
详细:https://blog.csdn.net/qq_36267931/article/details/103199032 -
OS或程序设计语言的支持
信号量
详细:https://blog.csdn.net/qq_36267931/article/details/103207759
管程
消息机制