文章目录
- 一. 进程同步 && 进程互斥
- 四个区域
- 四个原则
- 总结:
- 二. 进程互斥的软件实现方法
- 1)单标志法
- 2)双标志先检查法
- 3)双标志后检查法
- 4)Peterson 算法
- 总结
- 三. 进程互斥的硬件实现方法
- 1)中断屏蔽方法
- 2)TestAndSet 指令
- 3)Swap 指令
- 总结
一. 进程同步 && 进程互斥
-
由于进程有异步性,因此需要有同步存在。
同步也叫直接制约关系,指为完成某任务而建的两或多个进程,需要在某些位置协调各自的工作次序而产生的制约关系。进程间的直接制约关系就是源于他们之间的相互合作。 -
各个并发进程总要共享一些系统资源(内存、打印机等)
-
两种资源共享方式:互斥 && 同时
-
互斥共享方式:同一时间段,只允许一个进程访问
-
同时共享方式:同一时间段,可允许多个进程访问
-
临界资源:同一时间段,只允许一个进程使用的资源(摄像头、内存缓冲区等)
-
对临界资源的访问,必须互斥地进行
四个区域
- 进入区:负责检查是否可以进入临界区;可进则设置正在访问临界资源的标志(上锁),以阻止其他进程同时进入临界区。
- 临界区:访问临界资源的代码段
- 退出区:负责解除正在访问临界资源的标志(解锁)
- 剩余区:做其他处理
四个原则
- 四个原则:空闲让进、忙则等待、有限等待、让权等待
总结:
二. 进程互斥的软件实现方法
1)单标志法
- 每个进程进入临界区的权限,只能被另一个进程赋予
- 可以实现:同一时刻最多允许一个进程访问临界区
- 问题:违背空闲让进原则
2)双标志先检查法
- 思想:用布尔型数组,标记各进程想进入临界区的意愿
- 各进程进入临界区前,先检查当前有没有别的进程想进入临界区,无则设flag[i],然后访问
- 问题:违反忙则等待原则
- 原因:进入区的检查 && 上锁无原子性。
3)双标志后检查法
- 结合前两个算法而成
- 解决了忙则等待的问题,但是违反了空闲让进和有限等待。会产生饥饿
4)Peterson 算法
- 让让让!解决了之前的问题
- trun:优先让该进程进入临界区
- 问题:未遵循让权等待原则
总结
三. 进程互斥的硬件实现方法
1)中断屏蔽方法
- 利用开/关中断指令实现
- 简单高效,但不适用于多处理机。不适用于用户进程
2)TestAndSet 指令
这里没怎么看,日后发现重要的话再复习吧 T T
3)Swap 指令
- 原子性