操作系统(进程篇)

一、填空

1.进程在执行过程中有三种基本状态,它们是 运行 态、 就绪 态和 阻塞 态。
2.系统中一个进程程序数据集合进程控制块(PCB) 三部分组成。
3.在多道程序设计系统中,进程是一个 态概念,程序是一个 态概念。
4.在一个单CPU系统中,若有5个用户进程。假设当前系统为用户态,则处于就绪状态的用户进程最多有 4 个,最少有 0 个。
注意,题目里给出的是假设当前系统为用户态,这表明现在有一个进程处于运行状态,因此最多有4个进程处于就绪态。也可能除一个在运行外,其他4个都处于阻塞。这时,处于就绪的进程一个也没有。
5.总的来说,进程调度有两种方式,即 不可剥夺 方式和 剥夺 方式。

6.进程调度程序具体负责中央处理机(CPU)的分配。
7.为了使系统的各种资源得到均衡使用,进行作业调度时,应该注意 CPU忙碌 作业和 I/O忙碌 作业的搭配。
8.所谓系统调用,就是用户程序要调用 操作系统 提供的一些子功能。
9.作业被系统接纳后到运行完毕,一般还需要经历 后备 、 运行 和 完成 三个阶段。
10.假定一个系统中的所有作业同时到达,那么使作业平均周转时间为最小的作业调度算法是 短作业优先 调度算法。
11.进程是程序的 一次执行 过程,程序是进程 赖以存在 的基础。
12. 可以把CPU的指令分为两类,一类是操作系统和用户都能使用的指令,一类是只能由操作系统使用的指令。前者称为**“ 非特权 ”指令,后者称为“ 特权 ”**指令。
13. 系统调用命令的程序属于操作系统,它应该在 管 态下执行。用户程序只有通过计算机系统提供的“ 访管 ”指令,才能实现由目态转为管态、进而调用这些系统调用命令。
14. 访管指令是一条非特权指令,功能是执行它就会产生一个软中断,促使中央处理机由 态转为 态,进入操作系统,并处理该中断。
15. 一个进程创建后,系统就感知到它的存在;一个进程撤销后,系统就无法再感知到它。于是,从创建到撤销,这个时间段就是一个进程的“ 生命期 ”。
16. 由于PCB是随着进程的创建而建立,随着进程的撤销而取消的,因此系统是通过PCB来“感知”系统中的进程的,PCB是进程 存在 的唯一标志。

二、选择

1.在进程管理中,当 C 时,进程从阻塞状态变为就绪状态。
A.进程被调度程序选中 B.进程等待某一事件发生
C.等待的事件出现 D.时间片到

2.在分时系统中,一个进程用完给它的时间片后,其状态变为 A
A.就绪 B.等待 C.运行 D.由用户设定

3.下面对进程的描述中,错误的是 D
A.进程是动态的概念 B.进程的执行需要CPU
C.进程具有生命周期 D.进程是指令的集合

4.操作系统通过 B 对进程进行管理。
A.JCB B.PCB C.DCT D.FCB
5.一个进程被唤醒,意味着该进程 D
A.重新占有CPU B.优先级变为最大
C.移至等待队列之首 D.变为就绪状态
6.由各作业JCB形成的队列称为 C
A.就绪作业队列 B.阻塞作业队列
C.后备作业队列 D.运行作业队列
7.既考虑作业等待时间,又考虑作业执行时间的作业调度算法是 A
A.响应比高者优先 B.短作业优先
C.优先级调度 D.先来先服务
8.作业调度程序从处于 D 状态的队列中选取适当的作业投入运行。
A.就绪 B.提交 C.等待 D.后备
9. A 是指从作业提交系统到作业完成的时间间隔。
A.周转时间 B.响应时间
C.等待时间 D.运行时间
10.计算机系统在执行 C 时,会自动从目态变换到管态。
A.P操作 B.V操作 C.系统调用 D.I/O指令
11.进程状态由就绪变为运行,是由于 C 引起的。
A.中断事件 B.进程状态变迁
C.进程调度 D.为作业创建进程
12. 当一个进程处于 D 时,称其为就绪状态。
A.等着读磁盘上的信息 B.等着进入内存
C.等着输入一批数据 D.等着获得CPU的控制权
13. 在操作系统中,处于就绪和阻塞状态的进程都没有占用处理机。当处理机空闲时,正确的操作应该是 B
A.就绪和阻塞进程都可以变迁成为运行状态
B.只有就绪进程可以变迁成为运行状态
C.只有阻塞进程可以变迁成为运行状态
D.就绪和阻塞状态的进程都不能变迁成为运行进程
14. 我们把“逻辑上独立的程序,在执行时间上相互重叠,一个程序的执行还没有结束,另一个程序的执行已经开始”的这种特性,称为程序执行的 A
A.并发性 B.并行性 C.可执行性 D.可交互性

