资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,二,章,处理器管理,处理器管理是操作系统最核心的部分。,负责管理、调度和分配计算机系统的重要资源处理器。,1,2.1 中央处理器(CPU),一、处理器的构成,处理器由运算器、控制器、一组寄存器以及高速缓存构成。,运算器:,实现指令中的算术和逻辑运算,是计算机计算的核心。,控制器:,负责控制程序运行的流程,包括取指令、维护CPU状态、CPU与内存的交互等等。,寄存器:,是指令在CPU内部作处理的过程中暂存数据、地址以及指令信息的存储设备,在计算机的存储系统中它具有最快的访问速度。,高速缓存:,处于CPU和物理内存之间,访问速度快于内存,低于寄存器。利用程序局部性原理使得高速指令处理和低速内存访问得以匹配,从而提高CPU的效率。,2,二、寄存器,两类寄存器:,用户可见寄存器:,高级语言编译器通过算法分配并使用之,以减少程序访问主存次数。,控制和状态寄存器:,用于控制处理器的操作。由OS,的特权指令使用,以控制其它程序的执行。,计算机系统的处理器包括一组寄存器,其个数根据机型的不同而不同,它们构成了一级存储,比主存容量小,但访问速度快。,这组寄存器所存储的信息与程序的执行有很大关系,构成了处理器现场。,3,1.用户可见寄存器,机器语言(汇编语言)直接引用,包括数据寄存器、地址寄存器等,数据寄存器(data register):,又称通用寄存器,地址寄存器(address register):,用于存储数据及指令的物理地址。如index register、segment pointer、stack pointer,4,2.控制和状态寄存器,用于控制处理器的操作,大部分对于用户是不可见的,一部分可以在某种特权模式(由OS使用)下访问,常见的控制和状态寄存器:,程序计数器,(PC:Program Counter),:记录将要取出的指令的地址,指令寄存器,(IR:Instruction Register),:包含最近取出的指令,程序状态字(PSW:Program Status Word),:记录处理器的运行模式信息等等,5,三、特权指令和非特权指令,1.处理器执行指令过程,处理器依据在程序计数器中的指令地址从存储器中取一条指令,取到的指令放在指令寄存器(IR)中,处理器解释并执行指令,自动将程序计数器的值变成下条指令的地址,6,2.五类指令,(1)数据处理类指令;,(2)转移类指令;,(3)数据传送类指令;,(4)移位与字符串类指令;,(5)I/O类指令。,7,处理器如何知道当前运行的是操作系统还是一应用软件?,执行时有不同的权限。,有赖于处理器状态。,3.特权指令与非特权指令,从资源管理和控制程序执行的角度出发,必须把指令系统中的指令分作两部分:,特权指令,和,非特权指令,。,特权指令:,只能由操作系统的内核程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位、清主存、建立存储键,加载PSW等。,内核能够执行全部指令,应用程序只能使用非特权指令。,8,四、处理器的状态,根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态,处理器状态又称为处理器模式。,多数系统将处理器工作状态划分为,核心态,和,用户态,。,1.核心态,(Kernel Mode),CPU执行操作系统程序时所处的状态。,较高的特权级别,又称为特权态(特态)、系统态、管态。,处理器处于核心态时,程序可以执行全部指令,使用所有资源,具有改变处理器状态的能力。,2.用户态(User Mode),用户程序执行时CPU所处的状态。较低的特权级别,又称为普通态(普态)、目态。,处理器处于用户状态时,程序只能执行非特权指令,不能直接使用系统资源,只能访问用户程序所在的存储空间,不能改变CPU状态。,9,实例:x86系列处理器,386、486、Pentium系列处理器都支持4个处理器特权级别(R0、R1、R2和R3),从R0到R3特权能力依次降低,R0相当于双状态系统的核心态,R3相当于用户态,R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系:,10,四个级别运行不同类别的程序:,R0-运行操作系统核心代码,R1-运行关键设备驱动程序和I/O处理例程,R2-运行其它受保护共享代码,如语言系统运行环境,R3-运行各种用户程序,现有基于x86处理器的操作系统,如UNIX、Linux以及Windows系列大都只用了R0和R3两个特权级别。,11,3.处理器模式转换,(1)用户态核心态,有两种情况会导致处理器从用户态向核心态转换:一是程序请求操作系统服务,执行系统调用;二是程序运行时,产生中断或异常事件,运行程序被中断,转向中断处理或异常处理程序工作。,两类情况都通过,中断机制,发生,中断和异常是用户态到内核态转换仅有的途径,当系统中产生中断或异常,处理器作出响应且交换程序状态字,会导致处理器从用户态转向核心态,处理事件的中断或异常处理程序的程序状态字中,处理器模式位一定为“核心态”。,12,(2)核心态用户态,计算机提供一条特权指令称作加载程序状态字(IBM370为load PSW指令,Intel x86为iret指令),用来实现从系统(核心态)返回到用户态,控制权交给应用进程。,13,五、程序状态字PSW,计算机如何知道当前处于何种工作状态?这时能否执行特权指令?通常操作系统都引入,程序状态字,PSW,(,Program Status Word,),来区别不同的处理器工作状态。,PSW,用来控制指令执行顺序并保留和指示与程序有关的系统状态,主要作用是实现程序状态的保护和恢复。,每个程序都有一个与其执行相关的,PSW,,,每个处理器都设置一个,PSW,寄存器。程序占有处理器执行,它的,PSW,将占有,PSW,寄存器,14,PSW包括以下内容:,程序基本状态:,(1),程序计数器;,(2),条件码;,(3,)处理器状态位。,中断码:保存程序执行时当前发生的中断事件。,中断屏蔽位:指明程序执行中发生中断事件时,是否响应出现的中断事件。,15,实例:IBM360/370系列计算机程序状态字的基本格式,XX X X XXXX X X XXXXXX,8位系统,屏蔽,4位CMWP,字段,4位程序,屏蔽,4位保护键,16位中断码,字段,指令长和,条件码,24位指令,地址,16,2.2,中断技术,中断对于操作系统的重要性,就像机器中的驱动齿轮一样,所以有人把操作系统称为是由,“中断驱动”或者“(中断)事件驱动”,17,中断:,是指程序执行过程中,遇到急需处理的事件(,例如电源掉电、俘点运算溢出、外部设备传输完成或出错等),时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序断点处或调度其他程序执行的过程。,中断源,:引起中断的事件称中断源,如打印完成中断,其中断源是打印机。,断点,:发生中断时正在运行的程序被暂时停止,程序的暂停点称为断点。例如,某程序正在执行0200地址的指令被中断,那么,0200地址就是断点,在中断返回时就执行0200的下一条指令。,一、中断概念,18,从用户角度看中断,19,二、中断源分类,1.按中断事件的性质和激活方式划分,(1)强迫性中断:,强迫性中断事件肯定不是正在运行的程序所期待的,是由随机事件或外部请求引起的。,分为:,机器故障中断,程序性中断,外部中断,输入输出中断,(2)自愿性中断:,自愿性中断事件是正在运行的程序所期待的。是由于用户在编制程序时因为要求操作系统提供服务,有意使用“访管”指令或系统调用,使中断发生。,20,2.按事件来源和实现手段分类,硬中断,软中断,外中断(中断、异步中断),内中断(异常、同步中断),信号,软件中断,按事件来源和实现手段分类,21,(1)硬中断,外中断(中断或异步中断)-,是指来自处理器之外的中断信号,包括时钟中断、键盘中断、它机中断和设备中断等;外中断又分可屏蔽中断和不可屏蔽中断,每个不同中断具有不同的中断优先级,表示事件的紧急程度,在处理高一级中断时,往往会屏蔽部分或全部低级中断。,内中断(异常或同步中断)-,是指来自处理器内部的中断信号,通常由于程序执行中,发现与当前指令关联的、不正常的、或是错误的事件。内中断可细分为三种:访管中断、硬件故障中断、程序性异常。,中断和异常要通过硬件设施来产生中断请求,是硬中断。,22,(2)软中断,软中断是利用硬中断的概念,用软件方法对中断机制进行模拟,实现宏观上的异步执行。,软中断分两种:“信号”和“软件中断”。,23,(3)中断的通常用法,“中断”(硬中断)用于外部设备对CPU的中断(中断的是正在运行的任何程序),转向中断处理程序上半部分执行;,“异常”(硬中断)因指令执行不正常而中断CPU(中断的是正在执行这条指令的程序),转向异常处理程序;,“软件中断”(软中断)用于硬中断服务程序对内核的中断,在上半部分中发出软件中断(即标记下半部分),使得中断下半部分在适当时刻获得处理;,“信号”(软中断)用于内核或进程对某个进程的中断,通知进程某个特定事件发生或迫使进程执行信号处理程序。,24,三、中断和异常的响应过程,1.发现中断源:,2.保护现场:,3.转向处理中断/异常事件的处理程序:,4.恢复现场:,现场:,是被中断断点时刻处理机的各种信息,包括程序状态字;各寄存器的值;打开文件的状态.,25,四、中断优先级和多重中断,1.中断优先级,在一些机器中,中断优先级按中断类型划分:,以机器故障中断的优先级最高,程序中断和访管中断次之,外部中断更次之,输入输出的优先级最低,26,程序计数器(PC:Program Counter):记录将要取出的指令的地址,当一个进程/线程正在处理器上执行时,调度程序可根据某种原则剥夺cpu分配给其他进程/线程。,长作业等待时间足够长后,也将获得足够高的响应比,饥饿现象不会发生。,为对并发执行的程序加以描述和控制,现代操作系统引入了进程的概念。,数据块:存放程序私有数据,用户栈也在数据块中开辟,用于存放函数调用时参数、局部变量和返回地址等参数。,(3)作业控制块(Job Control Block,JCB),线程具有进程的许多特征,故又称轻型进程,传统进程称重型进程。,单位时间内处理的作业数。,按作业(进程)来到的先后次序进行调度。,2.中断屏蔽,在CPU上运行的程序,有时由于种种原因,不希望其在执行过程中被别的事件所中断,称为中断屏蔽。,在PSW中设置中断屏蔽位以屏蔽某些指定的中断类型,各设备接口中也有中断禁止位,以禁止该设备的中断,27,3.多个中断的处理,若中断处理过程中又发生中断,引起多中断处理问题。,两种策略方法:,(1)串行处理,处理一个中断时禁止中断,对任何新中断置之不理,当再次允许中断时,新中断才被响应。,可以通过屏蔽中断来实现。,这种方法简单易行,所有中断严格按照发生顺序处理,不考虑中断紧急程度,无法达到较严格时间要求。,28,要解决这些问题,用程序的概念已经不能描述程序在内存中运行的状态,必须引人新的概念进程。,系统中有几个等待进程队列(按等待的事件组成相应的等待队列)。,所有线程管理由核心完成,进程的切换使系统中的各进程均有机会占用CPU。,(3)转入进程调度程序去调度其他进程运行。,一个作业可划分成若干加工步骤,称为一个作业步。,在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。,在传统OS中,拥有资源、独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位。,每个进程有且仅有一个进程控制块,就像机器中的驱动齿轮一样,非剥夺式:某一进程被调度运行后,除非由于它自身的原因不能运行,否则一直运行下去。,当进程又具备运行条件且主存资源有空闲时,再将进城从外存调至内存。,SPOOLing作业缓输出,进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。,引入可变时间片轮转调度算法,多中断处理第一种策略方法,29,(2)嵌套处理,允许优先级高中断打断优先级低的中断处理过程,这样中断优先级技术将引起中断处理的嵌套。,只要合适地定义中断的优先级别,方法一的弊端大都可以克服,30,多中断处理第二种策略方法,31,操作系统的基本是并发与共享,这就会引起一系列的问题,包括:对资源的竞争、运行程序之间的通信、程序之间的合作与协同等。,要解决这些问题,用程序的概念已经不能描述程序在内存中运行的状态,必须引人新的概念,进程,。,2.3 进程及其实现,32,计算机出现以来,“程序”是使用广泛的一个概念,在多道程序设计技术出现之前,程序是顺序执行的。,1.程序的顺序执行,例:,在系统中有n个作业,每个作业都有三个处理步骤:首先输入用户的程序和数据(I,i,),然后进行计算(C,i,),最后将结果打印出来(P,i,)。,在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。一道程序执行完后另一道才能开始。,一、进程的概念,33,程序顺序执行的特点,顺序性:,处理机严格按照程序所规定的顺序执行,即每个操作必须在下一个操作开始之前结束。,封闭性:,程序一旦开始执行,其计算结果不受外界的影响,因为一道程序独占系统资源,所以当程序的初始条件给定之后,其后的状态只能由程序本身确定,即只有本程序才能改变它。,可再现性:,程序的结果与它的执行速度无关(即与时间无关),,即只要程序的初始条件相同,它的执行结果是相同的,不论它在什么时间执行,也不管计算机的运行速度。,34,2.程序的并发执行,为增强系统处理能力和提高资源利用率,现代操作系统普遍采用多道程序设计技术,多道程序设计技术一个重要特点就是程序并发执行。,例:在系统中有n个作业,每个作业都有三个处理步骤,输入数据、处理、输出。有些操作必须在其它操作之前执行,这是有序的,但有些操作是可以同时执行的。,35,I1、C1、P1的执行必须严格按照顺序,而P1与I2,C1与I2,I3与P1是可以同时执行的。,36,(1)程序的并发执行:,是指若干个程序同时在系统中执行,这些程序的,执行在时间上是重叠的,一个程序的执行尚未,结束,另一个程序的执行已经开始,,即使这种重迭是很小的,也称这几个程序是并发执行的。,并发与并行概念的区别?,Concurrency,parallel,37,(2)程序并发执行的描述,cobegin,S,1,;S,2,;S,3,;.;S,N,coend;,S,i,(i=1,2,3,.,n)表示n个语句(程序段),这n个语句用cobegin和coend括起来表示这n个语句是可以并发执行的。co是concurrent的头两个字符。,这是Dijkstra提出的。,38,例:有一个程序由,S0Sn+1个语句,,其中 S1Sn语句是并发执行的,程序如下:,S0;,cobegin,S1;S2;S3;.;SN,coend;,Sn+1;,39,(3)程序并发执行的特点,间断性:,程序并发执行时,共享资源,致使它们之间相互制约,导致并发程序执行过程“走走停停”,具有“执行-暂停-执行”这种间断性的活动规律。,失去封闭性:,多个程序并发执行,共享系统资源,因而资源的状态由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序执行时,必然受其他程序影响。,不可再现性:,40,例:两个程序A和B,共享一个变量N(初值为1)。,程序A:N+;,程序B:P(N);N=0;,程序A和B并发执行。,可能出现下述三种情况:N值,(1)N+;P(N);N=0;(2,2,0),(2)P(N);N=0;N+;(1,0,1),(3)P(N);N+;N=0;(1,2,0),41,由于并发程序的上述这些特点,使得系统中的活动以及各种活动之间的相互关系非常复杂。因此,“程序”这个静态的概念已不能如实地反映系统中的活动情况。为对并发执行的程序加以描述和控制,现代操作系统引入了进程的概念。,42,3.进程的概念,进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的TSS/360系统提出和实现的。,进程是操作系统中最基本、最重要的概念之一,它对理解、描述和设计操作系统都具有非常重要的意义。,43,(1)进程的定义,进程有很多各式各样的定义,如:,程序在处理机上执行时所发生的活动称为进程(Dijkstra),一个具有一定功能的程序关于某个数据集合的一次运行活动。,进程是一个程序与其数据在处理机上执行时所发生的活动,它是系统进行资源分配和调度的一个独立单位。,本书将进程定义为:,进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。,44,(2)进程与程序的联系与区别,程序,是指令的有序集合,其本身没有任何运行的含义,是一个,静态,的概念。而,进程,是程序在处理机上的一次执行过程,它是一个,动态,的概念。,程序可以作为一种软件资料长期存在,而进程是有一定生命期的。,程序是永久的,进程是暂时的,。,注:程序可看作一个菜谱,而进程则是按照菜谱进行烹调的过程。,进程和程序,组成不同,:进程是由程序、数据和进程控制块三部分组成的。,进程与程序的,对应关系,:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。,例子:光盘(程序)放光盘的活动(进程),45,(3)进程的特征,动态性:,进程是程序的执行,同时进程有生命周期。,并发性:,多个进程可同存于内存中,能在一段时间内同时执行。,独立性:,资源分配和调度的基本单位。,制约性:,并发进程间存在制约关系,造成程序执行速度不可预测性,必须对进程的并发执行次序、相对执行速度加以协调。,结构特征:,进程由程序块、数据块、进程控制块三部分组成。,46,二、进程的状态及转换,1.进程的三种基本状态,进程在系统中的活动规律:,进程的三种基本状态:,运行态,就绪态,等待态(又称阻塞态),执行 暂停 执行,47,(2)就绪状态(ready),当一个进程已经准备就绪,一旦得到CPU,就可立即运行,这时进程所处的状态称为就绪状态。系统中有一个就绪进程队列,处于就绪状态进程按某种调度策略存在于该队列中。,(1)运行态(running),当进程得到处理机,其执行程序正在处理机上运行时的状态称为运行状态。,在单CPU系统中,任何时刻最多只有一个进程处于运行状态。在多CPU系统中,处于运行状态的进程数最多为处理机的数目。,万事具备,只欠CPU,48,(3)等待态(阻塞态)(Wait/Blocked),若一个进程正等待着某一事件发生(如等待输入输出操作的完成)而暂时停止执行的状态称为等待状态。,处于等待状态的进程不具备运行的条件,即使给它CPU,也无法执行。系统中有几个等待进程队列(按等待的事件组成相应的等待队列)。,49,进程在执行过程中,任一时刻必然处于上述三种状态之一,进程在执行过程中其状态将发生变化。,运行态,就绪态,等待态,选中,落选,出现等待事件,等待事件结束,50,运行,等待,:等待某事件的发生(如等待I/O完成),等待,就绪:事件已经发生(如I/O完成),运行,就绪:时间片到(例如,两节课时间到,下课)或出现更高优先级进程,当前进程被迫让出处理器。,就绪,运行,:当处理机空闭时,由调度(分派)程序从就绪进程队列中选择一个进程占用CPU。,上述三种状态是进程最基本的状态,在实际的操作系统实现中,进程远不止这三种状态。,51,2.进程五态模型及其转换,运行态,就绪态,等待态,选中,落选,出现等待,事件,等待事件,结束,新建态,终止态,52,进程为什么要有“挂起”状态?,由于系统不断创建进程,系统资源特别是主存已不能满足进程运行要求,此时必须将某些进程挂起(suspend),置于磁盘对换区,释放其所占资源,暂时不启用低级调度,起到平滑负载的目的。,3.具有挂起功能的进程状态及其转换,53,挂起,等待事件结束,出现等待事件,解除挂起,挂起,落选,选中,运行态,就绪态,等待事件结束,终止态,新建态,挂起就,绪态,解除挂起,挂起,挂起等,待态,等待态,提交,提交,54,三、,进程的描述和组成,1.进程映象,进程内容及其状态集合称为进程映像。包括:,进程控制块:,每个进程有一进程控制块,用来存储进程的标识信息、现场信息和控制信息。,程序块:,被进程执行的程序,核心栈:,每个进程捆绑一个核心栈,进程在核心态工作时,用来保存中断,/,异常现场,,保存函数调用的参数、局部变量和返回地址,等。,数据块:,存放程序私有数据,用户栈也在数据块中开辟,,用于存放函数调用时参数、局部变量和返回地址等参数,。,55,进程上下文,操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文。,进程在其当前上下文中运行,当系统调度新进程占有处理器时,新老进程随之发生上下文切换。即保存老进程状态而装入被保护了的新进程的状态,以便新进程运行,.,56,进程上下文组成,用户级上下文:,由,程序块,、数据,块,、共享,内存,区、用户栈组成,占用进程的虚地址空间。,寄,存器上下文:,由,处理器状态寄存器,、指令计数器、栈指针、通用寄存器等组成。,系统级上下文:,由进程控制块、,内存,存管理信息(,进程,页表或段表)、核心栈等,操作系统管理进程所需要的信息,组成。,57,2.进程控制块,(Process Control Block,PCB),每个进程,有且仅有一个,进程控制块,PCB是操作系统用于记录和刻划进程状态及有关信息的数据结构,是操作系统掌握进程的唯一资料结构。,系统利用PCB来控制和管理进程,所以PCB是系统,感知进程存在的唯一标志,进程与PCB是一一对应的,在创建进程时,建立PCB,并伴随进程运行的全过程,直到进程撤消而撤消。PCB就象我们的户口。,58,PCB的内容,标识信息,进程标识,ID,:唯一,通常是一个整数,进程组标识,ID,用户进程名,用户组名,现场信息,寄存器内容(通用寄存器内容、控制寄存器内容、栈指针等),控制信息,进程调度信息:,如进程状态、等待时间、等待原因、进程优先级、队列指针等,进程组成信息:,如正文段指针、数据段指针、进程族系信息,进程间通信信息:,如消息队列指针、所使用的信号量和锁,进程段、页表指针、进程映像在辅存地址,CPU,的占用和使用信息:,如时间片剩余量、已占用,CPU,时间、已执行时间总和、定时器信息、记账信息,进程特权信息:,如主存访问权限、处理器特权,资源清单:,所需全部资源、已分得资源,59,3.进程队列及其管理,处于同一状态的所有PCB组织在一起的数据结构称为进程队列。例如运行队列、就绪队列、等待队列。,同一状态进程的PCB既可按先来先到的原则排成队列;也可按优先数或其它原则排成队列。,通用队列组织方式:,链接方式,索引方式,60,(1)链接方式,相同状态的进程PCB通过链接指针链接成一个队列。,不同状态的进程可排成不同的队列,如运行队列、就绪队列、等待队列。等待队列按等待原因不同可排成多个等待队列。,PCB表,PCB1 0,PCB2 5,PCB3 0,PCB4 0,PCB5 0,PCB6 4,运行队列指针,就绪队列指针,等待队列1指针,等待队列2指针,PCBn 7,PCB7 0,空闲进程队列指针,61,(3)索引方式,对具有相同状态的进程,分别设置各自的PCB索引表,如就绪索引表、等待索引表,记录PCB在PCB表中的地址.,运行队列指针,就绪表指针,等待表1指针,PCB表,PCB1,PCB2,PCB3,PCB4,PCB5,PCB6,PCBn,空闲表指针,就绪索引表,等待索引表1,等待表2指针,62,四、进程切换,一个进程让出处理器,由另一个进程占用处理器的过程称为进程切换。,进程的切换使系统中的各进程均有机会占用CPU。,63,进程切换的步骤,保存被中断进程的处理器现场信息,修改被中断进程的进程控制块的有关信息,如进程状态等,把被中断进程的进程控制块加入有关队列,选择下一个占有处理器运行的进程,修改被选中进程的进程控制块的有关信息,根据被选中进程设置操作系统用到的地址转换和存储保护信息,根据被选中进程恢复处理器现场,64,五、进程的控制和管理,进程是有生命周期的:产生、运行、暂停、终止。进程生命周期的动态变化过程由,进程管理程序,来控制。,进程的控制和管理包括:,进程创建,进程撤消,进程阻塞,进程唤醒,进程挂起,进程激活,65,这些控制和管理功能由操作系统中的原语实现。,原语是在核心态执行、完成系统特定功能的不可分割的过程。,原语的特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。,66,1.进程创建,进程创建类似于人出生后要到派出所报户口。,进程创建过程:,(1)在进程列表中增加一项,从PCB池中申请一个空闲PCB,为新进程分配惟一的进程标识符;,(2)为新进程的进程映像分配地址空间。进程管理程序确定加载到进程地址空间中的程序;,(3)为新进程分配除主存空间外的其他各种所需资源;,(4)初始化PCB,如进程标识符、处理器初始状态、进程优先级等;,(5)把新进程状态置为就绪态,并移入就绪进程队列;,(6)通知操作系统的某些模块,如记账程序、性能监控程序。,67,2.进程撤销,进程完成其任务或出现严重错误后,操作系统调用进程撤消原语撤消进程。,相当于一个人死亡后,家人要去派出所消户口。,进程撤销过程:,(1)根据撤销进程标识号,从相应队列中找到并移出它;,(2)将该进程拥有的资源归还给父进程或操作系统;,(3)若该进程拥有子进程,先撤销它的所有子进程,以防它们脱离控制;,(4)回收PCB,并归还到PCB池。,68,3.进程阻塞和唤醒,当一个处在运行状态的进程,因等待某个事件的发生(如等待打印机)而不能继续运行时,进程将调用阻塞原语来阻塞自己,,进程的状态由运行态转换为等待态(阻塞态)。,当等待事件完成时,会产生一个中断,激活操作系统,在系统控制下将被阻塞的进程唤醒,,这个进程将由阻塞状态转换成就绪状态,。,运行态,就绪态,等待态,进程调度,落选,出现等待事件,等待事件结束,进程阻塞,进程唤醒,69,进程阻塞步骤:,(1)停止进程执行,保存现场信息到PCB;,(2)修改进程PCB有关内容,如进程状态由运行态改为等待态等,并把修改状态后的进程移入相应事件的等待队列中;,(3)转入进程调度程序去调度其他进程运行,。,进程唤醒步骤:,(1)从相应的等待队列中移出进程;,(2)修改进程PCB的有关信息,如进程状态改为就绪态,并移入就绪队列;,(3)若被唤醒进程比当前运行进程优先级高,重新设置调度标志。,70,一、引入多线程的动机,引入进程的目的是为了使多个程序并发执行,以改善资源使用率、提高系统效率。,再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。,2.4 线程及其实现,71,进程的两项功能,1.进程是资源分配和保护基本单位。,2.进程同时又是一个可独立调度和分派的基本单位。,进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。所以系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。,72,为解决此问题,人们想到将进程的上述两个功能分开,前一项任务仍由进程完成,作为系统资源分配和保护的独立单位,无需频繁切换;后一项任务交给称为线程的实体完成,线程作为系统调度和分派的基本单位,会被频繁调度和切换。,线程因而产生,。,73,引入线程的好处,快速线程切换,通信易于实现,减少管理开销,并发程度提高,74,二、多线程环境中的进程与线程,1.多线程结构进程,进程,进程PCB,资源,线程,控制块,用户栈,核心栈,线程,控制块,用户栈,核心栈,线程n,控制块,用户栈,核心栈,存储区,存储空间,全局数据,程序代码,线程1,线程1,线程,控制块,线程2,线程1,线程,控制块,用户栈,核心栈,线程i,线程n,75,多线程环境中进程的定义,进程,是操作系统中除处理器外进行的,资源分配和保护的基本单位,,它有一个独立的虚拟地址空间,用来容纳进程映像(如与进程关联的程序与数据),并以进程为单位对各种资源实施保护,如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)。,多线程环境中的线程概念,线程是操作系统进程中能够并发执行的实体,是进程的组成部分,是,处理器调度和分派的基本单位,。,76,每个进程内可包含多个可并发执行的线程,这些线程共享进程所获得的内存空间和资源。,线程自己基本不拥有系统资源,只拥有少量必不可少的资源:,程序计数器、一组寄存器、栈,。,进程可以分为两部分:资源集合和线程集合。,77,2.线程与进程的比较,线程具有进程的许多特征,故又称,轻型进程,,传统进程称,重型进程,。,在引入线程的OS中,每一进程都拥有多个线程,至少一个。,78,(1)调度,在传统,OS,中,拥有资源、独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位。,在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,,将会引起进程切换,。,79,(2)并发性,在引入线程的系统中,进程之间可并发,同一进程内的各线程之间也能并发执行。因而系统具有更好的并发性。,(3)拥有资源,无论是传统,OS,,,还是引入线程的,OS,,,进程都是拥有资源的独立单位,线程一般不拥有系统资源,但它可以访问隶属进程的资源。即一个进程的所有资源可供进程内的所有线程共享。,80,(4)系统开销,进程的创建和撤消的开销要远大于线程创建和撤消的开销,进程切换时,当前进程的CPU环境要保存,新进程的CPU环境要设置,线程切换时只须保存和设置少量寄存器,并不涉及存储管理方面的操作,可见,进程切换的开销远大于线程切换的开销。,同时,同一进程内的各线程由于它们拥有相同的地址空间,它们之间的同步和通信的实现也变得比较容易。,81,三、线程的实现,多线程的实现分为三类:,用户级线程(User Level Thread,ULT):,对于这种线程的创建、撤消、和切换,由用户程序来实现,内核并不知道用户级线程的存在。,内核级线程(Kernel Level Thread,KLT):,它们是依赖于内核的,,即无论是用户进程中的线程,还是系统进程中的线程,,它们的创建、撤消、切换都由内核实现。,混合式线程:,同时支持ULT和KLT两种线程。,82,1.用户级线程(ULT),由应用程序完成所有线程的管理,通过用户空间中的线程库来完成,内核并不知道线程的存在。,83,线程库,提供,线程运行管理系统:,创建、撤消线程,在线程之间传递消息和数据,调度线程执行,保护和恢复线程上下文,例子:Java线程库,84,用户级线程的优点和缺点,优点:,线程切换不调用核心,调度是应用程序特定的:可以按需要选择好的算法,ULT可运行在任何操作系统上(只需要线程库),可以在一个不支持线程的OS上实现,缺点:,由于大多数系统调用是阻塞的,因此一个用户级线程的阻塞会引起整个进程的阻塞。,核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上,85,2.核心级线程(KLT),所有线程管理由核心完成,没有线程库,但核心提供线程API来使用线程,核心维护进程和线程的上下文,线程之间的切换需要核心支持,以线程为基础进行调度,例子:Windows 2003、OS/2,86,核心级线程的优点和缺点,优点:,对多处理器,核心可以同时调度同一进程的多个线程,阻塞是在线程一级完成,缺点:,在同一进程内的线程切换调用内核,系统开销较大,87,3.混合式线程,既支持用户级线程,又支持内核级线程。,例子:,Solaris,88,一、处理器调度的层次,2.5 处理器调度,处理机是计算机系统中的重要资源。,处理机调度算法对整个计算机系统的综合性能指标有重要影响。,可把处理机调度分成三个层次:,高级调度,中级调度,低级调度,89,1.高级调度,也称为,作业调度,或长程调度。,作业调度的主要功能,是根据作业调度算法选择外存上处于后备队列中的某些作业调入内存,并为他们分配必要的资源、创建作业相应的进程,在作业完成后还要做结束阶段的善后工作。,90,2.低级调度,也称,进程,/,线程调度,、短程调度。,进程调度的主要功能是,根据一定的调度算法从就绪队列中选中一个进程,/,内核级线程获得处理器,让它使用。,低级调度是操作系统最核心部分,执行十分频繁,其调度策略的好坏直接影响整个系统的性能。,91,低级调度的调度方式:,(1)非剥夺式(非抢先式),调度程序一旦把cpu分配给某一进程/线程后,便让他一直运行下去,直到进程完成或发生某事件不能运行时,才将cpu分配给其他进程。,这种调度方式通常用于批处理系统中。,优点:简单,系统开销小,缺点:难以满足紧急任务的要求,实时系统不宜采用,。,92,(2)剥夺式(抢先式),当一个进程/线程正在处理器上执行时,调度程序可根据某种原则剥夺cpu分配给其他进程/线程。,这种调度方式通常用于分时系统和实时系统中。,剥夺的原则:,优先权原则,短作业(进程)优先原则,时间片原则,93,3.中级调度,又称,平衡调度,中程调度,涉及进程在内外存间的交换,当主存资源紧缺时将暂不运行的进程从内存调至外存,此时这个进程处于“挂起”状态;当进程又具备运行条件且主存资源有空闲时,再将进城从外存调至内存。,中级调度的主要目的是提高内存利用率和系统吞吐量。,低级调度是各类操作系统必备的,在纯粹的分时系统或实时系统中,通常不需高级调度。一般系统都有高级调度和低级调度;功能完善的系统引入了中级调度。,94,处理器三级调度模型,处理器,低级调度,高级调度,完成,超时,挂起就绪队列,挂起等待队列,等待队列,就绪队列,等待事件,交互式用户,事件,出现,后备作业队列,中级调度,95,处理器两级调度模型,等待事件,事件发生,进程完成,后备,作业,队列,就绪,队列,高级调度,低级调度,等待,队列,CPU,时间片完,96,二、,选择调度算法的原则,l.资源利用率(特别是CPU利用率),CPU利用率=CPU有效工作时间/CPU总的运行时间,,CPU总的运行时间=CPU有效工作时间+CPU空闲等待时间。,2.吞吐率,单位时间内处理的作业数。,评价批处理系统性能的另一个重要指标。,3.公平性,确保每个用户每个进程获得合理的CPU份额或其他资源份额,不会出现饿死情况。,97,4.响应时间,交互式进程从提交一个请求,(,命令,),到接收到响应之间的时间间隔称响应时间。,响应时间包括:请求传送到,CPU,时间、,CPU,处理请求的时间、响应回送到终端显示器的时间。,使交互式用户的响应时间尽可能短,或尽快处理实时任务,这是分时系统和实时系统衡量调度性能的一个重要指标。,98,5.周转时间,批处理用户从作业提交给系统开始,到作业完成为止的时间间隔称作业周转时间。,包括四部分时间:在外存后备队列上等待作业调度的时间,相应进程在就绪队列中等待进程调度的时间,进程在,cpu,上执行的时间、进程等待,I/O,操作完成的时间。,应使作业周转时间或平均作业周转时间尽可能短,这是批处理系统衡量调度性能的一个重要指标。,99,周转时间,ti,作业,i,提交给系统的时刻是,t,s,,完成时刻是,t,f,,,该作业的周转时间,t,i,为:,t,i,=,t,f,t,s,。,周转时间,=,作业等待时间,+,作业运行时间。,为了提高系统的性能,要让若干个用户的平均作业周转时间和平均带权周转时间最小。,平均作业周转时间,T,T=(,ti,)/n,100,带权周转时间,w,i,如果作业,i,的周转时间为,t,i,,,所需运行时间为,t,k,,则,w,i,=,t,i,/,t,k,平均作业带权周转时间,W,W=(,w,i,)/n,101,三、作业与进程的关系,1.作业的基本概念,(1)作业(job),用户提交给操作系统计算的一个独立任务。,(2)作业步(job step),一
展开阅读全文