操作系统课程设计任务指导书

上传人:cl****1 文档编号:560879940 上传时间:2024-01-01 格式:DOC 页数:43 大小:706KB
返回 下载 相关 举报
操作系统课程设计任务指导书_第1页
第1页 / 共43页
操作系统课程设计任务指导书_第2页
第2页 / 共43页
操作系统课程设计任务指导书_第3页
第3页 / 共43页
操作系统课程设计任务指导书_第4页
第4页 / 共43页
操作系统课程设计任务指导书_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《操作系统课程设计任务指导书》由会员分享,可在线阅读,更多相关《操作系统课程设计任务指导书(43页珍藏版)》请在金锄头文库上搜索。

1、计算机学院2010-2011级操作系统课程设计任务指导书湖南科技大学计算机学院 陈燕晖编2014年1月课程设计说明一:实验操作系统平台为Linux,不熟悉该系统的同学请先看附录Linux环境快速上手指南。此外,同学们最好手头能有Unix/Linux系统编程类书籍便于查阅。二:本指导书共六个任务,指导老师可根据实际情况要求同学完成其中的几个。三:要求每人独立完成,不允许抄袭。请同学们遵循机房管理条例,在机房只能做与课程设计相关的事情,禁止玩游戏、浏览无关网页等情况。四:及时提交课程设计报告。 目录任务一 I/O系统调用开销比较1任务要求1性能测试工具介绍1mmap介绍3任务二 实现一个简单的sh

2、ell5任务要求5相关知识介绍6任务三 进程/线程同步8任务要求8SYS V信号量API介绍8Posix线程编程介绍9任务四 文件内容的并行搜索12任务要求12测试要求12任务五 实现一个malloc/free13任务要求13相关材料13任务六 利用元数据操作ext2文件系统29任务要求:29技术进攻路线29EXT2 文件系统资料30附录一:Linux环境快速上手指南34命令行和图形界面34使用帮助34编程步骤简介35Linux shell下的基本命令35附录二:调试器GDB基本使用方法37任务一 I/O系统调用开销比较本任务主要目的在于了解I/O系统调用的特点并通过性能测试对此有直观的认识。

3、任务要求在LINUX平台用C编程逆序一个文本文件,注意显示逆转结果的必须是原文件名。如文件原内容为“abcd”,处理后内容应为“dcba”。请分别使用三种方法(1)标准C的I/O库函数:fopen、fread和fwrite(2)Unix的I/O函数:open、read 和write(3)open和mmap要求尽量考虑效率,比较三种方法的性能。性能测试工具介绍 参与测试的文件必须有三种大小:4KB、256KB和64MB。read和fread每次读/写数据的大小分别为1字节、256字节、4KB和16KB。我们可以观察到系统调用的开销情况。下面简单介绍一下两个工具strace和time。strace

4、命令可以追踪进程执行系统调用和进程收到信号的情况。最简单的情形是strace执行指定的命令直至命令退出,它可以拦截并记录系统调用信息(包括系统调用名、系统调用参数、系统调用返回值),详细的信息可以参看man手册。下面演示一个用strace追踪拷贝文件命令cp的例子,执行下面命令:$strace cp wj1.txt wj5.txt执行结果的输出包含许多我们不关心的信息,所以我们只列出应该注意的部分:open(wj1.txt, O_RDONLY|O_LARGEFILE) = 3open(wj5.txt, O_WRONLY|O_CREAT|O_LARGEFILE, 0100644) = 4read

5、(3, abcden, 4096) = 6write(4, abcden, 6) = 6read(3, , 4096) = 0close(4) = 0close(3) = 0我们看到每一项的格式是统一的:open(wj1.txt, O_RDONLY|O_LARGEFILE) = 3系统调用名 系统调用参数 返回值Strace命令有许多选项,其中 c选项特别有用,它能统计系统调用的相关数据,其中包括调用次数,多少次出错返回,系统调用的耗费时间等。下面是示例产生的结果:$strace -c cp wj1.txt wj5.txt% time seconds usecs/call calls erro

