《第二部分处理器管理课件》由会员分享,可在线阅读,更多相关《第二部分处理器管理课件(81页珍藏版)》请在金锄头文库上搜索。
1、第2章 处理器管理,第2章 处理器管理,2.1 进程概念 2.2 进程控制 2.3 进程调度 2.4 调度算法 2.5 线程概念 2.6 多处理器系统,2.1 进程概念,2.1.1 多道程序设计 2.1.2 进程的定义 2.1.3 进程的状态 2.1.4 进程控制块 2.1.5 进程结构,2.1.1 多道程序设计,1. 程序的顺序执行 早期的计算机系统基本上都是单处理器系统,每一次只允许一道程序运行,这个程序运行时,它将独占整个计算机系统的资源,而且系统按照程序步骤顺序地执行,在该程序执行完之前,其他程序只能等待,从而不存在共享资源的问题。这种程序的执行方式,称为顺序执行。,S1: a=x+y
2、; S2: b=a-5; S3: c=b+1;,程序顺序执行特点,(1)顺序性(不同程序之间是按一定顺序执行的)。 (2)封闭性(程序在运行时独占系统资源,只有程序本身能改变系统资源状态(除初始状态外)。 (3)无关性(即确定性,程序执行结果与其执行速度无关)。 (4)可再现性(程序运行不受外界因素影响,只要初始条件相同,运行结果也相同)。 缺点:资源利用率低。,为增强计算机系统的处理能力和提高各种资源的利用率,现在计算机系统多采用多道程序设计技术 ,任一时刻,系统中存在许多并行的活动。 并发执行:两个程序的执行在时间上是重叠的。,并发执行基于多道程序的概念,即让多个程序在计算机内交替执行,当
3、一道程序不占用CPU时,另一道程序就马上使用,这就是多道程序设计的思想,这样的计算机系统就称为多道程序设计系统。采用多道程序设计,并由操作系统进行管理后,CPU得到了充分的利用。 虽然在某一时刻仍然只有一条指令在执行,只有一个程序占用CPU,但在机器的内存中同时存放了多个程序,在某一时间间隔内,这些程序在交替执行。因此,从微观上看,指令是顺序的,但从宏观上看,程序却是并发的,这是理解进程操作的关键。,2. 程序的并发执行,并发执行时的前趋图,对于具有下述四条语句的程序段: S1: a=x+2 S2: b=y+4 S3: c=a+b S4: d=c+b,程序的并发执行具有如下特征:,异步性/间断
4、性:走走停停,具有执行-暂停-执行的活动规律。并发程序段竞争同一资源,得到资源的程序段继续执行,得不到的暂停执行。,2. 程序并发执行丧失了程序顺序执行所保持的封闭性和可再现性 例:有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N=N+1操作;程序B每执行一次时, 都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不同的速度运行。 (1) N=N+1在Print(N)和N=0之前,此时得到的N值分别为n+1, n+1, 0。 (2) N=N+1在Print(N)和N=0之后,此时得到的N值分别为 n, 0, 1。 (3) N=N+1在Print(N)和N=0
5、之间,此时得到的N值分别为 n, n+1, 0。,在执行期间并发程序相互制约:多道程序之间存在着资源的竞争与共享,因而产生了相互制约的关系。 直接制约,如一个程序段需要另一个程序段的计算结果。 间接制约,竞争使用同一资源。 程序与机器执行程序的活动(计算)不再一一对应:允许多个用户作业调用一个共享程序段,从而形成多个“计算”。,课前提问,什么是多道程序设计? 为什么要采用多道程序设计? 程序的并发执行具有哪些特点?,2.1.2 进程的定义,多道程序环境下,程序这个静态概念已不能如实反应程序活动的特性,如独立性、并发性、动态性、制约性等。为了更好地描述系统中的并发活动引入进程的概念。由于并发活动
6、的复杂性,所以各个操作系统中对进程的定义未能统一: (1)进程是程序在处理机上的执行(Dijkstra)。 (2)进程是可以与别的计算并发执行的计算(Donovan)。 (3)进程是一个程序及其数据在处理机上顺序地执行时所发生的活动(A Lan Show)。 (4)进程是系统资源和程序代码的执行位置的集合(Java)。 (5)进程是进程映像的执行(Unix)。,归纳为:进程是程序关于某个数据集合的可并发的一次运行活动,是系统进行资源分配和调度的一个独立单位。,进程特性,动态性:进程是一次运行活动 结构性:进程实体是程序和数据集合 并发性 独立性 异步性:并发进程相互制约,呈现走走停停的状态,2
7、.1.3 进程的表示,1. 进程的组成 进程是一个动态的概念,程序及其相关的数据集合是进程存在的实体,那么如何表示一个进程?又如何知道进程的存在呢?在操作系统中,进程通过三个部分被感知,即程序、数据集合和进程控制块。 (1)程序(program)。进程运行所对应的执行代码,一个进程可以对应一个程序,也可以只对应一个程序的一部分,多个进程也可同时对应一个程序,即这个程序被多个进程所共享,可共享的程序代码叫纯代码或叫可重入代码,在运行过程中不能被改变。 (2)数据(data)。进程运行中必需的数据资源,包括对CPU的占用、存储器、堆栈、缓冲区、I/O通道和I/O设备等的需求信息。,(3)进程控制块
8、(Process Control Block/PCB)。系统为进程定义的一种专门的数据结构,用PCB描述进程的运动变化过程,记忆进程的外部特征和与其他进程的联系。PCB与进程一一对应,系统创建一个进程,在系统区就为进程设置一个PCB,再利用PCB对进程进行管理和控制,进程被撤消时,系统就收回它的PCB,进程随之消亡。所以,PCB是进程存在的惟一标志。 三者关系:进程的程序和数据比喻为进程的“躯体”,那么PCB便是进程的“灵魂”。,2. 进程控制块中的信息,PCB是进程存在的唯一标志。一般包含以下信息: (1)进程标识符:惟一地标识一个进程。 内部标识符。在所有的操作系统中,都为每一个进 程赋予
9、一个惟一的数字标识符,它通常是一个进程的序号。 主要是为了方便系统使用。 外部标识符。由创建者提供,通常由字母、数字组成,往往是用户(进程)在访问该进程时使用。 为了描述进程的家族关系, 还应设置父进程标识及子进程标识。此外,还可设置用户标识,以指示拥有该进程的用户。,(2) 位置信息:进程的程序和数据部分在内存或外存中的物理位置。 (3) 状态信息:进程当前的状态 (4) 进程的优先级。 (5) 进程现场保护区:进程状态改变时,保存当时的cpu现场到内存中。 (6) 资源清单:除了内外存,还有其他资源,如I/O设备 (7) 队列指针或链接字:链接处于同一状态的进程 (8) 其它。 根据os的
10、不同,pcb具有的内容不同,3. 进程控制块的组织方式,一个系统通常可有数十个、数百个甚至数千个PCB,为了对他们有效管理,应当用适当的方式将他们组织起来。 1)线性表方式:,PCB线性表示意图,2)链接方式,具有同一状态的PCB用链接字连接成一个队列,就绪队列(优先级),若干阻塞队列(阻塞原因不同),空白队列,PCB链接队列示意图,3) 索引方式,按索引方式组织PCB,根据进程状态建立索引表,并将索引表在内存的首地址记录在内存的一些专用单元中,每个索引表的表目中,记录相应状态的某个PCB在PCB表中的位置。,2.1.4 进程的状态,代表进程生命周期的三种基本状态:运行/执行(running)
11、、就绪(ready)和等待/阻塞(waited或blocked)状态,此外还有停止(stop)状态、死锁(deadlock)状态等。 运行状态:进程的物理运行。 就绪和等待状态:进程的逻辑运行。 停止状态:进程无需再运行。 死锁状态:进程无法执行。,进程在某个时刻总是处于某种状态,随着进程自身的推进和外界条件的变化,进程的状态也随之变化。,进程的三种基本状态及其转换,(1)就绪运行 (2)运行就绪 (3)运行等待 (4)等待就绪,具有挂起状态的进程状态图,2.2 进程控制,2.2.1 创建进程(create) 2.2.2 停止进程(halt) 2.2.3 挂起进程(suspend) 2.2.4
12、 激活进程(activate) 2.2.5 阻塞进程(block) 2.2.6 唤醒进程(wakeup),进程状态转换原语,进程的控制指操作系统必须提供某种机制,来创建一个新进程、撤消一个已经结束运行的进程、改变进程状态、实现进程之间的通信。 通过OS内核中的原语来实现的。 所谓“原语”,指由若干条机器指令构成的并用以完成特定功能的一段程序,这段程序在执行期间是不可分割的。,进程:系统进程;用户进程 系统进程:系统活动构成的进程,程序实体是在管态下执行的操作系统程序,所有的系统进程构成一个系统进程族。系统初启时,创建一个系统总控进程。由总控进程创建其他系统进程或常驻内存的系统进程。系统进程一旦
13、创建便参与并发运行,直到系统终止,由总控进程撤销所有系统进程。总控进程自行消亡。,2.2.1 创建进程(create),用户进程:一个独立的用户程序活动构成的进程,程序实体是用户程序或在目态下执行的系统程序。一个用户进程族随某个用户活动的开始而动态产生,随用户活动的进行而动态形成,随用户活动的终止而动态消亡。,在分时系统中,合法用户登录时,系统将为该终端用户创建一个进程。 在批处理系统中,当作业调度程序按一定的算法调度到某个作业时,系统将该作业调入内存,分配必要的资源,随之为它创建一个进程。 运行中的程序提出某种请求,需要系统提供某种服务(如打印服务)时,系统也将为该进程创建一个新进程(如打印
14、进程)。 用户进程由于应用的需要,它自己也可以创建一个新进程,以便完成特定的应用任务等等。,引起创建进程的事件,进程家族,一个进程可以创建若干个新进程,新创建的进程又可以创建进程,这个创建过程形成了一种树型结构,显示了进程家族的关系,如图所示。,通常允许一个进程创建和控制另一个进程,前者称为父进程,后者称为子进程。创建父进程的进程称为祖父进程,子进程又可创建孙进程等,形成了一个树型结构的进程家族。左图有1个祖先进程(如进程1)和6个子孙进程(如进程2进程7),祖先进程被撤销后,进程家族随之消亡。,进程创建过程,借助“建立”原语可以创建一个新进程。建立一个新进程的工作包括: (1)申请一个空闲的
15、进程控制块。 (2)初始化进程控制块。 (3)为新进程分配资源(为新进程的数据集分配内存并初始化;为新进程的程序分配内存并将它装入该程序等)。 (4)将新进程插入就绪队列。,思考:一个进程被创建后处于哪种状态?,2.2.2 停止进程(halt),一个进程在正常运行结束时,一般都自动终止,进程由运行状态变成停止状态,这是通过调用“停止”原语实现的。 另一方面,进程异常结束时,也会导致进程由运行状态变成停止状态,如:地址越界、保护错误、特权指令错误、运行超时、运算错误、I/O故障或外界进行干预等。,停止一个进程的工作包括: (1)按该进程的标识符,检索PCB队列。 (2)终止该进程的运行,设置调度
16、标志以便重新调度。 (3)若该进程有子孙进程,则也将它们终止。 (4)归还该进程拥有的所有资源。 (5)将该进程的进程控制块从PCB队列中移出。,2.2.3 挂起进程(suspend),当发生引起进程挂起的事件(如父进程请求将自己的某个子进程挂起)时,系统将借助“挂起”原语实现,该进程的状态由活动的就绪/等待状态变为静止的就绪/等待状态。 挂起一个进程的工作是将该进程的实体(程序和数据集)复制到外存交换区,并释放该进程占用的内存空间。 处于挂起状态的进程暂时不能参与CPU的竞争。,2.2.4 激活进程(activate),当发生引起进程激活的事件(如驻留在外存的进程能够获得足够的内存空间)时,系统将借助“激活”原语实现,该进程的状态由静止的就绪/等待状态变为活动的就绪/等待状态。 处于激活状态的进程可以参与CPU的竞争。 激活一个进程的工作与挂起一个进程的工作相反,在内存需求得到满足后,将该进程的数据集和程序装入内存,如果是静止的就绪进程被装入内存,系统又允许剥夺式进程调度的话,则该静止的就绪进程将成为活动的就绪进程,同时能够与现行进程一起竞