进程及进程管理

上传人:鲁** 文档编号:579228912 上传时间:2024-08-26 格式:PPT 页数:124 大小:1.62MB
返回 下载 相关 举报
进程及进程管理_第1页
第1页 / 共124页
进程及进程管理_第2页
第2页 / 共124页
进程及进程管理_第3页
第3页 / 共124页
进程及进程管理_第4页
第4页 / 共124页
进程及进程管理_第5页
第5页 / 共124页
点击查看更多>>
资源描述

《进程及进程管理》由会员分享,可在线阅读,更多相关《进程及进程管理(124页珍藏版)》请在金锄头文库上搜索。

1、第第4章章进程及进程管理进程及进程管理进程及进程管理进程及进程管理进程的引入进程的引入进程的引入进程的引入进程概念进程概念进程概念进程概念进程控制进程控制进程控制进程控制进程的相互制约关系进程的相互制约关系进程的相互制约关系进程的相互制约关系进程同步机构进程同步机构进程同步机构进程同步机构进程互斥与同步的实现进程互斥与同步的实现进程互斥与同步的实现进程互斥与同步的实现1进程及进程管理进程及进程管理主要内容主要内容进程引入进程引入进程及进程管理进程及进程管理进程的引入进程的引入21. 顺序程序及特点顺序程序及特点 (1) (1) 计算计算计算计算 程序的一次执行过程称为一个计算,它由许多简单操作

2、程序的一次执行过程称为一个计算,它由许多简单操作 所组成。所组成。 (2) (2) 程序的顺序执行程序的顺序执行程序的顺序执行程序的顺序执行 一个计算的若干操作必须按照严格的先后次序顺序地执一个计算的若干操作必须按照严格的先后次序顺序地执 行,这类计算过程就是程序的顺序执行过程。行,这类计算过程就是程序的顺序执行过程。进程及进程管理进程及进程管理进程的引入进程的引入3 (3) (3) 顺序程序的特点顺序程序的特点顺序程序的特点顺序程序的特点 单道系统的工作情况单道系统的工作情况 对用户作业的处理对用户作业的处理 首先输入用户的程序和数据;然后进行计算;最后打印计 算结果,即有三个顺序执行的操作

3、。 I:输入操作 C:计算操作 P:输出操作 P2 C2 I2 P1 C1 I1作业作业1作业作业2单用户系统中操作的先后次序图进程及进程管理进程及进程管理进程的引入进程的引入4 顺序程序的特点顺序程序的特点顺序性顺序性 处理机的操作严格按照程序所规定的顺序执行。封闭性封闭性 程序一旦开始执行,其计算结果不受外界因素的影响。可再现性可再现性 程序执行的结果与它的执行速度无关 (即与时间无关),而只与初始条件有关。 进程及进程管理进程及进程管理进程的引入进程的引入52. 并发程序并发程序 (1) (1) 多道系统的工作情况多道系统的工作情况多道系统的工作情况多道系统的工作情况 I1 I2 I3

4、I4C1C3C2P1P2 哪些程序段的执行必须是顺 序的?为什么? 哪些程序段的执行是并行 的?为什么?多用户系统中操作的先后次序图对对n个用户作业的处理个用户作业的处理 作业1: I1 C1 P1 作业2: I2 C2 P2 作业n: In Cn Pn进程及进程管理进程及进程管理进程的引入进程的引入6(2) (2) 什么是程序的并发执行什么是程序的并发执行什么是程序的并发执行什么是程序的并发执行 定义定义 若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠 的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即 使这种重叠是很小的一部分,也称这几个程序段是并发执行的。 三个并

5、发执行的程序段三个并发执行的程序段 并行语句记号并行语句记号 cobegin S1;S2; ;Sn ; coendPQR三个并发进程进程及进程管理进程及进程管理进程的引入进程的引入7(3) (3) 并发程序的特点并发程序的特点并发程序的特点并发程序的特点 失去程序的封闭性和可再现性失去程序的封闭性和可再现性 若一个程序的执行可以改变另一个程序的变量,那么,后 者的输出就可能有赖于各程序执行的相对速度,即失去了 程序的封闭性特点。 例:例: 讨论共享公共变量的两个程 序,执行时可能产生的不同 结果。程序A执行时对n做加 1的操作;程序B打印出n值, 并将它重新置为零。 程序程序A n := n+

6、1; 程序程序B print(n); n := 0; 共享变量的两个程序进程及进程管理进程及进程管理进程的引入进程的引入8 失去程序的封闭性和可再现性的讨论失去程序的封闭性和可再现性的讨论程序程序A的的n :=n+1与与程序程序B的两个语句的两个语句的关系的关系 n的赋值的赋值 打印的结果打印的结果 n的最终赋值的最终赋值 之前之前 10 11 0 之后之后 10 10 1 之间之间 10 10 0 程序程序A n := n+1; 程序程序B print(n); n := 0; 共享变量的两个程序进程及进程管理进程及进程管理进程的引入进程的引入9 程序与计算不再一一对应程序与计算不再一一对应一

7、个程序可以对应多个计算。例例1: I1 输入程序段输入程序段 I2 In例例2: 编译编译1C编译编译程序程序 编译编译2 编译编译n 程序并发执行的相互制约程序并发执行的相互制约间接的相互制约关系间接的相互制约关系 资源共享资源共享直接的相互制约关系直接的相互制约关系 公共变量公共变量一个程序对应多个计算的例子进程及进程管理进程及进程管理进程的引入进程的引入103. 什么是与时间有关的错误什么是与时间有关的错误 程序并发执行时,若共享了公共变量,其执行结果与各并发 程序的相对速度有关,即给定相同的初始条件,若不加以控 制,也可能得到不同的结果,此为与时间有关的错误。进程及进程管理进程及进程管

8、理进程的引入进程的引入进程概念进程概念进程及进程管理进程及进程管理进程概念进程概念11 1. 进程定义进程定义 运行运行运行运行 暂停暂停暂停暂停 运行运行运行运行进程及进程管理进程及进程管理进程概念进程概念 (1) (1) 什么是进程什么是进程什么是进程什么是进程 所谓进程,就是一个程序在给定活动空间和初始环境下, 在一个处理机上的执行过程。 (2) (2) 进程与程序的区别进程与程序的区别进程与程序的区别进程与程序的区别 程序是静态的概念,进程是动态的概念;程序是静态的概念,进程是动态的概念; 进程是一个独立运行的活动单位;进程是一个独立运行的活动单位; 进程是竞争系统资源的基本单位;进程

9、是竞争系统资源的基本单位; 一个程序可以对应多个进程,一个进程至少包含一个程序。一个程序可以对应多个进程,一个进程至少包含一个程序。 122. 进程的状态进程的状态 等待状态等待状态(wait) 进程正等待着某一事件的发生而暂时停止执行。这时, 即使给它CPU控制权,它也无法执行。 就绪状态就绪状态(ready) 进程已获得除CPU之外的运行所必需的资源,一旦得到 CPU控制权,立即可以运行。 (1) (1) 进程的基本状态进程的基本状态进程的基本状态进程的基本状态 运行状态运行状态(running) 该进程已获得运行所必需的资源,它的程序正在处理机上 执行。进程及进程管理进程及进程管理进程概

