操作系统原理第四章(02)课件

上传人:我*** 文档编号:141782850 上传时间:2020-08-12 格式:PPT 页数:44 大小:300.50KB
返回 下载 相关 举报
操作系统原理第四章(02)课件_第1页
第1页 / 共44页
操作系统原理第四章(02)课件_第2页
第2页 / 共44页
操作系统原理第四章(02)课件_第3页
第3页 / 共44页
操作系统原理第四章(02)课件_第4页
第4页 / 共44页
操作系统原理第四章(02)课件_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《操作系统原理第四章(02)课件》由会员分享,可在线阅读,更多相关《操作系统原理第四章(02)课件(44页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 并发处理,2,4.3 进程控制4.3.1 进程控制的概念,进程有生命周期:产生、运行、暂停、终止。对进程的这些操作叫进程控制。 进程控制的职责是对系统中全部进程实施有效的管理,它是处理机管理的部分(另一部分是进程调度),当系统允许多进程并发执行时,为了实现共享、协调并发进程的关系,处理机管理必须提供对进程实行有效的管理。,3,4.3 进程控制4.3.1 进程控制的概念,五状态进程模型(状态变迁),4,4.3 进程控制4.3.1 进程控制的概念,五状态进程模型(多队列结构),5,4.3 进程控制4.3.1 进程控制的概念,进程控制包括: 进程创建 进程撤消 进程阻塞 进程唤醒 这些功

2、能由各种原语操作来实现。 原语:一种特殊的系统调用命令,它可以完成一个特定的功能。特点:原语执行时不可中断,即:具有原子性。,6,4.3 进程控制4.3.1 进程控制的概念,进程控制功能由各种原语操作来实现。 原语 一种特殊的系统调用命令,它可以完成一个特定的功能。 原语执行时不可中断,即:具有原子性。,7,4.3 进程控制4.3.1 进程控制的概念,在UNIX系统中进程控制的系统调用: fork() 创建子进程 sleep() 进程睡眠 exit() 进程自已终止(自杀) wait() (父)等待子进程终止 wakeup() 进程唤醒 在4.10节介绍。,8,4.3 进程控制4.3.1 进程

3、控制的概念Unix进程状态变迁图,9,4.3 进程控制4.3.2 进程创建,在UNIX系统中用户键入一个命令(如date, ps,ls),shell就创建一个进程。 一个程序如果可分成几个程序段,并且这些程序段可并发执行,用户程序可使用创建程序的系统调用创建多个进程,每个进程执行一个程序段。 进程创建类似于人出生后要到派出所报户口。,10,4.3 进程控制4.3.2 进程创建,进程创建原语: create(name,priority,start_addr) 其中: name:进程标识符; priority:进程优先级; start_addr:程序开始地址。 UNIX系统: fork(),11,

4、4.3 进程控制4.3.2 进程创建,12,4.3 进程控制4.3.2 进程创建,13,4.3 进程控制4.3.3 进程撤消,进程完成其任务,希望终止时,调用进程撤消原语来撤消进程。 相当于一个人死亡后,家人要去派出所消户口。 在一般操作系统中进程撤消的系统调用是:kill UNIX系统中是exit()。,14,4.3 进程控制4.3.3 进程撤消,算法 kill 输入:无输出:无 由运行指针得当前进程的pid; 释放本进程所占用的资源给父进程; 该进程从总链队列中摘除; 释放此pcb结构; 转进程调度程序; ,15,4.3 进程控制4.3.3 进程撤消,16,4.3 进程控制4.3.4 进程

5、挂起,当一个处在运行状态的进程,因等待某个事件的发生(如等待打印机)而不能继续运行时,将调用进程挂起系统调用,把进程的状态置为阻塞状态,并调用进程调度程序(等于让出处理机)。 调用进程挂起操作是在进程处于运行状态下执行的。它将引起等待某事件的队列的改变。,17,4.3 进程控制4.3.4 进程挂起,进程挂起的内部调用形式(UNIX系统): sleep(chan,pri) 其中: chan进程挂起(睡眠)的原因; pri 进程被唤醒后的优先级 一般调用形式: susp(chan) 其中:chan 进程等待的原因,18,4.3 进程控制4.3.4 进程挂起,算法 susp 输入:chan 等待的原

6、因输出:无 保护现行进程的CPU现场到pcb结构中; 置该进程为“等待”态; 将该进程pcb插入到等chan的等待队列; 转进程调度程序; ,19,4.3 进程控制4.3.4 进程挂起,20,4.3 进程控制4.3.5 进程唤醒,一个正在运行的进程会因等待某事件(例如,等待打印机)的发生,由运行状态转换成阻塞状态,当它等待的事件发生后,这个进程将由阻塞状态转换成就绪状态。这种转换由进程唤醒操作完成。 调用进程唤醒操作一般在中断处理、进程通信等过程中。例如,打印机完成中断处理程序,在完成了打印完成的操作后,就去检查等待打印机的队列,若不为空,则调用进程唤醒操作,唤醒一个(或多个)等待打印机的进程

7、。,21,4.3 进程控制4.3.5 进程唤醒,进程唤醒原语的形式: wakeup(chan) 其中:chan 唤醒进程阻塞的原因。,22,4.3 进程控制4.3.5 进程唤醒,算法:wakeup 输入:chan:等待的事件(阻塞原因) 输出:无 保护现行进程的CPU现场到pcb结构中; 置该进程为“就绪”态; 将该进程入就绪队列; 找到chan的等待队列的指针; for(该队列上每一个等待进程) 将该进程移出此等待队列; 置进程状态为“就绪”态; 将进程入就绪队列; 转进程调度程序; ,23,4.3 进程控制4.3.5 进程唤醒,按此算法,是把等待在chan事件上的所有进程唤醒,类似于UNI

8、X系统的处理方式。 也有的系统只唤醒一个等待chan事件的进程:等待队列就要按某种优先级排队。 进程唤醒操作会引起就绪队列和等待chan事件的等待队列发生变化。,24,4.4进程的相互制约关系,产生相互制约关系的原因: 资源共享 进程合作,25,4.5 进程互斥4.5.1 互斥的概念,引例: 宿舍电话的使用 打印机的使用 特点: 资源的使用过程: 申请资源; 使用资源(独占); 释放资源。,26,4.5 进程互斥4.5.1 互斥的概念,1. 临界资源 一次仅允许一个进程使用的资源称为临界资源。 引例中的电话和打印机都属于临界资源。除此之外,还有内存变量、指针、数组等等也是临界资源。,27,4.

9、5 进程互斥 4.5.1 互斥的概念,2、临界区: 每个进程中访问临界资源的那段程序段称为临界区。 例:右图中,Q为临界资源;AB段、CD段和EF段为临界区。,28,4.5 进程互斥 4.5.1 互斥的概念,进入临界区的准则: 有空让进 当无进程在临界区时,任何有权使用临界区的进程可进入 无空等待 不允许两个以上的进程同时进入临界区 有限等待 任何进入临界区的要求应在有限的时间内得到满足,29,4.5 进程互斥 4.5.1 互斥的概念,互斥 当某一进程正在访问某临界区时,就不允许其它进程进入,否则就会发生无法估计的错误。 进程之间的这种相互制约关系称为互斥。 例如:飞机定票系统中的机票库,30

10、,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法1:单标志,有两个进程Pi, Pj,其中的Pi:,设立一个公用整型变量 turn:描述允许进入临界区的进程标识 在进入区循环检查是否允许本进程进入:turn为i时,进程Pi可进入; 在退出区修改允许进入进程标识:进程Pi退出时,改turn为进程Pj的标识j。,31,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法1:单标志,缺点: 强制轮流进入临界区,没有考虑进程的实际需要。 容易造成资源利用不充分:在Pi出让临界区之后,Pj使用临界区之前,Pi不可能再次使用临界区。,32,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法2:

11、双标志、先检查,设立一个标志数组flag:描述进程是否在临界区,初值均为FALSE。 先检查,后修改:在进入区检查另一个进程是否在临界区,不在时修改本进程在临界区的标志,然后进入; 在退出区修改本进程在临界区的标志。,33,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法2:双标志、先检查,优点: 不用交替进入,可连续使用。 缺点: Pi和Pj可能同时进入临界区。 按下面序列执行时,会同时进入:“Pi Pj Pi Pj”。 原因:在检查对方flag之后和切换自己flag之前有一段时间,结果都检查通过。,34,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法3:双标志、后检查,类似于

12、算法2,与互斥算法2的区别在于先修改后检查。可防止两个进程同时进入临界区。,35,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法3:双标志、后检查,缺点: Pi和Pj可能都进入不了临界区。 按下面序列执行时,会都进不了临界区:“Pi Pj Pi Pj”。 原因:在切换自己flag之后和检查对方flag之前有一段时间,结果都切换flag,都检查不通过。,36,4.5 进程互斥 4.5.2 进程互斥的软件实现,算法4:先修改、后检查、后修改者等待,结合算法1和算法3,是正确的算法 turn=j;描述可进入的进程(同时修改标志时) 在进入区先修改后检查,并检查并发修改的先后: 检查对方fla

13、g,如果不在临界区则自己进入空闲则入 否则再检查turn:保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入先到先入,后到等待,37,4.5 进程互斥 4.5.3 锁和上锁、开锁操作,当进程使用某个临界资源之前必须完成下列操作: 1、考察锁位的值;(是否上锁) 2、若原来的值是为“0”(未上锁),将锁位置为“1”(上锁),并进入临界区; 3、若原来值是为“1”(已上锁),则转到1。 当进程使用完资源后,将锁位置为“0”(开锁)。 在考察锁位的值和上锁操作之间,锁位不得被其他进程所改变,通过原语来实现。 若不通过原语实现,会有什么问题?,38,4.5 进程互斥 4.5.3 锁和上锁、开锁操

14、作上锁原语,算法lock 输入:锁变量w 输出:无 test: if (w = 1) goto test;/*测试锁的值*/ else w = 1;/*上锁*/ ,39,4.5 进程互斥 4.5.3 锁和上锁、开锁操作开锁原语,算法unlock 输入:锁变量w 输出:无 w = 0;/*开锁*/ ,40,4.5 进程互斥 4.5.3 锁和上锁、开锁操作,上述算法的缺点: lock原语中的goto语句:忙等待。,41,4.5 进程互斥 4.5.3 锁和上锁、开锁操作 改进的算法,算法lock1 输入:锁变量w 输出:无 while (w = 1) 保护现行进程的CPU现场; 现行进程入w的等待队

15、列; 置该进程为“等待”状态; 转进程调度程序; w = 1;/*上锁*/ ,42,4.5 进程互斥 4.5.3 锁和上锁、开锁操作 改进的算法,算法unlock1 输入:锁变量w 输出:无 if (w等待队列不为空) 移出等待队列首元素; 置“就绪”状态; 将该进程入就绪队列; w = 0;/*开锁*/ ,43,4.5 进程互斥4.5.4 用上锁原语和开锁原语实现互斥,假设有两个进程共享打印机,两个进程中使用打印机的程序段为临界区。 为保证打印的正确,设置打印机的锁位print,其初值为“0”,表示打印机可以使用。,44,4.5 进程互斥4.5.4 用上锁原语和开锁原语实现互斥,main() int print = 0; cobegin ppa(); ppb(); coend ,ppa() ; lock(print); 使用打印机; unlock(print); ; ,ppb() ; lock(print); 使用打印机; unlock(print); ; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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