第二章 操作系统 - 1、进程管理

一、进程管理 - 进程的概念

进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

它由程序块进程控制块(PCB)数据块三部分组成

进程和程序的区别:

进程是动态的,程序是静态的。程序存储在硬盘上一直都会存在,而进程的话,只有在程序运行的时候才有,程序关闭时,进程就会消亡。

进程是程序的一次执行过程,没有程序就没有进程

程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏就永远存在。

程序是一个静态的概念,而进程是一个动态的概念,它由创造而产生,完成任务后因撤销而消亡;

进程是系统进行资源分配和调度的独立单位,而程序不是。

这里出题一般都是概念性的考察

二、进程管理 - 进程的状态


重点掌握三态模型

1、进程的三态模型

第二章 操作系统 - 1、进程管理

等待又称之为:阻塞

状态之间的切换

1、就绪 → 运行

就绪状态就是所有准备工作的都做好了,只等待 CPU 的运行资源,得到了 CPU 的运行资源之后,就转变成立了运行状态

2、运行 → 等待

等待某一个事件的发生,比如:输入设备的输入等。等到对应事件发生之后,就会从等待状态变为就绪状态

3、运行 → 就绪

有两种情况会发生这种状态的转换:

1、CPU 时间片用完

2、有比当前的进程优先级更高的新进程进入。该进程只能释放 CPU 资源,让优先级更高的进程进行使用

4、等待 → 就绪

等待的事件发生完毕之后,进程就进入到了就绪状态

总的来说,只有运行和就绪两种状态之间可以相互转换,其他的状态之间只能单向进行转换。

2、进程的五态模型


第二章 操作系统 - 1、进程管理

五态模型到三态模型,多添加了两个静止状态:静止就绪状态静止阻塞状态

一般从运行到静止就绪,从活跃阻塞到静止阻塞的挂起都是通过人为进行操作的

三、进程管理 - 进程的同步与互斥

1、同步

同步是合作进程之间直接的制约关系


第二章 操作系统 - 1、进程管理

比如上图,张三和李四要同时到达终点 B ,因为李四速度快,所以在运行期间李四需要等待张三

2、互斥

互斥是一个进程或者多个进程之间,形成的间接的制约关系。

它们相互之间进行制约的原因,是因为他们之间需要去争夺临界资源


第二章 操作系统 - 1、进程管理

比如上图的独木桥就是一个临界资源,每一次只能有一个人通过,不能同时有两个人使用独木桥。

四、进程管理 - PV 操作

1、PV 操作的解释

临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机磁带机等

临界区:每个进程中访问临界资源的那段代码称为临界区

信号量:是一种特殊的变量

P是荷兰语的 Passeren,V是荷兰语的 Verhoog


第二章 操作系统 - 1、进程管理


P 操作是一个申请资源的操作

V 操作是一个是释放资源的操作。

图中的 S 代表信号量


P 操作:
进行资源申请操作时,先对信号量 S 进行减 1 的操作,然后对 S 进行判断。

如果 S < 0 ,则说明此时没有资源可以供使用,需要将进程进行挂起,使进程进入阻塞进程队列进行等待。

如果 S > 0 ,则说明有资源可以供使用,进程就可以获取资源,执行后面的步骤。

S 操作:
释放资源时,对信号量 S 进行加 1 操作,然后对 S 进行判断。

如果 S <= 0,说明阻塞进程队列中有进程正在等待资源进行后续的操作,而此时系统将唤醒等待的进程,来申请资源进行之后的操作。

如果 S > 0 则说明可以进行后面的操作,不会形成阻塞。

2、互斥模型

多个进程对临界资源进行争夺。

例子:多个进程共享一台打印机问题(互斥模型)


第二章 操作系统 - 1、进程管理

  比如只有一台打印机,多个进程进行共享时,必须进行资源的争夺。因为只有一台打印机,因此只有等上一个进程使用完毕之后,下一个进程才能进行使用,因此在这种情况下,P( S ) 操作和 V( S ) 是需要成对出现的。

3、同步模型


第二章 操作系统 - 1、进程管理

该模型的前提是单缓冲区。模型中存在两个信号量 S1 和 S2 。
其中初始值为:S1 = 1,S2 = 0 。

首先生产者生一个产品,需要对信号量 S1 进行减 1 操作 P( S1 ),当产品生产完成以后,送到缓冲区后,对信号量 S2 进行加 1 操作。

而在消费者这端,首先对信号量 S2 进行判断,如果不为 0 ,则说明缓冲区中有产品可以进行消费。从缓冲区取出产品,将信号量 S2 进行减 1操作 P( S2 ) ,此时进行消费,将信号量 S1 进行加 1 操作。

该模型中通过 S1 和 S2 两个信号量来进行同步互斥的控制。其中信号量 S1 用来阻塞控制生产者,而信号量 S2 用来阻塞控制消费者。

生产者在生产时,需要先判断信号量 S1 是否为 0,如果为 0,则说明市场上有产品,此时不需要进行生产,生产者被阻塞

而消费者在消费完成以后,通过对信号量 S1 进行加 1 操作,从而可以唤醒生产者进行生产。