10、念进程概念13(2) (2) 进程状态的变迁进程状态的变迁进程状态的变迁进程状态的变迁 进程状态可能的变迁进程状态可能的变迁 运运 行行服务请求服务请求(请求请求I/O等等)服务完成服务完成/事件来到事件来到进程调度进程调度时间片到时间片到 等等 待待 就就 绪绪个别系统提供个别系统提供进程状态变迁图进程及进程管理进程及进程管理进程概念进程概念14 具有进程基本状态的变迁图具有进程基本状态的变迁图 运运 行行服务请求服务请求(请求请求I/O等等)服务完成服务完成/事件来到事件来到进程调度进程调度 等等 待待 就就 绪绪进程状态变迁图进程及进程管理进程及进程管理进程概念进程概念15 讨论进程状态

11、的变迁讨论进程状态的变迁 运运 行行1234 等等 待待 就就 绪绪变迁变迁1 变迁变迁3,是否会发生?需要什么条件?,是否会发生?需要什么条件?变迁变迁4 变迁变迁3,是否会发生?需要什么条件?是否会发生?需要什么条件?进程状态变迁的讨论进程及进程管理进程及进程管理进程概念进程概念16 例例1:讨论:讨论3个排序程序在不同的操作系统环境中执行结果个排序程序在不同的操作系统环境中执行结果 程序程序A:冒泡排序算法,在屏幕的左1/3处开设窗口显示其 排序过程; 程序程序B:堆排序算法,在屏幕的中1/3处开设窗口显示其排 序过程; 程序程序C:快速排序算法,在屏幕的右1/3处开设窗口显示其 排序过

12、程。 讨论讨论在不支持多进程的操作系统下运行和在支持多进程的在不支持多进程的操作系统下运行和在支持多进程的 操作系统下运行的情况操作系统下运行的情况 (3) (3) 讨论在多进程操作系统环境下程序的执行讨论在多进程操作系统环境下程序的执行讨论在多进程操作系统环境下程序的执行讨论在多进程操作系统环境下程序的执行进程及进程管理进程及进程管理进程概念进程概念17 在不支持多进程的操作系统下运行在不支持多进程的操作系统下运行 依次运行程序A、程序B、程序C。 在支持多进程的操作系统下运行在支持多进程的操作系统下运行建立进程A、B、C;对应的程序分别是程序A、B、C;若系统采用时间片轮转的调度策略,则在

13、屏幕上有3个窗口,同时显示3个排序过程。 实际上这3个程序在轮流地占用CPU时间,由于CPU的高速度,使我们看到的是这3个程序在同时执行。进程及进程管理进程及进程管理进程概念进程概念18 例例2:讨论:讨论2个程序在不同的操作系统环境中执行结果个程序在不同的操作系统环境中执行结果 程序C:打印工资报表的程序; 程序D:计算1000以内所有素数并显示最后结果。 讨论在不支持多进程的操作系统下运行和在支持多进程讨论在不支持多进程的操作系统下运行和在支持多进程 的操作系统下运行。的操作系统下运行。 进程及进程管理进程及进程管理进程概念进程概念19 在不支持多进程的操作系统下运行在不支持多进程的操作系

14、统下运行 依次运行程序C、程序D,可以看到,先是打印机不停 地打印工资报表,打完后,接着运行程序C,不停地计 算,最后显示所计算的结果。 在支持多进程的操作系统下运行在支持多进程的操作系统下运行建立进程C、D;对应的程序分别是程序C、D;由于进程C是I/O量较大的进程,而进程D是计算量较大的进程,故在系统进程调度的控制下,两个进程并发执行。可以看到打印机不断打印工资报表;而处理机不停地计算,最后屏幕显示计算的结果。进程及进程管理进程及进程管理进程概念进程概念203. 进程描述进程描述 (1) (1) 什么是进程控制块什么是进程控制块什么是进程控制块什么是进程控制块 描述进程与其他进程、系统资源

15、的关系以及进程在各个不 同时期所处的状态的数据结构,称为进程控制块 PCB (process control block)。 (2) (2) 进程的组成进程的组成进程的组成进程的组成进程进程控制块控制块PCB程序程序与与数据数据 程序与数据程序与数据 描述进程本身所应完成的功能 PCB 进程的动态特征,该进程与其他进程和系统资源的关系。 进程组成的示意图进程及进程管理进程及进程管理进程概念进程概念(3) (3) 进程控制块的主要内容进程控制块的主要内容进程控制块的主要内容进程控制块的主要内容 进程标识符进程标识符 进程符号名或内部 id号 进程当前状态进程当前状态 本进程目前处于何种状态大量的

16、进程如何组织?大量的进程如何组织?大量的进程如何组织?大量的进程如何组织?21wait_lpt_q_startPCB3PCB7 next打印机等待队列结构打印机等待队列结构runningPCB4 next运行指针运行指针ready_q_start PCB1PCB2PCB9就绪队列结构就绪队列结构next进程队列结构示例进程及进程管理进程及进程管理进程概念进程概念22 当前队列指针当前队列指针next 该项登记了处于同一状态的下一个进程的 PCB地址。 进程优先级进程优先级 反映了进程要求CPU的紧迫程度。 CPU现场保护区现场保护区 当进程由于某种原因释放处理机时,CPU现场信息被保存 在PC

17、B的该区域中。 通信信息通信信息 进程间进行通信时所记录的有关信息。 家族联系家族联系 指明本进程与家族的联系 占有资源清单占有资源清单 进程及进程管理进程及进程管理进程概念进程概念进程控制进程控制进程及进程管理进程及进程管理进程控制进程控制231. 进程控制的概念进程控制的概念 (1) (1) 进程控制的职责进程控制的职责进程控制的职责进程控制的职责 对系统中的进程实施有效的管理,负责进程状态的改变。 进程状态变化进程状态变化进程及进程管理进程及进程管理进程控制进程控制创建撤销无无有有消亡消亡等待运行运行等待等待唤醒就绪就绪等待等待 常用的进程控制原语常用的进程控制原语 创建原语、撤消原语、

18、阻塞原语、唤醒原语创建原语、撤消原语、阻塞原语、唤醒原语24(2) (2) 进程创建进程创建进程创建进程创建 进程创建原语的形式进程创建原语的形式 create (name,priority) name为被创建进程的标识符priority为进程优先级 进程创建原语的功能进程创建原语的功能 创建一个具有指定标识符的进程,建立进程的PCB结构。进程及进程管理进程及进程管理进程控制进程控制25PCB池池 进程创建原语的实现进程创建原语的实现 ab 1进程创建原语的实现框图进程创建原语的实现框图入口入口 查查PCB总链总链有同名有同名 ? 向向系系统统申申请请一一个个空的空的PCB 结构结构有空有空P

