操作系统课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 进程和线程的管理
例题解析
例试说明进程和程序之间的区别和联系。
解进程和程序是既有区别又有联系的两个概念。
进程是动态的,程序是静态的。程序是一组有序的指令集合,是一个静态的概念;进程则是程序及其数据在计算机上的一次执行,是一个动态的集合。离开了程序,进程就失去了存在的意义,但同一程序在计算机上的每次运行将构成不同的进程。程序可看作是电影的胶片,进程可以看作电影院放电影的过程。
一个进程可以执行多个程序,如同一个电影院的一场电影可放映多部影片。
一个程序可被多个进程执行,如同多个影院同时利用一个电影的胶片放映同一部电影。
程序可以长期保存,进程只能存在于一段时间。程序是永久存在的,而进程有从被创建到消亡的生命周期。
例举例说明多道程序系统失去了封闭性和再现性。
解例如,有两个循环程序A和B,共享一个变量N。程序A每执行一次时,都要做N:=N+1操作;程序B则每执行一次时,都要执行print(N)操作,然后再将N的值置成“0”。程序A 和B在多道程序系统中同时运行。假定某时刻变量N的值为n,可能出现下述三种情况:N:=N+1 在print(N)和N:=0之前,此时得到N值变化过程为n+1、n+1、0;
N:=N+1 在print(N)和N:=0之后,此时得到N值变化过程为n 、 0 、1;
N:=N+1 在print(N)之后和N:=0之前,此时得到N值变化过程为n、n+1、0。
所以,在A、B程序多次执行过程中,虽然其每次执行时的环境和初始条件都相同,但每次得到的结果却不一定相同。
例为什么将进程划分成执行、就绪和阻塞三个基本状态?
解根据多道程序执行的特点,进程的运行是走走停停的。因此进程的初级状态应该是执行和等待状态。处于执行状态的进程占用处理机执行程序,处于等待状态的进程正在等待处理机或者等待其它某种事件的发生。但是,当处理机空闲时,并不是所有处于等待状态的进程都能放到处理机上执行,有的进程即使分配给它处理机,它也不能执行,因为它的执行的条件没有得到满足。因此,将等待状态的进程分成两部分,一部分是放在处理机上就能立即执行,这就是就绪的进程;另一部分是仍需等某种事件发生的进程,即使放在处理机上也不能执行的进程,这就是阻塞进程。
例进程的挂起状态与进程的阻塞状态和就绪状态有何异同?
解相同点是它们都没有占用处理机。不同点是挂起状态的进程是处于一种静止状态,不会参与对资源的竞争,在解除挂起之前,进程不会有新的资源要求,也不会有占用处理机的机会;阻塞状态和就绪状态的进程均处于活动状态,它们都有获得处理机的机会,都可能有新的资源要求。
例两个并发进程P1和P2的程序代码在下面给出。其中,A、B、C、D和E均为原语。
P1: begin P2: begin
A; D;
B; E;
C; end
end
请给出P1、P2两个进程的所有可能执行的过程。
解 P1和P2进程以不可预知的速度推进,它们所有可能的执行过程为:
(1)A→B→C→D→E (2)A→B→D→E→C
(3)A→B→D→C→E (4)A→D→B→E→C
(5)A→D→B→C→E (6)A→D→E→B→C
(7)D→E→A→B→C (8)D→A→B→C→E
(9)D→A→B→E→C (10)D→A→E→B→C
例在操作系统中为什么要引入进程这一概念?
解在单道程序设计环境下,CPU被一道程序独占,CPU严格按该程序的指令顺序来执行。单道程序具有顺序性、封闭性和可再现性。单道程序有许多局限性,于是出现了多道程序。在多道程序环境中,有若干个程序同时运行,具有了许多新的特征,如并发性、动态性以及相互制约性等。这时,程序的概念已经不能描述上述这些特征,并发程序的特征必须用新的概念来描述,于是引进了“进程”的概念。
例在多道程序系统,当进程需要等待某种事件发生时,进程将进入何种状态?
解当进程需要等待某种事件发生时,进程进入何种状态取决于进程程序的处理方式。进程可以调用阻塞原语,将自己阻塞,暂时放弃处理机;进程也可以采用不放弃处理机的循环等待的方式等待某种事件发生。因此,当进程需要等待某种事件发生时,进程并不是一定要进入阻塞状态。
例父进程创立子进程与主程序调用子程序有何不同?
解父进程创立子进程后,父进程与子进程同时执行;主程序调用子程序,主程序暂停在调用点,子程序开始执行,直到子程序执行完毕返回,主程序开始执行。
例进程控制块PCB的作用是什么?它主要包含哪些内容?
解操作系统管理的进程是多种多样的,要对这些进程实施有效的管理,必须对进程进行抽象。为了便于系统控制和描述进程的活动,在操作系统核心为进程定义了一个进程控制块PCB。PCB用于描述进程的基本情况以及进程运行和变化的过程,它与进程一一对应。当系统创建进程时,为进程分配一个PCB;在进程运行过程中,系统通过PCB对进程实施管理和控制;进程结束时,系统将收回PCB。
PCB中的内容主要包括调度信息和现场信息两大部分。调度信息包括进程名、进程号、优先级、当前状态、资源信息、程序和数据的位置信息、隶属关系和各种队列指针信息等。现场信息主要包括程序状态字、时钟寄存器和界限寄存器等描述进程运行情况的信息。
例一个新创建的进程,第一次被调度到CPU上运行时,其“现场”从何而来?
解进程在CPU上交替地执行是通过保存退出进程的现场和恢复新选中进程的现场实现的;而一个进程的“现场”是其上次从CPU上退出时获得的。但是,一个新创建的、尚未在CPU 上运行过的进程还没有“上一次”,那么它的“现场”从何而来?是从其父进程继承而来,是在进程创建程序执行时,将父进程特意为子进程准备的“现场”复制给子进程。新创建的子进程就是以此“现场”实施其第一次运行的。
例用户级线程和内核支持线程有何区别?
解两者的区别是:
(1)内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的。
(2)用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
(3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
(4)在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线