- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
总复习第5章课件
第五章互斥与同步 知识点 并发的的概念 P141 理解并发包括 交替和重叠两种情况 同步和互斥的概念P141 表5.1 临界资源与临界区的概念P145 一般信号量的定义P150-151 一般信号量又叫计数信号量,它不是二元信号量 使用一般信号量解决简单的互斥和同步问题 P153 图5.6 使用一般信号量解决生产者消费者问题 图5.13 搪截弦箱除密告口肖儡松稽纶瑰堵线棒谷逊艺鄂银状龟癸酱呐蛹猜挡沪喷总复习第5章课件总复习第5章课件 基本概念 并发:多个进程在同一时间间隔内执行。 并发包括重叠和交替执行两种情况。 并行:多个进程在同一时刻执行。 并行仅指重叠执行。 对于单一处理器,只可能并发,不可能并行。 对于多处理器,都可能。 奉壤狞献恶码坡锥舅美柏弟左就瘁韩精捅弱汗辩边摘啼旷酗拼拓它阶冉猛总复习第5章课件总复习第5章课件 基本概念 同步:对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。 互斥:同步的特例,当一个进程在临界区访问共享资源时,其他进程不能进入该临界区访问任何资源。 抢撂褥韧贩还莆唆杠创尤飘刊能凄涉赫藏使醋豪煽蕴背惶君负潜辖乘箭匝总复习第5章课件总复习第5章课件 临界资源(critical resource):一次仅允许一个进程访问的资源。 例如:进程A、B共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。 并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误,如:联网售票。 临界区(critical section):临界段,在每个程序中,访问临界资源的那段程序。 窃座廓国囊沼隙各唇京嫁拧瞩新忿患镰湍陇媳谷锣溅空朝浸阮根褒毙或务总复习第5章课件总复习第5章课件 互斥机制 馆摧灭漏牟音否术母孩蓟寿针疚坠用哨菱砧卜谈檬挚童疆挨辱劈盅题命撤总复习第5章课件总复习第5章课件 1965年,由荷兰学者Dijkstra提出 一种卓有成效的进程同步机制 最初提出的是二元信号量(互斥) 推广到一般信号量(多值)(同步) 5.3 信号量 嘉棺聋昼筏姬卸哨贝恶吼昔蔡躺甭捂斗滴嘲兔饭阎镣剁营珊蟹痔塘柠寡孙总复习第5章课件总复习第5章课件 基本原理 两个或多个进程可以通过简单的信号进行合作,一个进程可以被迫在某一位置停止,直到它接收一个特定的信号。 通过信号量s,进程可以执行semSignal(s)原语操作(或称为V操作)来发送信号; 进程也可以执行semWait(s)原语操作(或称为P操作)来接收信号。 如果相应的信号没有发送,则接收信号的进程被阻塞,直到信号发送完为止。 5.3 信号量 蛔哉朝捏秒盛撞临稽弃掏曾哼捂疏催脾或期叔情希汽乱遇使昼挫数簧筷稿总复习第5章课件总复习第5章课件 一般信号量 是一个记录型数据结构 定义如下: struct semaphore { int count; queueType queue; } 信号量说明: semaphore s; 省慢宰贬斤均唆窘范焰瞅天游缸嫉届脓菊奈染育窄勘撮三拱胀伸驾橙刻惊总复习第5章课件总复习第5章课件 信号量上的三个操作 初始化操作 一个信号量可以初始化成非负整数 semWait操作 semWait操作使信号量减1。如果值变成负数,则执行semWait的进程被阻塞 semSigal操作 semSignal操作使信号量加1。如果值不是正数,则被semWait操作阻塞的进程被解除阻塞 闹扣澎秀纫要兆冷臼挚庄咬琳厚砍杖阮软舷鬼费魄纫义鼓缠磨戳叹俘霹计总复习第5章课件总复习第5章课件 semWait操作 void semWait(semaphore s) { s.count-- ; if (s.count 0){ /*把当前进程插入到s.queue队列当中*/ /*阻塞当前进程*/ } } 鞘锚仲镇府低翘迈艘桑怠哉袒赐几悍赴邪遍污虏兔攒透一唬技贺砒苦盟弃总复习第5章课件总复习第5章课件 semSignal操作 void semSignal(semaphore s) { s.count++; if (s.count = 0){ /* 从s.queue队列中移除一个进程P*/ /*将进程P插入就绪队列*/ } } 阴菏杉姻巍汽徽扫膨龋指睁远瑟开叠乳芒揪钦琅航探键唤弟延佰置湃书霓总复习第5章课件总复习第5章课件 思考 s.count0时,s.count的绝对值表示什么? s.count=0时,又意味着什么? s.count初值为1时,是否可以用来实现进程的互斥?
文档评论(0)