19、CB ? 将入口信息填入将入口信息填入PCB相应项相应项 将将PCB入就绪队列入就绪队列 将将PCB入总链队列入总链队列返回进返回进程程pid出错出错YN出错出错PCB池示意图进程创建原语流程图进程及进程管理进程及进程管理进程控制进程控制26(3) (3) 进程撤销进程撤销进程撤销进程撤销 进程撤销原语的形式进程撤销原语的形式 当进程完成任务后希望终止自己时使用进程撤消原语。 Kill (或exit) 进程撤销原语的功能进程撤销原语的功能 撤消当前运行的进程。将该进程的PCB结构归还到PCB资 源池,所占用的资源归还给父进程,从总链队列中摘除 它,然后转进程调度程序。进程及进程管理进程及进程管

20、理进程控制进程控制27 进程撤销原语的实现进程撤销原语的实现 入口入口由运行指针得当前进程的由运行指针得当前进程的pid释放本进程所占用的资源给父进程释放本进程所占用的资源给父进程该进程从总链队列中摘下该进程从总链队列中摘下释放释放PCB结构结构转进程调度转进程调度进程撤销原语流程图进程及进程管理进程及进程管理进程控制进程控制28(4) (4) 进程等待进程等待进程等待进程等待 进程等待原语的形式进程等待原语的形式 当进程需要等待某一事件完成时,它可以调用等待原语挂 起自己。 susp(chan) 入口参数chan:进程等待的原因 进程等待原语的功能进程等待原语的功能 中止调用进程的执行,并加

21、入到等待chan的等待队列中; 最后使控制转向进程调度。进程及进程管理进程及进程管理进程控制进程控制29 进程等待原语的实现进程等待原语的实现 入口入口保护进程的保护进程的CPU现场到现场到PCB结构中结构中置该进程为置该进程为”等待等待”状态状态将该进程将该进程PCB结构插入到等待结构插入到等待队列中队列中转进程调度转进程调度进程等待原语流程图进程及进程管理进程及进程管理进程控制进程控制30(5) (5) 进程唤醒进程唤醒进程唤醒进程唤醒 进程唤醒原语的形式进程唤醒原语的形式 当处于等待状态的进程所期待的事件来到时,由发现者进 程使用唤醒原语叫唤醒它。 wakeup(chan) 入口参数ch

22、an:进程等待的原因。 进程唤醒原语的功能进程唤醒原语的功能 当进程等待的事件发生时,唤醒等待该事件的进程。进程及进程管理进程及进程管理进程控制进程控制31 进程唤醒原语的实现进程唤醒原语的实现 入口入口找到该等待队列找到该等待队列将队列首进程移出此等待队列将队列首进程移出此等待队列将该进程置将该进程置为为”就绪就绪”状态,状态,并将并将PCB结构插入到就绪结构插入到就绪队列中队列中返回返回进程唤醒原语流程图进程及进程管理进程及进程管理进程控制进程控制进程之间的相互制约关系进程之间的相互制约关系进程及进程管理进程及进程管理进程之间的相互制约关系进程之间的相互制约关系321. 进程互斥的概念进程

23、互斥的概念 (1) (1) 临界资源临界资源临界资源临界资源 例例1:两个进程两个进程A、B共享一台打印机共享一台打印机 设:x代表某航班机座号,p1和p2两个售票进程,售票工 作是对变量x加1。这两个进程在一个处理机C上并发执 行,分别具有内部寄存器r1和r2。 进程及进程管理进程及进程管理进程之间的相互制约关系进程之间的相互制约关系33 例例2:两个进程共享一个变量:两个进程共享一个变量x 两个进程共享一个变量两个进程共享一个变量x时,时,两种可能的执行次序:两种可能的执行次序:A: p1: r1 := x;r1:= r1+1; x := r1 ; p2: r2:= x;r2 := r2+

24、1; x := r2 ;设设x的初值为的初值为10,两种情况下的执行结果:,两种情况下的执行结果: 情况情况A: x = 10+2 情况情况B: x = 10+1 B: p1: r1 := x; r1:= r1+1; x := r1 ; p2: r2:= x;r2 := r2+1; x := r2 ;进程及进程管理进程及进程管理进程之间的相互制约关系进程之间的相互制约关系34 临界区是进程中对公共变量 (或存储区)进行审查与修改的 程序段,称为相对于该公共变量的临界区。 临界资源的定义临界资源的定义 一次仅允许一个进程使用的资源称为临界资源。一次仅允许一个进程使用的资源称为临界资源。 硬件:如

25、输入机、打印机、磁带机等 软件:如公用变量、数据、表格、队列等(2) (2) 临界区临界区临界区临界区 x := x+1; csa 进程进程A进程进程B x := x+1; csb 进程临界区示意图进程及进程管理进程及进程管理进程之间的相互制约关系进程之间的相互制约关系35(3) (3) 互斥互斥互斥互斥 在操作系统中,当某一进程正在访问某一存储区域时,就 不允许其他进程来读出或者修改存储区的内容,否则,就 会发生后果无法估计的错误。进程间的这种相互制约关系 称为互斥。 x := x+1; csa 进程进程A进程进程B x := x+1; csb 进程临界区示意图进程及进程管理进程及进程管理进

26、程之间的相互制约关系进程之间的相互制约关系362. 进程同步的概念进程同步的概念 (1) (1) 什么是进程同步什么是进程同步什么是进程同步什么是进程同步 并发进程在一些关键点上可能需要互相等待与互通消息, 这种相互制约的等待与互通消息称为进程同步。 (2) (2) 进程同步的例进程同步的例进程同步的例进程同步的例 病员就诊病员就诊 看病活动:看病活动: 要病人去要病人去化验;化验; 等等化验结果;化验结果; 继续诊病;继续诊病;化验活动:化验活动: 需要进行化验需要进行化验 ? 进行进行化验;化验; 开出化验结果;开出化验结果; 进程同步活动示意图进程及进程管理进程及进程管理进程之间的相互制

27、约关系进程之间的相互制约关系37 共享缓冲区的计算进程与打印进程的同步共享缓冲区的计算进程与打印进程的同步 计算进程 cp和打印进程 iop公用一个单缓冲 缓冲区缓冲区bufiop cpABCDABCD两个进程共享一个缓冲区示意图进程及进程管理进程及进程管理进程之间的相互制约关系进程之间的相互制约关系进程同步机构进程同步机构进程及进程管理进程及进程管理进程同步机构进程同步机构381. 锁和上锁、开锁操作锁和上锁、开锁操作 (1) (1) 什么是锁什么是锁什么是锁什么是锁 用变量w代表某种资源的状态,w称为“锁” 。 (2) (2) 上锁操作和开锁操作上锁操作和开锁操作上锁操作和开锁操作上锁操作

