实验报告模板2_第1页
实验报告模板2_第2页
实验报告模板2_第3页
实验报告模板2_第4页
实验报告模板2_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附件(四)深圳大学实验报告课程名称:操作系统实验项目名称:并发程序设计学院:专业:指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制一、实验目的与要求:实验目的:掌握windows环境下,多进程并发程序设计方法,并通过程序的运行结果来验证分时系统和并发程序设计的优越性。实验要求:熟悉windows操作系统及VC++程序设计方法二、方法、步骤:在单进程(单用户、单任务)运行时,系统资源为单进程所独占,当进程在读/写磁盘文件时,CPU是处于等待I/O完成的空闲状态。因此造成较大的资源浪费。在多进程运行(多任务)时,当某进程在等待I/O结果时,可以自动阻塞起来,CPU可选择另一个就绪进程来执行,从而提高系统的运行效率,增加系统的吞吐量,提高系统交互操作性能。本实验设计两个进程,WriteFile(写U盘)进程和Calculate(计算)进程,每个进程大约费时5秒。设计两进程顺序执行程序,并测试所需时间。设计两进程并发执行程序,并测试所需时间。三.实验过程及内容:(其中:提供有简短说明的程序代码。要求:程序运行正确、符合设计要求。)1Windows进程简介在Windows环境下,一个执行文件(*exe)在和自行时被看成是一个进程,即在windouws中最小的进程单位为执行文件。但Windows是一个多任务的环境,允许多个执行文件(进程)同时(并发)运行。2VC++并发程序设计简介在程序中启动一个执行文件采用WinExec(LPCSTRlpCmdLine,UNITuComdShow)函数可启动一个执行文件的运行。其中lpCmdLine表示一个命令行,uComdShow表示执行文件窗口显示特性。最简洁的启动运行函数形式为:WinExc(“*exe”,NULL);创建进程采用CreateProcess(LPCTSTRlpszImageName,,//执行文件名(进程名)LPCTSTRlpszCmdLine,//命令行(参数)LPSECURITY_ATTRIBUTESlpsaProcess,//进程安全属性LPSECURITY_ATTRIBUTESlpsaThread,,//线程安全属性BOOLbInheritHandles,//继承特性DWORDdwCreationFlags,//进程类型和优先级LPVOIDlpEnvironment,//环境变量,由SET设置LPCTSTRlpCurrentDirectory,//当前目录LPSTARTUPINFOlpStartupInfo,//进程开始信息LPPROCESS_INFORMATIONlpProcessInfo)//进程创建返回信息函数创建一个进程。最简洁的创建进程的形式为: cProcess=CreateProcess(*exe,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&pisz);进程开始信息suiSui中存放进程开始的所有信息,用户除第一项外,其余都可以使用默认值。最简洁的设置方式为:memset(&sui,0,sizeof(STARTUPINFO));sui.cb=sizeof(STARTUPINFO);进程创建返回洗洗piszPisz中存放创建进程的返回信息,用户可以使用这些信息,对今晨进行操作,PROCESS_INFORMATION{HANDLEhProcess;//新进程的句柄HANDLEhThread;//主线程的句柄DWORDdwProcessId;//进程标识符DWORDdwThreadId;//线程标识符}在本实验中主要用到新进程标识号dwProcessId,用于判断线程是否结束等待进程结束采用WaitForInputIdle(HANDLEhProcess,DWORDdwMilliseconds)函数等待一进程结束。WaitForInputIdle()是等待一对象(可以是进程)结束函数,它有两个变量,第一个为对象句柄(pisz.hProcess),第二个为等待最长时间(以毫秒计,也可以为INFINITE)。本实验中,可以采用以下方式调用:WaitForInputIdle(pisz.hProcess,INFINITE);;3核心源代码(1)计算数据,并同时向U盘写入数据voidWriteOrCalculate(){ STARTUPINFOsui;//用于指定新进程的主窗口特性 PROCESS_INFORMATIONpiszWriteFile,piszCalculate; BOOLwProcess,cProcess; //设置创建进程信息 memset(&sui,0,sizeof(STARTUPINFO));//将s中后n个字节用0替换并返回s。 sui.cb=sizeof(STARTUPINFO);//CB包含STARTUPINFO结构中的字节数,初始化操作 cProcess=CreateProcess(szCalculate,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&piszCalculate); wProcess=CreateProcess(szWriteFile,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&piszWriteFile); WaitForInputIdle(piszWriteFile.hProcess,INFINITE);//等待新进程完成它的初始化并等待用户输入。 WaitForInputIdle(piszCalculate.hProcess,INFINITE);}(2)先计算数据,然后向U盘写入数据voidWriteAndCalculate(){ //启动执行文件 WinExec(szCalculate,NULL); WinExec(szWriteFile,NULL);}(3)开始计时DWORDStartTime,StopTime;voidStartTimeCount(HWNDhWnd,LPSTRStartString){ HDChDC; hDC=GetDC(hWnd); TextOut(hDC,100,100,StartString,strlen(StartString)); //设备环境的句柄,用于字符串对齐的基准点的逻辑X坐标,逻辑Y坐标,将被绘制字符串的指针,字符串的长度 ReleaseDC(hWnd,hDC);//释放设备上下文环境(DC)供其他应用程序使用 StartTime=GetTickCount();}(4)停止计时,并显示所用时间voidStopTimeCount(HWNDhWnd,LPSTRTimeString){ charMsgString[256]; HDChDC; hDC=GetDC(hWnd); TextOut(hDC,100,100,"",50); ReleaseDC(hWnd,hDC); StopTime=GetTickCount(); sprintf(MsgString,"开始时间=%dms结束时间=%dms用时=%dms",StartTime, StopTime,StopTime-StartTime); MessageBox(NULL,MsgString,TimeString,MB_OK);}计算数据voidCalculate(){ inti; doubleArea,PI,r; PI=3.14159; r=10.12345; for(i=0;i<800000000;i++) Area=PI*r*r; }长时间的向磁盘写入文件过程voidWriteFile(){ inti; charWriteIniFileName[32]; charKeyStr[32]; strcpy(WriteIniFileName,"E:\\text.ini"); for(i=0;i<5800;i++) { wsprintf(KeyStr,"%d",i); WritePrivateProfileString("WriteFile",KeyStr,"WriteFile",WriteIniFileName);//将信息写入ini文件中 }}四、实验结论:(其中:提供运行结果,能对实验结果进行深入的探讨和分析、评价,并提出结论性意见和改进想法)实验截图:实验界面:写入磁盘的运行时间:写入磁盘的test.ini的截图计算800000000次数据的时间:串行时间并行时间:实验结论:由上图可知,基本实现了实验要求。由图可以得到,写入磁盘时间与计算时间都已经调整为5s左右,在上图中由于每次运行程序时系统误差,因此会导致每一次运行写文件以及计算的时间都不同,但很明显,串行计算得到的时间在误差范围内等于两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论