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.由运行变就绪
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论