28、和开锁操作 进程及进程管理进程及进程管理进程同步机构进程同步机构检测w的值 (是0还是1);如果w的值为1,继续检测;如果w的值为0,将锁位置1 (表示占用资源),进入临界区执行。 (此为上锁操作此为上锁操作)临界资源使用完毕,将锁位置0。 (此为开锁操作此为开锁操作) 39(3) (3) 进程使用临界资源的操作进程使用临界资源的操作进程使用临界资源的操作进程使用临界资源的操作 1W 进入临界区进入临界区csa 0W进程进程AW=0 ?= 0 1W 进入临界区进入临界区csb 0W进程进程BW=0 ?= 0两个进程使用临界资源的操作进程及进程管理进程及进程管理进程同步机构进程同步机构40(4)

29、 (4) 上锁原语和开锁原语上锁原语和开锁原语上锁原语和开锁原语上锁原语和开锁原语 上锁原语上锁原语算法 lock 输入:锁变量w 输出:无 test: if (w为1) goto test; * 测试锁位的值* else w=1; *上锁* 开锁原语开锁原语算法 unlock 输入:锁变量w 输出:无 w=0;*开锁* 进程及进程管理进程及进程管理进程同步机构进程同步机构412. 信号灯和信号灯和P、V操作操作 (1) (1) 什么是信号灯什么是信号灯什么是信号灯什么是信号灯 信号灯是一个确定的二元组 (s,q),s是一个具有非负初值 的整型变量,q是一个初始状态为空的队列。操作系统利 用信

30、号灯的状态对并发进程和共享资源进行控制和管理。 信号灯是整型变量。信号灯是整型变量。 变量值变量值 0 时,表示绿灯,进程执行;时,表示绿灯,进程执行; 变量值变量值 0 时,表示红灯,进程停止执行。时,表示红灯,进程停止执行。 注意:创建信号灯时,应准确说明信号灯注意:创建信号灯时,应准确说明信号灯 s 的意义和初值的意义和初值 (这个初值绝不能为负值这个初值绝不能为负值)。进程及进程管理进程及进程管理进程同步机构进程同步机构42(2) P (2) P 操作操作操作操作 P 操作的定义操作的定义 对信号灯s的 p操作记为 p(s)。p(s)是一个不可分割的原语操作,即取 信号灯值减1,若相减

31、结果为负,则调用p(s)的进程被阻,并插入到 该信号灯的等待队列中,否则可以继续执行。 P 操作的实现操作的实现 入入 口口 S-1 S S0 ?转进程调度转进程调度返回返回 入信号灯等待队列入信号灯等待队列 置置“等待状态等待状态”0 0 0 0P 操作原语流程图进程及进程管理进程及进程管理进程同步机构进程同步机构43(3) V (3) V 操作操作操作操作 V 操作的定义操作的定义 对信号灯s的 v操作记为 v(s)。v(s)是一个不可分割的原语操作,即取 信号灯值加1,若相加结果大于零,进程继续执行,否则,要帮助唤 醒在信号灯等待队列上的一个进程。 V 操作的实现操作的实现 入入 口口

32、S+ +1 S 从信号灯的等待队列中取出首元素从信号灯的等待队列中取出首元素 入就绪队列入就绪队列 置置“就就绪绪状状态态” 返回返回 S0 ?0 0V 操作原语流程图进程及进程管理进程及进程管理进程同步机构进程同步机构进程互斥与同步的实现进程互斥与同步的实现进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现441. 用用上锁原语和开锁原语实现进程互斥上锁原语和开锁原语实现进程互斥 (1) (1) 框图描述框图描述框图描述框图描述 上锁原语上锁原语进入临界区进入临界区csa 进程进程 pa开锁原语开锁原语上锁原语上锁原语进入临界区进入临界区csb 进程进程 pb开锁原语开锁原

33、语两个进程利用上锁、开锁原语实现互斥进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现45(2) (2) 程序描述程序描述程序描述程序描述 程序程序 task1 main( ) pa( ) pb( ) int w=1; * 互斥锁互斥锁 * cobegin lock(w); lock(w); pa( ); csa ; csb ; pb( ); unlock(w); unlock(w); coend 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现462. 用信号灯的用信号灯的P、V操作实现互斥操作实现互斥 (1) (1) 框图描述框图描述框图描述框图描述

34、设:mutex为互斥信号灯,初值为1。p(mutex)进入临界区进入临界区csa 进程进程 pa v(mutex)p(mutex)进入临界区进入临界区csb 进程进程 pb v(mutex)(2) (2) 程序描述程序描述程序描述程序描述两个进程利用信号灯的P、V操作实现互斥进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现47程序程序 task2 main( ) int mutex=1; * 互斥信号灯互斥信号灯 * cobegin pa( ); pb( ); coend pa( ) pb( ) p(mutex); p(mutex); csa ; csb ; v(mutex

35、); v(mutex); (3) (3) 信号灯可能的取值信号灯可能的取值信号灯可能的取值信号灯可能的取值 两个并发进程,互斥信号灯的值仅两个并发进程,互斥信号灯的值仅取取1、0和和1三个值。三个值。 mutex=1 表示没有进程进入临界区; mutex=0 表示有一个进程进入临界区; mutex=1 表示一个进程进入临界区, 另一个进程等待进入。 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现48 (4) (4) 例例例例 x代表某航班机座号,代表某航班机座号,pa和和pb两个售票进程,售票工作是两个售票进程,售票工作是 对变量对变量x加加1。试用信号灯的。试用信号灯的

36、P、V操作实现这两个进程的操作实现这两个进程的 互斥。互斥。 设:设:mutex为互斥信号灯,初值为为互斥信号灯,初值为1。pa a( ) pb b( ) p(mutex); p(mutex); x:=x+1 ; x:=x+1 ; v(mutex); v(mutex); 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现493. 两类同步问题的解法两类同步问题的解法 (1) (1) 合作进程的执行次序合作进程的执行次序合作进程的执行次序合作进程的执行次序 进程流图进程流图 p3 s fp5p1p2p4p6p9p10p8 f sp5p6p7 s f进程流图示例进程及进程管理进程

37、及进程管理进程互斥与同步的实现进程互斥与同步的实现50 例:例:pa、pb、pc为一组合作进程,其进程流图如图所示,为一组合作进程,其进程流图如图所示, 试用信号灯的试用信号灯的p、v操作实现这三个进程的同步。操作实现这三个进程的同步。pbpcpa f s 分析任务的同步关系分析任务的同步关系 任务启动后 pa先执行,当它结束后,pb、pc可以 开始 执行, pb、pc 都执行完毕后,任务终止。 信号灯设置信号灯设置 设两个同步信号灯sb、sc分别表示进程pb和pc能否开 始执行,其初值均为0。 同步描述同步描述 pa pb pc p(sb ); p(sc ); v(sb ); v(sc );