3、简答题:

1.在多道程序设计系统中,如何理解“内存中的多个程序的执行过程交织在一起,大家都在走走停停”这样一个现象?

答:在多道程序设计系统中,内存中存放多个程序,它们以交替的方式使用CPU。因此,从宏观上看,这些程序都开始了自己的工作。但由于CPU只有一个,在任何时刻CPU只能执行一个进程程序。所以这些进程程序的执行过程是交织在一起的。也就是说,从微观上看,每一个进程一会儿在向前走,一会儿又停步不前,处于一种“走走停停”的状态之中。

2.什么是“原语”、“特权指令”、“系统调用命令”和“访管指令”?它们之间有无一定的联系?
答:特权指令和访管指令都是CPU指令系统中的指令,只是前者是一些只能在管态下执行的指令,后者是一条只能在目态下执行的指令。原语和系统调用命令都是操作系统中的功能程序,只是前者执行时不能被其他程序所打断,后者没有这个要求。操作系统中有些系统调用命令是以原语的形式出现的,例如创建进程就是一条原语式的系统调用命令。但并不是所有系统调用命令都是原语。因为如果那样的话,整个系统的并发性就不可能得到充分地发挥。
3.操作系统是如何处理源程序中出现的系统调用命令的?
答:编译程序总是把源程序中的系统调用命令改写成为一条访管指令和相应的参数。这样在程序实际被执行时,就通过访管指令进入操作系统,达到调用操作系统功能子程序的目的。
4.系统调用与一般的过程调用有什么区别?
(1)一般的过程调用,调用者与被调用者都运行在相同的CPU状态,即或都处于目态(用户程序调用用户程序),或都处于管态(系统程序调用系统程序);但发生系统调用时,发出调用命令的调用者运行在目态,而被调用的对象则运行在管态,即调用者与被调用者运行在不同的CPU状态。
(2)一般的过程调用,是直接通过转移指令转向被调用的程序;但发生系统调用时,只能通过访管指令提供的一个统一的入口,由目态进入管态,经分析后,才转向相应的操作系统命令处理程序。
(3)一般的过程调用,在被调用者执行完后,就径直返回断点继续执行;但系统调用可能会导致进程状态的变化,从而引起系统重新分配处理机。因此,系统调用处理结束后,不一定是返回调用者断点处继续执行。

5.试述创建进程原语的主要功能。

答:创建进程原语的主要功能有以下三项。
(1)为新建进程申请一个PCB。
(2)将创建者(即父进程)提供的新建进程的信息填入PCB中。
(3)将新建进程设置为就绪状态,并按照所采用的调度算法,把PCB排入就绪队列中。

6.处于阻塞状态的一个进程,它所等待的事件发生时,就把它的状态由阻塞改变为就绪,让它到就绪队列里排队,为什么不直接将它投入运行呢?

答:只要是涉及管理,就应该有管理的规则,没有规则就不成方圆。如果处于阻塞状态的一个进程,在它所等待的事件发生时就径直将它投入运行(也就是把CPU从当前运行进程的手中抢夺过来),那么系统就无法控制对CPU这种资源的管理和使用,进而也就失去了设置操作系统的作用。所以,阻塞状态的进程在它所等待的事件发生时,必须先进入就绪队列,然后再去考虑它使用CPU的问题。

