3进程同步与通信(7学时).pptVIP

  • 1
  • 0
  • 约8.45千字
  • 约 45页
  • 2017-05-21 发布于北京
  • 举报
第3章 进程同步与通信 3.1 进程互斥与同步 3.2 互斥算法 3.3 信号量(semaphore) 3.4 进程通信 3.1 进程同步与互斥 3.1.1 进程间的制约关系 3.1.2 进程的同步 3.1.3 进程的互斥 3.1.1 进程间的制约关系 进程间的制约关系 间接制约:进行竞争--独占分配到的部分或全部共享资源,“互斥”. 进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间 直接制约:进行协作--等待来自其他进程的信息,“同步”。进程间的相互联系是有意识的安排的,直接作用只发生在相交进程间 3.1.2 进程的同步(直接作用synchronism) 指系统中一些进程需要相互合作,共同完成一项任务。具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态。 例: 司机 P1 售票员 P2 REPEAT REPEAT 启动 关门 正常运行 售票 到站停 开门 UNTIL FALSE UNTIL FALSE 3.1.3 进程的互斥(间接作用mutual exclusion) 3.2 互斥算法 3.2.1 临界区的访问过程 3.2.2 使用临界区应遵循的准则 3.2.3 进程互斥的软件方法 3.2.4 进程互斥的硬件方法 3.2.1 临界区的访问过程 临界区(critical section):进程中访问临界资源的一段代码。 进入区(entry section):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应正在访问临界区标志 退出区(exit section):用于将正在访问临界区标志清除。 剩余区(remainder section):代码中的其余部分。 3.2.2 使用临界区应遵循的准则 3.2.3 进程互斥的软件方法 2、算法描述 设有两个进程Pi、Pj,其中Pi访问临界区描述为: 3、单标志方法缺点 强制轮流进入临界区,没有考虑进程的实际需 要。容易造成资源利用不充分:在Pi出让临界区之 后,Pj使用临界区之前,Pi不可能再次使用临界区; 1、算法思想 设立一个标志数组flag[ ]:描述进程是否在临界区, 初值均为FALSE。 先检查,后修改:在进入区检查另一个进程是否在临界区,不在时修改本进程在临界区的标志; 在退出区修改本进程不在临界区的标志; 2、算法描述 设有两个进程Pi、Pj,其中Pi访问临界区描述为: 3、双标志、先检查方法优缺点 (1)优点:不用交替进入,可连续使用; (2)缺点:Pi 和 Pj可能同时进入临界区。在Pi 和 Pj都不在临界区时,假设按下面序列执行时,会同时进入:“Pia; Pja ; Pib; Pjb”。即在检查对方flag之后和切换自己 flag 之前有一段时间,结果都检查通过。这里的问题出在检查和修改操作不能连续进行。 3.2.4 进程互斥的硬件方法 完全利用软件方法,有很大局限性(如不适于多进程),现在已很少采用。 可以利用某些硬件指令--其读写操作由一条指令完成,因而保证读操作与写操作不被打断; 互斥算法(TS指令) 利用TS实现进程互斥:每个临界资源设置一个公共布尔变量lock,初值为FALSE 在进入区利用TS进行检查:有进程在临界区时,重复检查;直到其它进程退出时,检查通过; 硬件方法的优点[WS] 适用于任意数目的进程,在单处理器或多处理器上完全相同 简单,容易验证其正确性 支持多个临界区,只需为每个临界区设立一个布尔变量 硬件方法的缺点[WS] 等待要耗费CPU时间,不能实现让权等待 可能“饥饿”(不公平):从等待进程中随机选择一个进入临界区,有的进程可能一直选不上 3.3 信号量(semaphore) 3.3.1 信号量和P、V原语 3.3.2 利用信号量实现互斥 3.3.3 利用信号量来描述前趋关系 3.3.4 经典进程同步问题 3.3.1 信号量和P、V原语 1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的passeren (pass)和verhoog (increment)),是一种卓有成效的进程同步与互斥机制。 每个信号量 s 除一个整数值 s.count(计数)外,还有一个进程等待队列 s.queue,其中queue是指向PCB的队列 信号量只能通过初始化和两个标准的原语来

文档评论(0)

1亿VIP精品文档

相关文档