38、 3个合作进程 的进程流图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现51pbpcpa f s程序程序 task4 main( ) int sb=0; *表示表示pb进程能否开始执行进程能否开始执行* int sc=0; *表示表示pc进程能否开始执行进程能否开始执行* cobegin pa( ); pb( ); pc( ); coend pa( ) pb( ) pc( ) p(sb); p(sc); v(sb); v(sc); 3个合作进程 的进程流图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现52(2) (2) 共享缓冲区的合作进程的同步的解

39、法共享缓冲区的合作进程的同步的解法共享缓冲区的合作进程的同步的解法共享缓冲区的合作进程的同步的解法 计算进程 cp和打印进程 iop公用一个单缓冲,为了完成正确的计算与打印,试用信号灯的p、v操作实现这两个进程的同步。 缓冲区缓冲区缓冲区缓冲区bufbufiop cp 两个进程的任务两个进程的任务 计算进程cp经过计算,将计算结果送入buf; 打印进程iop把buf中的数据取出打印。 共享缓冲区的合作进程的同步示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现53 信号灯设置信号灯设置 sa:表示缓冲区中是否有可供打印的 计算结果,其初值为0。 sb:表示缓冲区有无空位

40、置存放新的 信息,其初值为1。 分析任务的同步关系分析任务的同步关系 当cp进程把计算结果送入buf时,iop进程才能从buf中取出结 果去打印,否则必须等待。 当iop进程把buf中的数据取出打印后,cp进程才能把下一个 计算结果数据送入buf中,否则必须等待。 缓冲区缓冲区缓冲区缓冲区bufbufiop cp共享缓冲区的合作进程 的同步示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现54 同步描述同步描述 cp: iop: p(sa); 产生一个数据;产生一个数据; 从从buf中取中取 数据;数据; p(sb); v(sb); 将数据放入将数据放入buf ; 打印

41、;打印; v(sa); 程序描述程序描述 缓冲区缓冲区缓冲区缓冲区bufbufiop cp共享缓冲区的合作进程 的同步示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现55程序程序 task5main( ) int sa=0; *表示表示buf中有无信息中有无信息 * int sb=1; *表示表示buf中有无空位置中有无空位置* cobegin cp( );iop( ); coendcp( ) iop( ) while(计算未完成计算未完成) while(打印工作未完成打印工作未完成) 得到一个计算结果;得到一个计算结果; p(sa); p(sb); 从缓冲区中取一数

42、;从缓冲区中取一数; 将数送到缓冲区中;将数送到缓冲区中; v(sb); v(sa); 从打印机上输出;从打印机上输出; 缓冲区缓冲区缓冲区缓冲区bufbufiop cp共享缓冲区的合作进程 的同步示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现564. 生产者生产者消费者问题消费者问题 (1) (1) 生产者生产者生产者生产者消费者问题的例消费者问题的例消费者问题的例消费者问题的例 计算进程和打印进程计算进程和打印进程 计算进程 cp不断产生数据,是生产者; 打印进程 iop不断打印数据,是消费者。 通信问题通信问题 发消息进程 send不断产生消息,是生产者; 收

43、消息进程 receive不断接收消息,是消费者。 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现57(2) (2) 生产者生产者生产者生产者消费者问题的一般解答消费者问题的一般解答消费者问题的一般解答消费者问题的一般解答 生产者生产者消费者问题图示消费者问题图示 生产者与消费者的同步关系生产者与消费者的同步关系 生产者:当有界缓冲区中无空位置时,要等待; 向有界缓冲区放入物品后,要发消息。 消费者:当有界缓冲区中无物品时,要等待; 从有界缓冲区取出物品后,要发消息。c1p1 c2c3ckp2p3pm生产者消费者问题示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程

44、互斥与同步的实现58 信号灯设置信号灯设置 两个同步信号灯两个同步信号灯 sb :表示空缓冲区的数目,初值 = n sa : 表示满缓冲区 (即信息)的数目,初值 = 0 一个互斥信号灯一个互斥信号灯 mutex:表示有界缓冲区是否被占用,初值 = 1c1p1 c2c3ckp2p3pm生产者消费者问题示意图进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现59 同步描述同步描述 生产者生产者: 消费者消费者: p(sa) p(sb); p(mutex); p(mutex); 从从有界缓冲区有界缓冲区中取数据;中取数据; 将数据放入有界缓冲区将数据放入有界缓冲区; v(mute

45、x); v(mutex); v(sb); v(sa); 消费消费; 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现60 程序描述程序描述程序程序 prod_consmain( ) int sa=0; *满缓冲区的数目满缓冲区的数目* int sb=n; *空缓冲区的数目空缓冲区的数目* int mutex=1; *对有界缓冲区进行操作的互斥信号灯对有界缓冲区进行操作的互斥信号灯* cobegin p1 ( ); p2 ( ); pm ( ); c1 ( ); c2 ( ); ck ( ); coend进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现61

46、pi( ) cj( ) while(生产未完成生产未完成) while(还要继续消费还要继续消费) p(sa); 生产一个产品;生产一个产品; p(mutex); p(sb); 从有界缓冲区中取产品;从有界缓冲区中取产品; p(mutex); v(empty); 送一个产品到有界缓冲送一个产品到有界缓冲 v(sb); v(mutex); 消费一个产品;消费一个产品; v(sa); 进程及进程管理进程及进程管理进程互斥与同步的实现进程互斥与同步的实现进程通信进程通信进程及进程管理进程及进程管理进程通信进程通信62进程及进程管理进程及进程管理进程通信进程通信在消息通信中,接收方和发送方之间有明确的

47、协议和消息格式 。消息缓冲通信方式包括消息缓冲、发送原语和接收原语。 1. 进程通信的概念进程通信的概念 进程通信是指进程之间直接以较高的效率传递较多数据的信进程通信是指进程之间直接以较高的效率传递较多数据的信 息交互方式。息交互方式。 2. 进程通信方式进程通信方式(1) (1) 消息缓存通信消息缓存通信消息缓存通信消息缓存通信 63进程及进程管理进程及进程管理进程通信进程通信在信箱通信中,需要定义信箱结构,还包括消息发送 和接收功能模块,提供发送原语和接收原语。 信箱通信中,所使用的信箱可以位于用户空间中,是 接收进程地址空间的一部分;也可以放置在操作系统 的空间中。 (2) (2) 信箱

48、通信信箱通信信箱通信信箱通信 线程概念及特点线程概念及特点进程及进程管理进程及进程管理线程概念及特点线程概念及特点641. 什么是线程什么是线程(1) (1) 线程定义线程定义线程定义线程定义 线程是比进程更小的活动单位,它是进程中的一个执行路线程是比进程更小的活动单位,它是进程中的一个执行路 径。径。(2) (2) 线程可以这样来描述线程可以这样来描述线程可以这样来描述线程可以这样来描述进程及进程管理进程及进程管理线程概念及特点线程概念及特点 进程中的一条执行路径; 它有自己私用的堆栈和处理机执行环境 ; 它与父进程共享分配给父进程的主存; 它是单个进程所创建的许多个同时存在的线程中的一个。

