1第二章处理机管理2本章内容2.1进程概念2.2OS内核及进程控制2.3进程通信2.4进程调度2.5线程2.6死锁2.7作业管理2.8操作系统的接口32.1进程的概念2.1.1进程的引入硬件的并行操作与程序的并发执行都需要CPU在多道程序中快速切换,原有的程序概念无法做到这一点,因此我们引入一个新概念——进程。进程是操作系统中最重要、最核心的概念,它是对正在运行的程序的抽象,是独立调度运行与资源分配的基本单位。1.前趋图(ProcedenceGraph)(a)(b)(c)S2S3S4S1S5S6S7S1S2S3S4S1S2S342.程序的顺序执行1)程序的顺序执行所谓程序的顺序执行,是指一个程序运行时独占整个系统资源,处理机严格按照程序所规定的顺序进行操作。在一个程序段中,只有前面的一个操作执行完,才能进行后面一个操作。在一个程序段的执行过程中,不能插入其它程序段中的操作。例如,对于下述程序段:S1:READ(X,Y);S2:C=X+Y;S3:PRINTC;S1S2S35类似地,在一个系统中,若要执行几个程序段,只有当一个程序段执行完后才能执行另一个程序段中的操作。如,一个程序段通常由输入(I)、计算(C)、输出(P)等操作组成,两个程序段的顺序执行则如图2)程序顺序执行的特征顺序性:处理机的操作严格按照程序所规定的操作顺序执行,时间上完全有序,即只有前一个操作执行完以后,才能进行后继操作。封闭性:程序执行时独占系统资源,系统内各种资源的状态(初始状态除外)只能被本程序所改变,因此其执行结果不受外界因素的干扰。结果可再现性:只要程序执行的环境与初始状态不变,当重复执行时,所获得的结果相同,与执行速度无关。I1C1P1I2C2P263.程序的并发执行什么是并行操作?什么是并发执行?多个程序段在计算机系统中“一起”执行。例如,在一个时间段内,一个CPU在为多道程序工作,而在某一个瞬间,一个CPU只能运行一道程序,它只是在多道程序中快速切换,给人以CPU“同时”运行几道程序的感觉。每个程序内部仍是按顺序执行,但是多个程序的执行过程是可以交叉的,这是一种伪并行,称之为并发执行。1)并发执行若干程序段在执行时间上有重叠,即一个程序段的执行过程中插入了其它程序的操作,称为并发执行t1Pt2t3t4Qt5t6RT72)程序并发执行的特征若干个程序段的并发执行,产生了一些与程序顺序执行时不同的特征:顺序性:多个程序段并发执行时,每个程序段中语句的顺序执行仍然保持,但是多个程序段之间不再保持顺序执行的关系。间断性:多个程序段并发执行时,由于共享资源或由于相互合作而形成执行时的相互制约关系,使得每个程序段执行时产生了间断性。非封闭性:多个程序段并发执行时,每个程序段不再独占系统资源,执行时受外界因素影响。例如,当一个用户的程序段执行中使用某个I/O设备时,其他用户的程序段申请使用该设备,就必须等待。不可再现性:多个程序段并发执行时,产生了非封闭性,不再独占系统资源,此时,即使程序执行的环境与初始状态不变,重复执行时运算速度通常也不可再现,若运算结果与执行速度有关,则可能会被改变。A:B:N=N+1;PRINTN;N=0;…………84.程序并发执行的条件保持可再现性!1)读集R(Pi)={a1,a2,a3,...,am}用以表示程序段Pi执行时需要参考变量的集合,称为读集。其中a1,a2,a3,...,am是需要参考的变量。例如,有语句:S1:c=a+b;则R{c=a+b}={a,b}S2:x=x-1;则R{x=x-1}={x}2)写集W(Pi)={b1,b2,b3,...,bn}用以表示程序段Pi执行中要改变的变量的集合,称为写集。其中b1,b2,b3,...,bn是需要改变的变量。例如,有语句:S1:c=a+b;则w{c=a+b}={c}S2:x=x-1;则w{x=x-1}={x}93)Bernstein条件1966年,Bernstein提出了程序可以并发执行的条件,简称Bernstein条件。若两个程序段P1和P2能满足以下条件:R(P1)∩W(P2)={};R(P2)∩W(P1)={};W(P1)∩W(P2)={};则P1和P2可以并发执行,同时保证结果具有可再现性。S1:a=x+1;S2:b=y+1;S3:c=a+b;S4:d=c+1;S1S2S3S410并发执行环境提高了系统的处理能力和系统资源的利用率,但也带来了相应的问题:(1)程序结果的封闭性和执行的可再现性不再满足。资源共享——造成资源共享与竞争——程序执行速度的改变(2)程序与计算不再一一对应。程序是指令的集合——静态概念。而计算是程序的执行过程——动态概念。程序只有作用在一组数据上的一次执行过程才能完成用户要求的计算任务。若有一个共享程序,每个用户都组织好自己的一组数据,调用该程序执行。在多道程序执行环境中,一个程序可同时处于多个执行过程,形成了多个“计算”。这时静态的程序将对应多个动态的计算。(3)计算之间存在复杂的相互制约关系。相互制约:相关的计算过程由于资源的共享和竞争而需要进行的协调、控制工作,以确保计算的正确完成。多道程序执行环境中,资源的共享和竞争会导致计算过程之间的复杂的相互制约关系。11并发执行环境的以上特点,使程序固有的顺序性、封闭性受到破坏。在多道程序执行环境中如果仍以程序作为运行的基本单位,显然无法满足并发性、随机性及资源动态共享等要求。为适应并发执行环境的特点,简化操作系统的设计,适应“程序的一次执行”这一动态计算的概念,操作系统引入了进程(Process)这一概念实体作为操作系统管理、资源分配及调度执行的基本单位。5.进程定义与特征1961年,进程的概念首先由美国麻省理工学院在MULTICS系统中引入,得到人们的普遍重视并广为采用。随后,许多人都对进程下过定义,如:进程是可以并发执行的程序在一个数据集合上的运行过程。进程是程序的一次执行过程。进程是可参与并发执行的程序。进程是一个程序及其数据在处理机上执行时所发生的活动。进程是在给定初始状态和内存区域的条件下,可以并发执行的程序的一次执行过程。12进程的定义:(从不同的角度)(1)进程是程序作用在一组数据上的一次执行过程(一次计算);(2)进程是操作系统中一个可独立调度和资源分配的基本单位;(3)进程是可以和别的计算并发执行的计算。UNIX系统中的定义与此系统中的定义完全一致。132)进程的特征进程是与程序完全不同的新概念,它具有以下特征:●并发性:在内存中的多个进程能在一段时间内同时运行。并发性使得进程的程序执行过程随时会被中断。多个进程的程序可以并发执行,这是进程最基本的特征之一,而程序是不能并发执行的。●动态性:进程由创建到消亡是有一定生命期的,在生命期间进程是一个活动实体。而程序是可以永久存放于某种介质上的有序指令集合,是一个静态实体。●独立性:进程是一个能够独立运行的基本单位,即只有进程才能被独立调度运行及独立获得资源。在系统中,除了系统提供的服务外,只有进程在活动,而程序是不能作为调度运行和获得资源的基本单位的。14●异步性:这是指进程以各自独立的、不可预知的速度向前推进。这一特性基于进程的并发性,需要系统采取必要的措施,以保证各个进程的程序之间能协调运行。●结构特征:进程实体中包含有程序段、数据段,还必须有一个存放进程生命期间管理信息的数据结构——进程控制块PCB(ProcessControlBlock)。进程控制块PCB能够保证进程并发执行及在生命期间进程活动的顺利进行。不同的进程是以PCB来区别的,不同的PCB代表不同的进程。152.1.2进程的描述1.进程的组成进程由三部分组成:进程控制块PCB、程序段和数据段PCB程序段数据段16一个进程一经被创建,就有如下三部分内容:(1)PCB表:为便于管理,PCB表被放在不同的队列或状态中。新建进程的PCB表被放在就绪队列中,根据进程在活动过程中所处的状态,PCB表可被放在就绪队列或阻塞队列中,也可以处于执行状态中。(2)可执行的程序段:其首地址由PCB表中程序地址信息字段直接或间接指出。(3)可加工的数据段:其首地址由PCB表中数据地址信息字段直接或间接指出。有的进程可以没有数据段。17进程控制块PCB是为描述进程动态变化过程以及对进程进行控制与管理而设的数据结构。进程与PCB表一一对应,操作系统根据PCB表了解进程的存在,它是进程是否存在的惟一标志。PCB表常驻内存,属于系统空间,只有操作系统程序才能够访问,用户程序不得访问。进程的程序段反映了进程的功能,数据段是程序加工的对象,均属于用户空间。运行时可以根据需要全部地或者部分地放在内存中。进程处于非执行状态时,如果内存有剩余空间,它的程序段和数据段放在内存,如果内存无剩余空间,则可以放在外存。进程处于执行状态时,程序段与数据段必须有一部分放在内存,以方便执行。程序段和数据段在内存与外存中的物理地址是由PCB表的地址信息字段指明的。182.PCB结构及其组织形式PCB表记录了?描述进程情况及控制进程运行所需要的全部信息,操作系统根据PCB提供的信息实施对进程的控制与管理。个数有限分配与回收常驻内存操作系统专门开辟一个PCB表区,每个PCB是一片连续的存储单元。根据PCB表所对应的进程的运行状态,所有的PCB表被组成若干个队列,如就绪队列、阻塞队列等,空闲的PCB表组成一个空闲队列,以备创建进程时进行申请使用和撤消进程时进行回收使用。191)PCB的结构因系统设计目标的不同,不同的操作系统其PCB结构和内容不尽相同。但从概念上,进程PCB至少包括:a)进程标识信息b)进程控制信息c)资源信息d)执行现场信息进程名用户名父进程名子进程名进程状态标志state进程优先级进程程序入口地址进程数据存放位置计时信息主存资源信息I/O设备有关信息辅存存放位置进程队列指针组文件信息CPU通用寄存器……CPU控制寄存器……程序状态字PSW20●进程标识符:分为外部标识符和内部标识符。●程序地址:进程的程序部分在内存及外存的地址,或描述程序地址信息的段表地址、页表地址、索引表地址等。●数据地址:●状态:进程当前所处的状态●CPU状态保护区:CPU状态信息主要由通用寄存器、程序计数器PC、程序状态字PSW以及用户栈指针等组成,也称为中断点现场信息。●进程优先级:静态优先级、动态优先级●通信信息:●资源信息:●队列指针:●家族指针212)PCB表的组织形式在内存的系统空间中设有PCB表区,表区中的PCB表的个数根据系统的大小来设置。为了对进程实施有效的管理,通常将它们用某种方式组织起来,目前常用方式有如下几种:链接方式:用PCB表中的队列指针项将具有相同状态的进程的PCB表链接起来PCB1PCB2PCB34PCB4PCB5PCB6PCB7PCB8PCB92569…空闲队列指针阻塞队列指针就绪队列指针执行指针22执行就绪阻塞PCB1PCB3PCB4PCB2PCB7PCB6PCB523索引方式:根据进程的状态,在内存中建立相应的索引表,系统中的某些固定单元保存各索引表的首地址。PCB1PCB2PCB3PCB4PCB5PCB6PCB7…342就绪索引表765阻塞索引表执行指针就绪表指针阻塞表指针