操作系统之进程同步与进程互斥
一、进程同步
二、进程互斥
即临界区能进则立即进入,不能进则等待,且是让出CPU的有限等待。
三、进程互斥的软件实现方法
1. 单标志法(违背空闲让进)
2. 双标志先检查(违背忙则等待)
3. 双标志后检查(违背空闲让进、有限等待)
4. Peterson算法(未达到让权等待原则)
5. 总结
四、进程互斥的硬件实现方法
1. 中断屏蔽方法(不适用于多处理机)
2. TestAndSet(TS指令/TSL指令,不满足让权等待原则)
3. Swap指令(XCHG指令,不满足让权等待原则)
4. 总结
五、信号量机制
1. 整型信号量
2. 记录型信号量
六、用信号量机制实现进程互斥、同步、前驱关系
1. 进程互斥
2. 进程同步
信号量机制实现进程同步,记住这个套路就可以了,对于一前一后的执行语句,在需要先执行的语句之后添加V(s)即signal语句(可以理解为先生产数据才能用V(S)释放资源),在需要后执行的语句之前添加P(s)即wait语句(可以理解为要使用数据,所以先执行P(s))
3. 进程的前驱关系
套路和上面的2个进程同步一样,只是这是复杂的更多进程同步而已。记住口诀:先执行语句之后执行V(s);后执行语句之前执行P(s)
4. 总结
七、管程
通过信号量可以实现进程的同步、互斥,但是信号量的编写困难复杂且容易出错,因此,我们提出了管程的概念,本质是对信号量机制的“封装”,将同步与互斥的复杂操作封装起来,程序员只需要调用简单的函数就能实现进程的同步与互斥,而不必再关注复杂的PV操作。
1. 管程的定义和基本概念
2. 拓展1:用管程解决生产者消费者问题