49、65进程及进程管理进程及进程管理线程概念及特点线程概念及特点2. 线程的特点线程的特点 线程是比进程更小的活动单位,它是进程中的一个执行路 径。 创建一个线程比创建一个进程开销要小得多。 实现线程间通信十分方便,因为一个进程创建的多个线程 可以共享地址区域和数据。 线程是一个动态的概念。 在进程内创建多线程,可以提高系统的并行处理能力,加 快进程的处理速度。运 行 终止 创建 就绪 等待 3. 线程的状态变迁线程的状态变迁线程的状态变迁线程的状态变迁线程的状态变迁图66进程及进程管理进程及进程管理线程概念及特点线程概念及特点操作系统的并发机制实例操作系统的并发机制实例进程及进程管理进程及进程管

50、理操作系统的并发操作系统的并发机制实例机制实例进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例1. 创建进程及应用实例创建进程及应用实例(1) (1) 调用形式调用形式调用形式调用形式 pid=fork();功能功能:创建一个子进程,被创建的子进程是父进程的进 程映像的一个副本 (除proc结构外),在UNIX系统中,除 了0#进程外,其它进程都是通过调用进程创建系统调用 创建的。 67(2) (2) 系统系统系统系统调用调用调用调用 fork fork 完成的操作完成的操作完成的操作完成的操作 UNIX/Linux系统的核心为系统调用fork 完成下列操作: 为新进程

51、分配一个新的pcb结构; 为子进程赋一个唯一的进程标识号 (PID); 做一个父进程上下文的逻辑副本。由于进程的正文区 (代码段) 可被几个进程所共享,所以核心只要增加某个正文区的引用数即可,而不是真的将该区拷贝到一个新的内存物理区。这就意味着父子进程将执行相同的代码。数据段和堆栈段属于进程的私有数据,需要拷贝到新的内存区中。 增加与该进程相关联的文件表和索引节点表的引用数。这就意味着父进程打开的文件子进程可以继续使用。 对父进程返回子进程的进程号,对子进程返回零。68进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 从从子子进程返回进程返回打打印印: “这是子进程的执

52、行程序。” “这是父、子进程的共有执行程序” 从从父父进程返回进程返回 打打印印:“这是父进程执行程序。” “这是父、子进程的共有执行程序”(3) (3) 执行这个程序有执行这个程序有执行这个程序有执行这个程序有两两两两 种可能的结果种可能的结果种可能的结果种可能的结果69进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例例: main() int x; while(x=fork()= = - 1); if(x= =0) printf(“a”); else printf(“b”); printf(“c”); abcc?bcac?abcc?acbc? cabc?结果 ?70

53、进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例main() int child, i=2; if(child=fork() = 1) printf(fork error. );exit(); if(child=0) i=i+3; printf(“i=%dn”,i); i=i+5; printf(“i=%dn”,i);1.fork error2 . i=5 i=10 i=73. i=7 i=5 i=104. i=5 i=7 i=10插入else呢?71进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例父子1子2main( ) if(fork()=0

54、) 子1的代码段 else if(fork()=0) 子2的代码段 else 父代码段 main( ) if(fork()=0) 子1的代码段; if(fork()=0) 子2的代码段 else 子1的代码段 else 父代码段去掉这个去掉这个else谁执行这一段?谁执行这一段?子1子2父72进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 更换更换进程执行代码,更换正文段,数据段进程执行代码,更换正文段,数据段 调用调用格式:格式:exec (文件名,参数表,环境变量表)文件名,参数表,环境变量表) 例例 execlp(“max”,15,18,10,0); execv

55、p(“max”,argp)main() if(fork()=0) printf(“a”); execlp(“file1”,0); printf(“b”); printf(“c”);file1:main() printf(“d”);acd?cad?adc?abdc?adbcc?(4) exec-(4) exec-执行执行执行执行文件,启动新程序运行文件,启动新程序运行文件,启动新程序运行文件,启动新程序运行73进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例2. 创建线程及应用实例创建线程及应用实例(1) (1) 调用形式调用形式调用形式调用形式 pid=fork();p

56、thread_create(pthread_t *thread, pthread_attr_t*attr,void *(*start_routine)(void *), void *arg);74 (2) (2) 程序范例程序范例程序范例程序范例 #include #include #include void thread(void) int i; for(i=0;i3;i+) printf(This is a pthread.n); int main(void)pthread_tid;int i,ret;ret=pthread_create(&id,NULL,(void *) thread,

57、NULL);if(ret!=0) printf (Create pthread error!n); exit (1);for(i=0;i3;i+)printf(This is the main process.n);pthread_join(id,NULL);return (0);(3) (3) 运行结果?运行结果?运行结果?运行结果?75进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例3. 等待进程、线程的终止及其应用等待进程、线程的终止及其应用(1) (1) 等待进程终止等待进程终止等待进程终止等待进程终止 wait(); waitpid(); wait() 语法格

58、式语法格式 pid=wait(stat_addr); wait()函数使父进程暂停执行,直到它的一个子进程结束为 止,该函数的返回值是终止运行的子进程的PID。参数status 所指向的变量存放子进程的退出码,即从子进程的main函 数返回的值或子进程中exit()函数的参数。如果status不是一 个空指针,状态信息将被写入它指向的变量。76进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 waitpid() 语法格式语法格式 pid=wait(stat_addr); waitpid(pid_t pid,int * status,int options) 用来等待子进

59、程的结束,但它用于等待某个特定进程结束。 参数pid指明要等待的子进程的PID,参数status的含义与 wait()函数中的status相同。77进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 main( ) int n; . if(fork()=0) printf(“a”); exit(0); wait(&n); printf(“b”); printf(“c”);(2) wait-(2) wait-等待子进程结束等待子进程结束等待子进程结束等待子进程结束 与与与与 exit-exit-终止进程的使用终止进程的使用终止进程的使用终止进程的使用 方法方法方法方法 78

60、 例例1 进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例main() int p1,p2,p3,p4,p5,pp1,pp2; printf(“程序开始执行”); if (p1=fork( )= 0) printf(“进程proc1执行”); exit(1); else if (p2=fork() )= 0) printf(“进程proc2执行”); exit(1); pp1=wait(&pp1); /* 等待,直到子进程终止 */pp2=wait(&pp2); /* 等待,直到子进程终止 */79 例例2 程序程序 进程及进程管理进程及进程管理操作系统的并发操作系统的

61、并发机制实例机制实例 if (p3=fork()= 0) printf(“进程proc3执行”); else if((p4=fork())= 0) printf(“进程proc4执行”); else if((p5=fork())= 0) printf(“进程proc5执行”); exit(1); printf(“整个程序终止“); exit(0); 80进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例a. 画出描述子进程执行先后次序的进程流图。(各进程 分别用其对应的函数名或包含其进程号的符号名标识)。b. 这个程序执行时最多可能有几个进程同时存在?同时 存在的进程数最

62、多时分别是哪几个进程?c. 程序执行时,“整个程序终止”被输出几次?分别是 哪些进程输出的? 试回答如下问题试回答如下问题 81进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例b. 最多4个进程同时存在,分别是main、p3、p4、p5 。c. 3次,main、p3、p4 。 问题答案问题答案 a.p3p4 Fp2Sp1p582子进程进程执行的流图图进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例#include #include int main () pid_t pid; int status; pid=fork(); if (pid=0)

63、p6();exit(); else pid=fork(); if (pid=0 ) p5();exit(); wait(&status); wait(&status); p7(); 83 应用实例应用实例1 s fp5p6p73个合作进程 的进程流图进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例#include #include int A; void subp1() printf(Ain thread is %dn,A); A = 10;main() pthread_t p1; intpid; A = 0;84 应用实例应用实例2 进程及进程管理进程及进程管理操作系

64、统的并发操作系统的并发机制实例机制实例pid = fork();if (pid=0) printf(A in son process is %dn,A);A=100;exit(0);wait(); pthread_create(&p1,NULL,subp1,NULL); pthread_join(p1,NULL); printf(Ain father process is %dn,A); 运行结果?运行结果?A in son process isA in thread is A in father process is 1085进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机

65、制实例 Linux信号量函数在通用的信号量数组上进行操作,而不是在一个单一的信号量上进行操作。这些系统调用主要包括:semget、semop和semctl。4. 信号量及其使用方法信号量及其使用方法(1) (1) 信号量的创建信号量的创建信号量的创建信号量的创建 功能功能 创建一个新的信号量或是获得一个已存在的信号量键值。86进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 参数key是一个用来允许多个进程访问相同信号量的整数值,它们通过相同的key值来调用semget。 参数num_sems参数是所需要的信号量数目。Semget创建的是一个信号量数组,数组元素的个数即

66、为num_sems。 sem_flags参数是一个标记集合,与open函数的标记十分类似。低九位是信号的权限,其作用与文件权限类似。另外,这些标记可以与 IPC_CREAT进行或操作来创建新的信号量。一般用:IPC_CREAT | 0666 原型原型 int semget(key_t key, int num_sems, int sem_flags)键值87进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例(2) (2) 信号量的控制信号量的控制信号量的控制信号量的控制 原型原型 int semctl(int sem_id, int sem_num, int comman

67、d, .) 参数sem_id,是由semget所获得的信号量标识符。 参数sem_num参数是信号量数组元素的下标,即指定 对第几个信号量进行控制。 command参数是要执行的动作,有多个不同的ommand 值可以用于semctl。常用的两个command值为: SETVAL: 用于为信号量赋初值,其值通过第四个参数指定。 IPC_RMID:当信号量不再需要时用于删除一个信号量标识。88进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 如果有第四个参数,则是union semun,该联合定义如 下: union semun int val; struct semid_

68、ds *buf;unsigned short *array;(3) (3) 信号量的操作信号量的操作信号量的操作信号量的操作 原型原型 int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops)89进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 参数sem_id,是由semget函数所返回的信号量标识符。 参数sem_ops是一个指向结构数组的指针,该结构定义如下: num_sem_ops 操作次数,一般为1struct sembuf short sem_num; /数组下标 short sem_

69、op; /操作,-1或+1 short sem_flg; /090进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 P操作操作 void P(int semid,int index)struct sembuf sem; sem.sem_num = index; sem.sem_op = -1; sem.sem_flg = 0;/:操作标记:0或IPC_NOWAIT等 semop(semid,&sem,1); /1:表示执行命令的个数 return;91进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例 V操作操作 void P(int semid,

70、int index)void V(int semid,int index) struct sembuf sem; sem.sem_num = index; sem.sem_op = 1; sem.sem_flg = 0; semop(semid,&sem,1); return;92进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例5. 共享内存共享内存(1) (1) 功能功能功能功能 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区 域的指针。当一个进程改变了这块地址中的内容的时候, 其它进程都会察觉到这个更改。

71、 93进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例(2) (2) 共享内存创建共享内存创建共享内存创建共享内存创建 int shmget(key_t key,int size,int shmflg) 其中: key: 键值,多个需要使用此共享内存的进程用相同的 key来创建 shmflg: IPC_CREAT|0666 94进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例(3) (3) 共享内存绑定共享内存绑定共享内存绑定共享内存绑定 int shmget(key_t key,int size,int shmflg) int shmat (

72、int shmid, char *shmaddr, int shmflg) 其中: shmid:共享内存句柄,shmget调用的返回值; shmaddr:一般用NUL; shmflg: SHM_R|SHM_W S = (char *)shmat(shmid1,NULL,SHM_R|SHM_W)一旦绑定,对共享内存的操作即转化为对局部变量S的操 作。95进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例(4) (4) 共享内存的释放共享内存的释放共享内存的释放共享内存的释放 系统调用格式:int shmctl(shmid,cmd,buf); 其中: shmid:共享内存句柄

73、,shmget调用的返回值; cmd:操作命令shmctl(shmid,IPC_RMID,0)96进程及进程管理进程及进程管理操作系统的并发操作系统的并发机制实例机制实例进程调度进程调度进程及进程管理进程及进程管理进程调度进程调度(1) (1) 调度调度调度调度 在众多处于就绪状态的进程中,按一定的原则选择一个 进程。 (2) (2) 分派分派分派分派 当处理机空闲时,移出就绪队列中第一个进程,并赋予 它使用处理机的权利。 1. 调度调度 分派结构分派结构进程及进程管理进程及进程管理进程调度进程调度97(3) (3) 调度分派结构图调度分派结构图调度分派结构图调度分派结构图 ready_q s

74、cheduler susp wakeup receive pcb6pcb4pcb3pcb2pcb1 dispatcher CPU进程及进程管理进程及进程管理进程调度进程调度98调度/分派结构示意图(1) (1) 进程管理的数据结构进程管理的数据结构进程管理的数据结构进程管理的数据结构 (2) (2) 决定调度策略决定调度策略决定调度策略决定调度策略 优先调度优先调度 就绪队列按进程优先级高低排序 先来先服务先来先服务 就绪队列按进程来到的先后次序排序(3) (3) 实施处理机的分配和回收实施处理机的分配和回收实施处理机的分配和回收实施处理机的分配和回收2. 进程进程调度的功能调度的功能进程及进