7.作业调度与进程调度有什么区别?
答:作业调度和进程调度(即CPU调度)都涉及到CPU的分配。但作业调度只是选择参加CPU竞争的作业,它并不具体分配CPU。而进程调度是在作业调度完成选择后的基础上,把CPU真正分配给某一个具体的进程使用。
8.系统中的各种进程队列都是由进程的PCB链接而成的。当一个进程的状态从阻塞变为就绪状态时,它的PCB从哪个队列移到哪个队列?它所对应的程序也要跟着移来移去吗?为什么?
答:当一个进程的状态从阻塞变为就绪时,它的PCB就从原先在的阻塞队列移到就绪队列里。在把进程的PCB从这个队列移到另一个队列时,只是移动进程的PCB,进程所对应的程序是不动的。这是因为在进程的PCB里,总是记录有它的程序的断点信息。知道了断点的信息,就能够知道程序当前应该从哪里开始往下执行了。这正是保护现场所起的作用。

9.为什么说响应比高者优先作业调度算法是对先来先服务以及短作业优先这两种调度算法的折中?
答:先来先服务的作业调度算法,重点考虑的是作业在后备作业队列里的等待时间,因此对短作业不利;短作业优先的作业调度算法,重点考虑的是作业所需的CPU时间(当然,这个时间是用户自己估计的),因此对长作业不利。“响应比高者优先”作业调度算法,总是在需要调度时,考虑作业已经等待的时间和所需运行时间之比,即:
该作业已等待时间 / 该作业所需CPU时间

计算
在这里插入图片描述

分别采用先来先服务和短作业优先作业调度算法。试问它们的平均周转时间各是什么?你是否还可以给出一种更好的调度算法,使其平均周转时间优于这两种调度算法?

解:(1)采用先来先服务作业调度算法时的实施过程如下。

在这里插入图片描述
周转时间:完成时间-到达时间
完成时间:开始时间+所需CPU时间

在这里插入图片描述

这里要注意,在作业1运行完毕进行作业调度时,作业2和3都已经到达。由于是实行短作业优先作业调度算法,因此先调度作业3运行,最后调度作业2运行。所以,这时的作业调度顺序是1→3→2。其平均周转时间为:
(8 + 8 + 12.6)/ 3 = 9.53

(3)还可以有更好的作业调度算法,使其平均周转时间优于这两种调度算法。例如,如果知道在作业1后面会来两个短作业,那么作业1到达后,先不投入运行。而是等所有作业到齐后,再按照短作业优先作业调度算法进行调度,具体实施过程如下。

在这里插入图片描述

这时的作业调度顺序是3→2→1。其平均周转时间为:
(1 + 5.6 + 14)/ 3 = 6.87

2.设有一组作业,它们的到达时间和所需CPU时间如下所示。

在这里插入图片描述

分别采用先来先服务和短作业优先作业调度算法。试问它们的调度顺序、作业周转时间以及平均周转时间各是什么?
在这里插入图片描述

这时,作业的调度顺序是1→2→3→4。其平均周转时间为:
(70 + 60 + 60 + 45)/ 4 = 58.75

(2)采用短作业优先作业调度算法时的实施过程如下。
在这里插入图片描述

这时,作业的调度顺序是1→4→3→2。其平均周转时间为:
(70 + 5 + 35 + 75)/ 4 = 46.25

3.某系统有三个作业:

在这里插入图片描述

系统确定在它们全部到达后,开始采用响应比高者优先调度算法,并忽略系统调度时间。试问对它们的调度顺序是什么?各自的周转时间是多少?

响应比= (最长到达时间-到达时间)/所需cpu时间;响应比最高开始运行

解:三个作业是在9.5时全部到达的。这时它们各自的响应比如下:
作业1的响应比 =(9.5 – 8.8)/ 1.5 = 0.46
作业2的响应比 =(9.5 – 9.0)/ 0.4 = 1.25
作业3的响应比 =(9.5 – 9.5)/ 1.0 = 0
因此,最先应该调度作业2运行,因为它的响应比最高。它运行了0.4后完成,这时的时间是9.9。再计算作业1和3此时的响应比:
作业1的响应比 =(9.9 – 8.8)/ 1.5 = 0.73
作业3的响应比 =(9.9 – 9.5)/ 1.0 = 0.40
因此,第二个应该调度作业1运行,因为它的响应比最高。它运行了1.5后完成,这时的时间是11.4。第三个调度的是作业3,它运行了1.0后完成,这时的时间是12.4。整个实施过程如下。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35433716/article/details/82778367