同样生产者在生产完成以后,将产品放入缓冲区中,需要对信号量 S2 进行加 1 的操作,从而去唤醒消费者此时可以从缓冲区中取产品。

而消费者从缓冲区中取出产品后,需要对缓冲区的信号量 S2 进行减 1 的操作。如果信号量 S2 为 0,则说明此时缓冲区中没有产品可供取出,消费者被阻塞


习题 1:

第二章 操作系统 - 1、进程管理

分析:

先从最简单的情况开始分析,因为只有一个收银员,因此从收银员这一端开始分析。并且信号量 S1 和 S2 代表的是没一个需要进行买单的顾客。

在没有人来付款的时候,收银员是处于一个阻塞的状态,因此 b1 是一个 P(减)的操作。完成收费以后,需要叫下一个顾客来进行付款操作,需要对某一个进行增加的操作,因此 b2 是一个 V (加)的操作。

通过这样分析可以排除第二空的 B 选项。因为收银员是要处理第一个人的付款操作,因此 b1 是 P( S1 ),只有有人需要进行买单,收银员才开始工作,因此 b1 是完成了对于收银员的阻塞操作。而在完成付款之后需要唤醒下一个消费者,因此 b2 是 V( S2 )。

对应的购书者的进程,当第一个消费者需要进行买单时,需要唤醒收银员,因此需要对信号量 S1 进行加的操作,即:a1 是 V( S1 ),在判断完成了付款之后,购书者才能进行通过 a2 P( S2 )的操作离开书店。

a1 和 a2 两个操作是为了控制购书者在完成了所有的付款操作之后才能离开书店,因此 a2 操作是阻塞了购书者。

在这个模型中 a1 和 a2 对应的是一对 PV 操作,b1 和 b2 对应的是另外一对 PV 操作。

因此答案是 A 和 C


习题 2:
通过前趋图来考察 PV 操作的应用。前趋图中每一个圆圈代表的是一个进程,箭头代表上一个进程驱动下一个进程。

这种题目的突破口是寻找入度最多的那个进程,一般入度最多的,它一般是需要进行 P 操作。如下图:


第二章 操作系统 - 1、进程管理

该题中进程 D 的入度最多,因此是该题的突破口。因此进程 D 需要做的是 P 操作。对应的是 P(Sa)、 P(Sb)、 P(Sc)。

因此对应的 A、B、C 操作是进行 V 操作。

而最后的操作 E,则需要在 D 完成之后才能进行,因此是 P 操作。

五、死锁问题

1、死锁的概念

进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。

如果一个进程在等待件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。

例题:

系统有5个进程:A、B、C、D、E 。这 5 个进程都需要 4 个系统资源。如果系统至少有多少个资源,则不可能发生死锁。

解析:

系统不会产生死锁的情况是:

给每一个进程分配它所需要的资源少一个,然后系统再留有一个资源,这样系统就不会发生死锁。

针对上面的题目,先对 A、B、C、D、E 每一个分配 3 个资源,然后系统再留有一个资源,一共是 15 + 1 = 16 个资源,当至少有 16 个资源时,系统就不会发生死锁。

2、死锁形成的四个必要条件


第二章 操作系统 - 1、进程管理

1、进程间形成了互斥,只有互斥才会产生资源的争夺。

2、保持和等待资源,从而就会产生进程的挂起。

3、进程已经占有的资源在进程完成任务之前不会被剥夺,不会释放给其他的进程。

4、环路等待,形成一条回路。

3、死锁的预防:

打破四大条件

4、死锁的避免

有序资源分配法银行家算法

a. 有序资源分配法:
按照顺序,每一个进程需要多少资源就对应分配多少资源,这样可以避免死锁,但是资源浪费比较严重。

比如上面的例子,A、B、C、D、E 五个进程,我们按照顺序,对应给每个进程分配对应所需要的 4 个资源,这样就可以避免这五个进程产生死锁,但是这种分配方式也会造成资源的浪费。


b. 银行家算法:
分配资源的原则:

  • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程

  • 进程可以分期请求资源,但请求的总数不能超过最大需求量。

  • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

银行家算法例子:

假设系统中有三类互斥资源 R1、、R2、R3,可用资源分别是9、8、5,在 T0时刻系统中有 P1、P2、P3、P4和P5 五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按()序列执行,那么系统状态是安全的。
第二章 操作系统 - 1、进程管理

分析:

首先统计出每一个进程已经分配了对应多少的资源,以及对应的资源还剩多少。
第二章 操作系统 - 1、进程管理
对照每一个进程还需要的资源数,可以知道剩余的资源数满足进程 P 2 接下俩的需求。

等 P 2 执行完成,释放资源之后,系统拥有的资源数对应为:4、2、1 ,此时满足进程 P 4 的资源需求,可以让 P 4 进行执行。

P 4 执行完成以后,系统拥有的资源数对应为:5、4、1,此时满足进程 P 1 和 P 5 的资源需求,可以选择其中一个进程进行执行。

所以安全的执行顺序为:

P2 → P4 → P1 → P5 → P3 或者是 P2 → P4 → P5 → P1 → P3

P1 和 P5 可以调换执行的顺序,因此选 B