? 就绪状态:进程已获取到除CPU之外的所有必要资源,只要再得到CPU,就可
以马上投入运行。
? 运行状态:处于就绪状态的进程被调度程序选中后将得到CPU控制权,此时该
进程就可以使用处理器进行数据运算和处理。 ? 阻塞状态:当一个进程正在等待某个事件的发生(如等待I/O的完成)而暂停执行,
这时,即使分配有CPU时间,它也无法执行。
(6) 为什么要引入挂起状态?该状态有什么特性?
解:
引入挂起状态时为了满足四种需要:调节系统负荷的需要、用户的需要、父进程的需要、系统的需要。
挂起状态的特点:交换到磁盘上的进程,不让其参与进程调度,以达到平衡系统负荷的目的。
(7) 说明进程基本状态的转换关系及引起这些状态间转换的典型原因。
解:
处于就绪状态的进程,在调度程序为之分配了处理器之后,就可以投入运行。同时,进程的状态也由就绪状态转变为运行状态;在采用时间片机制的操作系统中,分配给当前进程的时间片用完之后,它会暂停执行,其状态也由运行状态转换到就绪状态;如果由于某事件发生(比如进程需要访问某I/O设备,而该设备正在被别的进程访问)而使进程运行受阻,不能再继续向下执行时,它的状态会由运行状态转变为阻塞状态;当进程期望的某事件发生时(比如需要访问的I/O设备已可用),进程将从阻塞状态转变为就绪状态
(8) 说明在加入了挂起状态的操作系统中,进程状态间的转换关系及引发转换的典型原因。
解:
在引入挂起状态的操作系统中,又增加了静止就绪和静止阻塞两个新的进程状态。调用挂起原语把处于活动就绪状态的进程挂起后,该进程就会由活动就绪状态转变为静止就绪状态。调用挂起原语把处于活动阻塞的进程挂起后,它的状态就转换为静止阻塞。调用激活原语激活后又可以转换到活动阻塞状态。 (9) 试说明引起进程创建的典型事件。
解:
引起进程创建的典型事件有:用户登录、作业调度、提供服务、应用请求。 (10) 试说明引起进程撤销的典型事件。
解:
引起进程撤销的典型事件有:正常结束、异常结束、外界干预。 (11) 试说明引起进程阻塞和唤醒的典型事件。
解:
引起进程阻塞和唤醒的典型事件有:请求系统服务、启动某种操作、新数据尚未到达、无新工作可做。.
(12) 试说明进程创建的过程。
解:
创建进程的操作必须调用创建原语来实现。创建原语首先为新进程申请获得惟一的数字标示符,并从PCB集合中获取一个空白PCB;为新进程的程序和数据以及用户栈分配必要的内存空间;然后对PCB进程初始化;最后将新进程插入就绪队列中,等待被调度执行。 (13) 试说明进程撤销的过程。
解:
系统调用进程终止原语来终止进程。首先根据被终止进程的标示符,从PCB集合中查
找到该进程的PCB,从中读出该进程的状态,终止该进程的执行,如果该进程还有子孙进程,应该将它的所有子孙进程终止,防止它们成为不可控进程;然后回收进程所拥有的资源;最后将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。 (14) 什么是线程?请比较它与进程的异同。
解:
线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只需要一些必不可少的资源(如程序计数器、一组寄存器和栈)。
进程和线程的差异:
1. 在传统的OS中,进程是拥有资源和独立调度分派的基本单位,在加入线程的OS
中,线程是代替进程成为独立调度和分派的基本单位,进程则仍是拥有资源的基本单位。
2. 并发粒度不同。除了不同进程的线程之外,同一个进程里的不同线程之间也可以并
发执行,所以线程拥有更好的并发性。 3. 拥有资源数量不同。进程是拥有资源的基本单位,线程除了一些在运行过程中必不
可少的资源外,基本上不拥有系统资源,它可以访问自己所在的进程的资源。 4. 管理开销不同。创建、撤销进程时系统都要为之分配和回收资源,所以进程切换用
的时间开销相对要多于线程。进程间通信很麻烦,而同一进程的线程则通过共享进程的资源很方便地通信和同步,同步开销小得多。
进程和线程有着很多相似的地方:都可以并发执行;都有就绪、执行、阻塞这些基本状态,也都可以在这些基本状态之间转换状态;从创建到撤销都有一定的生命周期;都需要同步工具。
(15) 处理器调度的层次有哪些?各层次的主要工作是什么?
解:
处理器调度的层次分为三级调度:高级调度、中级调度和低级调度。
? 高级调度:它需要做出两个决定,一个是要从驻留在外存后备队列中调入多少个
作业,二是要调入哪几个作业;然后为被选中的作业创建进程,并分配必要的系统资源,如内存、外设等,然后把新创建的进程放入就绪队列中,等待被调度执行。
? 中级调度:中级调度主要涉及进程在内存和外存之间的交换。当系统中的内存使
用情况紧张时,中级调度把内存中暂时不能运行的进程调到外存中等待,等内存有足够的空闲空间时,再由中级调度决定将外存上的某些具备了运行条件的就绪进程调入内存,把其状态修改为就绪状态并挂在就绪队列中,等待进程调度。 ? 低级调度:按照一定的算法从就绪队列中选择一个进程,然后将处理器分配给它。
执行低级调度功能的程序称作进程调度程序,由它实现处理器在进程间的切换。
(16) 抢占式调度的原则是什么?请简要说明。
解:系统使用抢占方式进行进程调度时需要遵循一定的原则,主要有以下几个方面: 1. 时间片原则。各进程按系统分配给的一个时间片运行,当该时间片用完或由于该进
程等待某事件发生而被阻塞时,系统就停止该进程的执行而重新进行调度。 2. 优先级原则。每个进程均被赋于一个调度优先级,通常一些重要和紧急的进程被赋
于较高的优先级。当一个新的紧迫进程到达时,或者一个优先级高的进程从阻塞状态变成就绪状态时,如果该进程的优先级比当前进程的优先级高,OS就停止当前进程的执行,将处理器分配给该优先级高的进程,使之执行。 3. 短进程优先原则。当新到达的作业对应的进程比正在执行的作业对应进程的运行时
间明显短时,系统剥夺当前进程的执行,而将处理器分配给新的短进程,使之优先
执行。
(17) 在批处理系统、分时系统、实时系统中,应分别采用哪种作业(进程)调度算法?
解:
批处理系统采用“先来先服务调度算法”;分时系统采用“时间片轮转法”;实时系统采用“高响应比优先调度算法”。
(18) 说明时间片轮转调度算法的基本思路。
解:
在采用时间片轮转调度算法的系统中,将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断。调度程序暂停当前进程的执行,将其送到就绪队列的末尾,并通过CPU现场切换执行当前的队首进程,当然,进程可以未使用完一个时间片,就让出CPU(如阻塞)。这样可以保证就绪队列中的所有进程都有机会获得处理器而运行的机会,可以提高进程并发性和响应时间特性,从而提高资源利用率。 (19) 试说明多级反馈队列调度算法思想。
解:多级反馈队列调度算法则不必事先知道各进程的执行时间,又可以满足各种类型进程的调度需要,它是一种目前公认较好的进程调度算法。它的算法思想如下(设采用抢占式调度):
1. 需要设置多个就绪队列,并且为它们分别赋予不同的优先级。每队列分配不同的时
间片,规定优先级越低则时间片越长。
2. 新进程就绪后,先插入队列1的末尾,按FCFS算法调度。若一个时间片未能执行
完,则降低插入到队列2的末尾;依此类推,降低到最后的队列,则按“时间片轮转”算法调度直到完成。
3. 进程由于等待事件而放弃CPU后, 进入等待队列, 一旦等待的事件发生, 则回到原
来的就绪队列。
4. 只有当较高优先级的队列为空时,才调度较低优先级队列中的进程执行。如果进程
执行时有新进程进入较高优先级的队列,则需要重新调度,抢先执行新进程,并把被抢先的进程插入原队列的末尾。
(20) 什么是静态和动态优先级?如何确定静态优先级?
解:
静态优先级是在系统创建时确定的,一经确定之后在整个进程运行期间不再改变。 动态优先级是在进程运行前先确定一个优先级,进程运行过程中根据进程等待时间的长短、执行时间的多少、输入输出信息量的大小等,通过计算得到新的优先级。
(21) 在一个单道批处理系统中,一组作业的到达时间和运行时间如下表所示。试计算使用先来先服务、短作业优先、高响应比优先算法时的平均周转时间和平均带权周转时间。
作业 1 2 3 4 到达时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 解:
用T表示周转时间,用W表示带权周转时间
FCFS的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.0 9.5 9.7 结束时间 9.0 9.5 9.7 9.8 周转时间 1.0 1.0 0.7 0.7 带权周转时间 1.0 2.0 3.5 7.0 FCFS的T =(1.0+1.0+0.7+0.7)/ 4 = 0.85 W =(1.0+2.0+3.5+7.0)/ 4 =3.375 SJF的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.3 9.0 9.2 结束时间 9.0 9.8 9.2 9.3 周转时间 1.0 1.3 0.2 0.2 带权周转时间 1.0 2.6 1.0 2.0 SJF的T=(1.0+1.3+0.2+0.2)/ 4 = 0.675 W =(1.0+2.6+1.0+2.0)/ 4 = 1.65 高响应比优先的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.0 9.6 9.5 结束时间 9.0 9.5 9.8 9.6 周转时间 1.0 1.0 0.8 0.5 带权周转时间 1.0 2.0 4.0 5.0 高响应比算法的T=(1.0+1.0+0.8+0.5)/ 4 = 0.825 W =(1.0+2.0+4.0+5.0)/ 4 = 3.0
第4章 进程同步与死锁
(1) 什么是进程同步?什么是进程互斥?
解:
同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。
进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。互斥是一种特殊的同步方式。
(2) 进程执行时为什么要设置进入区和退出区?
解:
为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为“进入区”代码;在退出临界区后,必须执行“退出区”代码,用于恢复未被访问标志。 (3) 同步机构需要遵循的基本准则是什么?请简要说明。
解:
同步机制都应遵循下面的4条准则: