前言
课程设计开始了,实验很有意思,写博客总结学到的知识
白嫖容易,创作不易,学到东西才是真
本文原创,创作不易,转载请注明!!!
本文链接
个人博客:https://ronglin.fun/archives/177
PDF链接:见博客网站
优快云: https://blog.youkuaiyun.com/RongLin02/article/details/118308666
为了美观,实验源代码在结尾处,整合版见下
链接:https://pan.baidu.com/s/1rXj1QJGuw-BVc5sQWret9w
提取码:Lin2
操作系统课程设计源代码
本次操作系统课程设计合集
操作系统课设之Windows 进程管理
操作系统课设之Linux 进程管理
操作系统课设之Linux 进程间通信
操作系统课设之Windows 的互斥与同步
操作系统课设之内存管理
操作系统课设之虚拟内存页面置换算法的模拟与实现
操作系统课设之基于信号量机制的并发程序设计
操作系统课设之简单 shell 命令行解释器的设计与实现
仅用于学习,如有侵权,请联系我删除
实验题目
Windows 的互斥与同步
实验目的
(1) 回顾操作系统进程、线程的有关概念,加深对 Windows 线程的理解。
(2) 了解互斥体对象,利用互斥与同步操作编写生产者-消费者问题的并发程序,加深对 P (即semWait)、V(即 semSignal)原语以及利用 P、V 原语进行进程间同步与互斥操作的理解。
实验内容实验原理:
典型例题,生产者消费者问题,利用PV操作和Windows API实现生产者 消费者问题。
实验步骤:
在Windows下用codeblocks新建一个project,然后将指导书的代码复制到项目目录下的main.cpp文件下。多次运行查看结果。
修改代码,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。
修改代码,按程序注释中的说明修改信号量 EmptySemaphore 的初始化方法,看看结果有何不同。
实验结果与分析
源代码运行结果

符合预期,生产者生产一个,消费者消费,如此循环。
const unsigned short CONSUMERS_COUNT = 5; //消费者的个数
将消费者由1改成5个,结果如下

和不修改类似。
EmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL);
将信号量如上修改,结果无输出
符合预期,buff空的信号量最开始应该是等同于buff大小的,如果按照如上修改,buff空信号量初始化就是0,也就是buff一开始就是满的,但是实际上buff是空的。所以生产者P(

本文通过Windows下的生产者-消费者问题实例,介绍了如何使用互斥体和信号量进行线程间的同步与互斥操作,包括CreateMutex、CreateSemaphore等API函数的使用。
最低0.47元/天 解锁文章
5742