75、程管理进程及进程管理进程调度进程调度99(1) (1) 什么是调度方式什么是调度方式什么是调度方式什么是调度方式 当一进程正在处理机上执行时,若有某个更为“重要而紧迫”的进程需要运行,系统如何分配处理机。(2) (2) 非剥夺方式非剥夺方式非剥夺方式非剥夺方式 当“重要而紧迫”的进程来到时,让正在执行的进程继续执行,直到该进程完成或发生某事件而进入“完成”或“阻塞”状态时,才把处理机分配给“重要而紧迫”的进程。(3) (3) 剥夺方式剥夺方式剥夺方式剥夺方式 当“重要而紧迫”的进程来到时,便暂停正在执行的进程,立即把处理机分配给优先级更高的进程。3. 进程进程调度的方式调度的方式进程及进程管理

76、进程及进程管理进程调度进程调度100(1) (1) 进程优先数调度算法进程优先数调度算法进程优先数调度算法进程优先数调度算法 什么是进程优先数调度算法什么是进程优先数调度算法 预先确定各进程的优先数,系统把处理机的使用权赋予就 绪队列中具备最高优先权 (优先数和一定的优先级相对应) 的就绪进程。 优先数的分类及确定优先数的分类及确定 静态优先数静态优先数 在进程被创建时确定,且一经确定后在整个进程运行 期间不再改变。4. 进程进程调度算法调度算法进程及进程管理进程及进程管理进程调度进程调度101 静态优先数的确定静态优先数的确定优先数根据进程所需使用的资源来计算优先数基于程序运行时间的估计优先

77、数基于进程的类型 动态优先数动态优先数 进程优先数在进程运行期间可以改变。 动态优先数的确定动态优先数的确定进程使用CPU超过一定数值时,降低优先数进程I/O操作后,增加优先数进程等待时间超过一定数值时,提高优先数进程及进程管理进程及进程管理进程调度进程调度102(2) (2) 循环轮转调度算法循环轮转调度算法循环轮转调度算法循环轮转调度算法 什么是循环轮转调度算法什么是循环轮转调度算法 当CPU空闲时,选取就绪队列首元素,赋予一个时间片,当 时间片用完时,该进程转为就绪态并进入就绪队列末端。 该队列排序的原则是什么?该队列排序的原则是什么? pcb1pcb2pcbnCPU完成完成进程及进程管

78、理进程及进程管理进程调度进程调度103简单循环轮转调度算法示意图 简单循环轮转调度算法简单循环轮转调度算法 就绪队列中的所有进程以等速度向前进展。 q = t/n t 为响应时间,n为进入系统的进程数目。 q 值的影响值的影响? 循环轮转调度算法的发展循环轮转调度算法的发展可变时间片轮转调度多重时间片循环调度进程及进程管理进程及进程管理进程调度进程调度1045. 调度用的进程状态变迁图调度用的进程状态变迁图 运行运行首先选择首先选择 100ms 因因 IO 而等待而等待 高优先高优先 就绪就绪 低优先低优先 就绪就绪进程调度进程调度进程调度进程调度时间片到时间片到请求请求I/OI/O完成完成其

79、次选择其次选择 500ms(1) (1) 一个调度用的进程状态变迁图的实例一个调度用的进程状态变迁图的实例一个调度用的进程状态变迁图的实例一个调度用的进程状态变迁图的实例进程及进程管理进程及进程管理进程调度进程调度105调度用的进程状态变迁图 进程状态进程状态运行状态低优先就绪状态高优先就绪状态因I/O而等待状态 队列结构队列结构低优先就绪队列高优先就绪队列因I/O而等待队列(2) (2) 调度用进程状态变迁图实例的分析调度用进程状态变迁图实例的分析调度用进程状态变迁图实例的分析调度用进程状态变迁图实例的分析进程及进程管理进程及进程管理进程调度进程调度106 进程调度算法进程调度算法 优先调度

80、与时间片调度相结合的调度算法优先调度与时间片调度相结合的调度算法 当CPU空闲时,若高优先就绪队列非空,则从高优先就 绪队列中选择一个进程运行,分配时间片为100ms。 当CPU空闲时,若高优先就绪队列为空,则从低优先就 绪队列中选择一个进程运行,分配时间片为500ms。 调度效果调度效果 优先照顾IO量大的进程;适当照顾计算量大的进程。进程及进程管理进程及进程管理进程调度进程调度107运行运行因因 IO而等待而等待高优先高优先 就绪就绪低优先低优先 就绪就绪34512变迁1 变迁3 变迁1 变迁4 变迁2 变迁3 (3) (3) 较复杂进程状态变迁的讨论较复杂进程状态变迁的讨论较复杂进程状态

81、变迁的讨论较复杂进程状态变迁的讨论进程及进程管理进程及进程管理进程调度进程调度108进程状态变迁图第第4章章 进程及进程管理进程及进程管理小结小结进程及进程管理进程及进程管理小结小结进程概念进程概念进程概念进程概念进程引入进程引入程序的顺序执行 定义 特点程序的并发执行 定义 特点进程定义进程定义定义进程与程序的区别进程状态进程状态三个基本状态、状态变迁图不同操作系统类型的进程状态变迁图进程描述进程描述PCB的定义与作用进程的组成线程定义线程定义进程及进程管理进程及进程管理小结小结109进程控制进程控制进程控制进程控制进程控制原语进程控制原语基本进程控制原语基本进程控制原语进程控制原语的执行与

82、进程状态的变化进程控制原语的执行与进程状态的变化进程创建、进程撤销原语的功能进程创建、进程撤销原语的功能进程等待、进程唤醒原语的功能进程等待、进程唤醒原语的功能进程的相互制约关系进程的相互制约关系进程的相互制约关系进程的相互制约关系进程互斥进程互斥临界资源临界资源互斥互斥临界区临界区110进程及进程管理进程及进程管理小结小结进程同步进程同步进程同步的概念进程同步的概念进程同步的例进程同步的例进程同步机构进程同步机构进程同步机构进程同步机构锁、上锁原语、锁、上锁原语、 开锁原语开锁原语信号灯及信号灯及P、V操作操作进程同步与互斥的实现进程同步与互斥的实现进程同步与互斥的实现进程同步与互斥的实现用

83、信号灯的用信号灯的P、V操作实现进程互斥操作实现进程互斥两类同步问题的解答两类同步问题的解答合作进程的执行次序合作进程的执行次序共享缓冲区的合作进程的同步共享缓冲区的合作进程的同步生产者生产者消费者问题及解答消费者问题及解答111进程及进程管理进程及进程管理小结小结操作系统的并发控制机制操作系统的并发控制机制操作系统的并发控制机制操作系统的并发控制机制创建进程、创建线程及其使用创建进程、创建线程及其使用等待进程、线程的终止及其使用等待进程、线程的终止及其使用 信号量与使用方法信号量与使用方法共享内存与使用方法共享内存与使用方法112进程调度进程调度进程调度进程调度进程调度的功能调度方式 非剥夺方式 剥夺方式常用的进程调度算法调度用的进程状态变迁图的分析进程及进程管理进程及进程管理小结小结

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号