- 63
- 0
- 约 7页
- 2017-01-30 发布于重庆
- 举报
北邮操作系统进程同步实验报告及源代码
进程管理实验报告1.实验目的:(1)理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题;(2)了解windows系统或unix/linux系统下中信号量的使用方法。2.实验内容编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓库,每个消费者每次从仓库中取出一个产品进行消费,仓库大小有限,每次只能有一个生产者或消费者访问仓库。要求:采用信号量机制。3、环境说明本实验是在win7环境下使用dev编译器实现的,采用Win API的信号量机制。4、程序设计说明该程序根据教材中的消费者生产者问题编写的,使用了教材中提供的框架思路以及库函数,使用CreateThread建立新的线程,使用CreateMutex创建一个互斥信号量,使用CreateSemaphore创建信号量,使用ReleaseMutex释放线程的互斥信号量,使用ReleaseSemaphore对指定的信号量增加指定的值,使用WaitForSingleObject等待空位,使用CloseHandle在操作结束后关闭线程和信号量。在这个程序里我设计了三个函数:Int main()是主函数,其中包含了缓冲区大小的设置,生产者消费者发出请求等内容以及线程创建等内容DWORD WINAPI producer(LPVOID lpPara)是生产者等待缓冲区的使用权并对缓冲区进行操作DWORD WINAPI consumer(LPVOID lpPara)是消费者等待缓冲区的使用权并对缓冲区进行操作 该程序模拟生产者消费者问题,首先要设置缓冲区的大小,输入请求资源的各个进程的信息以及请求时间,并且按照请求时间对各进程进行排序,创建线程,然后按序依次对缓冲区进行操作,详细设计见源代码。5、程序运行结果截图:只有生产者请求,没有消费者请求,请求满足只有消费者请求,没有生产者请求,消费者的请求不成功:生产者请求大于消费者请求并且消费者请求在生产者放入产品之后:消费者请求多于生产者请求,只能满足部分消费者请求,不能满足全部:6、源代码:#include cstdio#include cstdlib#include cstring#include iostream#include algorithm#include windows.husing namespace std;#define MAX_BUF 1000#define MAX_REQ 20 HANDLE mutex;HANDLE full;HANDLE empty; HANDLE thread[MAX_REQ];DWORD pro_id[MAX_REQ];DWORD con_id[MAX_REQ];struct request{int type;//记录生产者消费者的类型intseq; //记录请求次序}req[MAX_REQ]; intbuf_size; intreq_size; int no;int buffer[MAX_BUF];int in;int out; int result;boolcmp(request a,request b){ returna.seqb.seq;}DWORD WINAPI producer(LPVOID lpPara){WaitForSingleObject(full,INFINITE);WaitForSingleObject(mutex,INFINITE); printf(生产者%d将第%d号产品放入缓冲区……\n,(int)lpPara,no);buffer[in]=no++;in=(in+1)%buf_size;printf(成功放入缓冲区!\n\n,(int)lpPara);ReleaseMutex(mutex);ReleaseSemaphore(empty,1,NULL); return 0; } DWORD WINAPI consumer(LPVOID lpPara){WaitForSingleObject(empty,INFINITE);WaitForSingleObject(mutex,INFINITE); printf(消费者%d将第%d号产品从缓冲区取出……\n,(int)lpPara,buffer[out]); buffer[out]=0; printf(成功从缓冲区取出!\n\n,(int)lpPara);ReleaseMutex(mutex);out=(out+1)%buf_size;ReleaseSemaphore(full,1,NULL); return 0; } int main(){ inti; int p=0;no = 1;in=out=0;memset(buffer, 0, sizeof(buffer)); pr
您可能关注的文档
- 采用静态优先权优先算法的进程调度程序.doc
- 计算机应用技术专业大学生职业生涯规划书.doc
- 山东大学操作系统实验5进程互斥实验.doc
- linux进程和线程通信.doc
- 辽宁工程技术大学大学软件项目实训报告.doc
- 操作系统第二次实验报告.doc
- 实验3 Windows虚拟内存.doc
- 操作系统 生产者-消费者模型模拟进程调度.doc
- 使用ptrace向已运行进程中注入.so并执行相关函数.doc
- 应用技术学院学生约谈制度.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)