纯粹所热爱,信念、为之坚持下去
文章目录
- 进程同步
-
- 进程通信
- 进程互斥
-
- 进程互斥引入
- 遵循规则
- 小结
- 进程互斥的软件实现方法
-
- 单标志法
- 双标志先检查法
- 双标志后检查法
- Peterson 算法
- 小结
- 进程互斥的硬件实现方法
-
- 中断屏蔽方法
-
- 优缺点
- TestAndSet指令
-
- 优缺点
- Swap 指令
-
- 优缺点
- 小结
进程同步
-
进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。
-
前言回顾 : 异步:是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
进程通信
进程通信 ———管道通信
- 读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据→读数据”的顺序来执行的。如何解决这种异步问题,就是“进程同步”所讨论的内容。
-
同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
-
进程的“并发”需要“共享”的支持。各个并发执行的进程不可避免的需要共享一些系统资源(比如内存,又比如打印机、摄像头这样的Ⅵ/O设备)
操作系统的特征: 并发、共享、虚拟、异步
进程互斥
- 了解什么是临界资源
critical
鉴定的、临界的、互斥的
进程互斥引入
遵循规则
一下四个规则逻辑(重要)
- 1、空闲让进
- 2、忙则等待
- 3、有限等待
- 4、让权等待
小结
进程互斥的软件实现方法
单标志法
turn
表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问了临界区之后,才会修改turn
的值。也就是说,对于临界区的访问,一定是按P0→P1→P0→P1→…这样轮流访问。- 这种必须“轮流访问”带来的问题是,如果此时允许进入临界区的进程是P0,而P0一直不访问临界区,那么虽然此时临界区空闲,但是并不允许P1访问。因此,单标志法存在的主要问题是:违背“空闲让进”原则。
双标志先检查法
- 算法思想:设置一个布尔型数组
flag[]
,数组中各个元素用来标记各进程想进入临界区的意愿,比如flag[0]=ture
意味着0号进程P0现在想要进入临界区。每个进程在进入临界区之前先检査当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[i]
设为true
,之后开始访问临界区。
- 安照①⑤②⑥③⑦……的顺序执行(并发)
双标志后检查法
Peterson 算法
- 算法思想:双标志后检査法中,两个进程都争着想进入临界区,但是谁也不让谁,最后谁都无法进入临界区。 Gary L. Peterson想到了一种方法,如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。
- Peterson算法用软件方法解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是依然未遵循让权等待的原则。
小结
进程互斥的硬件实现方法
中断屏蔽方法
- 利用“开/关中断指令实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)
优缺点
- 优点:简单、高效
- 缺点:不适用于多处理机;只适用于操作系统内核进程,不适用于用户进程因为开/关中断指令只能运行在内核态,这组指令如果能让用户随意使用会很危险)
TestAndSet指令
- 简称TS指令,也有地方称为 TestAndSetlock指令,或
TSL
指令,TSL
指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成。以下是用C语言描述的逻辑
- 指针出现的原因:需要共享
优缺点
- 优点:实现简单,无需像软件实现方法那样严格检査是否会有逻辑漏洞;适用于多处理杋环境
- 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,从而导致“忙等”.
Swap 指令
- Swap 指令有的地方也叫
Exchange
指令,或简称XCHG
指令。 - Swap指令是用
硬件实现
的,执行的过程不允许被中断,只能一气呵成。以下是用c语言描述的逻辑
优缺点
- 优点:实现简单,无需像软件实现方法那样严格检査是否会有逻辑漏洞;适用于多处理机环境
- 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,从而导致“忙等”.