操作系统课程设计基于Windows进程互斥实现机制范文
- 格式:doc
- 大小:141.50 KB
- 文档页数:13
1
2020年4月19日
操作系统课程设计
基于Windows进程
互斥实现机制
文档仅供参考
2
2020年4月19日
操作系统课程实验报告
学生姓名:
班 学 号:193121
指导教师:袁国斌
中国地质大学计算机学院
12 月 4 日
文档仅供参考
3
2020年4月19日
实习题目:基于Windows进程互斥实现机制
【需求规格说明】
基于Microsoft Visual Studio环境的多线程编程验证互斥的原
理,理解多线程编程中关键元素的定义与使用,经过使用
Semaphore,mutex等控制元素,实现对生产者消费者模型的真实
模拟。函数的功能与实现自己定义。
【算法设计】
(1) 设计思想:
经过输入生产者消费者数量信息,以及缓冲区大小、循环次数
来实现对生产者消费者模型的真实模拟。当缓冲区Buffer为空
时,等待生产者生产,消费者停止消费;当缓冲区Buffer为满
时,等待消费者消费,生产者停止生产。
(2) 设计表示:
用Buffer_Size 定义缓冲区大小
用变量Thread[]数组来存储线程
使用函数调用ProducerPrintf()来输出生产的情况
使用函数调用ConsumerPrintf()来输出正在消费的情况
经过如下同步对象实现互斥:
文档仅供参考
4
2020年4月19日
设一个互斥量Mutex,实现生产者在查询和保留
缓冲区的下一个空位置时进行互斥。
设置Semaphore信号量数组表示相应产品已经生
产,实现生产者与消费者之间的同步。同时,用
表示空缓冲区树木的信号量semephore指示是否
存在空位置,实现类似的同步,以便开始下一个
产品的生产。
设置临界区对象数组Critical实现每个缓冲区上消
费者之间的互斥
(3) 详细设计表示:
主要过程:
1. 主函数
2. 输入并读取消费者生产者数量信息
3. 输入缓冲区大小及循环操作次数
4. 创立生产线程和消费线程完成线程相关同步对象的初始化
5. 创立线程,模拟生产者和消费者
6. 等待所有线程结束
7. 程序结束
消费者线程:
1. 有无消费请求?有,则继续,无,则结束
2. 进入临界区(请求同一产品的消费者之间互斥)
文档仅供参考
5
2020年4月19日
3. 消费产品,并判断是否应该释放产品所占缓冲区
4. 退出临界区
5. 结束消费者线程
生产者线程:
1. 存在空缓冲区?有,则继续;无,则阻塞退出
2. 进入临界区(请求同一产品的生产者之间互斥)
3. 在缓冲区中为本线程产品分配空间
4. 退出临界区
5. 写入产品到分配的缓冲区空间中
6. 结束生产者线程
【调试报告】