6、rs syscall- - - - - - 78.91 0.003252 181 18 open 21.09 0.000869 869 1 execve 0.00 0.000000 0 17 read 0.00 0.000000 0 1 write 0.00 0.000000 0 19 close 0.00 0.000000 0 2 1 access 0.00 0.000000 0 3 brk 0.00 0.000000 0 6 munmap 0.00 0.000000 0 3 mprotect 0.00 0.000000 0 28 mmap2 0.00 0.000000 0 3 stat64

7、 0.00 0.000000 0 16 fstat64 0.00 0.000000 0 1 geteuid32 0.00 0.000000 0 1 set_thread_area- - - - - -100.00 0.004121 119 1 total time命令可以累计一个程序的运行时间。格式如下:time options command arguments. time在命令command执行结束时在标准错误输出中输出该命令的用时情况,其结果包含下面三项: 1)实际时间(real time): 从command命令行开始执行到结束经历的时间; 2)用户CPU时间(user CPU tim

8、e): 命令执行所占的用户态时间; 3)系统CPU时间(system CPU time): 命令执行所占的核心态时间(系统调用时间)。 其中,用户CPU时间和系统CPU时间之和为命令占用CPU执行的时间总和。一般说来,实际时间要大于CPU时间,因为comand可能和其他进程交替执行。 下面是一个具体例子,测试ls命令递归列出当前目录内容所用时间。 $ time ls -R执行结果如下:. (ls命令结果略)real 0m2.612suser 0m0.080ssys 0m2.524s值得提醒的是,依赖于操作系统的计时机制,time命令本身不一定很精确;此外,command的执行时间依赖于环境,所

9、以同一命令执行多次结果也可能不同,一个比较合理的做法是一个命令执行多次然后取平均值。mmap介绍mmap指memory-mapped(存储映射),其将文件内容映射到进程地址空间,相比传统方法而言,往往能够减少系统调用和内容拷贝次数,从而提高性能。其函数原型如下:void* mmap ( void * addr , size_t len , int prot , int flags , int fd , off_t offset ); 函数的返回值为最后文件映射到进程空间的地址,进程可直接操作起始地址为该值的有效地址。参数addr指定文件应被映射到进程空间的起始地址,一般被指定一个空指针,此时选

10、择起始地址的任务留给内核来完成(参见flags的说明)。参数fd为即将映射到进程空间的文件描述字,一般由open()返回,同时,fd可以指定为-1,此时须指定flags参数中的MAP_ANON,表明进行的是匿名映射。len是映射到调用进程地址空间的字节数,它从被映射文件开头offset个字节开始算起。prot 参数指定共享内存的访问权限。可取如下几个值的或:PROT_READ(可读), PROT_WRITE(可写), PROT_EXEC(可执行), PROT_NONE(不可访问)。flags由以下几个常值指定:MAP_SHARED , MAP_PRIVATE , MAP_FIXED,其中,MA

11、P_SHARED , MAP_PRIVATE必选其一,而MAP_FIXED则不推荐使用。offset参数一般设为0,表示从文件头开始映射。下面给出一个使用mmap输出文件内容的例子:#include #include #include #include #include #include int main(int argc, char *argv ) int src; char * sm; struct stat statbuf; size_t fz; if ( argc != 2 ) fprintf( stderr, Usage: %s n , argv 0 ); exit( EXIT_FA

12、ILURE ); if ( ( src = open( argv 1 , O_RDONLY ) ) 0 ) perror( open source ); exit( EXIT_FAILURE ); if ( fstat( src, & statbuf ) 0) perror( fstat source ); exit( EXIT_FAILURE ); fz = statbuf.st_size; sm = mmap( 0 , fz, PROT_READ, MAP_PRIVATE | MAP_NORESERVE, src, 0 ); if ( MAP_FAILED = sm ) perror( mmap source );

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号