进程的状态
1.进程有哪几种状态呢?
进程在生命周期内,通常有以下5中状态,前3种是进程的基本状态:
1.运行态:进程正在处理机上运行;对于单处理机,同一时刻只有一个进程处于运行态。
2.就绪态:进程获得了除处理机以外的一切所需资源,一旦得到处理机便可立即运行。
3.阻塞态:又称等待态,进程正在等待某一事件而暂停运行,如等待某资源或IO完成,即使处理机空闲,该进程也不能运行。
4.创建态:进程正在被创建,尚未转到就绪态。
5.终止态:进程正从系统中消失,可能是进程正常结束或其他原因退出运行。
2.就绪态和等待态有什么区别呢?
| 就绪态 | 等待态 |
处理机资源 | 只缺处理机 | 可能缺;也可能不缺 |
其他资源 | 已获得所需资源 | 等待某资源可用或等待一件事情完成 |
当获得处理机时 | 立即运行 | 即使处理机空闲,当等待的事情没有完成,仍无法运行 |
3.上表中为什么要将处理机和其他资源划分开呢?
因为在分时系统的时间片轮转机制中,每个进程分到的时间片是若干毫秒。也就是说,进程得到处理机的时间很短且非常频繁,进程在运行过程中是频繁地转换到就绪态的;而其他资源的使用(如外设的使用和分配,或某一件事情的发生,如I/O操作的完成对应的时间)对应的时间相对很长,因此将它们划分开。
进程的状态切换
1.进程状态是如何变化的?
1.就绪态——>运行态
处于就绪态的进程被调度后,获得处理机资源,于是进程由就绪态切换为运行态。
2.运行态——>就绪态
情况1:处于运行态的进程在时间片用完后,不得不让出处理机,进而转换为就绪态。
情况2:在可剥夺的操作系统中,当有更高优先级的进程就绪时,调度程序将正在执行的进程转换为就绪态,让更高优先级的进程执行。
3.运行态——>阻塞态(主动行为)
进程请求某一资源(如外设)的使用或等待某一事件的发生(如I/O操作的完成)时,它就从运行态转换为阻塞态。
进程以系统调用的形式请求操作系统提供服务,这是一种特殊的,由用户态程序调用操作系统内核过程的形式。
4.阻塞态——>就绪态(被动行为:需要其他相关进程的协助)
进程等待的事件到来,如I/O操作结束或中断结束时,中断处理程序必须把相应进程的状态由阻塞态转换为就绪态。
习题检测
题目难度 ⭐️
进程自身决定( )。
A.从运行态到阻塞态
B.从运行态到就绪态
C.从就绪态到运行态
D.从阻塞态到就绪态
详细题解:
A. 由上图可知只有运行态到阻塞态到转换是由进程自身决定的。
B. 从运行态到就绪态的转换是由于进程时间片用完或者被高优先级进程剥夺。
C. 进程从就绪态到运行态的转化是被动调度的。
D. 从阻塞态到就绪态的转化是由协作进程决定的。
正确答案:A
题目难度 ⭐️
在任何时刻,一个进程的状态变化( )引起另一个进程的状态变化。
A.必定
B.一定不
C.不一定
D.不可能
详细题解:
情况1.一个进程的状态变化可能会引起另一个进程的状态变化:当一个位于运行态的进程时间片用完,可能会引起另一个位于就绪态的进程运行。
情况2.一个进程的状态变化可能不会引起另一个进程的状态变化:当一个位于阻塞态的进程切换到就绪态时,不会引起其他进程的状态变化。
鉴于上述两种情况都有可能发生,因此本题应选择“不一定”会引起另一进程的状态变化。
正确答案:C
题目难度 ⭐️⭐️
一个进程释放了一台打印机,它可能会改变( )的状态。
A.自身进程
B.输入/输出进程
C.另一个等待打印机的进程
D.所有等待打印机的进程
详细题解:
由于打印机是临界资源,一次只能供一个进程使用,因此当一个进程释放了一台打印机,另一个等待打印机的进程就可能从阻塞态转到就绪态。
对于A选项来说,一个进程执行完毕后由运行态转为终止态时也有可能释放打印机,但该进程自身的状态转换并不是因为释放打印机造成的;相反是因为自身进程状态发生了转换,才释放了打印机。
正确答案:C
相关视频推荐
学习地址:
需要C/C++ Linux服务器架构师学习资料加qun 812855908 获取(资料包括 C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg 等),免费分享
题目难度 ⭐️⭐️
系统进程所请求的一次IO操作完成后,将使进程状态从( )。
A.运行态变为就绪态
B.运行态变为阻塞态
C.就绪态变为运行态
D.阻塞态变为就绪态
详细题解:
IO操作完成之前,进程在阻塞态等待这一事件完成;当所请求的IO操作完成后,进程等待⌚️就绪,变为就绪态。
正确答案:D
题目难度 ⭐️⭐️
一个进程的基本状态可以从其他两种基本状态转变过去,这个基本的状态一定是( )。
A.执行状态
B.阻塞态
C.就绪态
D.完成状态
详细题解:
从上图中我们不难发现,就绪态既可以由运行态转变回去,又可以由阻塞态转变回去:当需要的资源到达时,进程由阻塞态切换为就绪态;当时间片用完或被高优先级进程剥夺时,进程由运行态切换为就绪态。
正确答案:C
题目难度 ⭐️⭐️⭐️
支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中( )不是引起操作系统选择新进程的直接原因。
A.运行进程的时间片用完
B.运行进程出错
C.运行进程要等待某一事件发生
D.有新进程被创建进入就绪态
详细题解:
A. 此时该进程由运行态切换为就绪态,操作系统调度新的进程从就绪态切换为运行态。
B. 运行进程出错,操作系统会选择新的进程到处理机运行。
C. 此时该进程由运行态切换为阻塞态,if处理机空闲,操作系统选择新进程送处理机运行。
D. 与操作系统选择新进程无关,创建新进程进入就绪态只会导致就绪队列+1
正确答案:D
题目难度 ⭐️⭐️
在进程转换时,下列( )转换是不可能发生的。
A.就绪态→运行态
B.运行态→就绪态
C.运行态→阻塞态
D.阻塞态→运行态
详细题解:
由上图我们不难发现,阻塞态无法直接切换到运行态,其必须要经过 阻塞态—>就绪态—>最终才能转换到运行态。
正确答案:D
题目难度 ⭐️⭐️⭐️
进程处于( )时,它处于非阻塞态。
A.等待从键盘输入数据
B.等待协作进程的一个信号
C.等待操作系统分配CPU时间
D.等待网络数据进入内存
详细题解:
阻塞态:又称等待态,进程正在等待某一事件而暂停运行,这样的事件一般是:等待IO操作完成,如键盘;或是因互斥或同步数据引起的等待,如等待信号或等待进入互斥临界区代码段等;等待网络数据进入内存(为了进程同步);即使处理机空闲,该进程也不能运行。
A. 进程正在等待IO操作,处于阻塞态。
B. 进程正在等待某信号而暂停运行,位于阻塞态。
C. 等待CPU调度的进程是位于就绪态的。
D. 等待网络数据进入内存,位于阻塞态。
正确答案:C
题目难度 ⭐️⭐️⭐️
( )必会引起进程切换。
A.一个进程创建后,进入就绪态
B.一个进程从运行态变为就绪态
C.一个进程从阻塞态变为就绪态
D.以上答案都不对
详细题解:
进程切换是指CPU调度不同的进程执行,当一个进程从运行态变为就绪态时,CPU调度另一个进程执行,引起进程切换。
正确答案:B
题目难度 ⭐️⭐️
下列选项中,会导致进程从执行态变为就绪态的事件是( )。
A.执行P(wait)操作
B.申请内存失败
C.启动IO设备
D.被高优先级进程抢占
详细题解:
由上图可知,从运行态切换到就绪态的事件一共只有两种:第一种是时间片用完;第二种就是被更高优先级的进程剥夺,那么本题只有选项D满足要求。
正确答案:D
题目难度 ⭐️⭐️⭐️
下列选项中,可能导致当前进程Р阻塞的事件是( )。
I.进程Р申请临界资源
II. 进程Р从磁盘读数
III.系统将CPU分配给高优先权的进程
A.仅I B.仅Ⅱ C.仅I、II D. I、II、II
详细题解:
阻塞态:又称等待态,进程正在等待某一事件而暂停运行,这样的事件一般是:等待IO操作完成,如键盘;或是因互斥或同步数据引起的等待,如等待信号或等待进入互斥临界区代码段等;等待网络数据进入内存(为了进程同步);即使处理机空闲,该进程也不能运行。
I. 进程正在等待某一临界资源的申请成功,处于阻塞态。
II. 进程正在等待输入/输出操作完成,处于阻塞态。
III. 进程此时被更高优先级的进程剥夺了处理机资源,由运行态切换为就绪态。
因此导致当前进程阻塞的事件应当是I、II。
正确答案:C
就绪队列与阻塞队列
1.什么是就绪队列和阻塞队列?
就绪队列:系统中处于就绪状态的进程可能有多个,通常把它们排成一个队列。
阻塞队列:系统通常将处于阻塞态的进程也排成一个队列,甚至根据阻塞原因不同,设置多个阻塞队列。
2.进程的链接方式有哪些?
进程的链接方式主要有两种:(1)链接方式;(2)索引方式
链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针。
索引方式:根据进 程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针。
习题检测
题目难度 ⭐️⭐️
进程创建完成后会进入一个序列,这个序列称为( )。
A.阻塞队列
B.挂起序列
C.就绪队列
D.运行队列
详细题解:
我们要考虑创建进程的过程,当该进程所需资源分配完成只等CPU时,进程的状态此时为就绪态,因此所有就绪的程序控制块(PCB)一般以链表方式链接成一个序列,称为就绪队列。
正确答案:C
题目难度 ⭐️⭐️⭐️
在一个多道系统中,若就绪队列不空,就绪的进程数目越多,处理器的效率( )。
A.越高
B.越低
C.不变
D.不确定
详细题解:
我们发现只要就绪队列不空,CPU就总是可以调度进程运行,保持繁忙,这与就绪进程的数目没有关系;除非就绪队列为空,此时CPU进入等待态,CPU效率下降。
本题中提到“若就绪队列不空”,在该前提下,说明CPU总是有就绪进程可以调度,保持繁忙,因此就绪进程的数目不会影响处理机效率。
正确答案:C
题目难度 ⭐️⭐️
下列选项中,降低进程优先级的合理时机是( )。
A.进程时间片用完
B.进程刚完成IO操作,进入就绪队列
C.进程长期处于就绪队列
D.进程从就绪态转为运行态
详细题解:
A. 进程时间片用完,可降低其优先级让其他进程被调度入执行状态。
B. 此时进程由阻塞态进入就绪队列等待处理机调度,为了让其尽快处理I/O操作的结果,因提高优先级。
C. 进程长期处于就绪队列,为使其不产饥饿现象,应适当提高优先级。
D. 进程刚刚从就绪态转为运行态开始运行,不应该此时降低,应在时间片用完后再降低。
正确答案:A
进程控制
一、进程控制的宏观解读
1.什么是进程控制?
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简而言之,进程控制就是为了实现进程状态转换。
2.如何实现进程控制?
我们使用“原语”来实现进程控制,我们一般把进程控制使用的程序段称为原语,原语的特点是执行期间不允许中断,是一气呵成的,它是一个不可分割的基本单位。
3.为什么进程控制过程要一气呵成?
如果进程控制过程中不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一,这会影响操作系统进行其他管理工作,比如下面这个例子:
4.原语是如何做到“一气呵成的”?
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断; 它使用“关中断指令“和”开中断指令“这两个特权指令实现原子性。
二、进程控制之进程创建
1.父进程与子进程
允许一个进程创建另一个进程,此时创建者称为父进程,被创建的进程称为子进程。 子进程可以继承父进程所拥有的资源;当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程;当父进程被撤销时,通常也会同时撤销其所有的子进程。
题目难度 ⭐️⭐️
下列关于父进程与子进程的叙述中,错误的是( )。
A.父进程与子进程可以并发执行
B.父进程与子进程共享虚拟地址空间
C.父进程与子进程有不同的进程控制块
D.父进程与子进程不能同时使用同一临界资源
详细题解:
A. 父进程与子进程当然可以并发执行。
B. 父进程和子进程共享一部分资源,但不能共享虚拟地址空间,在创建子进程时,会为子进程分配资源,如虚拟地址空间等。
C. 进程控制块(PCB)是进程存在的唯一标志,每个进程都有自己的PCB。
D. 临界资源一次只能被一个进程使用,正确
正确答案:B
2.操作系统创建新进程的过程
Step1:为新进程分配一个唯一的进程标识号,并申请一个空白PCB(PCB是有限的),若PCB申请失败,则创建失败。
Step2:为进程分配所需资源,如文件、内存、I/O设备和CPU时间等。这些资源从操作系统获得,或从其父进程获得。如果资源不足(如内存),则此时并不是创建失败,而是处于创建态,等待内存资源。
Step3:初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
Step4:若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。
3.引起进程创建的事件有哪些呢?
1.用户登陆:分时系统中,用户登陆成功,系统会为其建立一个新的进程。
2.作业调度:多道批处理系统中,有新的作业放入内存时,会为其建立一个新的进程
3.提供服务:用户向操作系统提出某些请求时,会新建一个进程处理该请求
4.应用请求:由用户进程主动请求创建一个子进程
习题检测
题目难度 ⭐️⭐️
进程创建时,不需要做的是( )。
A.填写一个该进程的进程表项
B.分配该进程适当的内存
C.将该进程插入就绪队列
D.为该进程分配CPU
详细题解:
A. 是进程创建第一步做法。
B. 是进程创建中step2中的做法:为进程分配所需资源。
C. 是进程创建中step4的做法。
D. 这是调度程序的工作,进程创建不包含此过程。
正确答案:D
题目难度 ⭐️⭐️
下列选项中,导致创建新进程的操作是( )。
I.用户登录成功 II.设备分配 III.启动程序执行
A.仅Ⅰ和ⅡI B.仅ⅡI和III C.仅I和III D. I、II、III
详细题解:
我们刚刚才讲过,用户登陆成功、启动程序执行都会创建一个新进程
正确答案:C
题目难度 ⭐️⭐️
下列操作中,操作系统在创建新进程时,必须完成的是( )。
I.申请空白的进程控制块
II.初始化进程控制块
III.设置进程状态为执行态
A.仅I B.仅I、II C.仅I、III D.仅II、III
详细题解:
本题考查进程创建时的细节过程,创建新进程时,一共会经历以下四个步骤:
1.申请空白的PCB
2.为新进程配置所需资源
3.初始化PCB
4.将PCB插入就绪队列(创建态——>就绪态)
可见本题中只有I、II满足步骤
正确答案:B
三、进程控制之进程终止
1.操作系统终止进程的过程
Step1:根据被终止进程的标识符(PID),检索出该进程的PCB,从中读出该进程的状态。
Step2:若被终止的进程正处于运行态,应立即终止该进程的运行,将处理机资源分配给其他进程。
Step3:若该进程还有子孙进程,则应当将其所有子孙进程终止。
Step4:将该进程所拥有的全部资源,或归还给其父进程,或归还给操作系统。
Step5:该PCB从所在队列中删除。
2.引起进程终止的事件有哪些呢?
1.正常结束:表示进程的任务已完成并准备退出运行。
2.异常结束:表示进程在运行时,发生了某种异常事件,使程序无法继续运行,如存储区越界、保护错、非法指令、特权指令错、运行超时、算术运算错、I/O故障等。
3.外界干预:指进程应外界的请求而终止运行,如操作员或操作系统干预、父进程请求和父进程终止。
四、进程唤醒与阻塞
1.什么是进程的阻塞?
正在执行的进程,由于期待某件事情未发生,如请求系统资源失败、等待某种操作完成、新数据尚未到达或无新任务可做等,进程便通过调用阻塞原语(Block),使自己由运行态变为阻塞态,可见,阻塞是进程自身的一种主动行为,因此只有处于运行态的进程(获得CPU),才可能将其转换为阻塞态。
2.进程是如何阻塞的呢?
Step1:找到将要被阻塞的进程所对应的PCB。
Step2:若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行。
Step3:把该PCB插入相应事件的等待队列,将处理机资源调度给其他就绪进程。
3.如何保护step2中的现场呢?
保护现场,其实就是保护程序的上下文,当进程处于执行态时,处理机的许多信息都在寄存器中,当进程从运行态切换为其他状态时,通过将处理机状态信息保存在相应的PCB中,保护现场,以便该进程重新执行时,能从断点继续执行。
4.什么是进程的唤醒?
当被阻塞进程所期待的事件出现时,如它所期待的I/O操作已经完成,或期待的数据已经到达,由相关进程(比如:释放该I/O设备的进程,或提供数据的进程)调用唤醒原语(Wakeup),将等待该事件的进程唤醒,可见唤醒是一种被动行为。
5.进程是如何被唤醒的呢?
Step1:在事件的等待队列中找到相应的PCB。
Step2:将其从等待队列中移出,并置其状态为就绪态。
Step3:把该PCB插入就绪队列,等待调度程序调度。
注意:Block原语和Wakeup原语是一对作用刚好相反的原语,必须成对使用。如果在某进程中调用了Block原语,就必须在与之合作的相关进程中安排一条相应的Wakeup原语,以便唤醒阻塞进程;否则,阻塞进程将会因不能被唤醒而一直处于阻塞状态!
习题检测
题目难度 ⭐️⭐️
一个进程被唤醒,意味着( )。
A.该进程可以重新竞争CPU
B.优先级变大
C.PCB移动到就绪队列之首
D.进程变为运行态
详细题解:
A. 进程被唤醒表示其期待的事件已经得到了满足,由阻塞态转化为就绪态,此时位于就绪态的进程将有机会重新竞争CPU资源。
B. 进程被唤醒后的优先级是由固定算法来计算的,算法不同结果不同。
C. 就绪队列是按照一定规则排序的,例如:先来先服务,或高优先级优先,或短进程优先。
D. 进程不能一被唤醒就占有处理机运行,即要先经过就绪态,再转化为运行态。
正确答案:A
题目难度 ⭐️⭐️
下列选项中,可能会将进程唤醒的事件是( )。
I.IO结束
II.某进程退出临界区
III.当前进程的时间片用完
A.仅I B.仅III C.仅I、II D.I、II、III
详细题解:
进程被唤醒说明其期待的事件已经得到了满足:
I. 操作系统期待的IO操作已经结束,即期待满足,等待该IO操作结束而被阻塞的相关进程会被唤醒。
II. 操作系统期待访问的临界区此时有进程退出,操作系统可以使用临界资源,期待满足,之前因需要进入该临界区而被阻塞的相关进程会被唤醒
III. 某进程时间片用完,此时该进程会由运行态切换为就绪态,等待重新调度。
正确答案:C