学院:计算机科学学院专业:软件工程 2018 年 4 月 20 日姓名苗琪学号2016040121078班级2 班指导老师李琼课程名称操作系统实践成绩实验名称进程同步与互斥的模拟与实现1•实验目的目的:掌握软件方法和信号灯方法解决进程的同步与互斥问题
重点:进程的互斥、进程的同步、锁、PV 信号灯
难点:进程同步与互斥的实现
2•实验内容请使用 PV 信号灯方法解决并实现生产者一消费者问题
3•实验环境硬件环境:PC 机软件环境:Windows 操作系统,用 JAVA 语言实现;或 Linux 操作系统,用 C 语言实现
武谨欢細多複头验//消息类//缓冲类型//信号量//消息变量//设置信号量初4 •实验方法和步骤(含设计)要求:有问题分析过程,算法(用伪代码描述),流程图,源代码等
问题的描述如下:假设一组生产者进程卩,卩 2,…,P 和一组消费者进程 c,c,…,C,通过 n 个缓冲区组成缓冲池,共同完成“生产和消费”任务
每个缓冲区存放一个消息,生产者将生产出的消息放入空缓冲区,消费者从满缓冲区中取出消息
当所有缓冲区均满时,生产者必须等待消费者提供空缓冲区;当缓冲池中所有缓冲区全为空时,消费者必须等待生产者提供有消息缓冲区
另外,对所有生产者和消费者进程来说,把缓冲池看成一个整体,因此缓冲池是临界资源,即任何一个进程在对池中某个缓冲区进行“存”或“取”操作时须和其他进程互斥执行
用信号量机制来解决这种问题,首先定义下列公共信号量
① 信号量 mutex
初值为 1,用于控制互斥访问缓冲池
② 信号量 full
初值为 0,用于计数
full 值表示当前缓冲池中“满”缓冲区数
③ 信号量 empty
初值为 n,用于计数
Empty 值表示当前缓冲池中“空”缓冲区数
有限缓冲区生产者/消费者进程描述如下:typedefstruet{}item;typedefstru