- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程管理广西大学计算机与电子信息学院
第三章 进程管理 主讲:陈笑蓉 贵州大学计算机科学与技术学院 进程的引入和定义 进程状态及转换 进程的产生和终止 进程的描述 进程控制 进程互斥与同步 进程间通信 管道(pipe) 死锁问题 线程(Thread) 3.6 进程互斥与同步 1 进程互斥 为提高资源利用率采取了程序并发执行的办法。由于多个并发进程间对有限资源的争夺和共享而可能导致程序执行结果失去封闭性。 1. 临界资源和临界区(critical section) 临界资源(critical resource) ——一次只允许一个进程使用 临界区(critical section) ——进程中访问临界资源的那段代码 。若在一组并发进程的各自临界区中都使用了相同的共享变量,则称这组临界区为相关临界区。 例如:一个联网的航空售票系统 航空售票系统有n个终端分布在各地,通过网络连接到中心服务器。顾客通过在各地的终端购买飞机票。每个终端登录到服务器,服务器为每个终端建立一个售票进程,售票进程在卖票之前先检查总的飞机票数t是否大于或等于顾客所需飞机票数m,如果tm说明没有足量的飞机票可以卖给顾客;否则有票可以出售给顾客,每次卖飞机票给顾客后就把总的飞机票数t减去m。 //售票进程用伪码可以描述如下: sell(m) begin read(t); if (t≥m) then begin 售出m张飞机票给顾客; t:=t-m; end; else write(‘飞机票不足’); end 考虑这种情形 并发进程互斥执行的准则 并发的多个进程间在竞争资源时,如果能够避免对临界资源使用的冲突,就能保证并发进程执行结果的一致性和封闭性。即为保证执行结果的封闭性,多个并发进程共享临界区内的公有资源,但不允许并发进程同时进入临界区。 间接制约:这种由共享公有资源而造成的对并发进程执行速度的相互制约。 进程互斥:由进程间间接制约的关系导致的多个并发进程不能同时访问同一临界区 。 进程互斥执行必须满足的四个准则 (1)每次至多允许一个进程处于临界区内; (2)进程在有限时间内能够进入其临界区; (3)在其临界区之外停止的进程不应当阻塞别的进程; (4)对于有关的进程速度或者CPU数不作任何假定。 实现进程互斥的方法有硬件方法,如禁止中断,特殊的机器指令等;更多的是软件方法,如P、V原语,监控程序等。 2 互斥与同步机制 1. 禁止中断(Disabling Interrupts) 是最简单的方法,让每个进程在即将进入临界区之前关中断,在执行完对共享资源的操作的那一段程序之后又开中断。 两个弊端 赋予用户进程禁止中断的权力是很危险的事,因为如果用户关闭中断后就不再打开会导致系统停止。 执行效率也会明显降低,因为操作系统不能随时切换进程。 利用禁止中断实现进程互斥 : repeat disable interrupts //禁止中断 critical section //临界区 enable interrupts //开中断 until false 2. TS硬件指令(Test and Set) 专门的硬件指令,允许我们在一个存贮周期去测试和修改一个字的内容,或者交换两个字的内容。 function TS (var lock:Boolean):boolean; begin TS:=lock ; lock:=true ; end ----------------- 利用TS指令实现进程互斥 : repeat while TS (lock) do skip; critical section; lock:= false; until false 使用TS指令实现互斥有几个优点: (1)可用于任意数量进程的单处理机系统或共享主存的多处理机系统; (2)实现简单,易于验证; (3)支持多个临界区,每个临界区用自己的布尔变量lock标志。 TS指令的方法也存在严重缺陷: (1)由于采用的是忙等待策略,要不停地循环检测Lock值,浪费处理器资源,效率很低; (2)有可能有多个进程同时等待进入临界区,而选择哪一个进程进入临界区是随意的,这样就有可能导致某些进程长时间得不到临界区的访问权; (3)在单机系统中, 可能出现死锁。 信号量 3. 信号量和P、V原语 信号量:一个仅能由同步原语进行操作的整型变量,用来实现进程之间的互斥和同步。1965年由荷兰著名计算机科学家E.W.Dijkstra提出 。 分为 二元信号量:它仅允许取值0和1,主要用作互斥变量; 一般信号量:它允许取任意整数值,主要用于进程之间的同步。 信号量值为0时,说明
文档评论(0)