2. 进程和线程的管理 例题解析
例2.2.1 试说明进程和程序之间的区别和联系。 解 进程和程序是既有区别又有联系的两个概念。
进程是动态的,程序是静态的。程序是一组有序的指令集合,是一个静态的概念;进程则是程序及其数据在计算机上的一次执行,是一个动态的集合。离开了程序,进程就失去了存在的意义,但同一程序在计算机上的每次运行将构成不同的进程。程序可看作是电影的胶片,进程可以看作电影院放电影的过程。
一个进程可以执行多个程序,如同一个电影院的一场电影可放映多部影片。
一个程序可被多个进程执行,如同多个影院同时利用一个电影的胶片放映同一部电影。 程序可以长期保存,进程只能存在于一段时间。程序是永久存在的,而进程有从被创建到消亡的生命周期。
例2.2.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程序多次执行过程中,虽然其每次执行时的环境和初始条件都相同,但每次得到的结果却不一定相同。
例2.2.3 为什么将进程划分成执行、就绪和阻塞三个基本状态?
解 根据多道程序执行的特点,进程的运行是走走停停的。因此进程的初级状态应该是执行和等待状态。处于执行状态的进程占用处理机执行程序,处于等待状态的进程正在等待处理机或者等待其它某种事件的发生。但是,当处理机空闲时,并不是所有处于等待状态的进程都能放到处理机上执行,有的进程即使分配给它处理机,它也不能执行,因为它的执行的条件没有得到满足。因此,将等待状态的进程分成两部分,一部分是放在处理机上就能立即执行,这就是就绪的进程;另一部分是仍需等某种事件发生的进程,即使放在处理机上也不能执行的进程,这就是阻塞进程。
例2.2.4 进程的挂起状态与进程的阻塞状态和就绪状态有何异同?
解 相同点是它们都没有占用处理机。不同点是挂起状态的进程是处于一种静止状态,不会参与对资源的竞争,在解除挂起之前,进程不会有新的资源要求,也不会有占用处理机的机会;阻塞状态和就绪状态的进程均处于活动状态,它们都有获得处理机的机会,都可能有新的资源要求。
例 2.2.5 两个并发进程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
例2.2.6 在操作系统中为什么要引入进程这一概念?
解 在单道程序设计环境下,CPU被一道程序独占,CPU严格按该程序的指令顺序来执行。单道程序具有顺序性、封闭性和可再现性。单道程序有许多局限性,于是出现了多道程序。在多道程序环境中,有若干个程序同时运行,具有了许多新的特征,如并发性、动态性以及相互制约性等。这时,程序的概念已经不能描述上述这些特征,并发程序的特征必须用新的概念来描述,于是引进了“进程”的概念。
例2.2.7 在多道程序系统,当进程需要等待某种事件发生时,进程将进入何种状态?
解 当进程需要等待某种事件发生时,进程进入何种状态取决于进程程序的处理方式。进程可以调用阻塞原语,将自己阻塞,暂时放弃处理机;进程也可以采用不放弃处理机的循环等待的方式等待某种事件发生。因此,当进程需要等待某种事件发生时,进程并不是一定要进入阻塞状态。
例2.2.8 父进程创立子进程与主程序调用子程序有何不同 ?
解 父进程创立子进程后,父进程与子进程同时执行;主程序调用子程序,主程序暂停在调用点,子程序开始执行,直到子程序执行完毕返回,主程序开始执行。 例2.2.9 进程控制块PCB的作用是什么?它主要包含哪些内容?
解 操作系统管理的进程是多种多样的,要对这些进程实施有效的管理,必须对进程进行抽象。为了便于系统控制和描述进程的活动,在操作系统核心为进程定义了一个进程控制块PCB。PCB用于描述进程的基本情况以及进程运行和变化的过程,它与进程一一对应。当系统创建进程时,为进程分配一个PCB;在进程运行过程中,系统通过PCB对进程实施管理和控制;进程结束时,系统将收回PCB。
PCB中的内容主要包括调度信息和现场信息两大部分。调度信息包括进程名、进程号、优先级、当前状态、资源信息、程序和数据的位置信息、隶属关系和各种队列指针信息等。现场信息主要包括程序状态字、时钟寄存器和界限寄存器等描述进程运行情况的信息。 例2.2.10 一个新创建的进程,第一次被调度到CPU上运行时,其“现场”从何而来? 解 进程在CPU上交替地执行是通过保存退出进程的现场和恢复新选中进程的现场实现的;而一个进程的“现场”是其上次从CPU上退出时获得的。但是,一个新创建的、尚未在CPU上运行过的进程还没有“上一次”,那么它的“现场”从何而来?是从其父进程继承而来,是在进程创建程序执行时,将父进程特意为子进程准备的“现场”复制给子进程。新创建的子进程就是以此“现场”实施其第一次运行的。 例2.2.11 用户级线程和内核支持线程有何区别? 解 两者的区别是:
(1)内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的。
(2)用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
(3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
(4)在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的
多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。
(5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。
例2.2.12 说明Solaris OS的用户级线程、内核线程和轻型进程之间的关系。
解 首先要说明的是,这里所说的“内核线程”与“内核支持线程”是有区别的,即“内核线程”是与OS内核中的程序相对应的线程;而“内核支持线程”是指其创建、撤消和切换都需要内核程序支持才能实现的线程,其线程本身所对应的程序可以是OS的内核程序,也可以是内核外运行在用户态的程序,但主要是用户的应用程序。
在Solaris OS中,为了实现“用户级线程”与内核的无关性,在“用户级线程”和“内核线程”之间设立了称之为“轻型进程”(LWP:Light-Weight Process)的运行实体,作为两类线程的接口,用户级线程只能通过LWP请求内核线程的支持和服务。这样做的目的是要将两类线程隔离开来,使系统的运行层次更加清晰,效率和安全性更好。 例2.2.13 简述创建进程的大致过程。 解 创建一个进程大体分以下几步:
申请一个空白的PCB和唯一的进程标识号pid
为新进程分配除CPU以外的资源,包括内存空间;
初始化PCB中的数据项,包括标志信息、状态信息、控制信息等; 将新进程的PCB插入系统的就绪队列。 2.3 习题
2.3.1 选择最合适的答案
1. UNIX操作系统的进程控制块中常驻内存的是( )。 A.proc结构 B.proc结构和核心栈 C.ppda区 D.proc结构和user结构 2. 当( )时,进程从执行状态转变为就绪状态。 A.进程被调度程序选中 B.时间片到
C.等待某一事件 D.等待的事件发生
3. 在进程状态转换时,下列( )转换是不可能发生的。 A.就绪态→运行态 B.运行态→就绪态 C.运行态→阻塞态 D.阻塞态→运行态 4. 下列各项工作步骤中,( )不是创建进程所必需的步骤。
A.建立一个PCB B.作业调度程序为进程分配CPU C.为进程分配内存等资源 D. 将PCB链入进程就绪队列 5. 下列关于进程的叙述中,正确的是( )。 A.进程通过进程调度程序而获得CPU。
B.优先级是进行进程调度的重要依据,一旦确定不能改变。 C.在单CPU系统中,任一时刻都有1个进程处于运行状态。 D.进程申请CPU得不到满足时,其状态变为等待状态。 6. 从资源管理的角度看,进程调度属于( )。
A.I/O管理 B.文件管理 C.处理机管理 D.存储器管理 7. 下列有可能导致一进程从运行变为就绪的事件是( )。 A.一次I/O操作结束 B.运行进程需作I/O操作 C.运行进程结束
D.出现了比现运行进程优先权更高的进程
8. 一个进程释放一种资源将有可能导致一个或几个进程( )。 A.由就绪变运行 B.由运行变就绪 C.由阻塞变运行 D.由阻塞变就绪
9. 一次I/O操作的结束,有可能导致( )。
A.一个进程由睡眠变就绪 B.几个进程由睡眠变就绪 C.一个进程由睡眠变运行 D.几个进程由睡眠变运行 10. 当一个进程从CPU上退下来时,它的状态应变为( )。 A.静止就绪 B. 活动就绪 C. 静止睡眠 D. 活动睡眠
11. 为使进程由活动就绪变为静止就绪,应利用( )原语? A.SUSPEND B. ACTIVE C. BLOCK D. WAKEUP 12. 在下面的叙述中,不正确的是( )。 A.一个进程可创建一个或多个线程 B.一个线程可创建一个或多个线程 C.一个线程可创建一个或多个进程 D.一个进程可创建一个或多个进程
13. 若系统中只有用户级线程,则处理机调度单位是( )。 A.线程 B.进程 C.程序 D.作业 14. 一个进程是( )。
A.由协处理机执行的一个程序 B. 一个独立的程序+数据集 C.PCB结构与程序和数据的组合 D.一个独立的程序 15. 下列几种关于进程的叙述,( )最不符合操作系统对进程的理解? A.进程是在多程序并行环境中的完整的程序。 B.进程可以由程序、数据和进程控制块描述。 C.线程是一种特殊的进程。
D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 16. 在下面的叙述中正确的是( )。
A.线程是比进程更小的能独立运行的基本单位。
B.引入线程可提高程序并发执行的程度,可进一步提高系统效率。 C.线程的引入增加了程序执行时的时空开销。 D.一个进程一定包含多个线程。
17. 下面关于线程的叙述中,正确的是( )。
A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持。 B.线程是资源的分配单位,进程是调度和分配的单位。 C.不管系统中是否有线程,进程都是拥有资源的独立单位。
D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位。 18. 在下面的叙述中,正确的是( )。 A.引入线程后,处理机只在线程间切换。 B.引入线程后,处理机仍在进程间切换。 C.线程的切换,不会引起进程的切换。 D.线程的切换,可能引起进程的切换。
19. 进程的控制信息和描述信息存放在( )。 A.JCB B.PCB C.AFT D.SFT
20. 进程依靠( )从阻塞状态过渡到就绪状态。
A.程序员的命令 B.系统服务
C.等待下一个时间片到来 D.“合作”进程的唤醒
21. 在WINDOWS NT 中( )可以处于就绪状态。 A. 进程 B. 线程 C. 程序 D. 作业
22. 只作用于一个进程一次的原语是____________. A.创立 B.解挂 C.阻塞 D.挂起
23. 在UNIX系统中,处于( )状态的进程最容易被执行。
A.辅存睡眠 B.内存睡眠 C.内存就绪 D. 辅存就绪 24. 从执行状态挂起的进程解除挂起时进入( )状态。 A.就绪 B.执行 C.阻塞 D.挂起 25. 一个进程执行过程中不能可能对应( )。
A.一个PCB B.一个JCB C.多个PCB D.一个程序 2.3.2 选择所有正确的答案
1. 在下列进程的四个特征中,最基本的特征是( )。 A.并发性 B. 动态性 C. 独立性 D. 异步性 2. 下面会引起进程创建的事件是( )。
A.用户登录 B. 设备中断 C. 作业调度 D. 执行系统调用 3. 下面是关于线程的叙述,其中正确的是( )。
A.线程自己拥有一点资源,但它可以使用所属进程的资源。
B.由于同一进程中的多个线程具有相同的地址空间,所以它们间的同步和通信也易于实现。 C.进程创建与线程创建的时空开销不相同。 D.进程切换与线程切换的时空开销相同。 4. 在下面的叙述中,不正确的是( )。
A.同一进程内的线程可并发执行,不同进程的线程只能串行执行。 B.同一进程内的线程只能串行执行,不同进程的线程可并发执行。 C.同一进程或不同进程内的线程都只能串行执行。 D.同一进程或不同进程内的线程都可以并发执行。
5. 线程是操作系统的概念,已具有线程管理的操作系统有( )。 A.Windows3.2 B. OS/2 C. Windows NT D. Mach
6. 下面属于进程基本状态的是( )。 A.就绪 B. 运行 C. 后备 D. 阻塞 7. 下列各项工作步骤,( )是创建进程所必须的步骤。 A.建立一个PCB
B.由CPU调度程序为进程调度CPU C.为进程分配内存等必要资源 D.将PCB接入进程就绪队列
8. 关于进程的正确说法是( )。
A.进程就是程序,或者说,进程是程序的另一种叫法
B.一个被创建了的进程,在它被消灭之前,大多数时刻处于进程的三种基本状态之一。 C.多个不同的进程可以包含相同的程序
D.一个处于等待队列中的进程,即使进入其它状态,仍然放在等待队列中。 9. 在( )时,可能挂起某进程。
A.进程出现死锁 B.进程的数目太少