首页 第三章进程描述和控制浙江工业大学

第三章进程描述和控制浙江工业大学

举报
开通vip

第三章进程描述和控制浙江工业大学第二部分进程管理为了提高计算机资源的利用率,采用多道程序设计技术,程序并发执行环境带来了结果不可再现性的问题。为此第二部分引入进程概念用以描述程序并发执行,进而深入分析进程的控制、同步、通讯和死锁等,用以解决程序并发执行带来的问题,使多道程序有效执行。并发性是操作系统最重要的特征,进程是操作系统最基本最重要的概念,进程管理是操作系统的重点和难点。教学要求 熟悉进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态、状态转换的条件,熟练掌握进程存在的唯一实体--进程控制块,熟悉进程上下文。 了解线程的...

第三章进程描述和控制浙江工业大学
第二部分进程管理为了提高计算机资源的利用率,采用多道程序设计技术,程序并发执行环境带来了结果不可再现性的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。为此第二部分引入进程概念用以描述程序并发执行,进而深入 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 进程的控制、同步、通讯和死锁等,用以解决程序并发执行带来的问题,使多道程序有效执行。并发性是操作系统最重要的特征,进程是操作系统最基本最重要的概念,进程管理是操作系统的重点和难点。教学要求 熟悉进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态、状态转换的条件,熟练掌握进程存在的唯一实体--进程控制块,熟悉进程上下文。 了解线程的概念、引入线程的好处和线程的应用。 熟悉进程间制约关系,掌握临界资源和临界区概念,掌握进程同步和进程同步机制,熟悉利用软件、硬件技术解决进程同步机制。 熟练掌握信号量机制(记录型信号量和semWait、semSignal操作)的概念、定义和实质,熟练掌握利用信号量机制实现进程互斥和同步。掌握利用信号量解决生产者-消费者等经典同步问题,掌握进程同步分析 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 掌握死锁的定义和产生死锁的原因,掌握死锁的四个必要条件;熟悉预防死锁的方法,熟练掌握银行家算法及其在死锁避免中的应用;掌握资源分配图的简化及其死锁定理,熟悉解除死锁的方法。进程描述和控制第3章多道程序操作系统设计要求 操作系统必须交替执行多个进程,在合理的响应时间内使处理器的利用率最大化 操作系统必须按照特定的策略给进程分配资源,并需要避免死锁和饿死的情况 进程间需要进行正确的通信为什么要引入进程的概念? 为了提高资源利用率,系统采用多道程序设计,程序执行环境由顺序执行变为并发执行。 由于程序在并发执行时,可能会造成执行结果的不可再现,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念---进程来描述程序的并发执行,并要对进程进行必要的管理,以保证进程在并发执行时结果可再现。什么叫进程? 进程这一术语最早由麻省理工学院著名的操作系统MULTICS中提出。 进程(Process)定义:“可并发执行的程序在一个数据集合上的运行过程”。 一段可执行的程序 计算机中正在运行的程序的一个实例 可以分配给处理器并由处理器执行的一个实体 由一个顺序的执行线程、一个当前的状态以及一组相关的系统资源所描述的活动单元儿子摔伤程序输入数据输出进程切换CPU进程的特征动态性:动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂停,并由撤消而死亡。而程序是静态的,它是存放在介质上一组有序指令的集合,无运动的含义。并发性:并发性是进程的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时运行。独立性:进程是一个能独立运行的基本单位,即是一个独立获得资源和独立调度的单位。异步性:进程按各自独立的不可预知的速度向前推进,即进程按异步方式进行,正是这一特征,将导致程序执行的不可再现性,因此OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调运行。结构特征:从结构上,进程实体由程序段、数据段和进程控制块三部分组成。进程控制块(ProcessControlBlock,PCB,) 包含描述进程的基本信息 标识符(Identifier) 进程状态(State) 优先级(Priority) 程序计数器(Programcounter) 内存指针(Memorypointers) 上下文数据(Contextdata) I/O状态信息(I/Ostatusinformation) 统计信息(Accountinginformation) 由操作系统创建并管理进程运行轨迹(进程内各指令的执行序列)两状态进程模型 系统中的进程处于两种状态之一: 运行态(Running) 未运行态(Not-running) 操作系统必须知道进程当前处于哪种状态中,以便于跟踪进程的执行——PCB。未运行态进程队列当操作系统创建一个新的进程时,该进程的状态初始化为未运行态,并加入到未行态队列中。进程创建创建新进程时,操作系统需要建立管理该进程的数据结构(PCB),并在主存中给它分配地址空间。父进程、子进程进程终止Q1:执行到40条指令时,两状态模型下,在非运行状态队列中时间最久的是哪个进程?Q2:调度的是哪个进程?为什么?在非运行状态队列中时间最久的是B进程,由于B仍在等待I/O操作的完成,因此调度C执行。进程状态模型改进 未运行状态 就绪状态(Readytoexecute) 阻塞状态(Blocked) 等待I/O操作完成 如果使用单个未运行队列,分派程序不能只考虑选择队列中等待时间最久的进程,而是查找那些未被阻塞且在队列中等待时间最久的进程。 每次遍历队列需要花费大量的时间,如何解决? 采用两个不同的队列五状态模型 运行(Running):占有CPU 就绪(Ready):除了CPU,其它所需资源都已占有,一旦得到处理机即可运行,则称此进程处于就绪状态 阻塞(Blocked):等待某些事件 新建(New):已经创建了PCB并保存在主存中,但程序代码和相关数据还没有读入主存 退出(Exit)五状态进程模型进程状态的转换三个基本状态之间可能转换和转换原因如下:就绪态――>运行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程,该进程便由就绪态转换为运行态。运行态――>阻塞态:处于运行态的进程在运行过程中需要等待某一事件发生后,才能继续运行,则该进程放弃处理机,从运行态转换为阻塞态。阻塞态――>就绪态:处于阻塞态的进程,若其等待的事件已经发生,进程由阻塞态转换为就绪态。运行态――>就绪态:处于运行状态的进程在其运行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由运行态转换为就绪态。 阻塞态――>运行态和就绪态――>阻塞态这二种状态转换不可能发生。各进程状态系统中各进程状态管理 处于运行态进程:如系统有一个处理机,则在任何一时刻,最多只有一个进程处于运行态。 处于就绪态进程:一般处于就绪态的进程按照一定的算法(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列RL。 处于阻塞态进程:处于阻塞态的进程排在阻塞队列WL中。两个队列:就绪队列和阻塞队列Q1:当某个等待的事件完成了,操作系统该如何操作?硬件上如何改善?Q2:如果操作系统考虑进程的优先级,则操作系统该将CPU分派给哪种进程?硬件上如何实现?多个阻塞队列当事件n发生时,在事件n等待队列中的所有进程都移进就绪队列中系统中各进程状态转换影响在一个多道程序设计的系统中,各进程状态转换会互相影响。 例如系统中一个运行态的进程A发生I/O请求后要等待I/O完成,它的状态也由运行态转换为阻塞态; 此时进程调度程序就会按照一定的算法,在就绪队列中选一个进程B,将处理机分给它,该B进程的状态也由就绪态转换为运行态。 如一个进程C等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。 如进程C从阻塞态转换为就绪态时,有一个进程D在CPU上运行。而系统采用抢占式调度算法,进程C的优先级又高于正在CPU上运行的进程D的优先级,则要发生抢占调度。即接下去的操作由进程调度程序将正在运行的进程D由运行态转换为就绪态,插入就绪队列。[例1]一个只有一个处理机的系统中,OS的进程有运行、就绪、阻塞三个基本状态。假如某时刻该系统中有10个进程并发执行,在略去调度程序所占用时间情况下试问:这时刻系统中处于运行态的进程数最多几个?最少几个这时刻系统中处于就绪态的进程数最多几个?最少几个这时刻系统中处于阻塞态的进程数最多几个?最少几个?解:因为系统中只有一个处理机,所以某时刻处于运行态的进程数最多只有一个。而最少可能为0,此时其它10个进程一定全部排在各阻塞队列中,在就绪队列中没有进程。而某时刻处于就绪态的进程数最多只有9个,不可能出现10个情况,因为一旦CPU有空,调度程序马上调度,当然这是在略去调度程序调度时间时考虑。处于阻塞态的进程数最少是0个。挂起(Suspended)进程 处理器运行的速度远远地快于I/O设备,运行一段时间后会出现所有进程都处于阻塞态(等待I/O操作),就绪态进程数为0,此时处理器必须等待。 如何解决? 扩充内存 将进程交换到磁盘,释放内存空间 当进程被交换到磁盘上,则该进程从阻塞状态转换到挂起状态一个挂起状态两个挂起状态 阻塞/挂起(Blocked/Suspend) 就绪/挂起(Ready/Suspend)挂起状态的特征进程处于挂起状态是指该进程不在主存中。 进程不能立即执行; 进程可能在等待某个事件,也可能不等待事件,即进程挂起与否与进程阻塞与否没有必然的联系。挂起状态的性质 静止就绪、静止阻塞:该进程都不可能被调度而执行。 处于静止阻塞状态的进程,其阻塞条件与挂起条件无关。当进程等待的事件出现后,该进程从静止阻塞转换为静止就绪。 进程可以由其自身挂起,也可由用户或OS等将之挂起。被挂起的进程是只能被显式方式来激活,以便从挂起状态中解脱出来。例题1:为什么要引入进程概念?进程的基本特征是什么?它与程序有何区别?2:在操作系统中进程是一个具有一定独立功能程序在某个数据集合上的一次﹎﹎A﹎﹎,进程是一个﹎﹎B﹎﹎概念,而程序是一个﹎﹎C﹎﹎的概念。在一单处理机中,若有5个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多有﹎﹎D﹎﹎个,最少有﹎﹎E﹎﹎个。A:(1)并发活动;(2)运行过程;(3)单独操作;(4)关联操作。B,C:(1)组合态;(2)关联态;(3)运行态;(4)等待态;(5)静态;(6)动态。D,E:(1)1;(2)2;(3)3;(4)4;(5)5;(6)0。2.A-2B-6C-5D-4E-63:我们常用进程状态转换图来 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 处理机管理的许多问题,例如下列进程状态转换图,请回答:(1)什么"事件"引起每次显著的状态转换?(2)在什么情况下,如果有的话,将发生下述因果转换?a.②--->①;b.③--->②;c.④--->①。(3)我们观察系统中所有进程时.常看到某一进程P产生的一次状态转换可能引起另一进程q作一次状态转换。试分析在什么情况下:a.进程P的转换③能引起进程q的转换①?b.进程P的转换④能引起进程q的转换②?4:从静态角度看,进程由﹎﹎A﹎﹎、﹎﹎B﹎﹎和﹎﹎C﹎﹎三部分组成,用户可通过﹎﹎D﹎﹎建立和撤消进程。A:(1)JCB;(2)DCB;(3)PCB;(4)PMT。B:(1)程序段;(2)文件体;(3)I/O;(4)子程序。C:(1)文件描述块;(2)数据空间;(3)EOF;(4)I/O缓冲区。D:(1)函数调用;(2)宏指令;(3)系统调用;(4)过程调用。4:A-3B-1C-2D-35:正在执行的进程由于其时间片完而被暂停执行,此时进程应从运行态变为﹎﹎A﹎﹎状态;处于阻塞/挂起状态的进程,在进程等待的事件出现后,应转变为﹎﹎B﹎﹎状态;若进程正处于运行态时,应终端的请求而暂停下来以便研究其运行情况(执行挂起进程原语),这时进程应转变为﹎﹎C﹎﹎状态,若进程已处于阻塞状态,则此时应转变为﹎﹎D﹎﹎状态,若进程已处于就绪状态,则此时应转变为﹎﹎E﹎﹎状态;执行解除挂起进程原语后,如挂起进程处于就绪/挂起状态,则应转变为﹎﹎F﹎﹎态,如处于阻塞/挂起状态,则应转变为﹎﹎G﹎﹎态;一个进程刚被创建时,它的初始状态为﹎﹎H﹎﹎。A,...,H:(1)阻塞/挂起;(2)阻塞;(3)就绪/挂起;(4)就绪;(5)执行。A-4B-3C-3D-1E-3F-4G-2H-3/4进程和资源描述图操作系统的控制结构 操作系统必须记录每个进程和资源当前状态的信息 操作系统利用表结构来管理 四种不同类型的表:内存表、I/O设备表、文件表和进程表内存表(MemoryTables)用于记录内存和外存的当前状态。 分配给进程的内存信息 分配给进程的外存信息 内存块的保护属性,如哪些进程可以访问哪些共享内存区域等 管理虚拟内存所需的其他信息I/O表(I/OTables)管理I/O设备和计算机通道的当前状态。 I/O设备是否可用?若已分配,则分配给哪个进程? 若正进行I/O操作,则需记录I/O操作的状态 I/O操作要读写的内存单元地址等文件表(FileTables) 文件是否存在? 文件在辅存中的位置 文件当前状态 文件相关的属性,如读写属性 管理文件所需的其他信息等 通常都由文件管理系统维护和使用进程表(ProcessTable) 进程放在什么位置? 进程当前的状态信息? 进程包括: 程序代码 相关数据 进程控制块PCB进程控制块 进程控制块的作用――进程存在的唯一实体进程控制块中记录进程存在和特性信息,它与进程同生死。创建一个进程就是为其建立一个PCB,当进程被撤消时,系统就回收它的PCB;OS对进程的控制是根据PCB来进行,对进程管理也通过对PCB管理来实现,所以进程控制块是进程存在的唯一实体。 PCB的信息 进程标识信息 处理器状态信息 进程控制信息 进程标识符:它用于唯一地标识一个进程。它有外部标识符(由字母组成,供用户使用)、内部标识符(由整数组成,为方便系统管理而设置)和创建该进程的父进程标识符三种。 处理器状态信息:它由处理器各种寄存器(通用寄存器、指令计数器、程序状态字PSW、用户栈指针等)的内容所组成,该类信息使进程被中断后重新执行时能恢复现场从断点处继续运行。 进程控制信息:它包括进程状态(running、ready、blocked)、队列(就绪、阻塞队列)、队列指针,调度参数:进程优先级、进程已执行时间和已等待时间、进程间通信的信号系统、进程所分配的内存空间指针等。进程控制块的典型信息进程控制执行模式 用户模式(目态) 通常在该模式下执行用户程序 权限较低 系统模式、控制模式或内核模式(管态) 在该模式下执行操作系统内核 可执行特权指令,权限更高三个问题 为什么需要两种执行模式? 保护操作系统和重要数据不受用户干扰 处理器如何知道当前系统处于哪个执行模式下? 程序状态字(PSW)中管理程序/用户模式位记录了当前系统所处的模式信息 模式如何切换? 用户调用操作系统服务(系统调用)或发生中断时,执行模式从用户模式切换到内核模式 当系统服务返回或中断返回到用户进程时,执行模式从内核模式切换到用户模式进程创建 给进程分配一个唯一的进程标识号 给进程分配空间 进程要执行的程序代码和数据 初始化进程控制块 如PC初始化为程序入口地址;进程状态初始化为就绪或就绪/挂起;进程优先级初始化为最低优先级等 将进程控制块加入到正确的队列中 如加入到就绪队列中 创建或扩充操作系统所需的其他数据结构 如审计文件进程切换若干问题: 何时发生切换? 发生进程切换,操作系统需要做什么? 进程切换和模式切换的区别?何时进行进程切换进程切换可以在操作系统从当前正在运行的进程中获得控制权的任何时刻发生。 中断 时钟中断、I/O中断、内存失效等 陷阱 进程运行时出现错误或异常 系统调用 请求I/O操作,如打开文件进程切换的实现步骤(1) 保存处理器的上下文环境,包括PC和其他寄存器 更新当前处于运行态的进程的进程控制块,如把进程状态改变为另一状态(就绪、阻塞、就绪/挂起或退出,具体哪种状态取决于发生进程切换的事件) 把上述进程的PCB移到相应的队列中(如就绪队列、事件i的阻塞队列等) 从就绪队列中选择另一个进程执行(进程调度)进程切换的实现步骤(2) 更新所选择进程的进程控制块,如把进程状态变为运行态 更新内存管理的数据结构,如基地址寄存器和界限寄存器(分段机制) 恢复处理器在被选择进程最近一次切换出运行态的上下文:载入PC和其它寄存器最后一次保存的值进程切换和模式切换的区别 模式切换是系统执行模式的改变,发生模式切换可以不改变正处于运行态的进程状态 进程切换时,操作系统必须使其运行环境发生改变 进程切换必然会存在模式切换(只有在内核模式下才能实现进程调度),但模式切换不一定会发生进程切换 进程切换比模式切换更复杂操作系统的执行操作系统是不是一个进程? 无进程的内核 在所有进程之外执行操作系统内核 当前正在运行的进程发生中断或产生系统调用时,控制权交给内核 操作系统代码作为一个在特权模式下工作的独立实体被执行 进程的概念只适用于用户程序在用户进程中执行 在用户进程的上下文中执行所有操作系统程序 操作系统是用户调用的一组例程,操作系统代码和数据位于共享地址空间中,被所有用户进程共享 内核模式下执行操作系统代码,但仍在当前的用户进程中,所以不需要执行进程切换基于进程的操作系统 操作系统作为一组独立的系统进程来实现 方便模块化地设计操作系统,适用于多处理器或多计算机环境下Unix/Linux进程控制原语1.fork系统调用创建新的子进程 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 :pid=intfork()fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程得到的返回值是新创建子进程的进程标识号。2.exec系统调用格式:(六种)intexecl(path,arg0,arg1,…,argn,(char*)0)char*path,*arg0,*arg1,…,*argn;exec调用进程的正文段被指定的目标文件的正文段所覆盖,其属性的变化方式与fork成功后从父进程那里继承属性的方式几乎是一样的。系统中绝大多数命令都是通过exec来执行的,不但shell进程所创建的子进程使用它来执行用户命令,shell进程本身和它的祖先进程也是用exec来启动执行的。如execlp(“/bin/ls”,”ls”,NULL);表示用ls覆盖/bin/ls,执行ls命令,在屏幕上列出当前目录下的文件和子目录3.exit系统调用终止进程执行格式:voidexit(status)intstatus;参数status是调用进程终止时传递给其父进程的值。0表示当前进程。4.wait系统调用阻塞进程格式:intwait(stat_loc)intstat_loc;wait调用将调用进程阻塞,直到该进程收到一个被其捕获的信号或者它的任何一个子进程暂停或终止为止。如果wait调用之前已有子进程暂停或终止,则该调用立即返回。示例:创建子进程的C语言程序#include<stdio.h>voidmain(){intpid;pid=fork();/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){execlp(“/bin/ls”,”ls”,NULL);}/*childprocess*/else{wait(NULL);printf(“childComplete”);exit(0);}/*parentprocess*/}程序执行说明该程序说明主进程创建了一个子程序后,二个进程并发执行的情况。 主进程在执行fork系统调用前是一个进程,执行fork系统调用后,系统中又增加了一个与原过程环境相同的子进程,它们执行程序中fork语句以后相同的程序,父和子进程中都有自己的变量pid,但它们的值不同,它是fork调用后的返回值,父进程的pid为大于0的值,它代表新创建子进程的标识符,而子进程的pid为0。 这样父子进程执行相同一个程序,但却执行不同的程序段。子进程执行if(pid==0)以后的大括号内的程序,即execlp语句;而父进程执行else以后的大括号内的程序。 父子进程并发执行,执行序列任意。但由于父进程执行的第一条语句是wait(null),它表示父进程将挂起,直到该进程的一个子进程暂停或终止为止,所以,只能子进程执行execlp语句。 子进程执行execlp语句后,它的原有正文段程序被指定的目标文件(ls)所复盖,并执行ls命令在屏幕上列出当前目录下的所有文件和子目录。 子进程执行完毕后退出,它发信号给等待它终止的父进程,激活它继续执行printf语句,在屏幕打印childcomplete,最后执行exit(0)自我终止。     举例:1、T:=T+1Print(T)T:=0T值分别为n+1,n+1,02、Print(T)T:=0T:=T+1T值分别为n,0,13、Print(T)T:=T+1T:=0T值分别为n,n+1,0失去可再现性计算结果与并发程序执行的速度有关返回父进程、子进程在非运行状态队列中时间最久的是B进程,由于B仍在等待I/O操作的完成,因此调度C执行。2.A-2B-6C-5D-4E-64:A-3B-1C-2D-3A-4B-3C-3D-1E-3F-4G-2H-3/4
本文档为【第三章进程描述和控制浙江工业大学】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_113440
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:建筑/施工
上传时间:2020-07-18
浏览量:1