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调度则以线程为单位,由OS的线程调度程序负责线程的调度。
(5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。
例 说明Solaris OS的用户级线程、内核线程和轻型进程之间的关系。
解 首先要说明的是,这里所说的“内核线程”与“内核支持线程”是有区别的,即“内核线程”是与OS内核中的程序相对应的线程;而“内核支持线程”是指其创建、撤消和切换都需要内核程序支持才能实现的线程,其线程本身所对应的程序可以是OS的内核程序,也可以是内核外运行在用户态的程序,但主要是用户的应用程序。
在Solaris OS中,为了实现“用户级线程”与内核的无关性,在“用户级线程”和“内核线程”之间设立了称之为“轻型进程”(LWP:Light-Weight Process)的运行实体,作为两类线程的接口,用户级线程只能通过LWP请求内核线程的支持和服务。这样做的目的是要将两类线程隔离开来,使系统的运行层次更加清晰,效率和安全性更好。
例 简述创建进程的大致过程。
解 创建一个进程大体分以下几步:
申请一个空白的PCB和唯一的进程标识号pid
为新进程分配除CPU以外的资源,包括内存空间;
初始化PCB中的数据项,包括标志信息、状态信息、控制信息等;
将新进程的PCB插入系统的就绪队列。
习题
选择最合适的答案
1. UNIX操作系统的进程控制块中常驻内存的是( )。
结构 结构和核心栈
区 结构和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. 从资源管理的角度看,进程调度属于( )。
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. 为使进程由活动就绪变为静止就绪,应利用( )原语?
B. ACTIVE C. BLOCK D. WAKEUP
12. 在下面的叙述中,不正确的是( )。
A.一个进程可创建一个或多个线程
B.一个线程可创建一个或多个线程
C.一个线程可创建一个或多个进程
D.一个进程可创建一个或多个进程
13. 若系统中只有用户级线程,则处理机调度单位是( )。
A.线程 B.进程 C.程序 D.作业
14. 一个进程是( )。
A.由协处理机执行的一个程序 B. 一个独立的程序+数据集
结构与程序和数据的组合 D.一个独立的程序
15. 下列几种关于进程的叙述,( )最不符合操作系统对进程的理解?
A.进程是在多程序并行环境中的完整的程序。
B.进程可以由程序、数据和进程控制块描述。
C.线程是一种特殊的进程。
D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
16. 在下面的叙述中正确的是( )。
A.线程是比进程更小的能独立运行的基本单位。
B.引入线程可提高程序并发执行的程度,可进一步提高系统效率。
C.线程的引入增加了程序执行时的时空开销。
D.一个进程一定包含多个线程。
17. 下面关于线程的叙述中,正确的是( )。
A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持。
B.线程是资源的分配单位,进程是调度和分配的单位。
C.不管系统中是否有线程,进程都是拥有资源的独立单位。
D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位。
18. 在下面的叙述中,正确的是( )。
A.引入线程后,处理机只在线程间切换。
B.引入线程后,处理机仍在进程间切换。
C.线程的切换,不会引起进程的切换。
D.线程的切换,可能引起进程的切换。
19. 进程的控制信息和描述信息存放在( )。
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.一个程序
选择所有正确的答案
1. 在下列进程的四个特征中,最基本的特征是( )。
A.并发性 B. 动态性 C. 独立性 D. 异步性
2. 下面会引起进程创建的事件是( )。
A.用户登录 B. 设备中断 C. 作业调度 D. 执行系统调用
3. 下面是关于线程的叙述,其中正确的是( )。
A.线程自己拥有一点资源,但它可以使用所属进程的资源。
B.由于同一进程中的多个线程具有相同的地址空间,所以它们间的同步和通信也易于实现。
C.进程创建与线程创建的时空开销不相同。
D.进程切换与线程切换的时空开销相同。
4. 在下面的叙述中,不正确的是( )。
A.同一进程内的线程可并发执行,不同进程的线程只能串行执行。B.同一进程内的线程只能串行执行,不同进程的线程可并发执行。C.同一进程或不同进程内的线程都只能串行执行。
D.同一进程或不同进程内的线程都可以并发执行。
5. 线程是操作系统的概念,已具有线程管理的操作系统有( 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.进程的数目太少
C.进程数目太多 D.进程出现故障
10. 多道程序系统进程从执行状态转换到就绪状态的原因是( )。
A.时间片完 B.等待其它进程的执行结果
C.等待I/O D.有更高优先级的进程到来
判断正误,错误的简要说明理由
1. 有了线程之后,程序只能以线程的身份运行。
2. 线程的切换会引起进程的切换。
3. 多个线程可以对应同一段程序。
4. 系统内可以有无父进程的进程。
5. 线程所对应的程序肯定比进程所对应的程序短。
6. 进程从CPU退下时,将“现场”保存在系统栈内。
7. 在多道程序系统,进程需要等待某种事件的发生时,进程一定进入阻塞状态。
8. 进程上下文是进程执行活动全过程的静态描述。
9. 并发是并行的不同表述,其原理相同。
10. 进程是基于多道程序技术而提出的,其基本的特征是动态性;进程的执行是在多个状态间多次转换的过程,但只有处于就绪和执行状态的进程位于内存。
11. 操作系统对进程的管理和控制主要是通过控制原语实现的。
12. 原语的执行是屏蔽中断的。
13. 一般情况下,分时系统中处于就绪状态的进程最多。
14. 系统中进程的数目越多,CPU的利用率越高.
15. 多道程序的执行失去了封闭性和再现性,因此多道程序系统不需要封闭性和再现性。
16. 一个多道程序可能具备封闭性和再现性。
17. 单道程序不具备封闭性和再现性。
简答题
1. Windows这样的多任务系统与Unix这样的多进程系统在调度上有何不同?
2. 进程和线程的主要区别是什么?
3. 程序的并发执行为什么会有间断性?
4. 进程能自己将自己唤醒吗?进程能自己将自己撤消吗?
5. 什么是原语?原语的主要特点是什么?
6. 程序并发执行与顺序执行时相比产生哪些新特征?
7. 程序并发执行的主要特性是什么?
8. 一个因等待I/O操作结束而入阻塞状态的进程,何时被唤醒?
9. 在什么情况下,可以一次唤醒一个进程和一次唤醒多个进程?
10. 进程的就绪状态和阻塞状态的有何不同?
11. 程序的并行执行将导致运行结果失去封闭性,这对所有的程序都成立吗?
12. 父进程创建子进程之后,父子进程之间的关系是什么?
解答题
1. 什么是线程?进程和线程是什么关系?
2. 简述引进线程的好处。
3. 当系统内所有的进程都进入睡眠之后,系统还有可能复活吗?
4. 当一个进程的父进程被撤消时,该进程是撤消好还是不撤消好?
5. 进程的挂起操作和入睡操作有何异同?
6. 简述进程为什么不能从就绪状态直接变成阻塞(睡眠)状态?
7. 进程的三个基本的转换如下图所示,图中1、2、3、4分别代表某种类型状态变迁,请分别回答:
什么事件引起各状态之间的变迁?
统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,试判断变迁3——1、2——1、3——2、4——1、3——4,如果有的话,将发生什么因果变迁
在什么情况下,如果有的话,上述变迁将不引起其它变迁?
习题解答要点
选择最合适的答案
选择所有正确的答案
1. AB 2. ACD 3. ABC
7. ACD 8. BC 9. ACD
判断正误,简要说明理由
1. 正确
错误
属于同一进程的多个线程之间的切换不会引起进程的切换,只有属于不同进程的线程之间的切换才会引起进程的切换。
3. 正确
4. 正确
5. 错误
不一定,若进程只有一个线程的话。
6. 错误
应该保存在PCB中,但有的系统也有例外。
7. 错误
进程也可以循环等待。
8. 错误
进程是进程实体的执行过程,具有动态性。
9. 错误
若干个事件在同一时刻发生成为并行;若干个事件在同一时间间隔内发生成为并发。并行是并发的特例,并发是并行的拓展。
10. 错误
基本特征还有并发性、异步性、独立性等;
进程在新、终止两状态中只经过一次;
进程都在内存。
11. 正确
12. 正确
13. 正确
14. 错误
进程容易产生资源竞争而处于阻塞或死锁状态
15. 错误
需要,否则程序没有稳定性和可靠性而言,用户也无法使用。
16. 正确
通过程序员的设计可以达到。
17. 错误
这是单道程序的固有属性。
简答题
1. 从调度上讲,在Windows这样的多任务系统中,当前执行哪个任务是由用户决定的,是用户可控的;而在Unix这样的多进程系统中,当前运行哪个进程是由内部的调度算法决定的,是对用户透明的,用户是不可直接控制的。
2. 在有进程和线程的系统中,进程是系统资源分配的独立单位,而线程是可调度运行的独立单位。
3. 并发执行是指系统内有多道程序在宏观上“同时”执行,但系统内往往只有一台处
理机(CPU),因此只能分时地为多个程序服务。就一道程序而言,往往不是一次能够运行完成,而是以“走走停停”的方式完成其运行,这就是并发系统内程序执行的间断性。
4. 唤醒进程和撤消进程都是要通过在CPU上运行程序来实现的。一个进程入睡了,它就不可能被调度到CPU上运行;一个进程在撤消前必须先进入终止状态,而处于终止状态的进程不可能被调度到CPU上运行。因此,进程被唤醒、被撤消都不能由自己来完成,只能由别的进程实现。
5. 原语是指由若干条机器指令构成的,并用以完成特定功能的一段程序。这段程序在执行期间是不可分割的。其主要特点是不可分割性。
6. 可分割性、失去封闭性、失去可再现性。
7. 并发程序间具有相互制约的关系,程序并发执行失去了程序的封闭性和再现性,程序和机器执行程序的活动不再一一对应。
8. 是在别的进程执行相应的I/O中断处理程序时唤醒的。
9. 在I/O中断处理程序中,当唤醒进程时,只唤醒等待该I/O结束的那一个进程;当一个进程释放一个系统资源(如I/O缓存)时,将要唤醒所有因等待使用该资源而进入阻塞状态的进程。
10. 阻塞状态的进程还不具备执行的条件,即使放到处理机上也不能执行;就绪状态的进程具备了执行的所有条件,放到处理机上就能执行。
11. 并不是所有程序的并行执行都会导致运行结果失去封闭性。例如,当程序中都使
用内部变量,不可能被外部程序访问时,程序的运行不会受到外部环境的影响。
12. 一个进程创建子进程之后,创建进程与产生的进程之间的关系是父子关系,分别成为父进程和子进程。子进程一经产生就与父进程并发执行,子进程共享父进程的正文段和已经打开的文件。
解答题
1. 线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。
在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。
进程和线程的关系是:
线程是进程的一个组成部分;
进程的多个线程都在进程的地址空间活动;
资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源配额中扣除并分配给它;
处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程;
线程在执行过程中,需要同步。
2. 引进线程的好处为:
以线程作为系统调度的基本单位,减少了系统的时空开销。以进程为系统调度的基本单位的系统中,进程的切换是很频繁的。在切换中由于要保留当时的运行环境,还要设置新选中的进程的运行环境,这既花费了处理机的时间,又增加了主存的空间,从而也限制了系统进程的数量和进程的切换速度。
引进线程提高了系统的并行能力。线程作为进程内的一个可执行实体,减少了并行粒度。线程作为调度的基本单位而不是资源分配的基本单位,调度更为容易,而且采用线程提高系统的并行能力比采用进程更为有效。
同一进程的线程共享进程的用户地址空间,所以同一进程的线程间的通信更容易实现。
3. 只有两种情况下系统可以复活。
一种情况是有因等待I/O操作完成而进入睡眠的进程,当相应的I/O操作完成后,I/O中断处理程序唤醒等待本次I/O的进程,而该进程在运行过程中又可能通过释放资源、发送消息等事件而唤醒其它进程,这样整个系统就又活跃起来了。
另一种情况是没有等待I/O操作完成的进程,但有定时睡眠的进程,当睡眠时间到期,会由时钟中断将该入睡进程唤醒,从而获得可运行进程,并有可能使系统重新活跃起来。
4. 在实际系统中,两种处理办法都是可行的,且各有优缺点。若撤消,则该进程的任务可能还没有完成,这显然是不利的,特别是当该进程的运行结果对其它进程的运行很重要(如该进程是其它进程的前趋进程,没有它的运行结果其它进程无法运行)时;若不撤
消,则该进程又可能成为不可控的“孤儿”,从而产生不可预测的结果。
比较好的做法是,当一个进程的父进程被撤消时,可以将该进程“过继”给系统内一个级别较高的进程(如Unix中的1#进程),让它有一个“新的父亲”,这样既可以继续完成其任务又不会成为不可控的。
5. 最主要的不同是“入睡”是进程的主动行为,而“挂起”可以是系统的强制行为;此外,只有在CPU上运行的进程才能执行“入睡”操作,而不管进程处于什么状态,系统都可对其执行“挂起”操作。
它们的相同点是:这两个操作都导致一个正在CPU上运行的进程从 CPU上退下来。
6. 一个进程要进入阻塞(睡眠)状态,必须通过执行相应的程序才能实现,如sleep()或block()。就绪进程当前不在CPU上运行,不能执行任何程序,当然不能使自己直接进入阻塞状态。
7.
引起各变迁的事件如下:
变迁1:正在执行的进程从处理机上退下,导致进程调度程序从就绪状态的进程中选取一个进程。
变迁2:正在执行的进程所分配的时间片用完,导致进程从处理机上退到就绪状态;或者在可抢占优先级的进程调度中,有更高有先级的进程进入就绪状态,导致正在执行的
进程从执行状态退到就绪状态。
变迁3:进程需要等待事件的发生;
变迁4:进程所等待的某事件发生了(如I/O完成);
(2) 可能发生的因果变迁
3——1:由于处于运行状态的进程转入阻塞状态,进程调度程序根据调度算法,又从就绪队列中选择一个进程投入运行;
2——1:由于处于运行状态的进程时间片用完,重新转入就绪状态,从而使进程调度程序又从就绪队列中选择一个进程投入运行;
3——2:此种变化不存在;
4——1:4的发生与1的发生没有必然关系;
3——4:3的发生和4的发生没有必然关系。
无关变迁
变迁1、2、3与处理机有关,必然引起其它变迁,变迁4不涉及处理机,不直接引起其它变迁。
因篇幅问题不能全部显示,请点此查看更多更全内容