




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.3 进程及其实现进程的定义和属性进程的状态和转换进程的描述和组成进程切换与模式切换进程的控制和管理进程的定义和性质 进程定义: 进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配、保护和管理的基本单位。 进程是一个既能用来共享资源,又能描述程序并发执行过程的系统基本单位。 进程是一种有生命周期的动态实体,支持程序执行的系统机制。进程在执行过程中拥有独立的主存空间。操作系统为什么要引入进程概念?(1) 原因1-刻画系统的动态性,发挥系统的并发性,提高资源利用率。 程序是并发执行的,即不是连续而是走走停停的。程序的并发执行引起资源共享和竞争问题,执行的程序不再处在封
2、闭环境中。 “程序”自身只是计算任务的指令和数据的描述,是静态概念无法刻画程序的并发特性,系统需要寻找一个能描述程序动态执行过程的概念,这就是进程。操作系统为什么要引入进程概念?(2) 原因2-它能解决系统的“共享性”,正确描述程序的执行状态。 “可再用” 程序 “可再入” 程序 “可再入”程序具有的性质 “可再用” 程序:在调用它的程序退出之前,不允许其他程序来调用 “可再入” 程序:可以被多个程序同时调用“可再入” 程序举例 编译程序P(P的入口, 处 理 源程序甲)(P把源程序甲的信息记盘等磁盘完成)AB源程序甲源程序乙程序与进程之间的区别 进程更能真实地描述并发,而程序不能 进程是由程
3、序、数据和控制块三部分组成的 程序是静态的,进程是动态的 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的 一个程序可对应多个进程,一个进程可包含多个程序 进程具有创建其他进程的功能,而程序没有进程的属性结构性结构性:包含数据集合和运行在其上的程序共享性共享性:多个进程可共享一个程序动态性动态性:一次执行过程,有生命周期独立性独立性:体现在资源分配,系统调度上制约性制约性:运行时,要相互等待,相互制约并发性并发性:并发地执行进程的状态和转换运行态(运行态(RunningRunning): 进程占有CPU,并在CPU上运行就绪态(就绪态(ReadyReady):一个进程已经具备运行条件,
4、但由于无CPU,暂时不能运行的状态(当调度给其CPU时,立即可以运行)等待态(等待态(waitwait):又叫阻塞态、封锁态、睡眠态指进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行)进程三态模型及其状态转换运行态就绪态等待态选中落选出现等待事件等待事件结束 进程三态模型及其状态转换进程五态模型及其转换增加增加: :新建态,终止态新建态,终止态新建态(新建态(newnew) OS OS 已创建一进程所必要的工作已创建一进程所必要的工作 已构造了进程标识符已构造了进程标识符 已创建了管理进程所需的表格已创建了管理进程所需的表格 因为资源有限,推迟了新进程的提交因为资
5、源有限,推迟了新进程的提交,此时进程没此时进程没有进入就绪队列有进入就绪队列终止态(退出终止态(退出exit)exit)态态 中止后进程移入该状态中止后进程移入该状态 它不再有执行资格它不再有执行资格 表格和其它信息暂时由辅助程序保留表格和其它信息暂时由辅助程序保留 OSOS或其他进程完成了对终止态进程的善后处理(信息抽取)之或其他进程完成了对终止态进程的善后处理(信息抽取)之后,系统回收被占用资源,并删除该进程。后,系统回收被占用资源,并删除该进程。进程五态模型及其转换运行态就绪态等待态选中落选出现等待事件等待事件结束新建态终止态进程五态模型及其转换NULLNULL新建态新建态:创建一个子进
6、程。新建态新建态就绪态就绪态:系统完成了进程创建操作,且当前系统的性能和内存的容量均允许。运行态运行态终止态终止态:一个进程到达自然结束点,或出现了无法克服的错误,或被操作系统所终结,或被其他有终止权的进程所终结。终止态终止态NULLNULL:完成善后操作。就绪态就绪态终止态终止态:某些操作系统允许父进程终结子进程。进程的挂起 进程为什么要有“挂起”状态? 为了让某些进程暂时不参与低级调度,释放它占有的资源,以平滑系统负荷的目的而需引入挂起态; 进程挂起的原因 ? 引起进程挂起的原因多种多样。包括:资源不足;系统故障出现;用户调试程序等等。具有挂起功能的进程状态及其转换 挂起等待状态:进程在外
7、存并等待某事件的出现 挂起就绪状态:进程在外存,但只要进入内存,即可运行 就绪状态:进程在内存且可立即进入运行状态 等待状态:进程在内存并等待某事件的出现具有挂起功能的进程状态及其转换 挂起等待事件结束出现等待事件解除挂起挂起落选选中运行态就绪态等待事件结束终止态新建态挂起就绪态解除挂起挂起挂起等待态等待态提交提交具有挂起功能的进程状态及其转换挂起:把一个进程从内存转到外存可能有以下几种情况 等待挂起等待:没有进程处于就绪状态或就绪进程要求更多内存资源时,发生这种转换,以提交新进程或运行就绪进程 就绪挂起就绪:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优
8、先级就绪进程 运行挂起就绪:对抢占式系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到挂起就绪状态具有挂起功能的进程状态及其转换激活:把一个进程从外存转到内存;可能有以下几种情况: 挂起就绪就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,发生转换 挂起等待等待:当一个进程释放足够内存时,系统会把一个高优先级挂起阻塞(系统认为会很快出现所等待的事件)进程转换为等待状态。挂起进程具有如下特征 该进程不能立即被执行。 挂起进程可能会等待事件,但所等待事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 进程进入挂起状态是由于操作系统、父进程或进程本身阻止
9、它的运行。 结束进程挂起状态的命令只能通过操作系统或父进程发出。 进程的描述和组成(1) 进程映象 进程控制块 进程程序块 进程核心栈 进程数据块 进程用户线程内核线程进程的描述和组成(2) 操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文。 当系统调度新进程占有处理器时,新老进程随之发生上下文切换。进程的运行被认为是在上下文中执行。 进程的描述和组成(2)进程上下文组成用户级上下文:系统级上下文:寄存器上下文: 2进程控制块 进程控制块P C B ,是操作系统用于记录和刻划进程状态及有关信息的数据结构。也是操作系统掌握进程的唯一资料结构,它包括进程执行时的情况,以及进程让出处理器
10、后所处的状态、断点等信息。 进程控制块包含三类信息 标识信息 现场信息 控制信息 3 进程队列及其管理(1) 处于同一状态的所有PCB链接在一起的数据结构称为进程队列。 同一状态进程的PCB既可按先来先到的原则排成队列;也可按优先数或其它原则排队。 通用队列组织方式: 线性方式、 链接方式 索引方式。 进程入队和出队 进程队列及其管理(2) PCB表 PCB1 0PCB2 5PCB3 0PCB4 0 PCB5 0PCB6 4运行队列指针 就绪队列指针 等待队列1指针 等待队列2指针 PCBn 7 PCB7 0 空闲进程队列指针 链接方式运行队列指针 就绪表指针 等待表1指针 索引方式 PCB表
11、 PCB1 PCB2 PCB3 PCB4 PCB5 PCB6 PCBn 空闲表指针 就绪索引表 等待索引表1 等待表2指针Linux进程链表 双向循环链表(prev_task和next_task ) 进程可运行队列链表(prev_run和next_run ) 散列链表(pidhash_next和pidhash_pprev ) 等待队列链表( TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE ) 进程切换与CPU模式切换 进程切换是让处于运行态的进程中断运行,让出处理器,这时要做一次进程上下文切换、即保存老进程状态而装入被保护了的新进程的状态,以便新进程运行进程切换
12、的步骤 保存被中断进程的处理器现场信息 修改被中断进程的进程控制块有关信息,如进程状态等 把被中断进程的PSW加入有关队列 选择下一个占有处理器运行的进程 修改被选中进程的PSW的有关信息 根据被选中进程设置操作系统用到的地址转换和存储保护信息 根据被选中进程恢复处理器现场调度和切换时机问题 请求调度的事件发生后,就会运行低级调度程序,低级调度程序选中新的就绪进程后,就会进行上下文切换。实际上,由于种种原因,调度和切换并不一定能一气呵成。 通常的做法是,由内核置上请求调度标志,延迟到上述工作完成后再进行调度和进程上下文切换, Linux进程调度标志位need-resched,Windows延迟
13、过程调用DPC/dispatch软件中断。处理器模式切换 当中断/系统 调用发生时,暂时中断正在执行的用户进程,把进程从用户状态切换到内核状态,去执行操作系统服务程序以获得服务,这就是一次模式切换模式切换, 内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断可能不是此进程引起的模式切换的步骤1)保存被中断进程的处理器现场信息;2)处理器从用户态切换到核心态,以便执行服务程序或中断处理程序;3)如果处理中断,可根据规定的中断级设置中断屏蔽位;4)根据系统调用号或中断号,从系统调用表或中断入口表找到服务程序或中断处理程序地址。CPU上执行的进程所处活动范围 用户空间中,处于进程上下文,
14、用户进程在运行,使用用户栈。 内核空间中,处于进程上下文,内核代表某进程在运行,使用核心栈。 内核空间中,处于中断上下文,与任何进程无关,中断服务程序正在处理特定中断,Intel x86未提供中断栈,借用核心栈。UNIX/Linux中上下文切换和模式切换 核心态运行系统调用或中断(隐含模式切换)模式切换用户态运行等待状态就绪状态发生事件唤醒调度进程中断、中断返回允许的上下文切换切换Linux进程与任务 Linux把内核空间中运行的程序称为任务,而在用户空间中运行的程序称为进程。 系统中存在两种进程(任务):系统进程(任务)和用户进程(任务),实质上是指一个进程(任务)的两个侧面,。 两个进程(
15、任务)所执行的程序不同,映射到不同物理地址空间、使用不同的堆栈。进程的控制和管理(1) 处理器管理的一个主要工作是对进程的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。这些功能由操作系统中的原语实现。 原语原语是在管态下执行、完成系统特定功能的过程。 原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。进程的控制和管理(2) 进程创建 进程撤销 进程阻塞 进程唤醒 进程挂起 进程激活进程创建 步1在进程列表中增加一项,从PCB池中申请一个空闲PCB,为新进程分配惟一的进程标识符; 步2为新进程的
16、进程映像分配地址空间,以便容纳进程实体。进程管理程序确定加载到进程地址空间中的程序; 步3为新进程分配除主存空间外的其他各种所需资源; 步4初始化PCB,如进程标识符、处理器初始状态、进程优先级等; 步5把新进程状态置为就绪态,并移入就绪进程队列; 步6通知操作系统的某些模块,如记账程序、性能监控程序。Linux创建进程 fork( )-父子进程是独立的进程 clone( ) -父子进程允许共享资源 vfork( )-子进程租用父进程地址空间 创建进程的C语言程序 #include #include #include void main( ) int i; int p_id; if ( (p_id = fork( ) = = 0 ) /* 子进程程序 */ for ( i = 1; i 3; i + ) printf(This is child processn); else if (p_id = = -1) printf(“fork new process error!n”); exit(-1); else /* 父进程程序*/ for ( i = 1; i 3; i + ) printf(This is parent processn); 进程撤销 步1根据撤销进程标识号,从相应队列中找到并移出它; 步2将该进程拥有的资源归还给
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路公安签约协议书
- 政府金融招商协议书
- 简单版本挂靠协议书
- 林区治安联防协议书
- 工程监理挂靠协议书
- 安装资质挂靠协议书
- 部队运输协议书范本
- 工地误伤赔偿协议书
- 单位废旧处理协议书
- 股份赠送协议书范本
- GB/T 18655-2025车辆、船和内燃机无线电骚扰特性用于保护车载接收机的限值和测量方法
- 吉林省吉林市2024-2025学年高三下学期3月三模试题 生物 含答案
- 辽宁省协作校2024-2025学年度下学期高三第一次模拟考试语文+答案
- 2025年03月中央社会工作部所属事业单位公开招聘11人笔试历年参考题库考点剖析附解题思路及答案详解
- DZ∕T 0130-2006 地质矿产实验室测试质量管理规范(正式版)
- 《新疆大学版学术期刊目录》(人文社科)
- 小班语言绘本《小蛇散步》绘本PPT
- 门诊特定病种待遇认定申请表
- 文化遗产学概论:第七讲 遗产的完整性问题
- 装修项目技术标(范本)
- 二手车营销策划方案
评论
0/150
提交评论