进程同步问题教程
为保证多个进程有条不紊的运行,在多道程序系统中,加入进程同步机制。
单处理机系统的进程同步问题:
硬件同步机制
- 信号量同步机制
- 管程机制
进程同步的基本概念:
两种形式的制约关系
- 间接相互制约关系:比如打印机资源,要互斥的访问
- 直接相互制约关系:未完成某个任务,多个进程为了完成任务而合作,例如共享缓冲区
临界资源
- 访问临界资源应该互斥的访问
- 消费者生产者问题
- 临界区:不论硬件资源还是软件资源,多个进程必须互斥的对它进行访问,每个进程中访问临界资源的那段代码称为临界区
同步机制应遵循的规则
- 空闲让进
- 忙则等待
- 优先等待
- 让权等待
硬件同步机制
- 关中断
- test-and-set指令实现互斥
- 利用swap指令实现互斥
信号量机制
整形信号量:
- wait机制,当s<=0时,不断测试,该机制为遵循让权等待,而是陷入忙等状态
- 记录型信号量
- ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330091734143-232832460.png)
- ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330091922708-1342134600.png)
- ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330091900787-1674768191.png)
- AND型信号量
- ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330092419866-89999308.png)
- 信号量机制
1. ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330093300973-333492926.png)
- 信号量的应用
1. 利用信号量实现进程互斥
2. 利用信号量实现前趋关系
- 管程机制
1. 利用共享的数据抽象类型表示共享资源,并对共享数据类型定义一组操作
2. 管程组成
1. 管程名称
2. 局部于管理的共享数据结构说明
3. 对该数据结构上进行操作的一组过程
4. 对局部于管程的共享数据设置初始值的语句
3. ![进程同步问题教程](https://www.icode9.com/i/l/?n=20&i=blog/1860798/202003/1860798-20200330094502789-325695831.png)