操作系统——进程同步、进程互斥——2.9
开始盘一下进程同步、进程互斥
同步:直接制约关系,进程需要在某些位置协调他们的工作次序而产生的制约关系
1.两种资源共享方式
- 互斥共享
一个时间段只允许一个进程访问该资源 - 同时共享
一个时间段允许多个进程“同时”(宏观上)对他们进行访问
2.进程互斥
- 遵循原则
空闲让进
忙则等待
有限等待
让权等待 - 四个部分
进入区:检查是否可进入临界区,若可以,需要“上锁”
临界区:访问临界资源那段代码
退出区:负责“解锁”
剩余区:其余代码
3.进程互斥-软件实现
- 单标志法
两个进程在访问完临界区后会把临界区的权限转交给另一个进程。
每个进程进入临界区的权限只能被另一个进程赋予
违背 空闲让进 - 双标志先检查
设置一个布尔类型数组flag[],数组中各个元素用来标记各进程向进入临界区的意愿。
每个进程进入临界区之前,先检查当前有没有别的进程想进入临界区。
若没有把自己的标志设置为true,之后开始访问临界区。
两个进程 可能会发生进程切换 违背 忙则等待 - 双标志后检查
类似先检查的问题
违背 空闲让进 有限等待的原则 -
peterson算法 (重点)
采取“孔融让梨”的方式,主动让对方使用临界区
采取,临界区数组,单标志turn
动画 生动形象 的阐述了这个道理,反正都要去占坑位,先去一个,免得时间花在争吵上,哈哈哈????
4.进程互斥-硬件实现
- 中断屏蔽
利用开/关中断指令,只适用于系统内核进程 - TestAndSetLock
TSL指令用硬件实现,执行的进程不允许中断 - Swap指令