操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
操作系统实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

操作系统实验报告操作系统实验报告操作系统实验报告xxx公司操作系统实验报告文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度操作系统上机实验报告成绩教师:方敏2016年12月17日班级:1403018学号:5姓名:黄杨实验地点:E-Ⅲ区208实验时间:—实验一创建进程【实验软硬件环境】VC【实验内容】 实验内容:父进程创建一个有名事件,由子进程发送事件信号,父进程获取事件信号后进行相应的处理【实验原理】 父进程创建子进程,实现多个进程并发执行,提高计算机的运行效率。【实验程序及分析】 试验程序源代码如下: 父进程部分代码: #include""#include""#include""#include""intmain(intargc,char*argv[]){STARTUPINFOsui;ZeroMemory(&sui,sizeof(sui));=sizeof(STARTUPINFO);PROCESS_INFORMATIONpi; if(!CreateProcess("D:\\Test1\\test1\\",NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&sui,&pi)){ printf("子进程创建失败,即将退出程序!\n"); return0; } else{ intsum=0; for(inti=1;i<=100;i++){ sum+=i; printf("sum=%d\n",sum); } } Sleep(3000);WaitForSingleObject(,INFINITE); FILE*qp; if((qp=fopen("D:\\Test1\\","r"))==NULL){ printf("读文件打开失败!\n"); return0; } else{ charch; while((ch=fgetc(qp))!=EOF){ printf("%c",ch); } printf("\n"); fclose(qp); } return0;}子进程部分代码:\\Child\\Debug\\",NULL,NULL,NULL,TRUE,0,NULL,NULL,&sui,&pi)) { CloseHandle(hRead); CloseHandle(hWrite); hRead=NULL; hWrite=NULL; AfxMessageBox("创建子进程失败!"); return; } else { CloseHandle; CloseHandle; }}voidCParentView::OnPipeRead(){ charbuf[100]={0}; DWORDdwRead; if(!ReadFile(hRead,buf,100,&dwRead,NULL)) { AfxMessageBox("读取数据失败!"); return; } AfxMessageBox(buf);}voidCParentView::OnPipeWrite(){ charbuf[]="父进程信息"; DWORDdwWrite; if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL)) { AfxMessageBox("写入数据失败!"); return; }}子进程的主要代码如下: voidCChildView::OnChildRead(){ charbuf[100]={0}; DWORDdwRead; if(!ReadFile(hRead,buf,100,&dwRead,NULL)) { AfxMessageBox("读取数据失败!"); return; } AfxMessageBox(buf);}voidCChildView::OnChildWrite(){ charbuf[]="子进程信息"; DWORDdwWrite; if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL)) { AfxMessageBox("写入数据失败!"); return; }}【实验结果截图】 本实验,在父进程的面板上,主要有创建管道,读,写,三个项目,子进程的项目上主要有读,写,两个管道。由于电脑上没有VC++,第四题的源程序截图没办法重现,附上PPt中的图片。【实验心得体会】匿名管道一般用于实现本地父子进程之间的通信,其不能实现跨网络进程之间的通信,同时其也一般只用于实现父进程和子进程之间的通信。像匿名管道的话,其和邮槽不同,其可以实现父进程即可以向子进程发送数据,同时父进程又可以从子进程接收到数据。而且子进程可以接收来自父进程的数据,并且也可以给父进程发送数据。 实验五信号量实现进程同步【实验软硬件环境】VC++【实验内容】生产者进程生产产品,消费者进程消费产品。当生产者进程生产产品时,如果没有空缓冲区可用,那么生产者进程必须等待消费者进程释放出一个缓冲区。当消费者进程消费产品时,如果缓冲区中没有产品,那么消费者进程将被阻塞,直到新的产品被生产出来。【实验程序及分析】生产者进程:////#include<>#include<iostream>#include<>usingnamespacestd;#defineSIZE1024charname[]="sharedstorage";intmain(){HANDLEmapFile=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,SIZE,name);char*mapView=(char*)MapViewOfFile(mapFile,FILE_MAP_ALL_ACCESS,0,0,SIZE);cout<<"pressanykeytocontinue:"<<endl;getchar(); cout<<mapView<<endl; UnmapViewOfFile(mapView)

温馨提示

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

评论

0/150

提交评论