1操作系统2计算机操作系统第一章操作系统概述第二章作业与界面管理(用户接口)第三章文件管理第四章内存管理第五章设备管理第六章进程管理3进程2.1进程2.1.1进程的引入“程序”一词大家都非常熟悉,接触计算机的人、学计算机的人,多少都需要会写点程序代码。程序的定义是:指令的有序集合,由它规定计算机完成某一任务时所需做的各种操作及操作顺序。1.程序的顺序执行4程序执行的特点程序的顺序执行有如下特点:(1)程序执行的顺序性。CPU的操作严格按照程序所规定的顺序执行,即前一步操作完成后,才能进入下一步操作。(2)程序运行时对资源的独占性。程序运行时,运行程序独占系统全部资源,没有其它程序与之争夺,只有程序本身的动作才能改变资源的状态。(3)程序结果的可再现性。当对某一程序重复执行时,只要初始条件相同,必然获得相同的结果,程序执行的结果与执行速度、时间无关。(4)程序结果的封闭性。程序运行时间的长短和最终结果,只由初始条件和程序本身来确定,不会受到来自它以外的其它因素的影响,也就是说,单道程序的运行自成一体,具有封闭性。5程序的并发执行2.程序的并发执行6并行执行的特性显然程序并行执行产生了一些和程序顺序执行时不同的特点,这些特性概括如下:(1)程序执行时的资源共享性程序并发执行时,整个系统资源已经不能被某一个程序所独占,多个程序共享计算机系统中的各种软、硬件资源。硬件资源包括CPU、内存、外设等;软件资源除指各种系统软件之外,还包括各种共享的数据等。(2)程序失去了封闭性和可再现性程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,即资源的状态不能反映出某一个程序执行的情况,致使程序的结果失去封闭性。这样某程序在执行时,必然会受其它程序的影响。程序在并发执行时失去了封闭性,也将要导致其失去可再现性。7程序实例/**ProgramA**/intn=0;//设置一个全局变量n初值为0main()//进入并发执行{while(1)//无限循环{n++;//程序A每次对n+1}}/**ProgramB**/main()//进入并发执行{while(1)//无限循环{printf(%d,n);//程序B每次打印n的值n=0;//并将n置为0}}8并发程序的制约性(3)并发程序之间的相互制约性由于程序并发执行,它们共享系统内的各种资源,因此程序之间的关系就要复杂得多,产生相互制约关系。例如在图2-2中P1、C2和I3是并行的程序段。但如果C1程序段未完成,则不仅P1程序段无法执行,而且C2程序段也不能进行。因为C1和C2不能同时用一个处理器完成计算操作,使得C2处于暂时等待状态,只有C1完成后,C2才能恢复执行。所以程序并发执行使本来相互无逻辑关系的用户程序之间产生了相互关系,使得并发执行的程序具有了“执行—暂停—执行”的活动规律,产生了程序执行的间断性特征。如果想要并发程序还能保证封闭性和可再现性,那么几段程序间就要保证无共享变量。9并发与顺序的比较顺序程序并发程序执行过程顺序执行并发执行程序与执行对应一一对应一个程序可对应多个执行顺序封闭性独占资源,具有封闭性共享资源,不具有封闭性确定性有无可再现性有无程序间关系无有直接或间接制约关系10进程的概念4.进程的概念进程(Process)这个名词最早是1960年在MIT的MULTICS和IBM公司的TSS/360系统中提出的,直到目前对进程的定义和名称均不统一,不同的系统中采用不同的术语名称,例如,MIT称进程(Process),IBM公司称任务(Task)和Univac公司称活动(Active)。可以说进程的定义多种多样,国内学术界较为一致的看法是:进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位(1978年全国操作系统学术会议)。11进程的属性进程具有如下属性:(1)结构性:进程包含了数据集合和运行于其上的程序,为了描述和记录进程的动态变化过程使其能正确运行,还需配置一个进程控制块,所以,每个进程至少有三要素组成:程序、数据和进程控制块。(2)共享性:同一程序同时运行于不同数据集合上时,构成不同的进程。或者说,多个不同的进程可以共享相同的程序,所以,进程和程序不是一一对应的。(3)动态性:进程是程序在数据集合上的一次执行过程,是动态概念,同时,它还有生命周期,因创建而产生,因调度而执行,因撤销而消亡;而程序是一组有序指令序列,是静态概念,所以,程序作为一种系统资源是永久存在的。12进程的并发性(4)独立性:进程既是系统中资源分配和保护的基本单位,也是系统调度的独立单位。凡是未建立进程的程序,都不能作为独立单位参与运行。通常,每个进程都可以以各自独立的速度在CPU上推进(有的教材称之为异步性)。(5)制约性:并发进程之间存在着制约关系,进程在进行的关键点上需要相互等待或互通消息,以保证程序执行的可再现性和计算结果的唯一性。(6)并发性:进程可以并发地执行,进程的并发性能改进资源利用率和提高系统效率。13进程与程序的联系与区别5.进程和程序的联系及区别从进程的定义可以看出,进程和程序是既有密切联系又有区别的两个完全不同的概念。为了更深入理解进程的含义,下面进一步分析进程和程序的主要区别:(1)进程是动态的,程序是静态的(2)进程是暂时的,程序是永久的(3)进程与程序的组成不同(4)进程与程序的对应关系进程和程序之间不存在一一对应关系。一个程序可以对应多个进程;反之,一个进程至少要对应一个程序,或对应多个程序,多个进程也可对应相同的程序。(5)进程具有并发特征(独立性或异步性)14PCB2.1.3进程控制块1.进程控制块PCB(ProcessControlBlock)进程控制块(PCB)是操作系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。系统利用PCB来控制和管理进程,一个进程只有一个PCB,PCB是进程存在与否的唯一标记,因为操作系统只有依据PCB才能感知进程、管理进程与控制进程,所以PCB是系统感知进程存在的唯一标志。进程与PCB是一一对应的。15进程的状态2.1.2进程的状态1.进程的三状态模型运行(running)态:进程占有CPU正在运行。进程已获得必要的资源并占有CPU,正在执行的状态。在单CPU系统中,只能有一个进程处于运行状态。在多CPU系统中则可能有多个进程处于运行状态。就绪(ready)态:进程具备运行条件,等待系统分配CPU以便运行。进程已得到除CPU以外的全部资源,是一旦获得CPU就可以执行的状态,此时的进程是在就绪队列中。(“万事俱备只欠东风”状态)阻塞(blocked)态:又称为等待(wait)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。16进程的状态图17进程状态转换引起进程状态转换的具体原因如下:就绪态—→运行态:CPU空闲时,调度程序选中一个就绪进程来执行,也就是说处于就绪态的某进程被进程调度程序选中;运行态—→阻塞态:等待使用资源或某事件发生,如等待外设数据、等待人工干预。它是由运行进程自己主动改变的,一个正在运行的进程启动了某一外围设备后,等待该外围设备传输完成时,使自己由运行态变为阻塞态。18进程状态转换阻塞态—→就绪态:资源得到满足或某事件己经发生,如外设传输结束、人工干预完成。它是由外界事件引起的,外围设备传输已经完成时,请求中断,由I/O中断处理程序把因等待这一I/O完成而阻塞的进程变为就绪态。运行态—→就绪态:运行时间片到、或出现有更高优先级的进程到来。此时,处于运行态的进程被剥夺CPU。采用时间片轮转法调度时,当前运行进程用完分给它的时间片后,将由运行态变为就绪态。采用优先级调度时,若有更高优先级的进程变为就绪态,当前进程被迫放弃CPU,使自己由运行态变为就绪态,之后等待下一次进程调度。19进程的五状态模型2.进程的五状态模型20七种状态21调度的层次2.4进程调度2.4.1调度的概念1.调度的层次22高级调度(1)高级调度(HighLevelScheduling)又称作业调度、长程调度(Long-termScheduling)。在多道批处理操作系统中,作业是用户要求计算机系统完成的一项相对独立的工作,新提交的作业被输入到磁盘,并保存在一个批处理后备作业队列中。高级调度将按照系统预定的调度策略决定把后备队列作业中的部分满足其资源要求的作业调入到内存,为它们创建进程,分配所需资源,为作业做好运行前的准备工作并启动它们运行,当作业完成后还为它做好善后工作。在批处理操作系统中,作业首先进入系统在外存上的后备作业队列等候调度,因此,作业调度是必须的,它执行的频率较低,并和到达系统的作业的数量与速率有关。23中级调度(2)中级调度(MediumLevelScheduling)又称内存调度,中程调度(Medium-termScheduling)。它决定内存中所能容纳的进程数,这些进程将允许参与竞争CPU和有关资源,而有些暂时不能运行的进程被调出内存,这时这个进程处于挂起状态,当进程具备了运行条件,且内存又有空闲区域时,再由中级调度决定把一部分这样的进程重新调回内存工作。中级调度根据存储资源量和进程的当前状态来决定外存和内存中的进程的对换,它所使用的方法是通过把一些进程换出内存,从而,使之进入“挂起”状态,不参与低级调度,起到短期平衡系统负荷的作用。24低级调度(3)低级调度(LowLevelScheduling)又称处理机调度、进程调度(或线程调度)、短程调度(Short-termScheduling)。它的主要功能是按照某种原则决定就绪队列中的哪个进程能获得CPU。低级调度中执行分配CPU的程序称分派程序(dispatcher),它是操作系统最为核心的部分,执行十分频繁,低级调度策略优劣直接影响到整个系统的性能,因而,这部分代码要求精心设计,并常驻内存工作。25调度方式有两类低级调度方式:第一类称剥夺方式(抢占方式Preemptive):当一个进程或线程正在CPU上执行,若有另外一个更高优先级或紧迫的进程或线程产生,则立即暂停正在执行的进程或线程,把CPU分配给这个更高优先级或紧迫的进程或线程使用。第二类称非剥夺方式(不可抢占式Non-preemptive):一旦某个进程或线程开始执行后便不再出让CPU,除非该进程或线程运行结束或发生了某个事件不能继续执行。抢占式策略的开销比不可抢占式大,但由于可以避免一个进程或线程长时间独占CPU,因而,能给进程或线程提供较好的服务。对不同调度类型,相应的调度算法也不同,低级调度的核心是采用何种算法把CPU分配给进程或线程。26调度的功能与时机2.进程调度的功能(1)记录系统中所有进程的执行情况(2)选择占有CPU的进程(3)进行进程执行环境的切换3.进程调度的时机有关调度处理的一个关键问题是何时进行调度决策。(1)进程创建时(2)进程退出时(3)进程阻塞时(4)I/O中断发生时272.4.3交互式系统的调度1.时间片轮转法(RoundRobin)轮转法调度也称之为时间片调度,是一种最古老、最简单、最公平且使用最广的算法。具体做法是调度程序每次把CPU分配给就绪队列的第一个进程使用一个时间片(Quantum),例如100ms,就绪队列中的每个进程轮流地运行一个这样的时间片。当这个时间片结束时,就强迫这个进程让出CPU,让它排列到就绪队列的尾部,等候下一轮调度。实现这种调度要使用一个间隔时钟。当一个进程开始运行时,就将时间片的值置入间隔时钟内,当发生间隔时钟中断时,就表明该进程连续运行的时间已超过一个规定的时间片。此时,中断处理程序就通知调度程序进行CPU的切换工作。28RR的性能指标29RRA:12B:5C:3D:630实验三专业:计算机科学与技术实验项目:进程管理模拟程序设计课程名称:操作系统课程代码:1761273实验时间:2018-12-11实验地点:23-409