正在加载图片...
生产者消费者算法流程 生产者消费者算法小结 ■小结 消息 申请一个空白缓冲区:申请队列操作的互斥 在分析进程同步问题中,逐个分析进程间的关系 请队列操作的互斥:从消息队列中取一个消息 人空白队列中取一个 释放队列操作的互斥 ◆不管多复杂的关系,总能归结为两种基本关系 (竞争与合作),总是这两种关系的组合 释放队列操作的互斥:消费消息 在空白缓冲区内填充消息将消息清空为空白 ◆不管公用还是私用,信号量的使用必须成对出现 申请队列操作的互斥;申请队列操作的互斥 思考 消息放入消息队列 空白块放入空白队列 多个生产者之间是什么关系,需要特别的实现 释放队列操作的互斥;放队列操作的互斥 放一个消息信号 释放一个空白块信号 郾消费者之间是什么类系,需要特别的实现吗 332读者写者问题( Reader and writer) ◆问题描述 ◎一个数据纪录,有多个进程进行读操作,另一些进程进行修改操作 (Reader (Writer 读写策略 ◆允许多个进程同时进行读操作—读不互斥 不允许多于一个进程进行写操作—写互斥 不允许读写操作同时进行—读写互斥 读者写者问题分析 写者 (mtex)写者之间互斥 读者与写者之间互F 读操作读者之间鸟 写操作 34进程的通信 ◆进程之间的信息交换 低级通信 ◆进程的同步,简单的信号交换 ◆如:锁、信号量 高级通信一一进程通信 ◆高效、大量数据传递 341进程通信类型 1)共享存贮器 ◆共享数据 ◆共享存贮区生产者消费者算法流程 生产者 产生一个消息; 申请一个空白缓冲区; 从空白队列中取一个 空白缓冲区; 申请队列操作的互斥; 释放队列操作的互斥; 在空白缓冲区内填充消息 消息放入消息队列 申请队列操作的互斥; 释放队列操作的互斥; 释放一个消息信号 消费者 申请一个消息 申请队列操作的互斥; 释放队列操作的互斥 从消息队列中取一个消息; 消费消息 将消息清空为空白 空白块放入空白队列 申请队列操作的互斥; 释放队列操作的互斥; 释放一个空白块信号 生产者消费者算法小结 ◼ 小结: ◆在分析进程同步问题中,逐个分析进程间的关系 是关键 ◆不管多复杂的关系,总能归结为两种基本关系 (竞争与合作),总是这两种关系的组合 ◆不管公用还是私用,信号量的使用必须成对出现 思考 多个生产者之间是什么关系,需要特别的实现吗? 多个消费者之间是什么关系,需要特别的实现吗? 3.3.2 读者——写者问题(Reader and Writer ) ◆ 问题描述  一个数据纪录,有多个进程进行读操作,另一些进程进行修改操作 ❖ (Reader) ❖ (Writer)  读写策略 ❖ 允许多个进程同时进行读操作——读不互斥 ❖ 不允许多于一个进程进行写操作——写互斥 ❖ 不允许读写操作同时进行——读写互斥 读者写者问题分析 读者 写者 读操作 写操作 p(mutex mutex)) v(mutex mutex)) p(mutex mutex)) v(mutex mutex)) 写者之间互斥 读者与写者之间互斥 读者之间互斥 3.4 进程的通信 ◆ 进程之间的信息交换  低级通信 ❖ 进程的同步,简单的信号交换 ❖ 如:锁、信号量  高级通信--进程通信 ❖ 高效、大量数据传递 3.4.1 进程通信类型 1)共享存贮器 ❖ 共享数据 ❖ 共享存贮区
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有