第四次上机实验指导(线程并发拷贝程序

第四次上机实验指导(线程并发拷贝程序

ID:46787619

大小:67.00 KB

页数:3页

时间:2019-11-27

第四次上机实验指导(线程并发拷贝程序_第1页
第四次上机实验指导(线程并发拷贝程序_第2页
第四次上机实验指导(线程并发拷贝程序_第3页
资源描述:

《第四次上机实验指导(线程并发拷贝程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《第四次上机实验指导(线程并发拷贝程序)》实验目的:设计线程并发拷贝程序和模拟管道文件的程序并上机编程实现,让学生自己动脑筋来思考课堂上讲述的内容,把主要知识系统化地串联起来,增加感性认识;加深理解系统的并发工作过程和原理;加深对线程的理解;加深对进程和线程Z间同步互斥的理解;并增强编写并发程序的能力。通过实验进一步强化学生的实际编程能力及分析问题、解决问题的能力。实验内容及要求:编写线程并发拷贝程序,通过模拟管道文件的实现(管道定义、创建管道、读管道程序和写管道程序程序实现),实现同步互斥,检验程序运行结果。实验前要认真预习

2、课程上讲解的有关内容,完成数据结构设计、模块划分及程序流程图设计,第一次上机时要提交书面的设计报告(初稿),编写出主耍程序。4次上机(8学时)完成程序的修改完善及调试。每次修改程序时都要对照书面设计报告进行修改,并在书面设计报告上留卜•修改记录,经过最后修改的书面设计报告耍和止式的实验报告一并提交(编写的程序耍和书面设计报告中画出的程序流程图基本一致)。2次上机(4学时)进行程序的运行效果检验及源程序检杳(对照书面设计报告进行讲解,接受提问)。理解第2次实验指导屮的文章屮“操作系统课程教学研究(一)----核心内容的教学方法探

3、讨”中的“图8进程并发拷贝程序工作时各部件动作序列及进程状态变化图示片断”。最后提交的实验报告中要包括实验口的、实验耍求、实验设计、实验程序清单、实验测试结果、实验总结(体会)几个部分,除实验程序和实验测试结杲可以打卬外,其余部分均耍求手写。实验设计部分要包括数据结构定义、数据结构关联图、程序模块的流程图实验程序中至少局部变量的名称中要包含门己学号的后四位。实验测试结杲耍包括不少于7个测试用例,为每个测试用例准备的文件的名称中耍包含自己学号的后四位。除了提交试验报告外,现场检查与试验报告一致的程序现场编译连接执行的结果与试验报

4、告上的结果一致。实验的参考资料及提示:(1)进程并发拷贝程序・doc#include#include#include#include#include#defineBSIZE512main(intargc,char*argv[]){intx,fdr,fdw,n,fdp[2];charabuf[BSIZE];fdr=open(argv[1],O_RDONLY);fdw=open(argv[2],O_CREATIO_RDWR,0

5、777);pipe(fdp);while((x=fork())==-1);if(x==0){close(fdp⑹);〃关闭子进程中的管道读端句柄while((n=read(fdr,abuf,BSIZE))>O)write(fdp[l],abuf,n);close(fdp[l]);}else{close(fdp[l]);//关闭父进程中的管道写端句柄while((n=read(fdp[0],abuf,BSIZE))>0)write(fdw,abuf,n);close(fdp[0]);}}(2)基本提不、把创建进程改为创建线程,把

6、进程并发改为线程并发、上面程序中的pipe(fdp)(创建管道)不允许使用,要使用pipe_simulate(fdp)(intpipe_simulate(intfd[2])是自己定义的函数,模拟管道文件的创建)。、管道文件可以对应一个数组(例如charpfile[4096]),其创建相当于两次打开了同一个文件,在进程的u_of订e表中要占用两个表项,pipe_simulate函数的返回参数为这两个表项的下标(要把两次打开了同一个文件的结果设置表现出來,以便后面模拟使用)。、上面程序中的read(fdp[O],abuf,BSIZ

7、E)(读管道)和write(fdp[1],abuf,n)(写管道)不允许使用,要使用read_simulate(fdp[O],abuf,BSIZE)和write_simulate(fdp[l],abuf,BSIZE)(read_simulate(、、、)和write_simulate(、、、)是自己定义的函数,分别模拟文件的读和写的前两个步骤。)、read_simulate(fd,>>>)实现中,首先根据u_ofile[fd]找到相应的file表项,判断其是否对应管道文件读操作,若是则调用readp(..、)(wadp(、、、

8、)也是口己定义的函数,模拟实现管道文件的读);write_simulate(、、、)类似。、在readp(>>>)和writep(、、、)中要实施线程之间的同步和互斥。、上面程序中的close(fdp[0])(关闭管道读端)和close(fdp[l])(关闭管道写端)语句不能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。