2.2 课后习题详解
1什么是前趋图?为什么要引入前趋图?
答:(1)前趋图的定义
前趋图是一个有向无循环图,记为DAG,用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序或前趋关系。
(2)引入前趋图的原因
引入前趋图可以形象的表示进程之间的前后关系和顺序,可以更好地描述程序的顺序和并发执行情况。
2试画出下面四条语句的前趋图:
S1:a=x+y;
S2:b=z+1;
S3:c=a-b;
S4:w=c+1;
答:S3语句中的操作涉及S1中的a和S2中的b,因此,S3的前趋是S1和S2;S4中的语句涉及S3中的c,因此,S4的前趋是S3,所以画出前趋图如图2-6所示。
图2-6 前趋图
3为什么程序并发执行会产生间断性特征?
答:程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系,从而产生间断性特征。简而言之,相互制约将导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。
4程序并发执行时为什么会失去封闭性和可再现性?
答:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其他程序的影响,而这也将导致其再失去可再现性,亦即程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。
5在操作系统中为什么要引入进程的概念?它会产生什么样的影响?
答:(1)引入进程的原因
在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性及不可再现性的特征。这决定了通常的程序是不能参与并发执行的,因为程序执行的结果是不可再现的。这样,程序的运行也就失去了意义。为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了“进程”的概念。
(2)引入进程的影响
进程的引入使程序的并发执行得以实现。
6试从动态性、并发性和独立性上比较进程和程序。
答:(1)动态性
进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤销而消亡”。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。
(2)并发性
这是指多个进程实体共同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也成为OS的重要特征。引入进程的目的也正是为了使其进程实体能和其他进程实体并发执行;而程序(没有建立PCB)是不能并发执行的。
(3)独立性
在传统的OS中,进程是一个能独立运行、独立分配资源和独立接受调度的基本单位,具有高度的独立性。但凡未建立PCB的程序都不能作为一个独立的单位参与运行。
7试说明PCB的作用具体表现在哪几个方面,为什么说PCB是进程存在的唯一标识?
答:(1)PCB作用的具体表现
①进程控制块PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。
②PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。
③进程控制块使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
(2)PCB是进程存在的唯一标识的原因
在进程的整个生命期中,系统总是通过PCB对进程进行控制,即系统是根据进程的PCB而非其他感知到该进程的存在的。所以说,PCB是进程存在的唯一标识。
8PCB提供了进程管理和进程调度所需要的哪些信息?
答:在进程控制块中,主要包括下述四个方面的信息:
(1)进程标识符:进程标识符用于唯一标识一个进程。
(2)处理机状态:处理机状态信息也称为处理机的上下文,主要由处理机的各种寄存器中的内容组成。
(3)进程调度信息:进程调度信息包括进程状态、进程优先级、进程调度所需的其他信息、事件四个方面。
(4)进程控制信息:进程控制信息包括程序和数据的地址、进程同步和通信机制、资源清单和链接指针。
9进程控制块的组织方式有哪几种?
答:(1)线性方式:将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中。
(2)链接方式:把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。
(3)索引方式:系统根据所有进程状态的不同,建立几张索引表,在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。
10何谓操作系统内核?内核的主要功能是什么?
答:(1)操作系统内核的定义
操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
(2)操作系统内核的主要功能
①支撑功能
该功能是提供给OS其他众多模块所需要的一些基本功能,以便支撑这些模块工作。其中三种最基本的支撑功能是:中断处理、时钟管理和原语操作。
a.中断处理
中断处理是内核最基本的功能,是整个操作系统赖以活动的基础,OS中许多重要的活动。
b.时钟管理
时钟管理是内核的一项基本功能,在OS中的许多活动都需要得到它的支撑。
c.原语操作
原语(Primitive),就是由若干条指令组成的,用于完成一定功能的一个过程,是一个不可分割的基本单位,在内核中可能有许多原语。
②资源管理功能
a.进程管理
在进程管理中,或者由于各个功能模块的运行频率较高,通常都将它们放在内核中,以提高OS的性能。
b.存储器管理
存储器管理软件的运行频率也比较高,通常也将它们放在内核中,以保证存储器管理具有较高的运行速度。
c.设备管理
由于设备管理与硬件(设备)紧密相关,因此其中很大部分也都设置在内核中。
11试说明进程在三个基本状态之间转换的典型原因。
答:进程的三种基本状态是就绪状态、执行状态和阻塞状态,这三种基本状态之间转换的典型原因如图2-7所示,具体如下:
(1)就绪状态→执行状态:进程通过调度分配到CPU资源;
(2)执行状态→就绪状态:时间片用完;
(3)执行状态→阻塞状态:I/O设备请求;
(4)阻塞状态→就绪状态:I/O设备请求完成。
图2-7 进程状态转换图
12为什么要引入挂起状态?该状态有哪些性质?
答:(1)引入挂起状态的原因
①终端用户的请求:当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。
②父进程请求:父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。
③负荷调节的需要:当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
④操作系统的需要:操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
(2)挂起状态的性质
①当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend将该进程挂起后,该进程便转变为静止就绪状态,表示为Readys,处于Readys状态的进程不再被调度执行。
②当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,表示为Blockeda。当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程在其所期待的事件出现后,将从静止阻塞变为静止就绪。
13在进行进程切换时,所要保存的处理机状态信息有哪些?
答:处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在PCB中,以便在该进程重新执行时,能从断点继续执行。这些寄存器包括:
(1)通用寄存器,用户程序可以访问,用于暂存信息;
(2)指令寄存器,存放要访问的下一条指令的地址;
(3)进程状态字PSW,含有状态信息,如条件码,执行方式,中断屏蔽标志等;
(4)用户栈指针,每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用地址。
14试说明引起进程创建的主要事件。
答:引起进程创建的主要事件有:
(1)用户登录
在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中。
(2)作业调度
在批处理系统中,当作业调度程序按一定的算法调度某作业时,便将该作业装入内存,为它创建进程,分配必要的资源,并插入到就绪队列中。
(3)提供服务
当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务。
(4)应用请求
基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行的方式完成特定任务。
15试说明引起进程被撤消的主要事件。
答:引起进程被撤销的主要事件有:
(1)正常结束:在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示;
(2)异常结束:在进程运行期间,由于出现某些错误和故障而迫使进程终止(包括越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障);
(3)外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行(包括操作员或操作系统干预、父进程请求、父进程终止)。
16在创建一个进程时所要完成的主要工作是什么?
答:一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Create按下述步骤创建一个新进程:
(1)申请空白PCB:为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
(2)为新进程分配资源:为新进程的程序和数据以及用户栈分配必要的内存空间。
(3)初始化进程控制块:包括初始化标识信息,初始化处理机状态信息,初始化处理机控制信息。
(4)将新进程插入就绪队列:如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
17在撤消一个进程时所要完成的主要工作是什么?
答:如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,按下述过程去终止指定的进程:
(1)根据被终止进程标识符,从PCB集中检索出进程PCB,从中读出该进程的状态;
(2)若被终止进程正处于执行状态,立即终止该进程的执行,并置调度标志为真,指示该进程被终止后可以被重新调度;
(3)若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程;
(4)将被终止进程拥有的全部资源,或者归还给父进程,或者归还给系统;
(5)将被终止进程PCB从所在队列或链表中移出,等待其他程序搜集信息。
18试说明引起进程阻塞或被唤醒的主要事件是什么?
答:有下述几类事件会引起进程阻塞或被唤醒:
(1)请求系统服务
当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不能立即满足该进程的要求时,该进程只能转变为阻塞状态来等待;
(2)启动某种操作
当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成;
(3)新数据尚未到达
对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据后才能对数据进行处理,则只要其所需数据未到达,该进程只有(等待)阻塞;
(4)无新工作可做
系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来。
19为什么要在OS中引入线程?
答:为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
20试说明线程具有哪些属性?
答:(1)轻型实体;(2)独立调度和分派的基本单位;(3)可并发执行;(4)共享进程资源。
21试从调度性、并发性、拥有资源及系统开销方面对进程和线程进行比较。
答:(1)调度性
线程在OS中作为调度和分配的基本单位,进程作为资源拥有的基本单位。
(2)并发性
在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行。
(3)拥有资源
进程是系统中拥有资源的基本单位,一般而言,线程自己不拥有系统资源,只有一点必不可少的资源,但它可以访问其隶属进程的资源,即一个进程的代码段、数据段及所拥有的系统资源。
(4)系统开销
操作系统在创建、撤销和切换进程时付出的开销明显大于线程。
22线程控制块TCB中包含了哪些内容?
答:线程控制块通常有这样几项信息:线程标识符,一组寄存器,线程运行状态,优先级,线程专有存储区,信号屏蔽,堆栈指针。
23何谓用户级线程和内核支持线程?
答:(1)用户级线程
用户级线程ULT仅存在于用户空间中。对于这种线程的创建、撤销、线程之间的同步与通信等功能,都无须利用系统调用来实现。对于用户级线程的切换,通常发生在一个应用进程的诸多线程之间,这时,也同样无须内核的支持。由于切换的规则远比进程调度和切换的规则简单,因而使线程的切换速度特别快。可见,这种线程是与内核无关的。
(2)内核支持线程
内核支持线程KST,也都同样是在内核的支持下运行的,即无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤销和切换等也是依靠内核,在内核空间实现的。此外,在内核空间还为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块来感知某线程的存在,并对其加以控制。
24试说明用户级线程的实现方法。
答:用户级线程是在用户空间实现的。所有的用户级线程都具有相同的结构,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。
(1)运行时系统
运行时系统实质上是用于管理和控制线程的函数(过程)的集合。其中包括用于创建和撤销线程的函数、线程同步和通信的函数以及实现线程调度的函数等。正因为有这些函数,才能使用户级线程与内核无关。运行时系统中所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口。
(2)内核控制线程
内核控制线程又称为轻型进程LWP,每一个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据结构,其中包括线程标识符、优先级、状态,另外还有栈和局部存储区等。它们也可以共享进程所拥有的资源。可通过系统调用来获得内核提供的服务。这样当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。
25试说明内核支持线程的实现方法。
答:系统在创建新进程时,便为它分配一个任务数据区PTDA,其中包括若干个线程控制块TCB空间。在每一个TCB中可保存线程标识符、优先级、线程运行的CPU状态等信息,这些信息被保存在内核空间中。每当进程要创建一个线程时,便为新线程分配一个TCB,将有关信息填入该TCB中,并为之分配必要的资源。当PTDA中的所有TCB空间已用完,而进程又要创建新的线程时,只要其所创建的线程数目未超过系统的允许值(通常为数十至数百个),系统可再为之分配新的TCB空间;在撤销一个线程时,也应回收该线程的所有资源和TCB。
26多线程模型有哪几种类型?多对一模型有何优缺点?
答:(1)多线程模型有三种类型:多对一模型、一对一模型、多对多模型。
(2)多对一模型的优缺点
①多对一模型的主要优点是线程管理的开销小,效率高。
②多对一模型的主要缺点在于,如果一个线程在访问内核时发生阻塞,则整个进程都会被阻塞;此外,在任一时刻,只有一个线程能够访问内核,多个线程不能同时在多个处理机上运行。