操作系统课程设计报告64746new

操作系统课程设计报告64746new

ID:1201566

大小:139.50 KB

页数:11页

时间:2017-11-08

操作系统课程设计报告64746new_第1页
操作系统课程设计报告64746new_第2页
操作系统课程设计报告64746new_第3页
操作系统课程设计报告64746new_第4页
操作系统课程设计报告64746new_第5页
资源描述:

《操作系统课程设计报告64746new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统课程设计实验报告姓名:曾林学号:0905020107班级:网络一班指导老师:李艳军完成时间:2012年3月4日任务一I/O系统调用开销比较一、实验目的:本任务主要目的在于了解I/O系统调用的特点并通过性能测试对此有直接的认识。二、任务要求:在LINUX平台用C编程逆序一个文本文件,注意显示逆转结果的必须是原文件名。如文件原内容为“abcd”,处理后内容应为“dcba”。请分别使用三种方法1)标准C的I/O库函数:fopen、fread和fwrite2)Unix的I/O函数:open、read、write3)open和mmap要求尽量考虑

2、效率,比较三种方法的性能。三、设计思路实验的主要是提供一个缓冲区,从而供库函数方便进行读写。首先申请一个缓存区,然后把文件的内容读出到缓存区中,通过逆序函数把文件的内容逆序,再把缓存区中的内容写入到原文件中,从而达到逆序的目的。针对read和fread每次读取数据大小有要求,主要在于读取或写入时缓冲区的大小,动态定义缓冲区的大小实现每次读取或写入数据的大小控制。为实现测试文件的内容能完整地存入中间容器,即字符串数组,需要动态申请文件大小的数组,存取文件中的内容。Mmanp指memory-mapped(存储映射)其将文件内容映射到进程地址空间,相

3、比传统的方法而言,减少了系统调用和内容拷贝,无需进行文件内容的读取和写入,减少了完成所需要的时间,提高了整体的效率,从而提高了性能。主要在于数据的重新排序。四、设计内容1.使用标准C的I/O库函数:fopen、fread和fwrite的设计代码如下:#include#include#includeintmain(intargc,char*argv[]){inti,j,filelen;char*buffer;chartemp;FILE*fp;if(argc!=2){printf("erro

4、r!");exit(0);}if((fp=fopen(argv[1],"r"))==NULL){printf("open%serror!",argv[1]);exit(0);}fseek(fp,0L,SEEK_END);filelen=ftell(fp);buffer=(char*)malloc(sizeof(char)*filelen);//申请缓存区fseek(fp,0L,SEEK_SET);printf("文件大小为:%d字节",filelen);fread(buffer,1,filelen,fp);//第二个参数为每次读数据的大

5、小fclose(fp);j=filelen-1;for(i=0;i

6、如下:#include#include#include#include#include#include#include#defineBUFFSIZE256*1024;intmain(intargc,char*argv[]){inti,j,n,src;chartemp;char*buffer;charpath[20];size_tfz;structstatstatbuf;if(argc!=2){prin

7、tf("请输入要打开的文件路径");scanf("%s",path);elsestrcpy(path,argv[1]);n=open(path,O_RDWR);if((src=open(path,O_RDWR))<0){perror("opensource");exit(EXIT_FAILURE);}if(fstat(src,&statbuf)<0){perror("fstatsource");exit(EXIT_FAILURE);}fz=statbuf.st_size;buffer=(char*)malloc(sizeof(char)*f

8、z);read(n,buffer,fz);lseek(n,0,SEEK_SET);j=fz-1;for(i=0;i

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

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

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