




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北工业大学 计算机学院 操作系统课程实验报告实验名称进程同步算法的实现模拟实验序号1姓 名刘凯系院专业计算机班 级10网络1学 号1010322122实验日期2012-10指导教师阮鸥成 绩一、实验目的 进程同步问题是OS的核心内容。本实验要求用高级语言编写和调试一个程序来模拟进程同步算法。通过本实验可以加深理解有关同步技术、进程控制块、进程队列的概念,并体会和了解同步(生产者消费者问题)算法的具体实施办法。二、实验内容与要求(1) 模拟实现生产者消费者问题。Get、put二进程共用缓冲区s(大小为每次只存放一个记录)。Get负责输入记录到缓冲区s, put负责把t中的记录取出打印。(2) 设计进程PCB结构和三种进程状态的队列,可以实现PCB队列的插入、删除、排序功能。(3) 设计各进程使用的信号灯,画出各进程的P、V操作实现流程图;(4)实现进程同步,完成记录的正常输出,要能够通过程序运行表现出对缓冲区s的进行临界区互斥和进程同步的思想(最好能记录或输出二个进程的实时状态和变化过程、二个进程队列的实时内容、几个缓冲区中实时内容,输出到屏幕上,这个过程同时记录在一个文本文件中);(5) 编程语言不限制,tc2.0,vc6.0,.net,java都可以。三、实验设备 地点: 科技楼 网络实验室602 硬件环境: Intel Pentium Processor 1.8G ,512M内存,windows 操作系统软件环境: win7系统 vc+6.04、 实验步骤(1) 模拟实现生产者消费者问题。Get、put二进程共用缓冲区s(大小为每次只存放一个记录)。Get负责输入记录到缓冲区s, put负责把t中的记录取出打印。实验代码:/ Test1.cpp : Defines the entry point for the console application.#include stdafx.h#include windows.h#include string.hchar temp; /中间缓存DWORD WINAPI Get(LPVOID lp)/将要打印的字符取出并一个一个的存入缓存char * sp; sp=( char *) lp;while(1) /字符结束标志0temp=*sp;if(temp=0) return 0;sp+;Sleep(500); return 0;DWORD WINAPI Put(LPVOID lp)/将字符从缓存里面取出,一次一个printf(output the string:);while(temp!=0)printf(%c,temp); Sleep(500);putchar(n);return 0;void Mythread(char sp )/建立两个并行线程HANDLE handle1,handle2; handle1 = CreateThread(NULL,NULL,Get,(void*)sp,NULL,NULL);handle2 = CreateThread(NULL,NULL,Put,NULL,NULL,NULL);int main(int argc, char* argv) char sp100=0;printf(input the string to print:);scanf(%s,sp);Mythread(sp); Sleep(10000);printf(the output come to teh end !n); return 0;(2)设计进程PCB结构和三种进程状态的队列,可以实现PCB队列的插入、删除、排序功能。(3)设计各进程使用的信号灯,画出各进程的P、V操作实现流程图;(4)实现进程同步,完成记录的正常输出,要能够通过程序运行表现出对缓冲区s的进行临界区互斥和进程同步的思想(最好能记录或输出二个进程的实时状态和变化过程、二个进程队列的实时内容、几个缓冲区中实时内容,输出到屏幕上,这个过程同时记录在一个文本文件中);实验代码:/ test2.cpp : Defines the entry point for the console application./* 本程序利用受信事件,通过调用应用程序编程接口,实现了两个线程(get 、 put)之间的同步*/#include stdafx.h#include stdio.h#include windows.h#include string.hchar temp; /中间缓存HANDLE handle2; /分别指向两个线程对象HANDLE hEvent2; /分别指向两个事件对象void P(HANDLE &hEvent) /等待事件状态变为受信,即可执行WaitForSingleObject(hEvent,INFINITE);void V(HANDLE &hEvent) /将事件状态设置为受信SetEvent(hEvent);void MyEvent() /创建两个自动重置的、未受信的事件hEvent0=CreateEvent(NULL,FALSE,FALSE,NULL);hEvent1=CreateEvent(NULL,FALSE,FALSE,NULL);SetEvent(hEvent0); /设置第一个事件为受信DWORD WINAPI Get(LPVOID lp)/将要打印的字符取出并一个一个的存入缓存char * sp; sp=( char *) lp;while(1) /字符结束标志0P(hEvent0); /询问事件是否可运行temp=*sp;Sleep(500);V(hEvent1); /置需要同步的线程为受信状态if(*(sp+)=0) return 0; return 0;DWORD WINAPI Put(LPVOID lp)/将字符从缓存里面取出,一次一个,并打印printf(output the string:n);while(temp!=0)P(hEvent1);printf(%c,temp);Sleep(500);V(hEvent0);/putchar(n);return 0;void Mythread(char sp )/建立两个并行线程 handle0 = CreateThread(NULL,NULL,Get,(void*)sp,NULL,NULL);handle1 = CreateThread(NULL,NULL,Put,NULL,NULL,NULL);void Close() /等到线程都运行完成时关闭两个线程和两个事件WaitForMultipleObjects(2,handle,TRUE,INFINITE);CloseHandle(handle0);CloseHandle(handle1);CloseHandle(hEvent0);CloseHandle(hEvent1);printf(the output come to the end !n);int main(int argc, char* argv) char sp100=0;/输入要打印的字符串printf(input the string to print:n);scanf(%s,sp);MyEvent();Mythread(sp);Close(); return 0;五、实验结果与分析1测试数据及结果(1)步骤一实验测试数据:123456789 实验结果: 122355789 实验分析:两并行的进程在运行时间上有先后之分,由于运行环境不具备封闭性且没有实现同步,运行结果也就与时间有关且具有不确定性,因而输出的字符串与输入的字符串不匹配。(2) 步骤四实验测试数据:123456789 实验结果:123456789 实验分析:本程序利用受信事件,通过调用应用程序编程接口,现了两个线程(get 、 put)之间的同步,因而输出的字符串与输入的字符串完全匹配。2 实验中遇到的问题及解决办法实验包含的知识点:a.win7操作系统多线程编程; b.利用事件对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合肥市输变电工程电磁环境的多维度仿真与解析
- 2025年教师招聘之《幼儿教师招聘》题库及答案详解一套
- 教师招聘之《小学教师招聘》复习提分资料含完整答案详解【易错题】
- 教师招聘之《小学教师招聘》题库(得分题)打印附答案详解【达标题】
- 2025年音乐教学试题及答案
- 押题宝典教师招聘之《小学教师招聘》考试题库(培优b卷)附答案详解
- 基于2025年智能制造的孵化基地建设市场前景预测
- 教师招聘之《小学教师招聘》综合提升试卷附答案详解【培优a卷】
- 2025年教师招聘之《小学教师招聘》预测试题及答案详解(典优)
- 2025年教师招聘之《幼儿教师招聘》常考点及一套参考答案详解
- 能源服务、产品、设备和能源采购控制程序
- 包装设计市场调研
- 焊装工艺学习课件
- 【个人简历】保洁经理求职个人简历模板
- 绵阳东辰学校五升六预备年级招生考试数学试题
- GB/T 15856.2-2002十字槽沉头自钻自攻螺钉
- 插花艺术发展简史
- 学校防溺水“七不两会”教育(课堂)课件
- 《科学思维与科学方法论》第一章 科学问题与科研选题
- (完整版)电除颤操作评分标准
- 跌倒坠床不良事件鱼骨图分析
评论
0/150
提交评论