进程管理实验报告
1实验目的:
(1) (2)
理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题; 了解windows系统或unix/linux系统下中信号量的使用方法。
2. 实验内容
编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓 库,每个消费者每次从仓库中取出一个产品进行消费, 仓库大小有限,每次只能 有一个生产者或消费者访问仓库。要求:采用信号量机制。
3、环境说明
本实验是在win7环境下使用dev编译器实现的,采用 Win API的信号量机 制。
4、程序设计说明
该程序根据教材中的消费者生产者问题编写的,使用了教材中提供的框架思 路以及库函数,使用 CreateThread建立新的线程,使用CreateMutex创建一 个互斥信号量,使用 CreateSemaphore创建信号量,使用 ReleaseMutex释放 线程的互斥信号量,使用ReleaseSemaphore寸指定的信号量增加指定的值, 使用WaitForSingleObject等待空位,使用CloseHandle在操作结束后关闭线程 和信号量。
在这个程序里我设计了三个函数:
Int main ()是主函数,其中包含了缓冲区大小的设置,生产者消费者发 出请求等
内容以及线程创建等内容
DWORD WINA PI P roducer(L PVOID IpP a是生产者等待缓冲区的使用权并
对缓冲区进行操作
DWORD WINA PI co nsumer(L PVOIDI pP ara)是消费者等待缓冲区的使用权
并对缓冲区进行操作
该程序模拟生产者消费者问题,首先要设置缓冲区的大小,输入请求资源的 各个进程的信息以及请求时间,并且按照请求时间对各进程进行排序,创建线程, 然后按序依次对缓冲区进行操作,详细设计见源代码。
5、程序运行结果截图:
只有生产者请求,没有消费者请求,请求满足
11 I' F:AOS procure n^exe
冃 冃择区資 3圭 圭人进I 垦— 同择囂 Hi月 者进程-SJL 圭入 ;f( 请en 冃An主 賢圭- 小u产 者 进 程u第梆皺豔区…… 箒蠶鬆聽中区中放产品,请求时闾为弼 牛亡#1』無号产品放入缓神区…… 成功政入fe冲区* 只有消费者请求,没有生产者请求,消费者的请求不成功:
I F:\\OS pro cuter,exe
人程进土择垦人星求佃时背■ 垦请程■05? 垦设 求程 1 垦输时諾 Effisi $ss 2 盘 ^fflu -誥尽青置进源 3甫费者请束从缓神区中取产品'请求时间为4 消费者请求从缓沖区中取产品「请求时间为:2£ S ■ ^nr 聲
同
S2
1=1
、士
I F:\\OS pro cuter,ex e
生产者请求往缓冲区中枚产品\青求时间为2 生产者请求往缓冲区中放产品 「请求时间为4 Kld3 Jr- - £ - 2£ 55 SWS ffisis SS Bfi?ra r 1—^J—.1 Jtj- 「「入用求弧冒择壽程时应疋入者求個弧时应是择资入进源弧择皐程进是入一求■程事输请程时必1 ■■1 机产l^~
4?--- IsiMs 消费有瑙写第丄号产品从缓沖区取岀… 成功A鑽冲区取出! 足意I s s s s 求-
,只能满足部分消费者请求,不能满足全部:
北邮操作系统进程同步实验报告及源代码



