第二章 进程的描述和控制 (Process
Description and Control)
教学目的:
本 课为 描述程序并发执行引入进程的概念,描述 进程的特征、
状态、状态的转换、进程控制块等基本概念。 描述 控制进程状态转换的 OS内核和 进程控制原语 的功能 。 并发性是 OS最重要的特征,进程是 OS最基本最重要的概念,进程管理是 OS的重点和难点。
2001年 9月 20日 8时 51分 计算机操作系统 2.2
教学要求:
熟悉 进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态和状态的转换,熟练掌握进程存在的唯一实体 --进程控制块,熟悉 进程上下文。
熟悉 内核的功能,掌握增加,挂起,,,激活,操作的五个状态图和状态的转换,熟悉 创建、撤消、阻塞、唤醒、
挂起和激活进程控制原语的功能,一般了解 线程的概念 。
了解模块接口法、层次结构法和客户/服务器结构三种操作系统结构。
2001年 9月 20日 8时 51分 计算机操作系统 2.3
第一节 进程的引入
( 1) 程序顺序执行与特征
一个较大的程序通常都由若干个程序段组成,程序在执行时,
各程序段必须按照先后次序逐个执行。程序各程序段先后执行次序关系可用前趋图表示。
前趋图 是一个有向无循环图,图由结点和结点间有向边组成,
结点代表各程序段操作,而结点间的有向边表示两程序段操作之间存在的前趋关系。两程序段 Pi和 Pj的前趋关系表示成
Pi--Pj,Pi是 Pj的 前趋,Pj是 Pi的 后继。(结合 P35图 2-1)
P1
C1I1 I2 C2 P2
2001年 9月 20日 8时 51分 计算机操作系统 2.4
进程的引入 -1
例,s1,a:=x+y
s2,b:=a-5
s3,c:=b+1
程序顺序执行特征,
顺序性,程序各程序段严格按照规定的顺序执行。
封闭性,程序运行时机内各资源只受该程序控制而改变,执行结果不受外界因素影响。
可再现性,只要程序执行环境和初始条件相同,程序多次执行,
可获得相同结果。
( 2) 程序并发执行与特征并发环境,在计算机系统支持并行操作时,如采用多道程序设计技术,则内存中多道程序处于并发执行状态。如上述有三个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在系统 CPU和输入输出各部件并行执行,但一个作业没有前趋关系的程序段或不同作业的程序段可以分别在 CPU和各输入输出部件上并行执行。
2001年 9月 20日 8时 51分 计算机操作系统 2.5
进程的引人 -2
程序并发执行 ( 定义 )
若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的,也称这几个程序段是并发执行的 。
P
Q
R
并发执行区
2001年 9月 20日 8时 51分 计算机操作系统 2.6
进程的引入 -3
四个上述三个程序段类的作业并发执行的前趋图如下图所示,
C
3
I1 I2 I
3
I
4
C
1
C
2
C
4
P
1
P
2
P
3
P
4
,,,,,,
T t 1 t 2 t 3 t 4 t 5 t 6
2001年 9月 20日 8时 51分 计算机操作系统 2.7
进程的引入 -3
程序并发执行特征,
间断性,程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致并发程序具有,执行 -暂仃 -执行,这种间断性活动规律。
失去封闭性,程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。
不可再现性,程序在并发执行时,由于失去了封闭性,也将导致失去结果的可再现性。即程序经过多次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。
例,观察者 /报告者
2001年 9月 20日 8时 51分 计算机操作系统 2.8
进程的引入 -4
观察者,报告者:
begin begin
repeat repeat
wait a car go through deley a time
N=N+1; Print N ;
N=0 ;
until until
end end
初始 N=n时不同执行序列:
N=N+1; Print N; Print N ;
Print N ; N=0 ; N=N+1 ;
N=0 ; N=N+1 ; N=0 ;
结果各不相同,
打印 n+1,N=0; 打印 n,N=1; 打印 n,N=0;
2001年 9月 20日 8时 51分 计算机操作系统 2.9
程序(程序段)并发执行的条件
Berstein条件(自学)
2001年 9月 20日 8时 51分 计算机操作系统 2.10
2.2 进程的基本概念
2.2.1 进程的定义及特征
1 进程的定义
由于程序在并发执行时,各次执行的结果不同,所以用
,程序,这个概念已无法描述程序的并发执行,所以必须引入新的概念 -进程来描述程序的并发执行。进程这一术语最早由麻省理工学院著名的操作系统 MULTICS中提出。
进程定义:,可 并发 执行的程序在一个 数据集合 上的 运行过程,。
或者,是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行 资源分配 和 调度的独立 单位。(未引入线程前),
2001年 9月 20日 8时 51分 计算机操作系统 2.11
2 进程的特征(与程序相比而言),
1)动态性 ( 1) 强调:是一个程序的执行过程
( 2)有一定生命期:创建执行暂停消亡
( 3)在不同状态之间转换动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂仃,并由撤消而死亡。 而程序是静态的,它是存放在介质上(外存、软盘、光盘)一组有序指令的集合,无运动的含义。
一个程序 ----多个进程。
2001年 9月 20日 8时 51分 计算机操作系统 2.12
进程的引入 -1
2)并发性,并发性是进程的重要特征,同时也是 OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。 而程序是不能并发执行。
3)独立性,从 定义看 资源分配独立调度进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位 ;而程序不作为独立单位参加运行,必须通过建立进程才能运行。
4)异步性,进程按各自独立的不可预知的速度向前推进,即进程按异步方式进行 导致程序执行的不可再现性,因此 OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。
5)结构特征,由定义,进程实体包括 程序段数据段进程控制块 PCB( PROCESS CONTROL BLOCK)
UNIX中称为,进程映象,。
6) 进程可以创建其它进程,而程序不能。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.13
2.2.2进程的基本状态 及其转换进程有三个基本状态,不同系统设置的进程状态数目不同。
1,进程的三个基本状态执行态( Excuting),当一个进程在处理机上运行时,则称该进程处于运行状态。进程占有 CPU,并在 CPU上运行(如不特别强调,大都指单 CPU) 若 CPU空闲,处理机挑选一进程执行。
就绪态( Ready),一个进程获得了除处理机外的一切所需资源,
一旦得到处理机即可运行,则称此进程处于就绪状态。当调度给其 CPU时,立即可以运行。
阻塞态( Blocked) 又称睡眠状态、等待状态、封锁态、冻结态。
一个进程正在等待某一事件发生(例如请求 I/ O
或等待 I/ O完成或申请缓冲空间等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,
故称该进程处于阻塞状态。(即使 CPU空闲,该进程也不可运行)例:打印机 阻塞队列
2001年 9月 20日 8时 51分 计算机操作系统 2.14
进程的描述 -1
2 状态转换进程调度时间片已用完等待的事件已发生等待某一事件发生就 绪 态执 行 态阻 塞 态
2001年 9月 20日 8时 51分 计算机操作系统 2.15
进程状态的转换三个基本状态之间可能转换和转换原因如下:
就绪态 ―― >执行态,当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程,该进程便由就绪态转换为运行态。
执行态 ―― >阻塞态,处于运行态的进程在运行过程中需要等待某一事件发生后(例如因 I/ O请求等待 I/ O完成后),才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。
阻塞态 ―― >就绪态,处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。
执行态 ―― >就绪态,处于执行态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,或者有优先级高的进程出现,进程由执行态转为就绪态。
而阻塞态 ―― >运行态和就绪态 ―― >阻塞态这二种状态转换不可能发生。
2001年 9月 20日 8时 51分 计算机操作系统 2.16
3.系统中各进程状态的分布和管理
处于运行态进程,如系统有一个处理机,则在任何一时刻,
最多只有一个进程处于运行态。
处于就绪态进程,一般处于就绪态的进程按照一定的算法
(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列。
处于阻塞态进程,处于阻塞态的进程排在阻塞队列中。由于等待事件原因不同,阻塞队列也按事件分成几个队列。
2001年 9月 20日 8时 51分 计算机操作系统 2.17
4 新状态和终止状态新状态:进程刚建立,还未将它送入就绪队列时的状态。
终止状态:当进程已结束(正常 /异常),OS已将它从就绪队列中移出,但尚未将它撤消时的状态。
进程调度时间片已用完等待的事件已发生就 绪 态执 行 态阻 塞 态 等待某一事件发生新 状 态 终止 状 态接纳完成或发生错误
2001年 9月 20日 8时 51分 计算机操作系统 2.18
5 挂起状态的引入指人为的把正在执行或没有执行的进程挂起,人为的暂停。
引入挂起的原因:
1)在程序执行期间,用户能发现某些可疑问题 ——>暂停以便检查。
2)系统 在程序执行期间,想了解一下资源使用情况 ——>暂停某些(就绪 /执行)进程以便评估。
执行 —>暂停就绪 —>暂不接受调度引进一个有别于就绪的状态 —>静止就绪就绪 态执行 态 静止就绪挂起挂起激活挂起状态
2001年 9月 20日 8时 51分 计算机操作系统 2.19
3)内存不够时,把某些阻塞的进程调至外存,所以当引起阻塞的事件完成时,因为它 在外存,要先由外存 —>内存,
再等待调度,有一定时延。该进程也不能立刻进入就绪,
所以有别于阻塞,称为静止阻塞。
可以画 7种状态的完整转换图。 (不同 OS所设状态转换不同)
阻塞 态静止阻塞挂起激活静止就绪事件出现
2001年 9月 20日 8时 51分 计算机操作系统 2.20
五个状态进程状态图静止就绪活动就绪活动阻塞运行静止阻塞阻塞唤醒挂起激活
2001年 9月 20日 8时 51分 计算机操作系统 2.21
6 关于作业
作业,作业状态及转移
在批处理系统中一个用户程序的执行的全过程称为一个作业,当作业提交给计算中心 ( 或机房 ) 后,由机房工作人员录入到存储设备上 ( 如磁带,磁盘等 ),然后,由作业调度程序按某种调度策略将作业调入计算机系统执行,
执行完成后,由作业调度程序做作业的善后处理工作,至此一个作业完成 。
2001年 9月 20日 8时 51分 计算机操作系统 2.22
作业、作业状态及转移
我们把上述对作业的操作归纳成四种状态:
1,提交状态 用户将自己的程序和数据放在输入设备上,等待;
2,后备状态 系统响应用户的要求,将作业带领到直接存取的后援存储器中,等待调度 ;
3,执行状态 从作业计算开始,到计算完成为止,该作业处于执行状态 。
4,完成状态 从作业计算完成开始,到善后处理完毕退出系统为止,称为作业完成状态 。
2001年 9月 20日 8时 51分 计算机操作系统 2.23
作业、作业状态及转移
2001年 9月 20日 8时 51分 计算机操作系统 2.24
系统中各进程状态的分布和管理 -1
系统中各进程状态的分布:
例:一个只有一个处理机的系统中,OS的进程有运行、就绪、
阻塞三个基本状态。假如某时刻该系统中有 10个进程并发执行,在略去调度程序所占用时间情况下试问:
这时刻系统中处于运行态的进程数最多有几个?最少有几个?
这时刻系统中处于就绪态的进程数最多有几个?最少有几个?
这时刻系统中处于阻塞态的进程数最多有几个?最少有几个?
解:因为系统中只有一个处理机,所以某时刻处于运行态的进程数最多只有一个。而最少可能为 0,此时其它 10个进程一定全部排在各阻塞队列中,在就绪队列中没有进程。而某时刻处于就绪态的进程数最多只有 9个,不可能出现 10个情况,
因为一旦 CPU有空,调度程序马上调度,当然这是在略去调度程序调度时间时考虑。处于阻塞态的进程数最少是 0个。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.25
5。 系统中各进程状态转换影响运行阻塞就绪运行阻塞就绪? A进程 B进程
C进程 D进程运行运行阻塞就绪阻塞就绪
2001年 9月 20日 8时 51分 计算机操作系统 2.26
系统中各进程状态转换影响 -1
在一个多道程序设计的系统中,各进程状态转换会互相影响。
例如系统中一个运行态的进程 A发生 I/O请求后要等待 I/O完成,它的状态也由运行态转换为阻塞态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程 B,将处理机分给它,该 B进程的状态也由就绪态转换为运行态。如一个进程 C等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。如进程 C从阻塞态转换为就绪态时,有一个进程 D在 CPU上运行。而系统采用抢占式调度算法,进程 C的优先级又高于正在 CPU上运行的进程 D的优先级,则要发行抢占调度。即接下去的操作时由进程调度程序将正在运行的进程 D由运行态转换为就绪态,
插入就绪队列。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.27
5,Five-State Process Model
New Ready Running Exit
Blocked
Admit
Event
Occurs
Dispatch Release
Time-out
Event
Wait
2001年 9月 20日 8时 51分 计算机操作系统 2.28
2.2.3进程控制模块 PCB(Process Control
Block)
在系统中一个进程存在:
进程控制块 ( 数据结构 )
进程的执行程序 ( 一个可执行文件 )
进程总是位于某个队列 (就绪,等待某事件队列 )
处于某种状态 ( 运行,就绪,等待 )
占用某些系统资源(内存,打开某些文件、处理机、外设)
2001年 9月 20日 8时 51分 计算机操作系统 2.29
2.2.3进程控制模块 PCB(Process Control Block)
程序段进程 数据段进程控制块 PCB( PROCESS CONTROL BLOCK)
PCB是系统为了管理进程而设置的一个专门数据结构,用来记录 进程的外部特征,描述进程的运动变化过程。系统利用
PCB控制和管理进程。所以 PCB是系统感知进程存在的唯一标志,与进程一一对应,就象户口本上的一页,人出生创立,死亡撤消。
PCB从建立 —>撤消与进程相伴相随。应常驻内存。
系统将所有的 PCB组织 —>若干个队列(链表),
创建进程 —>创建 PCB;
进程任务完成 —>收回其 PCB。
1,进程控制块的作用 ―― 进程存在的唯一实体
2001年 9月 20日 8时 51分 计算机操作系统 2.30
2.2.3进程控制模块 PCB(Process Control Block)
进 程 控 制 块 PCB (Process
Control Block
存放进程的管理和控制信息的数据结构称为进程控制块 。 它是进程管理和控制的最重要的数据结构,在创建时,建立
PCB,并伴随进程运行的全过程,直到进程撤消而撤消 。
PCB就象我们的户口 。
2,PCB的信息
2001年 9月 20日 8时 51分 计算机操作系统 2.31
1) 进程标识符 name
每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字 。 UNIX系统中就是一个整型数 。 在进程创建时由系统赋予 。
2) 进程当前状态 status
说明进程当前所处的状态 。
为了管理的方便,系统设计时会将相同的状态的进程组成一个队列,如 就绪进程队列,等待进程则要根据等待的事件组成多个等待队列,如等待打印机队列,等待磁盘 I/O完成队列等等 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.32
3)当前队列指针 next
登记与本进程处于同一队列的下一个进程的 PCB的地址 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.33
4) 总链指针 all-q-next
5) 执行程序开始地址 start-addr
6) 进程优先级 priority
进程的优先级反映进程的紧迫程序,通常由用户指定和系统设置 。 UNIX系统采用用户设置和系统计算相结合的方式确定进程的优先级 。
7) CPU现场保护区 cpustatus
当进程因某种原因不能继续占用 CPU时 ( 等待打印机 ),
释放 CPU,这时就要将 CPU的各种状态信息保护起来,为将来再次得到处理机恢复 CPU的各种状态,继续运行 。 例如,我们下课,这时我要记住这次讲到什么地方,下次课接着讲 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.34
9) 家族联系 process family
有的系统允许一个进程可创建自已的子进程,子进程还可以创建,一个进程往往处在一个家族之中,就需要记录进程在家族中位置的信息 。
10) 占有资源清单 own-resource
进程占用系统资源的情况,不同的系统的处理差别很大,
UNIX系统中就没有此项 。
2.2.3进程控制模块 PCB(Process Control Block)
8)通信信息 communication information
是指某个进程在运行的过程中要与其它进程进行通信,
该区记录有关进程通信方面的信息。
2001年 9月 20日 8时 51分 计算机操作系统 2.35
2.2.3进程控制模块 PCB(Process Control Block)
按照教材,可分为 4大部分:
( 1)进程标识符( ID号),
它用于唯一地标识一个进程。它有外部标识符(由字母组成,供用户使用)和内部标识符(由整数组成,为方便系统管理而设置)二种。
( 2) 进程调度信息:进程状态( Excuting,ready,blacked)
进程优先级进程已执行时间和已等待时间引发阻塞事件的原因等等。
2001年 9月 20日 8时 51分 计算机操作系统 2.36
2.2.3进程控制模块 PCB(Process Control Block)
( 3)处理机状态信息:通用寄存器
指令计数器
程序状态字 PSW
用户栈指针等
该类信息使进程被中断后重新执行时能恢复现场从断点处继续运行。
现场保留区(解释并举例):
( (练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.37
2.2.3进程控制模块 PCB(Process Control Block)
4)进程控制信息:程序和数据的地址
除 CPU以外的资源清单
保证进程正常运行的同步和通信机制队列指针
家族信息:进程的父、子进程标识符、
进程的用户主等。
UNIX的 PCB由 Proc和 user两个结构组成,proc常驻主存的系统区,是 PCB中最基本和常用信息,而 user可根据需要换进换出。
2001年 9月 20日 8时 51分 计算机操作系统 2.38
2.2.3进程控制模块 PCB(Process Control Block)
例,A,OS调度到某进程执行时,从该进程的 PCB中查出其现行状态及优先级; —> 进程 ID,调度信息
B,( 中断返回) OS调度到某进程后,根据 PCB中所保存的 CPU状态去恢复现场信息; —> 现场保留区
C,根据其 PCB中的程序 /数据的内存起始地址,找到其程序或数据; —> 进程控制信息
D,进程执行时,当需要和与之合作进程实现同步通信或访问文件时,也要访问 PCB。 —> 进程控制信息
2001年 9月 20日 8时 51分 计算机操作系统 2.39
3 PCB的组织方式
PCB经常被 OS的各个模块修改,被系统访问,PCB常驻内存。
系统将所有的 PCB组织成 —>若干队列(链表) —>存放在内存的固定区域 —> PCB表。 PCB表的大小决定系统中最多可同时存在的进程个数,称为 系统的并发度 。
1)链接方式
P45图 2-7。
2)索引方式
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.40
4 进程上下文 进程是由程序、数据和进程控制块组成。
进程上下文实际上是执行活动全过程的静态描述。具体说,
进程上下文包括系统中与执行该进程有关的各种寄存器(例如:通用寄存器、程序计数器 PC,程序状态寄存器 PS等)的值,程序段在经编译之后形成的机器指令代码集(或称正文段)、数据集及各种堆栈值和 PCB结构,如下图所示。
P C B
各种控制表指针 各种寄存器正文集数据集栈区
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.41
2.3进程控制 (Process Control )
2.3.1 内核 (Kernel)
1,CPU对 OS保护模式支持
Intel公司的 80386及更高级的 CPU可以提供程序代码 4
层不同等级的权力,包括有 Ring0-3。 Ring0拥有最高的运行优先权,它访问所有系统内存和所有的 CPU指令,而
Ring1-3访问权限受到不同限制。 Windows 98/NT为了与基于 RISC的结构上兼容只使用两个特权级别,Ring0和 Ring3。
2,核心态和用户态为了防止用户应用程序访问和/或更改重要的操作系统数据,Windows98/NT,UNIX使用两种处理器访问模式:
核心态和用户态。操作系统代码在核心态下运行,即在
X86处理器 Ring0运行,它有着最高的特权。而用户应用程序代码在用户态下运行,即在 X86处理器 Ring3中运行。
2001年 9月 20日 8时 51分 计算机操作系统 2.42
内核 -1
用户应用程序(在 Windows98/NT中以用户线程方式出现)运行用户程序一般代码时,它是在用户态下执行。但当程序要调用系统服务,例如要调用 OS中负责从磁盘文件中读取数据的 NT执行体例程时,它就要通过一条专门的指令 (系统调用 )
来完成从用户态切换到核心态,OS根据该指令及有关参数,
执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在核心态下执行的是调用操作系统有关功能模块的代码。
3,原语原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞 …… )大都为原语操作。
2001年 9月 20日 8时 51分 计算机操作系统 2.43
内核
4,内核功能内核是计算机硬件上的第一层扩充软件,它是 OS中关键部分,它是管理控制中心。内核在核心态下运行,常驻内存,内核通过执行各种原语操作来实现各种控制和管理功能。
内核为 OS其它模块提供最基本的支撑功能和资源管理功能:
对中断进行,必要和有限的,处理时钟管理原语操作进程(处理器)管理存储器管理设备管理
OS
裸机
2001年 9月 20日 8时 51分 计算机操作系统 2.44
2.3.2 进程的创建进程树图( P48图 2-9)
1 引起进程创建的条件
( 1)分时系统中用户登陆,为每个用户建立一个进程。
( 2)作业调度:把一个作业装入内存时,为其创建进程并插入 RL( 就绪队列)。
( 3)提供服务:应用程序提出打印,由 OS为之创建一个打印进程。
( 4)应用请求:应用进程自己创建新进程与原进程并发
2001年 9月 20日 8时 51分 计算机操作系统 2.45
2.3.2 进程的创建
2 进程的创建(主要工作是为被创建进程建立一个 PCB)
( 1)创建原语首先从系统的 PCB表中索取一个空白的 PCB表目,
并获得其内部标识。
i=getid(n)-------形式描述
( 2)为新进程分配资源:为进程的程序、数据、用户栈分配内存空间,内存大小由提出创建进程的用户进程给出。
( 3)初始化 PCB
标识符 —> PCB的相应位置初始化 CPU状态信息,PC —>程序入口地址;栈指针 —>栈顶初始化进程调度信息:进程状态为活动/静止就绪态,
优先级设为 K
初始化进程控制信息:资源清单,程序和数据地址等
( 4)并把该 PCB插入到就绪队列 RQ中,就可进入系统并发执行。
2001年 9月 20日 8时 51分 计算机操作系统 2.46
2.3.2 进程的创建
创建原语 Create():
i=getid(n);
i.id=n;
j=EP;
i.parent=j;j.progency:=i;
i.CPUstate:=S0; i.mainstore:=M0;
i.status:=ready; i.priority:=k0;
i.resources:=R0;
i.sdata:=RQ;
insert(RQ,i);
2001年 9月 20日 8时 51分 计算机操作系统 2.47
2.3.3进程的撤消原语( Destroy)
1 引起撤消的事件 正常结束异常结束外界干预 操作员 /系统干预(人为终止)非暂停、挂起父终止子撤父引起
2 进程撤消过程:
采用的策略是由父进程发出,撤消它的一个子进程及该子进程所有的子孙进程,被撤消进程的所有资源(主存,I/O资源,PCB表目)全部释放出来归还系统,并将它们从所有的队列中移去。如撤消的进程正在运行,则要调用进程调度程序将处理器分给其它进程。
2001年 9月 20日 8时 51分 计算机操作系统 2.48
2.3.3进程的撤消原语( Destroy)
1 由 ID检索 PCB集合 —>被撤进程的 PCB,并读出其状态。
2 若该进程正处于执行状态,则应立即终止执行,置调度标志 =TRUE( 表示该进程被终止后,可引起系统重新调度,
调度别的进程执行),将它从队列中摘下。
3 终止其所有子孙进程(递归)
4 被撤消进程的所有资源(主存,I/O资源,PCB表目)全部释放出来归还系统 /父进程。
5 移出 PCB
2001年 9月 20日 8时 51分 计算机操作系统 2.49
2.3.4 进程的阻塞 (block)与唤醒 (wakeup)
1,引起进程阻塞的原因
1)请求系统服务举例:进程’和进程”
2)启动 I/O操作 举例
3)新数据尚未到达 举例
4)无新工作可做的系统进程 举例
2 阻塞过程阻塞过程:
( 1)首先找到对应 PCB;
( 2) 保护现场 —> PCB;
( 3) 立即仃止原来程序的执行,把 PCB中的现行状态由运行态改为活动阻塞态;
( 4)将 PCB插入到等待某事件的阻塞队列中;
( 5)最后调用进程调度程序进行处理机的重新分配。
2001年 9月 20日 8时 51分 计算机操作系统 2.50
2.3.4 进程的阻塞与唤醒
3 阻塞原语 block()
进程阻塞是进程自身的主动行为。
4 唤醒过程引发原因,所等待的资源出现了。
当被阻塞的进程所期待的事件发生时(例如 I/ O完成时),
则有关进程和过程(例如 I/ O设备处理程序或释放资源的进程等)调用 wakeup原语,将阻塞的进程唤醒。
唤醒过程,Wakeup()
( 1)找到 PCB;
( 2) 将等待该事件的进程 PCB从阻塞队列移出;
( 3)修改进程 PCB中现行状态,如是活动阻塞态改为活动就绪态,如是静止阻塞态改为静止就绪态。
( 4)插入到就绪队列 RQ中。
2001年 9月 20日 8时 51分 计算机操作系统 2.51
2.3.5 进程的挂起与激活
1 挂起 suspend()
引发原因:用户进程或父进程通过调用挂起原语将进程挂起。
调用挂起原语的进程只能挂起它自己或它的子孙,而不能挂起别的族系的进程。
挂起原语的执行过程是,(1)找到 PCB;( 2) 把进程从外存 —>内存;( 3)检查要挂起进程 PCB的现行状态,若正处于活动就绪态,便将它改为静止就绪态;如是活动阻塞态则改为静止阻塞态。如是运行态,则将它改为静止就绪态,并调用进程调度程序重新分配处理机。( 4)为了方便用户或父进程考察该进程的运行情况,需把该进程的
PCB复制到内存指定区域。
2001年 9月 20日 8时 51分 计算机操作系统 2.52
2.3.5 进程的挂起与激活
2 激活 active()
引发原因:用户进程或父进程通过调用激活原语将被挂起的进程激活。
激活原语执行过程是,(1)找到 PCB;( 2) 把进程从外存 —>内存;( 3)检查被挂起进程 PCB中的现行状态,若处于静止就绪态,则将它改为活动就绪态,若处于静止阻塞态,则将它改为活动阻塞态。( 4)若改为活动就绪态,
有可能引发新一轮调度。
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.53
(4)讨论
1,执行原语的进程和原语操作的进程间的关系原语 执行原语的进程 原语操作的进程创建 父 子撤消 父 子、孙阻塞 自己 自己唤醒 其它 它挂起 父 自己或子、孙激活 父 子、孙
2,抢占式调度假如采用抢占式调度策略,则每当有新进程进入就绪队列时,
例如执行唤醒原语,被唤醒进程从活动阻塞态转为活动就绪态时,或者执行激活原语,被激活进程从静止就绪态转为活动就绪态时,应检查是否要进行重新调度。即由调度程序将激活的进程(或唤醒的进程)与当前运行进程进行优先级比较,如果被激活的进程的优先级更高,则剥夺当前进程的运行,把处理机分配给刚激活的进程,否则就不必重新调度。
2001年 9月 20日 8时 51分 计算机操作系统 2.54
2.4线程 (Threaded)概念
( 1)线程的引入作为并发执行的进程具有二个基本的属性:进程既是一个拥有资源的独立单位,它可独立分配虚地址空间、主存和其它,又是一个可独立调度和分派的基本单位。这二个基本属性使进程成为并发执行的基本单位。在一些 OS中,
象大多数 UNIX系统,Linux等,进程同时具有这二个属性。
而另一些 OS中,象 WindowsNT,Solaris,OS/ 2,Mac OS
等,这二个属性由 OS独立处理。为了区分二个属性,资源拥有单元称为进程(或任务),调度的单位称为线程、
又称轻进程( light weight process)。 线程只拥有一点在运行中必不可省的资源(程序计数器、一组寄存器和栈),但它可与同属一个进程的其它线程共享进程拥有的全部资源。线程定义为进程内一个执行单元或一个可调度实体。
2001年 9月 20日 8时 51分 计算机操作系统 2.55
( 2)多线程 (Multithreading)
多线程是 OS在一个进程内支持多个线程的能力。
多线程进程模块线程 A 线 程 B 线 程 C进程控制块
PCB
用户地址空间线 程控制块
TCB
用户栈核心栈线程控制块
TCB
用户栈核心栈线程控制块
TCB
用户栈核心栈
2001年 9月 20日 8时 51分 计算机操作系统 2.56
Single Threaded and
Multithreaded Process Models
Thread
Control
Block
User
Stack
User
Stack
Kernel
Stack
Kernel
Stack User
Address
Space
User
Address
Space
Process
Control
Block
Process
Control
Block
ThreadSingle-Threaded
Process Model
Multithreaded Process Model
Thread
Control
Block
User
Stack
Kernel
Stack
Thread
Thread
Control
Block
User
Stack
Kernel
Stack
Thread
2001年 9月 20日 8时 51分 计算机操作系统 2.57
多线程 -1
一个进程定义为保护的单元和资源分配的单元,与一个进程有关的是:
保存进程映象的虚地址空间;
对处理器、其它进程,(如进程通信 )、文件和 I/ O资源受保护的存取。
在一个进程内有多个线程,与一个线程有关的是:
一个线程的执行状态(运行、就绪 …… );当不运行时保存一个线程的内容:一个独立的程序计数器;一个执行的栈;每个线程的一些局部变量的静态存贮;和这个进程的其它线程共享对这个进程的存贮器和资源的存取。
2001年 9月 20日 8时 51分 计算机操作系统 2.58
(3)线程和进程间关系 (Relationship
Between Threads and Processes)
线程:进程 描 述 实例系统
1,1 每一个执行的线程是一个拥有自己地址空间和资源的唯一进程大多数 U N I X
系统,L i nu x
M,1 一个进程定义一个地址空间和动态资源所有,多个线程可能被产生并在该进程内执行
W i nd ow s N T
S ol a r i s O S / 2
O S / 39 0
M A C H
1,M 一个线程可以从一个进程环境迁移到另一个进程环境,这允许一个线程在不同的系统间容易地移动 (在分布式 操作系统)
R a ( C l ou ds )
E m e r a l d
M,M M,1 和 1,M 属性的结合 T R I X
2001年 9月 20日 8时 51分 计算机操作系统 2.59
( 4) WindowsNT/2000的基元成分 ――
对象 (object)、进程 (process)、线程 (Thread)
对象、进程、线程是 WindowsNT三个基元成份,它们之间有互相交叉的关系。
对象 是一个抽象的数据结构,在 WindowsNT中用以表示广义的所有资源。它是构成 OS的三个基元成份中非活动的成份,对象是数据和有关操作的封装体,它包装数据、数据的属性以及可以施加于数据的操作等三个成份。事物抽取其共性可以划分为类。实际上具有相同特性的对象也可归为一个对象类,
在软件设计中定义了对象类(称为类 Class),而对象则是对象类一个具体实现的示例。对象作为抽象数据而封装在其内部的操作函数所提供的操作也给人活动成份的感觉,但是从操作系统这一角度来认识,对象是构成操作系统的非活动成份。而进程和线程则是构成 OS的两个活动成份。
2001年 9月 20日 8时 51分 计算机操作系统 2.60
WindowsNT/2000的基元成分
―― 对象、进程、线程 -1
WindowsNT中 进程 被定义为表示 OS所要做的工作,是 OS用于组织其必须完成诸工作的一种手段。 NT中的进程由一个可执行的程序、一个私用的虚地址空间、系统资源和至少一个执行线程等四部分组成
NT的进程概念与传统 OS进程概念有所不同,NT进程是作为对象来实现,因此从广义角度来说,进程也是共享的资源(多个用户进程可共享服务器进程提供的服务)。 NT定义了一个进程对象类,进程的对象类的对象体和所包含的属性定义了进程对象的数据及其属性和施加其上的操作(服务) (进程对象体属性见下页),但描述进程组成的两个主要部分 ―― 进程地址空间和局限于进程的对象表,不包含在属性表中,因为它是附属的、不可见的。 NT进程要求一个独特的组成成分
―― 至少一个执行线程,这在传统 OS中是没有的。 NT进程的组成中没有进程控制块,有关进程的信息在进程对象的对象体中以及局限于进程的对象表中。
2001年 9月 20日 8时 51分 计算机操作系统 2.61
Windows NT Process
Object Attributes
Process ID
Security Descriptor
Base priority
Default processor affinity
Quota limits
Execution time
I/O counters
VM operation counters
Exception/debugging ports
Exit status
2001年 9月 20日 8时 51分 计算机操作系统 2.62
WindowsNT/2000的基元成分
―― 对象、进程、线程 -2
NT的 线程 是进程内的一个执行单元,是进程内的一个可调度实体。一个线程是由唯一的标识符客户 ID,描述处理器状态的一组状态寄存器的内容、用户栈和核心栈、一个私用存贮器等四部分组成,线程也是作为对象来实现,线程对象体属性见下页。每个进程创建时只有一个线程,需要时这个线程创建其它线程。线性是进程的一个组成部分,
一个 NT进程可以有多个线程在其地址空间内执行。资源分配的单位是进程,调度和执行的基本单位是线程。
2001年 9月 20日 8时 51分 计算机操作系统 2.63
Windows NT Thread Object
Attributes
Thread ID
Thread context
Dynamic priority
Base priority
Thread processor affinity
Thread execution time
Alert status
Suspension count
Impersonation token
Termination port
Thread exit status
2001年 9月 20日 8时 51分 计算机操作系统 2.64
( 4)引入线程的好处( Benefits of Threads)
线程的关键好处是从性能应用中得到的,在一个存在的进程中产生(或终止)一个线程比产生(或终止)一个进程化费少得多的时间。类似地,在同一进程内二个线程间切换时间也要比二个进程切换时间小得多。因此假如一个应用或函数作为一组相关执行单元的应用,那末采用一组线程的集合比采用分开进程的集合要有效得多。
线程应用的例子是线程作为局部网上文件服务器。不同用户的文件请求使用的环境资源相同。当一个新的文件请求进入时,文件管理程序产生一个新的线程。因为一个服务器将处理许多文件请求,许多线程将在短时间内产生和撤消。假如服务器是多处理器,那末在同样进程内多个线程能在不同处理机上同时执行,在单处理机上线程结构同样有效,它使逻辑上不同函数级的程序结构简单化。
2001年 9月 20日 8时 51分 计算机操作系统 2.65
2.5操作系统结构 (OS structure)
( 1) 操作系统采用结构程序设计的必要性由于 OS日趋庞大,结构日益复杂,错误增加以至不可避免。
例如 IBM/360操作系统第一版化了 5000*5人年,但在以后每个新版中都纠错多处。 Microsoft的浏览器程序 Ixplorer也面临一群潜在性地涉及到严重隐私和安全问题的臭虫,为此发布了三个补丁程序包含在 IE5.01中。
其次由于 OS存在并发性,进程间执行序列数量巨大,推进序列不确定性,程序错误的某种表现形式不重复出现,可能使人误解为一次偶然性机器的故障。这给 OS调试带来了困难。
为了使 OS高可靠、高效能、可理解和可修改,操作系统必须采 用结构程序设计方法。
2001年 9月 20日 8时 51分 计算机操作系统 2.66
( 2) 模块接口( modular programming) 法 /
单一结构( monolithic) 法模块接口法是 OS最早采用的一种结构程序设计方法,早期操作系统( IBM的 OS) 和小型 OS( 如 MS-DOS) 均属此类型。
模块接口法把一个系统按功能分成若干个具有一定独立性和大小完成某方面功能的模块,并规定好各模块之间的接口。
接着在明确每个模块的内部功能的基础上对它们进行独立设计。最后在各模块设计完成后按照模块间的接口关系,将所有模块逐步链接成一个大系统。
模块接口法的优点是使 OS设计实现模块化的基本结构程序设计方法,它增加了 OS灵活性,便于修改和维护。但由于模块部接口复杂,使得系统的结构关系不清晰,因而使系统的可靠性降低。故又称模块接口法为无序模块法。
2001年 9月 20日 8时 51分 计算机操作系统 2.67
( 3) 层次( layered) 结构法
为了减少各模块之间无序调动、互相依赖关系,特别是清除循环现象,引入层次结构设计法。 它将模块间无序调用变为有序调用,它把 OS的所有功能模块,按功能流图的调用次序,
排列成若干层,各层之间的模块只能是单向调用关系,即是只允许上层模块调用下层模块。 这样不但操作系统的结构清晰,而且不构成循环。
层次结构法采用自底向上法形成操作系统。它先在裸机上添加第一层精心编制的软件,形成比原来机器功能更强的机器,称为虚拟机 A1。 再经过几乎是穷尽无遗的测试后,就有较大把握确信虚拟机 A1是正确的。然后,再在 A1上增加一层精心编制的软件,形成功能更强、更接近于实际要求的虚拟机
A2,再经过几乎是穷尽无遗的测试,…… 如此一层一层地自底向上地铺设各软件层,每一层都实现若干功能,最后构成满足要求的虚拟机 An。 因此只要下层各模块设计是正确的,
就为上层功能模块的设计提供了可靠基础,从而增加了系统的可靠性。
2001年 9月 20日 8时 51分 计算机操作系统 2.68
层次结构法 -1
1968年 Dijkstra在 ELX8 机器上编制的操作系统 THE中采用各层间单向依赖,层内各模块互相独立的全序的层次关系设计。但该系统通信开销大,系统经过层层调用效率低,
该设计方法不适用大型 OS。 在大层 OS中要建立一个全序的层次结构关系是十分困难,往往无法避免循环现象。因些层次结构设计应作为 OS设计的原则,尽可能将操作系统各功能模块排成有序层次,以便尽量减少系统中循环现象。
2001年 9月 20日 8时 51分 计算机操作系统 2.69
( 4)客户/服务器( Client/Server ) 方式 /
微内核( Microkernel) 结构?
1。操作系统结构技术的发展是与整个计算机技术的发展相联系的。操作系统采用客户/服务器结构,它将非常适应于分布式处理的计算机环境中,所以说 C/ S模式是第三代操作系统。
2。 C/ S结构的思想是把 OS分成内核和若干个进程。每个进程实现单个的一套服务(例如:主存服务、进程生成服务、处理机调度服务),称为服务器进程。每个服务器进程运行在用户态,它执行一个循环以检查是否有客户已请求某项服务 。
而客户可以是另外的操作系统成分,也可以是应用程序。 C/
S结构模式的操作系统有卡内基,梅隆大学研制的 Mach OS和美国微软公司研制的 WindowsNT操作系统等。
2001年 9月 20日 8时 51分 计算机操作系统 2.70
客户/服务器( C/ S) 方式 -1
3。 NT OS由 NT执行体和用户态服务器进程两部分组成,
运行在核心态内核,WindowsNT称为 NT执行体 。 NT执行体结构是层次式与微内核的结合,它由一组部件构成。 NT最底层是硬件抽象层( HAL),NT内核是第二层,它负责对中断和异常作出响应;调度线程,提供一组基本对象和接口。 NT内核上是一组部件:对象管理程序、安全调用监视程序、进程管理程序、本地过程调用功能和虚拟内存管理程序等。 NT执行体最上层系统服务是 NT执行体为用户态的进程提供的一个接口。
运行在用户态的并以客户/服务器方式活动的进程。 用户态服务器进程又称保护子系统。 WindowsNT有二类保护子系统:
环境子系统和集成子系统。
环境子系统有 Win32子系统,OS/ 2子系统和 POSIX子系统几种,每种子系统为特定的操作系统提供一个 API。 集成子系统是完成重要操作系统功能的服务器。这包括安全子系统,
网络软件中的若干部件(工作站服务和网络服务器服务)。
2001年 9月 20日 8时 51分 计算机操作系统 2.71
3。 Windows NT 框架图
Win32 客户登录进程
POSIX 子系统
OS/ 2 客户
POSIX 客户
Win32子系统系 统 服 务
I/ O管理程序对象管理 安全调用 进程管理 本地过程 虚拟内 存 文件 程序程 序 监视程序 程序 调用功能 管理程序 缓冲存储管理程序设备驱动程序内 核 网络驱动程序
OS/ 2 子系统安全子系统硬 件 抽 象 层消息传递 系统捕获用户态核心态
N T
执行体返 1
2001年 9月 20日 8时 51分 计算机操作系统 2.72
习题
1,(6分 )为什么要引入进程概念?进程的基本特征是什么?它与程序有何区别?
2.(5分 )在操作系统中进程是一个具有一定独立功能程序在某个数据集合上的一次﹎﹎ A﹎﹎,进程是一个﹎﹎ B﹎﹎ 概念,
而程序是一个﹎﹎ C﹎﹎ 的概念。在一单处理机中,若有 5个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多有﹎﹎ D﹎﹎ 个,最少有﹎﹎ E﹎﹎ 个。
A,(1)并发活动; (2)运行活动; (3)单独操作; (4)关联操作。
B,C,(1)组合态; (2)关联态; (3)运行态; (4)等待态; (5)
静态; (6)动态。
D,E,(1)1; (2)2; (3)3; (4)4; (5)5; (6)0。
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.73
习题 -1
3,(6分 )我们常用进程状态转换图来说明处理机管理的许多问题,
例如下列进程状态转换图,请回答,
( 1) 什么 "事件 "引起每次显著的状态转换?
( 2) 在什么情况下,如果有的话,将发生下述因果转换?
a,② --->① ; b,③ --->② ; c,④ --->① 。
( 3) 我们观察系统中所有进程时,常看到某一进程 P产生的一次状态转换可能引起另一进程 q作一次状态转换 。 试分析在什么情况下,a,进程 P的转换 ③ 能引起进程 q的转换 ①? b.进程 P
的转换 ④ 能引起进程 q的转换 ②? (解 )
运 行就 绪 阻 塞
1
2 3
4
2001年 9月 20日 8时 51分 计算机操作系统 2.74
习题 -2
4.(5分 )从静态角度看,进程由﹎﹎ A﹎﹎,﹎﹎ B﹎﹎ 和﹎﹎ C
﹎﹎ 三部分组成,用户可通过﹎﹎ D﹎﹎ 建立和撤消进程,通常用户进程被建立后,﹎﹎ E﹎﹎ 。
A,(1)JCB; (2)DCB; (3)PCB; (4)PMT。
B,(1)程序段; (2)文件体; (3)I/O; (4)子程序。
C,(1)文件描述块; (2)数据空间; (3)EOF; (4)I/O缓冲区。
D,(1) 函数调用; (2)宏指令; (3)系统调用; (4)过程调用。
E,(1)便一直存在于系统中,直到被操作人员撤消;
(2)随着作业运行正常或不正常结束而撤消;
(3)随着时间片轮转而撤消与建立;
(4)随着进程的阻塞或唤醒而撤消与建立。
5.(5分 )为什么说进程控制块( PCB) 是进程存的唯一标志?
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.75
习题 -3
6,(8分 )正在执行的进程由于其时间片完而被暂停执行,此时进程应从 运行 态变为 ﹎﹎ A﹎﹎ 状态;处于静止阻塞状态的进程,在进程等待的事件出现后,应转变为﹎﹎ B﹎﹎ 状态;若进程正处于运行态时,应终端的请求而暂停下来以便研究其运行情况 (执行 挂起进程原语 ),这时进程应转变为﹎﹎ C﹎﹎
状态,若进程已处于阻塞状态,则此时应转变为﹎﹎ D﹎﹎ 状态,若进程已处于就绪状态,则此时应转变为﹎﹎ E﹎﹎ 状态;
执行解除 挂起进程原语后,如挂起进程处于就绪状态,则应转变为﹎﹎ F﹎﹎ 态,如处于阻塞状态,则应转变为﹎﹎ G﹎
﹎ 态; 一个进程刚被创建时,它的初始状态为 ﹎﹎ H﹎﹎ 。
A,...,H,(1)静止阻塞; (2)活动阻塞; (3)静止就绪; (4)
活动就绪; (5)执行 。
(解 )
Description and Control)
教学目的:
本 课为 描述程序并发执行引入进程的概念,描述 进程的特征、
状态、状态的转换、进程控制块等基本概念。 描述 控制进程状态转换的 OS内核和 进程控制原语 的功能 。 并发性是 OS最重要的特征,进程是 OS最基本最重要的概念,进程管理是 OS的重点和难点。
2001年 9月 20日 8时 51分 计算机操作系统 2.2
教学要求:
熟悉 进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态和状态的转换,熟练掌握进程存在的唯一实体 --进程控制块,熟悉 进程上下文。
熟悉 内核的功能,掌握增加,挂起,,,激活,操作的五个状态图和状态的转换,熟悉 创建、撤消、阻塞、唤醒、
挂起和激活进程控制原语的功能,一般了解 线程的概念 。
了解模块接口法、层次结构法和客户/服务器结构三种操作系统结构。
2001年 9月 20日 8时 51分 计算机操作系统 2.3
第一节 进程的引入
( 1) 程序顺序执行与特征
一个较大的程序通常都由若干个程序段组成,程序在执行时,
各程序段必须按照先后次序逐个执行。程序各程序段先后执行次序关系可用前趋图表示。
前趋图 是一个有向无循环图,图由结点和结点间有向边组成,
结点代表各程序段操作,而结点间的有向边表示两程序段操作之间存在的前趋关系。两程序段 Pi和 Pj的前趋关系表示成
Pi--Pj,Pi是 Pj的 前趋,Pj是 Pi的 后继。(结合 P35图 2-1)
P1
C1I1 I2 C2 P2
2001年 9月 20日 8时 51分 计算机操作系统 2.4
进程的引入 -1
例,s1,a:=x+y
s2,b:=a-5
s3,c:=b+1
程序顺序执行特征,
顺序性,程序各程序段严格按照规定的顺序执行。
封闭性,程序运行时机内各资源只受该程序控制而改变,执行结果不受外界因素影响。
可再现性,只要程序执行环境和初始条件相同,程序多次执行,
可获得相同结果。
( 2) 程序并发执行与特征并发环境,在计算机系统支持并行操作时,如采用多道程序设计技术,则内存中多道程序处于并发执行状态。如上述有三个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在系统 CPU和输入输出各部件并行执行,但一个作业没有前趋关系的程序段或不同作业的程序段可以分别在 CPU和各输入输出部件上并行执行。
2001年 9月 20日 8时 51分 计算机操作系统 2.5
进程的引人 -2
程序并发执行 ( 定义 )
若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的,也称这几个程序段是并发执行的 。
P
Q
R
并发执行区
2001年 9月 20日 8时 51分 计算机操作系统 2.6
进程的引入 -3
四个上述三个程序段类的作业并发执行的前趋图如下图所示,
C
3
I1 I2 I
3
I
4
C
1
C
2
C
4
P
1
P
2
P
3
P
4
,,,,,,
T t 1 t 2 t 3 t 4 t 5 t 6
2001年 9月 20日 8时 51分 计算机操作系统 2.7
进程的引入 -3
程序并发执行特征,
间断性,程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致并发程序具有,执行 -暂仃 -执行,这种间断性活动规律。
失去封闭性,程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。
不可再现性,程序在并发执行时,由于失去了封闭性,也将导致失去结果的可再现性。即程序经过多次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。
例,观察者 /报告者
2001年 9月 20日 8时 51分 计算机操作系统 2.8
进程的引入 -4
观察者,报告者:
begin begin
repeat repeat
wait a car go through deley a time
N=N+1; Print N ;
N=0 ;
until until
end end
初始 N=n时不同执行序列:
N=N+1; Print N; Print N ;
Print N ; N=0 ; N=N+1 ;
N=0 ; N=N+1 ; N=0 ;
结果各不相同,
打印 n+1,N=0; 打印 n,N=1; 打印 n,N=0;
2001年 9月 20日 8时 51分 计算机操作系统 2.9
程序(程序段)并发执行的条件
Berstein条件(自学)
2001年 9月 20日 8时 51分 计算机操作系统 2.10
2.2 进程的基本概念
2.2.1 进程的定义及特征
1 进程的定义
由于程序在并发执行时,各次执行的结果不同,所以用
,程序,这个概念已无法描述程序的并发执行,所以必须引入新的概念 -进程来描述程序的并发执行。进程这一术语最早由麻省理工学院著名的操作系统 MULTICS中提出。
进程定义:,可 并发 执行的程序在一个 数据集合 上的 运行过程,。
或者,是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行 资源分配 和 调度的独立 单位。(未引入线程前),
2001年 9月 20日 8时 51分 计算机操作系统 2.11
2 进程的特征(与程序相比而言),
1)动态性 ( 1) 强调:是一个程序的执行过程
( 2)有一定生命期:创建执行暂停消亡
( 3)在不同状态之间转换动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂仃,并由撤消而死亡。 而程序是静态的,它是存放在介质上(外存、软盘、光盘)一组有序指令的集合,无运动的含义。
一个程序 ----多个进程。
2001年 9月 20日 8时 51分 计算机操作系统 2.12
进程的引入 -1
2)并发性,并发性是进程的重要特征,同时也是 OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。 而程序是不能并发执行。
3)独立性,从 定义看 资源分配独立调度进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位 ;而程序不作为独立单位参加运行,必须通过建立进程才能运行。
4)异步性,进程按各自独立的不可预知的速度向前推进,即进程按异步方式进行 导致程序执行的不可再现性,因此 OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。
5)结构特征,由定义,进程实体包括 程序段数据段进程控制块 PCB( PROCESS CONTROL BLOCK)
UNIX中称为,进程映象,。
6) 进程可以创建其它进程,而程序不能。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.13
2.2.2进程的基本状态 及其转换进程有三个基本状态,不同系统设置的进程状态数目不同。
1,进程的三个基本状态执行态( Excuting),当一个进程在处理机上运行时,则称该进程处于运行状态。进程占有 CPU,并在 CPU上运行(如不特别强调,大都指单 CPU) 若 CPU空闲,处理机挑选一进程执行。
就绪态( Ready),一个进程获得了除处理机外的一切所需资源,
一旦得到处理机即可运行,则称此进程处于就绪状态。当调度给其 CPU时,立即可以运行。
阻塞态( Blocked) 又称睡眠状态、等待状态、封锁态、冻结态。
一个进程正在等待某一事件发生(例如请求 I/ O
或等待 I/ O完成或申请缓冲空间等)而暂时仃止运行,这时即使把处理机分配给进程也无法运行,
故称该进程处于阻塞状态。(即使 CPU空闲,该进程也不可运行)例:打印机 阻塞队列
2001年 9月 20日 8时 51分 计算机操作系统 2.14
进程的描述 -1
2 状态转换进程调度时间片已用完等待的事件已发生等待某一事件发生就 绪 态执 行 态阻 塞 态
2001年 9月 20日 8时 51分 计算机操作系统 2.15
进程状态的转换三个基本状态之间可能转换和转换原因如下:
就绪态 ―― >执行态,当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程,该进程便由就绪态转换为运行态。
执行态 ―― >阻塞态,处于运行态的进程在运行过程中需要等待某一事件发生后(例如因 I/ O请求等待 I/ O完成后),才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。
阻塞态 ―― >就绪态,处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。
执行态 ―― >就绪态,处于执行态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,或者有优先级高的进程出现,进程由执行态转为就绪态。
而阻塞态 ―― >运行态和就绪态 ―― >阻塞态这二种状态转换不可能发生。
2001年 9月 20日 8时 51分 计算机操作系统 2.16
3.系统中各进程状态的分布和管理
处于运行态进程,如系统有一个处理机,则在任何一时刻,
最多只有一个进程处于运行态。
处于就绪态进程,一般处于就绪态的进程按照一定的算法
(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列。
处于阻塞态进程,处于阻塞态的进程排在阻塞队列中。由于等待事件原因不同,阻塞队列也按事件分成几个队列。
2001年 9月 20日 8时 51分 计算机操作系统 2.17
4 新状态和终止状态新状态:进程刚建立,还未将它送入就绪队列时的状态。
终止状态:当进程已结束(正常 /异常),OS已将它从就绪队列中移出,但尚未将它撤消时的状态。
进程调度时间片已用完等待的事件已发生就 绪 态执 行 态阻 塞 态 等待某一事件发生新 状 态 终止 状 态接纳完成或发生错误
2001年 9月 20日 8时 51分 计算机操作系统 2.18
5 挂起状态的引入指人为的把正在执行或没有执行的进程挂起,人为的暂停。
引入挂起的原因:
1)在程序执行期间,用户能发现某些可疑问题 ——>暂停以便检查。
2)系统 在程序执行期间,想了解一下资源使用情况 ——>暂停某些(就绪 /执行)进程以便评估。
执行 —>暂停就绪 —>暂不接受调度引进一个有别于就绪的状态 —>静止就绪就绪 态执行 态 静止就绪挂起挂起激活挂起状态
2001年 9月 20日 8时 51分 计算机操作系统 2.19
3)内存不够时,把某些阻塞的进程调至外存,所以当引起阻塞的事件完成时,因为它 在外存,要先由外存 —>内存,
再等待调度,有一定时延。该进程也不能立刻进入就绪,
所以有别于阻塞,称为静止阻塞。
可以画 7种状态的完整转换图。 (不同 OS所设状态转换不同)
阻塞 态静止阻塞挂起激活静止就绪事件出现
2001年 9月 20日 8时 51分 计算机操作系统 2.20
五个状态进程状态图静止就绪活动就绪活动阻塞运行静止阻塞阻塞唤醒挂起激活
2001年 9月 20日 8时 51分 计算机操作系统 2.21
6 关于作业
作业,作业状态及转移
在批处理系统中一个用户程序的执行的全过程称为一个作业,当作业提交给计算中心 ( 或机房 ) 后,由机房工作人员录入到存储设备上 ( 如磁带,磁盘等 ),然后,由作业调度程序按某种调度策略将作业调入计算机系统执行,
执行完成后,由作业调度程序做作业的善后处理工作,至此一个作业完成 。
2001年 9月 20日 8时 51分 计算机操作系统 2.22
作业、作业状态及转移
我们把上述对作业的操作归纳成四种状态:
1,提交状态 用户将自己的程序和数据放在输入设备上,等待;
2,后备状态 系统响应用户的要求,将作业带领到直接存取的后援存储器中,等待调度 ;
3,执行状态 从作业计算开始,到计算完成为止,该作业处于执行状态 。
4,完成状态 从作业计算完成开始,到善后处理完毕退出系统为止,称为作业完成状态 。
2001年 9月 20日 8时 51分 计算机操作系统 2.23
作业、作业状态及转移
2001年 9月 20日 8时 51分 计算机操作系统 2.24
系统中各进程状态的分布和管理 -1
系统中各进程状态的分布:
例:一个只有一个处理机的系统中,OS的进程有运行、就绪、
阻塞三个基本状态。假如某时刻该系统中有 10个进程并发执行,在略去调度程序所占用时间情况下试问:
这时刻系统中处于运行态的进程数最多有几个?最少有几个?
这时刻系统中处于就绪态的进程数最多有几个?最少有几个?
这时刻系统中处于阻塞态的进程数最多有几个?最少有几个?
解:因为系统中只有一个处理机,所以某时刻处于运行态的进程数最多只有一个。而最少可能为 0,此时其它 10个进程一定全部排在各阻塞队列中,在就绪队列中没有进程。而某时刻处于就绪态的进程数最多只有 9个,不可能出现 10个情况,
因为一旦 CPU有空,调度程序马上调度,当然这是在略去调度程序调度时间时考虑。处于阻塞态的进程数最少是 0个。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.25
5。 系统中各进程状态转换影响运行阻塞就绪运行阻塞就绪? A进程 B进程
C进程 D进程运行运行阻塞就绪阻塞就绪
2001年 9月 20日 8时 51分 计算机操作系统 2.26
系统中各进程状态转换影响 -1
在一个多道程序设计的系统中,各进程状态转换会互相影响。
例如系统中一个运行态的进程 A发生 I/O请求后要等待 I/O完成,它的状态也由运行态转换为阻塞态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程 B,将处理机分给它,该 B进程的状态也由就绪态转换为运行态。如一个进程 C等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。如进程 C从阻塞态转换为就绪态时,有一个进程 D在 CPU上运行。而系统采用抢占式调度算法,进程 C的优先级又高于正在 CPU上运行的进程 D的优先级,则要发行抢占调度。即接下去的操作时由进程调度程序将正在运行的进程 D由运行态转换为就绪态,
插入就绪队列。
(练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.27
5,Five-State Process Model
New Ready Running Exit
Blocked
Admit
Event
Occurs
Dispatch Release
Time-out
Event
Wait
2001年 9月 20日 8时 51分 计算机操作系统 2.28
2.2.3进程控制模块 PCB(Process Control
Block)
在系统中一个进程存在:
进程控制块 ( 数据结构 )
进程的执行程序 ( 一个可执行文件 )
进程总是位于某个队列 (就绪,等待某事件队列 )
处于某种状态 ( 运行,就绪,等待 )
占用某些系统资源(内存,打开某些文件、处理机、外设)
2001年 9月 20日 8时 51分 计算机操作系统 2.29
2.2.3进程控制模块 PCB(Process Control Block)
程序段进程 数据段进程控制块 PCB( PROCESS CONTROL BLOCK)
PCB是系统为了管理进程而设置的一个专门数据结构,用来记录 进程的外部特征,描述进程的运动变化过程。系统利用
PCB控制和管理进程。所以 PCB是系统感知进程存在的唯一标志,与进程一一对应,就象户口本上的一页,人出生创立,死亡撤消。
PCB从建立 —>撤消与进程相伴相随。应常驻内存。
系统将所有的 PCB组织 —>若干个队列(链表),
创建进程 —>创建 PCB;
进程任务完成 —>收回其 PCB。
1,进程控制块的作用 ―― 进程存在的唯一实体
2001年 9月 20日 8时 51分 计算机操作系统 2.30
2.2.3进程控制模块 PCB(Process Control Block)
进 程 控 制 块 PCB (Process
Control Block
存放进程的管理和控制信息的数据结构称为进程控制块 。 它是进程管理和控制的最重要的数据结构,在创建时,建立
PCB,并伴随进程运行的全过程,直到进程撤消而撤消 。
PCB就象我们的户口 。
2,PCB的信息
2001年 9月 20日 8时 51分 计算机操作系统 2.31
1) 进程标识符 name
每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字 。 UNIX系统中就是一个整型数 。 在进程创建时由系统赋予 。
2) 进程当前状态 status
说明进程当前所处的状态 。
为了管理的方便,系统设计时会将相同的状态的进程组成一个队列,如 就绪进程队列,等待进程则要根据等待的事件组成多个等待队列,如等待打印机队列,等待磁盘 I/O完成队列等等 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.32
3)当前队列指针 next
登记与本进程处于同一队列的下一个进程的 PCB的地址 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.33
4) 总链指针 all-q-next
5) 执行程序开始地址 start-addr
6) 进程优先级 priority
进程的优先级反映进程的紧迫程序,通常由用户指定和系统设置 。 UNIX系统采用用户设置和系统计算相结合的方式确定进程的优先级 。
7) CPU现场保护区 cpustatus
当进程因某种原因不能继续占用 CPU时 ( 等待打印机 ),
释放 CPU,这时就要将 CPU的各种状态信息保护起来,为将来再次得到处理机恢复 CPU的各种状态,继续运行 。 例如,我们下课,这时我要记住这次讲到什么地方,下次课接着讲 。
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.34
9) 家族联系 process family
有的系统允许一个进程可创建自已的子进程,子进程还可以创建,一个进程往往处在一个家族之中,就需要记录进程在家族中位置的信息 。
10) 占有资源清单 own-resource
进程占用系统资源的情况,不同的系统的处理差别很大,
UNIX系统中就没有此项 。
2.2.3进程控制模块 PCB(Process Control Block)
8)通信信息 communication information
是指某个进程在运行的过程中要与其它进程进行通信,
该区记录有关进程通信方面的信息。
2001年 9月 20日 8时 51分 计算机操作系统 2.35
2.2.3进程控制模块 PCB(Process Control Block)
按照教材,可分为 4大部分:
( 1)进程标识符( ID号),
它用于唯一地标识一个进程。它有外部标识符(由字母组成,供用户使用)和内部标识符(由整数组成,为方便系统管理而设置)二种。
( 2) 进程调度信息:进程状态( Excuting,ready,blacked)
进程优先级进程已执行时间和已等待时间引发阻塞事件的原因等等。
2001年 9月 20日 8时 51分 计算机操作系统 2.36
2.2.3进程控制模块 PCB(Process Control Block)
( 3)处理机状态信息:通用寄存器
指令计数器
程序状态字 PSW
用户栈指针等
该类信息使进程被中断后重新执行时能恢复现场从断点处继续运行。
现场保留区(解释并举例):
( (练习 )
2001年 9月 20日 8时 51分 计算机操作系统 2.37
2.2.3进程控制模块 PCB(Process Control Block)
4)进程控制信息:程序和数据的地址
除 CPU以外的资源清单
保证进程正常运行的同步和通信机制队列指针
家族信息:进程的父、子进程标识符、
进程的用户主等。
UNIX的 PCB由 Proc和 user两个结构组成,proc常驻主存的系统区,是 PCB中最基本和常用信息,而 user可根据需要换进换出。
2001年 9月 20日 8时 51分 计算机操作系统 2.38
2.2.3进程控制模块 PCB(Process Control Block)
例,A,OS调度到某进程执行时,从该进程的 PCB中查出其现行状态及优先级; —> 进程 ID,调度信息
B,( 中断返回) OS调度到某进程后,根据 PCB中所保存的 CPU状态去恢复现场信息; —> 现场保留区
C,根据其 PCB中的程序 /数据的内存起始地址,找到其程序或数据; —> 进程控制信息
D,进程执行时,当需要和与之合作进程实现同步通信或访问文件时,也要访问 PCB。 —> 进程控制信息
2001年 9月 20日 8时 51分 计算机操作系统 2.39
3 PCB的组织方式
PCB经常被 OS的各个模块修改,被系统访问,PCB常驻内存。
系统将所有的 PCB组织成 —>若干队列(链表) —>存放在内存的固定区域 —> PCB表。 PCB表的大小决定系统中最多可同时存在的进程个数,称为 系统的并发度 。
1)链接方式
P45图 2-7。
2)索引方式
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.40
4 进程上下文 进程是由程序、数据和进程控制块组成。
进程上下文实际上是执行活动全过程的静态描述。具体说,
进程上下文包括系统中与执行该进程有关的各种寄存器(例如:通用寄存器、程序计数器 PC,程序状态寄存器 PS等)的值,程序段在经编译之后形成的机器指令代码集(或称正文段)、数据集及各种堆栈值和 PCB结构,如下图所示。
P C B
各种控制表指针 各种寄存器正文集数据集栈区
2.2.3进程控制模块 PCB(Process Control Block)
2001年 9月 20日 8时 51分 计算机操作系统 2.41
2.3进程控制 (Process Control )
2.3.1 内核 (Kernel)
1,CPU对 OS保护模式支持
Intel公司的 80386及更高级的 CPU可以提供程序代码 4
层不同等级的权力,包括有 Ring0-3。 Ring0拥有最高的运行优先权,它访问所有系统内存和所有的 CPU指令,而
Ring1-3访问权限受到不同限制。 Windows 98/NT为了与基于 RISC的结构上兼容只使用两个特权级别,Ring0和 Ring3。
2,核心态和用户态为了防止用户应用程序访问和/或更改重要的操作系统数据,Windows98/NT,UNIX使用两种处理器访问模式:
核心态和用户态。操作系统代码在核心态下运行,即在
X86处理器 Ring0运行,它有着最高的特权。而用户应用程序代码在用户态下运行,即在 X86处理器 Ring3中运行。
2001年 9月 20日 8时 51分 计算机操作系统 2.42
内核 -1
用户应用程序(在 Windows98/NT中以用户线程方式出现)运行用户程序一般代码时,它是在用户态下执行。但当程序要调用系统服务,例如要调用 OS中负责从磁盘文件中读取数据的 NT执行体例程时,它就要通过一条专门的指令 (系统调用 )
来完成从用户态切换到核心态,OS根据该指令及有关参数,
执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在核心态下执行的是调用操作系统有关功能模块的代码。
3,原语原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞 …… )大都为原语操作。
2001年 9月 20日 8时 51分 计算机操作系统 2.43
内核
4,内核功能内核是计算机硬件上的第一层扩充软件,它是 OS中关键部分,它是管理控制中心。内核在核心态下运行,常驻内存,内核通过执行各种原语操作来实现各种控制和管理功能。
内核为 OS其它模块提供最基本的支撑功能和资源管理功能:
对中断进行,必要和有限的,处理时钟管理原语操作进程(处理器)管理存储器管理设备管理
OS
裸机
2001年 9月 20日 8时 51分 计算机操作系统 2.44
2.3.2 进程的创建进程树图( P48图 2-9)
1 引起进程创建的条件
( 1)分时系统中用户登陆,为每个用户建立一个进程。
( 2)作业调度:把一个作业装入内存时,为其创建进程并插入 RL( 就绪队列)。
( 3)提供服务:应用程序提出打印,由 OS为之创建一个打印进程。
( 4)应用请求:应用进程自己创建新进程与原进程并发
2001年 9月 20日 8时 51分 计算机操作系统 2.45
2.3.2 进程的创建
2 进程的创建(主要工作是为被创建进程建立一个 PCB)
( 1)创建原语首先从系统的 PCB表中索取一个空白的 PCB表目,
并获得其内部标识。
i=getid(n)-------形式描述
( 2)为新进程分配资源:为进程的程序、数据、用户栈分配内存空间,内存大小由提出创建进程的用户进程给出。
( 3)初始化 PCB
标识符 —> PCB的相应位置初始化 CPU状态信息,PC —>程序入口地址;栈指针 —>栈顶初始化进程调度信息:进程状态为活动/静止就绪态,
优先级设为 K
初始化进程控制信息:资源清单,程序和数据地址等
( 4)并把该 PCB插入到就绪队列 RQ中,就可进入系统并发执行。
2001年 9月 20日 8时 51分 计算机操作系统 2.46
2.3.2 进程的创建
创建原语 Create():
i=getid(n);
i.id=n;
j=EP;
i.parent=j;j.progency:=i;
i.CPUstate:=S0; i.mainstore:=M0;
i.status:=ready; i.priority:=k0;
i.resources:=R0;
i.sdata:=RQ;
insert(RQ,i);
2001年 9月 20日 8时 51分 计算机操作系统 2.47
2.3.3进程的撤消原语( Destroy)
1 引起撤消的事件 正常结束异常结束外界干预 操作员 /系统干预(人为终止)非暂停、挂起父终止子撤父引起
2 进程撤消过程:
采用的策略是由父进程发出,撤消它的一个子进程及该子进程所有的子孙进程,被撤消进程的所有资源(主存,I/O资源,PCB表目)全部释放出来归还系统,并将它们从所有的队列中移去。如撤消的进程正在运行,则要调用进程调度程序将处理器分给其它进程。
2001年 9月 20日 8时 51分 计算机操作系统 2.48
2.3.3进程的撤消原语( Destroy)
1 由 ID检索 PCB集合 —>被撤进程的 PCB,并读出其状态。
2 若该进程正处于执行状态,则应立即终止执行,置调度标志 =TRUE( 表示该进程被终止后,可引起系统重新调度,
调度别的进程执行),将它从队列中摘下。
3 终止其所有子孙进程(递归)
4 被撤消进程的所有资源(主存,I/O资源,PCB表目)全部释放出来归还系统 /父进程。
5 移出 PCB
2001年 9月 20日 8时 51分 计算机操作系统 2.49
2.3.4 进程的阻塞 (block)与唤醒 (wakeup)
1,引起进程阻塞的原因
1)请求系统服务举例:进程’和进程”
2)启动 I/O操作 举例
3)新数据尚未到达 举例
4)无新工作可做的系统进程 举例
2 阻塞过程阻塞过程:
( 1)首先找到对应 PCB;
( 2) 保护现场 —> PCB;
( 3) 立即仃止原来程序的执行,把 PCB中的现行状态由运行态改为活动阻塞态;
( 4)将 PCB插入到等待某事件的阻塞队列中;
( 5)最后调用进程调度程序进行处理机的重新分配。
2001年 9月 20日 8时 51分 计算机操作系统 2.50
2.3.4 进程的阻塞与唤醒
3 阻塞原语 block()
进程阻塞是进程自身的主动行为。
4 唤醒过程引发原因,所等待的资源出现了。
当被阻塞的进程所期待的事件发生时(例如 I/ O完成时),
则有关进程和过程(例如 I/ O设备处理程序或释放资源的进程等)调用 wakeup原语,将阻塞的进程唤醒。
唤醒过程,Wakeup()
( 1)找到 PCB;
( 2) 将等待该事件的进程 PCB从阻塞队列移出;
( 3)修改进程 PCB中现行状态,如是活动阻塞态改为活动就绪态,如是静止阻塞态改为静止就绪态。
( 4)插入到就绪队列 RQ中。
2001年 9月 20日 8时 51分 计算机操作系统 2.51
2.3.5 进程的挂起与激活
1 挂起 suspend()
引发原因:用户进程或父进程通过调用挂起原语将进程挂起。
调用挂起原语的进程只能挂起它自己或它的子孙,而不能挂起别的族系的进程。
挂起原语的执行过程是,(1)找到 PCB;( 2) 把进程从外存 —>内存;( 3)检查要挂起进程 PCB的现行状态,若正处于活动就绪态,便将它改为静止就绪态;如是活动阻塞态则改为静止阻塞态。如是运行态,则将它改为静止就绪态,并调用进程调度程序重新分配处理机。( 4)为了方便用户或父进程考察该进程的运行情况,需把该进程的
PCB复制到内存指定区域。
2001年 9月 20日 8时 51分 计算机操作系统 2.52
2.3.5 进程的挂起与激活
2 激活 active()
引发原因:用户进程或父进程通过调用激活原语将被挂起的进程激活。
激活原语执行过程是,(1)找到 PCB;( 2) 把进程从外存 —>内存;( 3)检查被挂起进程 PCB中的现行状态,若处于静止就绪态,则将它改为活动就绪态,若处于静止阻塞态,则将它改为活动阻塞态。( 4)若改为活动就绪态,
有可能引发新一轮调度。
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.53
(4)讨论
1,执行原语的进程和原语操作的进程间的关系原语 执行原语的进程 原语操作的进程创建 父 子撤消 父 子、孙阻塞 自己 自己唤醒 其它 它挂起 父 自己或子、孙激活 父 子、孙
2,抢占式调度假如采用抢占式调度策略,则每当有新进程进入就绪队列时,
例如执行唤醒原语,被唤醒进程从活动阻塞态转为活动就绪态时,或者执行激活原语,被激活进程从静止就绪态转为活动就绪态时,应检查是否要进行重新调度。即由调度程序将激活的进程(或唤醒的进程)与当前运行进程进行优先级比较,如果被激活的进程的优先级更高,则剥夺当前进程的运行,把处理机分配给刚激活的进程,否则就不必重新调度。
2001年 9月 20日 8时 51分 计算机操作系统 2.54
2.4线程 (Threaded)概念
( 1)线程的引入作为并发执行的进程具有二个基本的属性:进程既是一个拥有资源的独立单位,它可独立分配虚地址空间、主存和其它,又是一个可独立调度和分派的基本单位。这二个基本属性使进程成为并发执行的基本单位。在一些 OS中,
象大多数 UNIX系统,Linux等,进程同时具有这二个属性。
而另一些 OS中,象 WindowsNT,Solaris,OS/ 2,Mac OS
等,这二个属性由 OS独立处理。为了区分二个属性,资源拥有单元称为进程(或任务),调度的单位称为线程、
又称轻进程( light weight process)。 线程只拥有一点在运行中必不可省的资源(程序计数器、一组寄存器和栈),但它可与同属一个进程的其它线程共享进程拥有的全部资源。线程定义为进程内一个执行单元或一个可调度实体。
2001年 9月 20日 8时 51分 计算机操作系统 2.55
( 2)多线程 (Multithreading)
多线程是 OS在一个进程内支持多个线程的能力。
多线程进程模块线程 A 线 程 B 线 程 C进程控制块
PCB
用户地址空间线 程控制块
TCB
用户栈核心栈线程控制块
TCB
用户栈核心栈线程控制块
TCB
用户栈核心栈
2001年 9月 20日 8时 51分 计算机操作系统 2.56
Single Threaded and
Multithreaded Process Models
Thread
Control
Block
User
Stack
User
Stack
Kernel
Stack
Kernel
Stack User
Address
Space
User
Address
Space
Process
Control
Block
Process
Control
Block
ThreadSingle-Threaded
Process Model
Multithreaded Process Model
Thread
Control
Block
User
Stack
Kernel
Stack
Thread
Thread
Control
Block
User
Stack
Kernel
Stack
Thread
2001年 9月 20日 8时 51分 计算机操作系统 2.57
多线程 -1
一个进程定义为保护的单元和资源分配的单元,与一个进程有关的是:
保存进程映象的虚地址空间;
对处理器、其它进程,(如进程通信 )、文件和 I/ O资源受保护的存取。
在一个进程内有多个线程,与一个线程有关的是:
一个线程的执行状态(运行、就绪 …… );当不运行时保存一个线程的内容:一个独立的程序计数器;一个执行的栈;每个线程的一些局部变量的静态存贮;和这个进程的其它线程共享对这个进程的存贮器和资源的存取。
2001年 9月 20日 8时 51分 计算机操作系统 2.58
(3)线程和进程间关系 (Relationship
Between Threads and Processes)
线程:进程 描 述 实例系统
1,1 每一个执行的线程是一个拥有自己地址空间和资源的唯一进程大多数 U N I X
系统,L i nu x
M,1 一个进程定义一个地址空间和动态资源所有,多个线程可能被产生并在该进程内执行
W i nd ow s N T
S ol a r i s O S / 2
O S / 39 0
M A C H
1,M 一个线程可以从一个进程环境迁移到另一个进程环境,这允许一个线程在不同的系统间容易地移动 (在分布式 操作系统)
R a ( C l ou ds )
E m e r a l d
M,M M,1 和 1,M 属性的结合 T R I X
2001年 9月 20日 8时 51分 计算机操作系统 2.59
( 4) WindowsNT/2000的基元成分 ――
对象 (object)、进程 (process)、线程 (Thread)
对象、进程、线程是 WindowsNT三个基元成份,它们之间有互相交叉的关系。
对象 是一个抽象的数据结构,在 WindowsNT中用以表示广义的所有资源。它是构成 OS的三个基元成份中非活动的成份,对象是数据和有关操作的封装体,它包装数据、数据的属性以及可以施加于数据的操作等三个成份。事物抽取其共性可以划分为类。实际上具有相同特性的对象也可归为一个对象类,
在软件设计中定义了对象类(称为类 Class),而对象则是对象类一个具体实现的示例。对象作为抽象数据而封装在其内部的操作函数所提供的操作也给人活动成份的感觉,但是从操作系统这一角度来认识,对象是构成操作系统的非活动成份。而进程和线程则是构成 OS的两个活动成份。
2001年 9月 20日 8时 51分 计算机操作系统 2.60
WindowsNT/2000的基元成分
―― 对象、进程、线程 -1
WindowsNT中 进程 被定义为表示 OS所要做的工作,是 OS用于组织其必须完成诸工作的一种手段。 NT中的进程由一个可执行的程序、一个私用的虚地址空间、系统资源和至少一个执行线程等四部分组成
NT的进程概念与传统 OS进程概念有所不同,NT进程是作为对象来实现,因此从广义角度来说,进程也是共享的资源(多个用户进程可共享服务器进程提供的服务)。 NT定义了一个进程对象类,进程的对象类的对象体和所包含的属性定义了进程对象的数据及其属性和施加其上的操作(服务) (进程对象体属性见下页),但描述进程组成的两个主要部分 ―― 进程地址空间和局限于进程的对象表,不包含在属性表中,因为它是附属的、不可见的。 NT进程要求一个独特的组成成分
―― 至少一个执行线程,这在传统 OS中是没有的。 NT进程的组成中没有进程控制块,有关进程的信息在进程对象的对象体中以及局限于进程的对象表中。
2001年 9月 20日 8时 51分 计算机操作系统 2.61
Windows NT Process
Object Attributes
Process ID
Security Descriptor
Base priority
Default processor affinity
Quota limits
Execution time
I/O counters
VM operation counters
Exception/debugging ports
Exit status
2001年 9月 20日 8时 51分 计算机操作系统 2.62
WindowsNT/2000的基元成分
―― 对象、进程、线程 -2
NT的 线程 是进程内的一个执行单元,是进程内的一个可调度实体。一个线程是由唯一的标识符客户 ID,描述处理器状态的一组状态寄存器的内容、用户栈和核心栈、一个私用存贮器等四部分组成,线程也是作为对象来实现,线程对象体属性见下页。每个进程创建时只有一个线程,需要时这个线程创建其它线程。线性是进程的一个组成部分,
一个 NT进程可以有多个线程在其地址空间内执行。资源分配的单位是进程,调度和执行的基本单位是线程。
2001年 9月 20日 8时 51分 计算机操作系统 2.63
Windows NT Thread Object
Attributes
Thread ID
Thread context
Dynamic priority
Base priority
Thread processor affinity
Thread execution time
Alert status
Suspension count
Impersonation token
Termination port
Thread exit status
2001年 9月 20日 8时 51分 计算机操作系统 2.64
( 4)引入线程的好处( Benefits of Threads)
线程的关键好处是从性能应用中得到的,在一个存在的进程中产生(或终止)一个线程比产生(或终止)一个进程化费少得多的时间。类似地,在同一进程内二个线程间切换时间也要比二个进程切换时间小得多。因此假如一个应用或函数作为一组相关执行单元的应用,那末采用一组线程的集合比采用分开进程的集合要有效得多。
线程应用的例子是线程作为局部网上文件服务器。不同用户的文件请求使用的环境资源相同。当一个新的文件请求进入时,文件管理程序产生一个新的线程。因为一个服务器将处理许多文件请求,许多线程将在短时间内产生和撤消。假如服务器是多处理器,那末在同样进程内多个线程能在不同处理机上同时执行,在单处理机上线程结构同样有效,它使逻辑上不同函数级的程序结构简单化。
2001年 9月 20日 8时 51分 计算机操作系统 2.65
2.5操作系统结构 (OS structure)
( 1) 操作系统采用结构程序设计的必要性由于 OS日趋庞大,结构日益复杂,错误增加以至不可避免。
例如 IBM/360操作系统第一版化了 5000*5人年,但在以后每个新版中都纠错多处。 Microsoft的浏览器程序 Ixplorer也面临一群潜在性地涉及到严重隐私和安全问题的臭虫,为此发布了三个补丁程序包含在 IE5.01中。
其次由于 OS存在并发性,进程间执行序列数量巨大,推进序列不确定性,程序错误的某种表现形式不重复出现,可能使人误解为一次偶然性机器的故障。这给 OS调试带来了困难。
为了使 OS高可靠、高效能、可理解和可修改,操作系统必须采 用结构程序设计方法。
2001年 9月 20日 8时 51分 计算机操作系统 2.66
( 2) 模块接口( modular programming) 法 /
单一结构( monolithic) 法模块接口法是 OS最早采用的一种结构程序设计方法,早期操作系统( IBM的 OS) 和小型 OS( 如 MS-DOS) 均属此类型。
模块接口法把一个系统按功能分成若干个具有一定独立性和大小完成某方面功能的模块,并规定好各模块之间的接口。
接着在明确每个模块的内部功能的基础上对它们进行独立设计。最后在各模块设计完成后按照模块间的接口关系,将所有模块逐步链接成一个大系统。
模块接口法的优点是使 OS设计实现模块化的基本结构程序设计方法,它增加了 OS灵活性,便于修改和维护。但由于模块部接口复杂,使得系统的结构关系不清晰,因而使系统的可靠性降低。故又称模块接口法为无序模块法。
2001年 9月 20日 8时 51分 计算机操作系统 2.67
( 3) 层次( layered) 结构法
为了减少各模块之间无序调动、互相依赖关系,特别是清除循环现象,引入层次结构设计法。 它将模块间无序调用变为有序调用,它把 OS的所有功能模块,按功能流图的调用次序,
排列成若干层,各层之间的模块只能是单向调用关系,即是只允许上层模块调用下层模块。 这样不但操作系统的结构清晰,而且不构成循环。
层次结构法采用自底向上法形成操作系统。它先在裸机上添加第一层精心编制的软件,形成比原来机器功能更强的机器,称为虚拟机 A1。 再经过几乎是穷尽无遗的测试后,就有较大把握确信虚拟机 A1是正确的。然后,再在 A1上增加一层精心编制的软件,形成功能更强、更接近于实际要求的虚拟机
A2,再经过几乎是穷尽无遗的测试,…… 如此一层一层地自底向上地铺设各软件层,每一层都实现若干功能,最后构成满足要求的虚拟机 An。 因此只要下层各模块设计是正确的,
就为上层功能模块的设计提供了可靠基础,从而增加了系统的可靠性。
2001年 9月 20日 8时 51分 计算机操作系统 2.68
层次结构法 -1
1968年 Dijkstra在 ELX8 机器上编制的操作系统 THE中采用各层间单向依赖,层内各模块互相独立的全序的层次关系设计。但该系统通信开销大,系统经过层层调用效率低,
该设计方法不适用大型 OS。 在大层 OS中要建立一个全序的层次结构关系是十分困难,往往无法避免循环现象。因些层次结构设计应作为 OS设计的原则,尽可能将操作系统各功能模块排成有序层次,以便尽量减少系统中循环现象。
2001年 9月 20日 8时 51分 计算机操作系统 2.69
( 4)客户/服务器( Client/Server ) 方式 /
微内核( Microkernel) 结构?
1。操作系统结构技术的发展是与整个计算机技术的发展相联系的。操作系统采用客户/服务器结构,它将非常适应于分布式处理的计算机环境中,所以说 C/ S模式是第三代操作系统。
2。 C/ S结构的思想是把 OS分成内核和若干个进程。每个进程实现单个的一套服务(例如:主存服务、进程生成服务、处理机调度服务),称为服务器进程。每个服务器进程运行在用户态,它执行一个循环以检查是否有客户已请求某项服务 。
而客户可以是另外的操作系统成分,也可以是应用程序。 C/
S结构模式的操作系统有卡内基,梅隆大学研制的 Mach OS和美国微软公司研制的 WindowsNT操作系统等。
2001年 9月 20日 8时 51分 计算机操作系统 2.70
客户/服务器( C/ S) 方式 -1
3。 NT OS由 NT执行体和用户态服务器进程两部分组成,
运行在核心态内核,WindowsNT称为 NT执行体 。 NT执行体结构是层次式与微内核的结合,它由一组部件构成。 NT最底层是硬件抽象层( HAL),NT内核是第二层,它负责对中断和异常作出响应;调度线程,提供一组基本对象和接口。 NT内核上是一组部件:对象管理程序、安全调用监视程序、进程管理程序、本地过程调用功能和虚拟内存管理程序等。 NT执行体最上层系统服务是 NT执行体为用户态的进程提供的一个接口。
运行在用户态的并以客户/服务器方式活动的进程。 用户态服务器进程又称保护子系统。 WindowsNT有二类保护子系统:
环境子系统和集成子系统。
环境子系统有 Win32子系统,OS/ 2子系统和 POSIX子系统几种,每种子系统为特定的操作系统提供一个 API。 集成子系统是完成重要操作系统功能的服务器。这包括安全子系统,
网络软件中的若干部件(工作站服务和网络服务器服务)。
2001年 9月 20日 8时 51分 计算机操作系统 2.71
3。 Windows NT 框架图
Win32 客户登录进程
POSIX 子系统
OS/ 2 客户
POSIX 客户
Win32子系统系 统 服 务
I/ O管理程序对象管理 安全调用 进程管理 本地过程 虚拟内 存 文件 程序程 序 监视程序 程序 调用功能 管理程序 缓冲存储管理程序设备驱动程序内 核 网络驱动程序
OS/ 2 子系统安全子系统硬 件 抽 象 层消息传递 系统捕获用户态核心态
N T
执行体返 1
2001年 9月 20日 8时 51分 计算机操作系统 2.72
习题
1,(6分 )为什么要引入进程概念?进程的基本特征是什么?它与程序有何区别?
2.(5分 )在操作系统中进程是一个具有一定独立功能程序在某个数据集合上的一次﹎﹎ A﹎﹎,进程是一个﹎﹎ B﹎﹎ 概念,
而程序是一个﹎﹎ C﹎﹎ 的概念。在一单处理机中,若有 5个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多有﹎﹎ D﹎﹎ 个,最少有﹎﹎ E﹎﹎ 个。
A,(1)并发活动; (2)运行活动; (3)单独操作; (4)关联操作。
B,C,(1)组合态; (2)关联态; (3)运行态; (4)等待态; (5)
静态; (6)动态。
D,E,(1)1; (2)2; (3)3; (4)4; (5)5; (6)0。
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.73
习题 -1
3,(6分 )我们常用进程状态转换图来说明处理机管理的许多问题,
例如下列进程状态转换图,请回答,
( 1) 什么 "事件 "引起每次显著的状态转换?
( 2) 在什么情况下,如果有的话,将发生下述因果转换?
a,② --->① ; b,③ --->② ; c,④ --->① 。
( 3) 我们观察系统中所有进程时,常看到某一进程 P产生的一次状态转换可能引起另一进程 q作一次状态转换 。 试分析在什么情况下,a,进程 P的转换 ③ 能引起进程 q的转换 ①? b.进程 P
的转换 ④ 能引起进程 q的转换 ②? (解 )
运 行就 绪 阻 塞
1
2 3
4
2001年 9月 20日 8时 51分 计算机操作系统 2.74
习题 -2
4.(5分 )从静态角度看,进程由﹎﹎ A﹎﹎,﹎﹎ B﹎﹎ 和﹎﹎ C
﹎﹎ 三部分组成,用户可通过﹎﹎ D﹎﹎ 建立和撤消进程,通常用户进程被建立后,﹎﹎ E﹎﹎ 。
A,(1)JCB; (2)DCB; (3)PCB; (4)PMT。
B,(1)程序段; (2)文件体; (3)I/O; (4)子程序。
C,(1)文件描述块; (2)数据空间; (3)EOF; (4)I/O缓冲区。
D,(1) 函数调用; (2)宏指令; (3)系统调用; (4)过程调用。
E,(1)便一直存在于系统中,直到被操作人员撤消;
(2)随着作业运行正常或不正常结束而撤消;
(3)随着时间片轮转而撤消与建立;
(4)随着进程的阻塞或唤醒而撤消与建立。
5.(5分 )为什么说进程控制块( PCB) 是进程存的唯一标志?
(解 )
2001年 9月 20日 8时 51分 计算机操作系统 2.75
习题 -3
6,(8分 )正在执行的进程由于其时间片完而被暂停执行,此时进程应从 运行 态变为 ﹎﹎ A﹎﹎ 状态;处于静止阻塞状态的进程,在进程等待的事件出现后,应转变为﹎﹎ B﹎﹎ 状态;若进程正处于运行态时,应终端的请求而暂停下来以便研究其运行情况 (执行 挂起进程原语 ),这时进程应转变为﹎﹎ C﹎﹎
状态,若进程已处于阻塞状态,则此时应转变为﹎﹎ D﹎﹎ 状态,若进程已处于就绪状态,则此时应转变为﹎﹎ E﹎﹎ 状态;
执行解除 挂起进程原语后,如挂起进程处于就绪状态,则应转变为﹎﹎ F﹎﹎ 态,如处于阻塞状态,则应转变为﹎﹎ G﹎
﹎ 态; 一个进程刚被创建时,它的初始状态为 ﹎﹎ H﹎﹎ 。
A,...,H,(1)静止阻塞; (2)活动阻塞; (3)静止就绪; (4)
活动就绪; (5)执行 。
(解 )