处理器管理
第2章 处理器管理,2,重点: 多道程序设计的工作效率 进程和程序有什么区别 进程的基本状态以及状态的变化 处理器调度策略,3,2.1 多道程序设计 2.1.1 程序的顺序执行,什么是程序的顺序执行一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行过程。,4,对用户作业的处理首先输入用户的程序和数据然后进行计算最后打印计算结果即有三个顺序执行的操作I:输入操作C:计算操作P:输出操作,5,顺序环境,计算机系统中只有一个程序在运行 该程序独占系统中所有资源 其执行不受外界影响,6,顺序执行特征,程序执行的顺序性 程序执行的封闭性 独占资源,执行过程中不受外界影响 程序执行结果的确定性 程序结果的可再现性 程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同,7,2.1.2 程序的并行执行,处理器和外围设备能够并行 分成三个可独立执行的程序模块:输入程序,处理程序,打印程序 输入机,处理机,打印机并行工作 并发环境: 一定时间内,物理机器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的,8,程序1.1: I1 C1 P1程序1.2: I2 C2 P2 程序1.n: In Cn Pn,讨论: (1) 哪些程序段的执行必须是顺序的?为什么? (2) 哪些程序段的执行是并行的?为什么?,9,并发程序特征,(1)程序执行结果的不可再现性并发程序执行的结果与其执行的相对速度有关,是不确定的 (2)在并发环境下程序的执行是间断性的执行停执行 (3)资源共享,系统中资源被多个程序使用 (4)独立性和制约性独立的相对速度、起始时间程序之间可相互作用(相互制约)可分为直接作用和间接作用,10,2.1.3 多道程序设计,进一步提高效率,同时接纳两道或以上的计算问题 多道程序设计:让多个计算问题同时装入一个计算机系统的主存储器并行执行技术 “多道程序设计系统” :简称“多道系统”,即采用多道程序设计技术的计算机系统,11,多道程序设计的优点,利用了系统与外围设备的并行工作能力,从而提高工作效率 提高了处理器的利用率; 充分利用外围设备资源:计算机系统配置多种外围设备,采用多道程序设计并行工作时,可以将使用不同设备的程序搭配在一起同时装入主存储器,使得系统中各外围设备经常处于忙碌状态,系统资源被充分利用; 发挥了处理器与外围设备以及外围设备之间的并行工作能力; 从总体上说,采用多道程序设计技术后,可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率,12,可能延长程序的执行时间;,多道程序设计的缺点,13,多道程序设计的缺点,并行工作道数与系统效率不成正比。从表面上看,增加并行工作道数就可提高系统效率,但实际上并行工作道数与系统效率是不成正比,因为并行的道数要根据系统配置的资源和用户对资源的要求而定: (1)主存储器的大小限制了可同时装入的程序数量; (2)外围设备的数量也是一个制约条件; (3)多个程序同时要求使用同一资源的情况也会经常发生,14,多道程序设计小结,总之,多道程序设计能提高系统资源的使用效率,增加单位时间的算题量;但是对每个计算问题来说,从算题开始到全部完成所需要的时间可能延长,另外在确定并行工作道数时应综合系统的资源配置和用户对资源的要求,15,2.2 进程的概念,程序并发执行时,新的活动规律:执行 暂停 执行为了能正确反映程序执行时的活动规律和状态变化进程,16,2.2.1 进程的定义,进程:一个程序在一个数据集上的一次执行进程:是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位,17,进程与程序的区别,(1) 程序是静态的概念;进程是动态的概念(2)进程是暂时的,程序是永久的(3) 进程是一个独立运行的活动单位,是竞争系统资源的基本单位(4) 一个程序可以对应多个进程;一个进程至少包含一个程序,18,举例,比如在有一个用户程序notepad.exe(记事本),当它存放在磁盘上时,就是一个程序 在windows操作系统下运行它时,就会在内存中建立一个记事本程序的进程, 在记事本中编辑的当前文字就是这个进程的数据集,操作系统会为当前的进程设置一个进程控制块 如果再打开一个记事本程序的窗口,就会建立另一个进程,此时运行的是同一个程序,但存在两个进程,第二个窗口中的编辑内容就是第二个进程的数据集,19,2.2.2 为什么要引入进程,提高资源的利用率正确描述程序的执行情况 例:图2-5,20,2.2.3 进程的属性,进程是动态的,包括数据集和运行在数据集上的程序 多个进程可以含有相同的程序 多个进程可以并发执行 进程有三种基本状态,21,进程的基本状态,(1) 运行状态(running) :或称为执行状态 该进程已获得运行所必需的资源,它的程序正在处理机上执行 (2) 等待状态(wait) :也可以称为阻塞状态进程正等待着某一事件的发生而暂时停止执行。这时,即使给它CPU控制权,它也无法执行,则称该进程处于等待态(3) 就绪状态(ready)进程已获得除CPU之外的运行所必需的资源,一旦得到CPU控制权,立即可以运行,22,进程状态的变迁,运 行,等 待,就 绪,服务请求 (请求I/O等),服务完成/ 事件来到,进程调度 (选中),时间片到 (落选),23,状态变迁,运行态等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的 等待态就绪态 则是等待的条件已满足,只需分配到处理器后就能运行 运行态就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等 就绪态运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态,24,进程特性,动态性:进程是程序的一次执行,在执行过程中进程状态不断的变化 并发性:若干进程是可以同时执行的,它们轮流占用处理器交替执行 异步性:进程的执行速度取决于自身与外界原因以及进程调度策略,因此以不可预知的速度向前推进,25,思考题,1. 有没有这样的状态转换,为什么?等待运行;就绪等待 2. 一个状态转换的发生,是否一定导致另一个转换发生,列出所有的可能 3. 举3个日常生活中类似进程的例子 4.如果系统中有N个进程,运行的进程最多几个,最少几个;就绪进程最多几个最少几个;等待进程最多几个,最少几个?,26,第1题解答,(1)不能:等待就绪运行 (2)不能:就绪运行等待,27,第2题解答,就绪运行: 不一定(系统中仅一个进程) 转换条件:被调度程序选中 运行就绪: 一定(讨论就绪队列的长度) 转换条件:时间片到时,或有更高优先级的进程出现 运行等待: 不一定(考虑死锁) 转换条件:等待某事件发生 等待就绪: 不一定 转换条件:等待的事件发生,28,第3题解答,两个角度: “程序-数据-运行” “资源-调度-运行” 经典例子: “按照菜谱作菜” “乐队演奏” “向服务员请求服务”,29,第4题解答,运行进程最多1个,最少0个; 就绪进程最多N-1个,最少0个; 等待进程最多N个,最少0个;,30,2.3 进程控制块(PCB),当某程序和其他程序并发执行时,产生了动态特征,并由于并发程序之间的相互制约关系而造成了比较复杂的一个外界环境进程控制块pcb(process control block):也称为进程描述器(process descriptor),即描述进程与其他进程、系统资源的关系以及进程在各个不同时期所处的状态的数据结构,31,PCB的作用,为了管理进程设置的一个专门的数据结构,用来记录进程的外部特征,描述进程的运动变化过程(又称进程描述符、进程属性) 通过PCB,使得原来不能独立运行的程序(数据),成为一个可以独立运行的基本单位,一个能够并发执行的进程 系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志 进程与PCB是一一对应的,32,进程的组成,程 序与数 据,程序与数据;描述进程本身所应完成的功能; PCB:进程的动态特征,该进程与其他进程和系统资源的关系,进程 控制块PCB,33,进程控制块的基本内容,标识信息:含唯一的进程名 说明信息:是有关进程状态等一些与进程调度有关的信息 现场信息:是用于保留进程存放在处理器中的各种信息,主要由处理器内的各个寄存器的内容组成 管理信息:包括进程资源、控制机制等一些进程执行所需要的信息,34,进程控制原语,原语:完成特定的功能但不可中断的过程 主要用于实现操作系统的一些专门控制操作 分类: 创建原语: 为一个程序分配一个工作区和建立一个PCB,并置该进程为就绪态 撤销原语: 一个进程完成工作后,收回工作区和PCB 阻塞原语:进程运行过程中发生等待事件时,把进程状态改为等待态 唤醒原语:当等待的事件发生时,进程状态改为就绪态,35,进程的创建,引起进程创建的事件 用户登录 作业调度 提供服务 应用请求 进程创建的过程 为新进程分配唯一的进程标识符,并从PCB队列中申请一个空闲PCB 为新进程的程序和数据,以及用户栈分配相应的主存空间及其它必要分配资源 初始化PCB中的相应信息,如标识信息、处理器信息、进程控制信息等 如果就绪队列可以接纳新进程,便将新进程加入到就绪队列中,36,进程的撤消 引起进程撤消的事件 进程正常结束 在进程运行期间,由于出现某些错误和故障而使得进程被迫中止 进程应外界的请求而中止运行 进程撤消的过程 根据被终止进程的标识符,从PCB集合中检索该进程的PCB,读出进程状态 若该进程处于执行状态,则立即终止该进程的执行 若该进程有子孙进程,还要将其子孙进程终止 将该进程所占用的资源回收,归还给其父进程或操作系统 将被终止进程的PCB从所在队列中移出,并撤消该进程的PCB,37,进程的等待 引起进程等待的事件 请求系统服务 启动某种操作 新数据尚未到达 无新工作可做 进程等待的过程 立即停止执行该进程 修改进程控制块中的相关信息。把进程控制块中的运行状态由“执行”状态改为“等待”状态,并填入等待的原因,以及进程的各种状态信息 把进程控制块插入到等待队列。根据等待队列的组织方式,把等待进程的进程控制块插入到等待队列中 转调度程序重新调度,运行就绪队列中的其他进程,38,进程的唤醒引起进程唤醒的事件 请求系统服务得到满足 启动某种操作完成 新数据已经到达 有新工作可做 进程唤醒的过程 从等待队列中找到该进程 修改该进程控制块的相关内容。把等待状态改为就绪状态,删除等待原因等等 把进程控制块插入到就绪队列。按照就绪队列的组织方式,把被唤醒的进程的进程控制块插入到就绪队列中,39,2.4 进程队列,进程队列:把处于相同状态的进程链接在一起链接方式 由于进程控制块能标志进程的存在和动态刻画进程的特性,因此,进程队列可以用进程控制块的链接来形成。,40,进程基本队列,就绪队列:由若干就绪进程按一定次序链接起来的队列等待队列:把等待资源或等待某些事件的进程排列的队列运行队列,41,进程基本队列,42,进程队列,索引方式 系统根据所有进程的状态,建立几张索引表。在每个索引表的表目中,记录着具有相同状态的各个PCB在表中的地址,43,进程的入队和出队,出队和入队:当发生的某个事件使一个进程的状态发生变化时,这个进程就要退出所在的某个队列而排入到另一个队列中去 出队:一个进程从所在的队列退出的操作 入队:一个进程排入到一个指定的队列的操作 队列管理:系统中负责进程入队和出队的工作,44,进程的入队和出队(续),解决入,出队问题,首先找到该队列的队首指针,沿链找出要入队的进程以及它要插入的位置,或找出要出队的进程,然后修改本进程指针(入队情况)和相邻进程的有关指针值即可,