1、第三章 进 程 管 理n掌握 n多道程序系统的特点n进程的引入和定义n进程的状态及状态变迁n进程的描述:PCBn了解n进程的控制1、进程的引入 进程的概念是操作系统中最基本、最重要的概念。它是在多道程序系统出现以后,为了刻画系统内部出现的情况,描述系统内部各作业的活动规律而引进的一个新概念,它是对程序的抽象。多道程序系统的特点n 并行性n 在主存中同时存放多道作业,充分利用系统资源。n 制约性n 各程序同时存在于主存,可能因为竞争同一资源(如处理器、外部设备)而相互制约。n 动态性n 各程序在系统中所处的状态在不变化。2、进程的概念定义:Process 进程是具有独立功能的程序关于某个数据集合
2、上的一次运行活动,是系统进行资源分配和调度的独立单位。n它对应处理机、存储器和外设等资源的分配和回收;n引入多进程,提高了对硬件资源的利用率,但又带来额外的空间和时间开销,增加了OS 的复杂性;进程与程序的区别n进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制。n进程是暂时的,程序的永久的:进程是一个状态变化的过程,程序可长久保存。n进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。n进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
3、进程的性质n并行性:各进行按各自独立的,不可预知的速度并发推进。并发和异步特性会导致程序执行的不可再现性。n制约性:并发进程之间存在着制约性,在进行的关键点上需要相互等待或互通消息。n动态性:进程是程序在数据集合上的一次执行过程,是动态概念;而程序是一组有序指令序列,是静态概念。n进程有一个生命过程:创建、运行、等待等。n进程具有动态的地址空间(数量和内容),地址空间上包括:n代码(指令执行和CPU状态的改变)n数据(变量的生成和赋值)n系统控制信息(进程控制块的生成和删除)进程的性质n结构性:包括数据集合和运行于其上的程序。n代码段、数据段和核心段(在地址空间中);程序文件中通常也划分了代码
4、段和数据段,而核心段通常就是OS核心(由各个进程共享,包括各进程的PCB)n共享性:同一程序同时运行于不同数据集合上时,构成不同的进程。n独立性:是系统中资源分配和保护的基本单位,也是系统调度的独立单位(单线程进程)。每个进程的地址空间相互独立,除非采用进程间通信手段;3、进程的状态n运行状态(Running):进程占有CPU,并在CPU上运行。处于此状态的进程的数目小于等于CPU的数目。n在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的idle进程(相当于空操作)。n就绪状态(Ready):进程已获得除处理机外的所需资源,等待分配处理机资源;只要分配CPU就可执行。n
5、可以按多个优先级来划分队列,如:时间片用完低优,I/O完成中优,页面调入完成高优n等待状态(Blocked):指进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行)。等待的事件可以为:I/O操作或进程同步等。进程状态转换 在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换。就绪运行 运行就绪 运行等待 等待就绪 进程的状态转换运行运行就绪就绪等待等待1、就绪运行2、运行就绪3、运行等待 4、等待就绪进程转换n 就绪-运行n 调度:调度程序选择一个新的进程运行n 该转换可以由其他转换引起n 运行-就绪n 运行进程用完了时间
6、片n 运行进程被中断,因为一高优先级进程处 于就绪状态n 该转换可以引起其他转换发生进程转换(续)n 运行-等待n 当一进程必须等待某事件发生,nOSOS尚未完成服务尚未完成服务n对一资源的访问尚不能进行对一资源的访问尚不能进行n初始化初始化I/O I/O 且必须等待结果且必须等待结果n等待某一进程提供输入等待某一进程提供输入 (IPC)(IPC)n 可以引起其他转换发生可以引起其他转换发生n 等待-就绪n 当所等待的事件发生时因果变迁n如果一个状态变迁是由于另一个状态变迁引起的,则这两个变迁为因果变迁。n思考下列说法是否对,为什么?(1)一个进程从运行状态变为就绪状态态,一定会引起另一个进程
7、从就绪状态态变为运行状态。(2)一个进程从运行状态变为阻塞状态态,一定会引起另一进程从运行状态变为就绪状态。(3)一个进程从阻塞状态变为就绪状态,一定会引起另一个进程从就绪状态变为运行状态。AdmitReady QueueDispatchTime-outEvent WaitReleaseProcessorBlocked QueueEventOccurs三状态进程模型(单队列结构)进程的挂起和解挂 为了更好的管理和调度进程及适应系统的功能目标,许多系统都有“挂起”和“解挂”一个进程的功能,原因在于:n 系统有时可能出故障或某些功能受到破坏,需要暂时将系统中的进程挂起,以便故障消除后再恢复。n 用
8、户在执行自己的作业过程中,要求挂起他的进程,以便进行某些检查和改正。n 系统中负载过重,资源相对不足,造成系统效率下降,需要挂起一部分进程以调整系统负荷具有挂起功能的进程状态变化1事件发生事件发生2挂起挂起3解除挂起解除挂起4时间片完成时间片完成5被调度被调度6挂起挂起7时间发生时间发生8挂起挂起9解除挂起解除挂起10等待事件等待事件1RunningBlockedsBlockedaReadyaReadys4325678910状态n就绪状态(Readya):进程在内存且可立即进入运行状态;n等待状态(Blockeda):进程在内存并等待某事件的出现;n挂起等待状态(Blockeds):进程在外存
9、并等待某事件的出现;n挂起就绪状态(Readys):进程在外存,但只要进入内存,即可运行;转换n挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况:n等待到挂起等待:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;n就绪到挂起就绪:当有高优先级等待(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;n运行到挂起就绪:对抢先式分时系统,当有高优先级挂起等待进程因事件出现而进入挂起就绪时,系统可能会把运行进程转到挂起就绪状态;n解挂(Activate):把一个进程从外存转到内存;可能有以下几种情况:n挂起
10、就绪到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;n挂起等待到等待:当一个进程释放足够内存时,系统会把一个高优先级挂起等待(系统认为会很快出现所等待的事件)进程;4、进程的描述n 进程程序块n 进程数据块n 系统/用户堆栈n 进程控制块进程标识信息进程标识信息进程状态信息进程状态信息进程控制信息进程控制信息用户堆栈用户堆栈共享地址空间共享地址空间用户私有地址空间用户私有地址空间(代码、数据)(代码、数据)进进程程控控制制块块进程控制块(Process Control Block)n存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,
11、在创建时,建立PCB,并伴随进程运行的全过程,直到进程撤消而撤消。n用它来记录进程的外部特征,描述进程的运动变化过程。n系统利用PCB来控制和管理进程,PCB是系统感知进程存在的唯一标志。PCB就象我们的户口。n进程与PCB是一一对应的。进程控制块的内容包含以下三类信息:n进程标志信息n处理器状态信息n进程控制信息进程标志信息n 本进程的标志ID:n 通常用系统中唯一的数字作为标记,该数字实际是该进程的PCB在系统的PCB表中的表目序号。n 建立本进程的进程(父进程)的标志IDn 用户标记处理器状态信息n 用户使用的寄存器n 控制和状态寄存器:n 包括程序计数器PC和条件寄存器(或程序状态字P
12、SW).n 堆栈指针进程控制信息n 调度和状态信息:n 进程的状态,进程的调度优先级,与调度有关的信息n 进程在有关队列中的链接指针n 进程间的通信信息:n 包括标志位、信号或信号量、消息队列等n 主存使用信息:n 包括分给进程的主存大小和位置n 进程使用的其他资源信息n 进程得到有关服务的优先级进程管理 系统中的进程是很多的,状态也不一样。为了调度和管理进程,需将各进程的PCB用适当的方法组织起来,以下有三种方法:n单表:把所有的PCB组织在一个表格中。n索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表。n各状态的进程形成不同的索引表:
13、就绪索引表、阻塞索引表n链表:分别把具有相同状态的所有进程的PCB按优先级排成一个或多个队列,同一状态的进程其PCB成一链表,多个状态对应多个不同的链表n各状态的进程形成不同的链表:就绪链表、阻塞链表PCB组织形式PCB TableReadyBlockedPCB TableIndex TableReadyBlocked5、进程控制 创建、撤消进程以及完成进程各状态之间的转换,通常由具有特定功能的原语完成。l 建立进程原语l 撤销进程原语l 阻塞进程原语l 唤醒进程原语l 挂起进程原语l 解除挂起进程原语l 改变优先数原语l 调度进程原语语创建进程n引起创建进程的事件 n用户登录。n作业调度。n
14、提供服务。n应用请求。n创建进程的过程n创建一个PCBn 赋予一个统一进程标识符n 为进程映象分配空间n 初始化进程控制块n 许多默认值(如:状态为 New,无I/O设备或文件.)n 设置相应的链接n 如:把新进程加到就绪队列的链表中n进程创建系统调用:create(name,priority,start-addr)nUNIX系统:fork()撤消进程n进程完成其任务,希望终止时,调用撤消进程的系统调用(进程撤消原语)撤消进程。n在一般操作系统中进程撤消的系统调用是:killn UNIX系统中是exit()。n引起进程撤销的事件 n正常结束。n异常结束。n外界干预。撤消进程n两种策略:n仅撤销
15、指定标识符的进程;n撤销一个子进程及该子进程的所有子孙。撤消进程n根据撤销进程标识号,从相应队列中找到它的PCBn将该进程拥有的资源归还给父进程或操作系统n若该进程拥有子进程,应先撤销元的所有子孙进程,以防它们脱离控制n被撤销进程出队,将它的PCB归还到PCB池进程的阻塞和唤醒n引起进程阻塞和唤醒的事件 n请求系统服务。n启动某种操作并等待操作完成。n等待合作进程的协同配合。n系统进程无新工作可做。进程的阻塞和唤醒n进程阻塞过程 n停止当前进程的执行;保存该进程的CPU现场信息;将进程状态改为阻塞态,并将其PCB入相应的阻塞队列;转进程调度程序。n进程唤醒过程 n首先把被阻塞的进程从等待该事件
16、的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。进程切换n进程切换:中断处于运行态的进程运行,让出处理器,恢复新进程的状态,使新进程投入运行。n当系统调度新进程占有处理器时,新老进程随之发生上下文切换。n进程的运行被认为是在进程的上下文中执行的。n进程上下文:操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文(context)。进程实体+运行环境。进程切换进程上下文组成:n用户级上下文:由用户程序块、用户数据块和用户堆栈组成的进程地址空间。n系统级上下文:又进程控制块、内存管理信息、进程环境块,及系统堆栈等组成的进程地址空间。n寄存器上下文:
17、由PSW寄存器和各类控制寄存器、地址寄存器、通用寄存器组成、用户栈指针等组成。进程切换进程切换步骤:进程切换步骤:n保存被中断进程的处理器现场信息n修改被中断进程的进程控制块的有关信息,如进程状态等n把被中断进程的PCB加入有关队列n选择下一个占有处理器运行的进程n修改被选中进程的PCB的有关信息n根据被选中进程设置操作系统用到的地址转换和存储保护信息n根据被选中进程恢复处理器现场改变优先级数原语n进程的优先级数是表示进程的重要性及运行的优先级,进程调度程序以此来确定优先调用哪一个进程到处理机上运行。n为防止一些进程因优先数太低而长期不能运行,许多系统采用动态优先数。n影响优先数的因素n作业开
18、始时的静态优先数n过程的类型n过程所使用的资源量n在系统中的等待时间6.操作系统代码的执行n通常,OS核心不是一个进程,其执行不被调度。nOS通过中断方式获得CPU控制权。nOS与应用程序的切换会引起两个开关的变化:nCPU执行模式开关:开销小n存取PSW和模式改变指令n进程间开关:开销大n进程地址空间变换n维护PCB信息核心态核心态运行运行系统调系统调用或中用或中断断(含模含模式切换式切换)用户态用户态运行运行等待等待状态状态就绪就绪状态状态等待发等待发生事件生事件唤醒唤醒调度进调度进程程中断、中中断、中断返回断返回运行运行状态状态允许进程允许进程切换切换6.操作系统代码的执行(续)nOS和
19、进程的关系:nOS不作为进程地址空间的一部分:传统方法。nOS作为进程地址空间的一部分:如UNIXnOS功能分别在核心和系统服务进程中,只有OS核心作为进程地址空间的一部分:如Windows NT7 Windows NT进程管理举例nNT的进程作为对象(Object),以句柄(handle)来引用。相应地有控制对象的服务(services)。n进程对象的属性;PID,Access Token,Base Priority,默认处理器集合等1.概述7.1 NT的进程关系n对NT核心而言,进程之间没有任何关系(包括父子关系)。那么,如何表达UNIX进程之间的父子关系(以及其他关系)?由POSIX子系
20、统来建立和维护POSIXAppfork()POSIXSubsystemCreateProcess()Win32 SubsystemProcessManagerNT KernelObjectManagerLocal Procedure Call7.2 NT进程结构ProcessAccess TokenHandle 1Handle 2Handle 3Object TableThread AFile BSection CVirtual Address Space Description7.3.进程控制n创建:CreateProcess()函数用于创建新进程及其主线程,以执行指定的程序。n新进程可以继
21、承:打开文件的句柄、各种对象(如进程、线程、信号量、管道等)的句柄、环境变量、当前目录、原进程的控制终端、原进程的进程组(用于发送Ctrl+C或Ctrl+Break信号给多个进程)每个句柄在创建或打开时能指定是否可继承;n新进程不能继承:优先权类、内存句柄、DLL模块句柄nCREATE_NEW_CONSOLE表示新进程有一个新的控制台nCREATE_NEW_PROCESS_GROUP表示新进程是一个新的进程组的根。n退出:ExitProcess()或TerminateProcess(),则进程包含的线程全部终止;nExitProcess()终止一个进程和它的所有线程;它的终止操作是完整的,包括关闭所有对象句柄、它的所有线程等;nTerminateProcess()终止指定的进程和它的所有线程;它的终止操作是不完整的(如:不向相关DLL通报关闭情况),通常只用于异常情况下对进程的终止。小结n掌握n多道程序系统的特点n进程:定义、三个基本状态、状态变迁原因及因果关系n进程控制块:定义、作用、包含的内容、组织形式n了解n进程控制原语作业n3.8n3.10