- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[数学]第三章 进程同步与通信ok
软件学院软件基础教研室 计算机组成和操作系统 第三章 进程同步与通信 进程的同步与互斥 临界资源与临界区 信号量和PV操作 进程通信 引言 并发的进程之间的协作包括如下类型: 进程互斥 多个进程不能同时使用同一个资源,某个进程使 用该资源时,其他进程必须等待。 进程同步 多个进程的调用存在时序关系,某些进程的执行必须先于另一些进程。 进程通信 多个进程之间传递消息。 互斥和同步是进程并发的两个要素 1 临界资源和临界区 1.1 什么是临界资源和临界区 操作系统把一次仅允许一个进程使用的资源称为临界资源。 一个进程中访问临界资源的那段程序称为临界区。 临界资源和临界区 进程P1 进程P2 { { R1 = count; R2 = count; R1++; R2++; count = R1; count = R2; } } (设count的初始值为5) 为互斥地使用临界资源,需保证进程互斥地进 入临界区。 临界资源和临界区 1.2 临界区的进入准则 空闲让进:临界资源空闲时,允许进程进入临界区 忙着等待:临界资源正在被访问时,其他需要进入临界区的进程必须等待 有限等待:保证进程在有效的时间内进入临界区,避免“死等” 让权等待:当进程不能进入临界区时,应立即释放处理机,以免其它进程“忙等” 1.3 进程互斥进入临界区的实现方法 硬件方法 禁止中断 在进程进入临界区之后,禁止该进程中断 专用机器指令 TS指令,Swap指令 软件方法 信号量和PV操作 1.4 信号量 信号量是一个数据结构,其定义如下: struct semaphore { int value; struct PCB * queue; } 信号量semaphore包括一个整型值和一个等待队列。信号量只能通过P原语和V原语访问。 1.5 P原语和V原语的操作 1. P原语操作原型 void wait (semaphore s) // { s.value = s.value – 1; if (s.value 0) block(s.queue);//阻塞进程 } 2.V原语操作原型 void signal (semaphore s) { s.value = s.value + 1; if (s.value =0) wakup(s.queue);//唤醒进程 } 1.6 PV原语的作用 P原语的作用 申请临界资源,如果该资源正被其他进程使用,则等待。 V原语的作用 释放临界资源,如有其他进程等待该资源,则唤醒。 使用PV原语可以解决进程的互斥和同步 2.1 进程互斥和同步的作用 互斥的作用 保证各个进程不同时进入临界区,有效访问临界资源 同步的作用 保证进程运行的合理顺序 进程互斥和同步 2.2 进程互斥和同步的经典解决机制 忙等待模型 持续检查一个变量,直到它可用为止 睡眠-唤醒模型 通过PV原语操作保证进程间的互斥 消息传递模型 通过消息传送系统实现多进程之间的互斥 2.2.1 忙等待模型 模型思想 设定一个共享变量,标识临界区的状态。 互斥进程均检查这个变量,只有当其满足条件时方可进入临界区。 2.4.2 睡眠-唤醒模型 模型思想 临界资源不可用时,阻塞进程以节省CPU资源 互斥进程完成操作后,唤醒阻塞进程 模型实现方法 信号量机制 2.4.3 消息传递模型 模型思想 提供Send和Receive原语,用来传递消息 进程通过发送和接收消息来实现互斥与同步 模型要点 如何保证消息传递过程中不丢失 如何命
文档评论(0)