1、 操作系统课程设计实验报告操作系统课程设计实验报告 二 00 九级计算机三班 学 号: 姓 名: 指导老师: 时 间:2012.02.20-2012.03.01 1 目 录 一、任务内容及进度安排 1. 任务内容2 2. 进度安排5 二、实现任务及其问题分析 任务一7 任务二8 任务三9 任务四9 三、心得体会10 四、附录11 2 一、任务内容及进度安排 1. 任务内容 任务一 I/O 系统调用开销比较 在 LINUX 平台用 C编程逆序一个文本文件,注意显示逆转结果的必须是原 文件名。如文件原内容为“abcd” ,处理后内容应为“dcba” 。 请分别使用三种方法 (1)标准 C 的 I/
2、O 库函数:fopen、fread 和 fwrite (2)Unix 的 I/O 函数:open、read 和 write (3)open 和 mmap 要求尽量考虑效率,比较三种方法的性能。 任务二 实现一个简单的 shell 实现一个简单的 shell(命令行解释器) ,类似于 sh,bash,csh 等。 你的 shell 必须支持以下内部命令 cd 更改当前的工作目录到另一个。如果未指定,输 出当前工作目录。如果不存在,应当有适当的错误信息提示。这个命令 应该也能改变 PWD 的环境变量。 environ 列出所有环境变量字符串的设置(类似于 Unix 系统下的 env 命 令) 。
3、echo 显示 echo 后的内容且换行 help 简短概要的输出你的 shell 的使用方法和基本功能。 jobs 输出 shell 当前的一系列子进程,必须提供子进程的命名和 PID 号。 quit,exit,bye 退出 shell。 所有的内部命令应当优先于在$PATH 中同名的程序。 3 任何非内部命令必须请求 shell 创建一个新进程,且该子进程执行指定的 程序。这个新进程必须继承 shell 的环境变量和指定的命令行参数。 Shell 应当具有以下特征: Batch Processing 如果 shell 启动带有一个文件名作为参数,打开该文 件并执行文件里所有命令。待所有进程
4、全部结束退出 shell。该功能类似于 shell 的交互模式。 Debugging 提供-v 选项,shell 启动时打开此选项将在运行过程中输出 若干调试信息。在该种模式下,shell 应该显示所有被创建了的进程的 PID 号, 通报已结束的子进程和传递给子进程的参数等。 Prompt(命令行提示符) 解释器应该打印$PS2(而不是$PS1)作为提示 符。 Background processing 如果命令以符号 pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex3 = PTHREAD_MUT
5、EX_INITIALIZER; pthread_mutex_t mutex4 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex5 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex6 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex7 = PTHREAD_MUTEX_INITIALIZER; void *thread1(void *arg) int i,j; for(i=0;i10;i+) printf(“I am process 1n“);
6、 fflush(stdout); sleep(1); pthread_mutex_unlock( pthread_mutex_unlock( 12 return NULL; void *thread2(void *arg) int i,j; pthread_mutex_lock( for(i=0;i10;i+) printf(“I am process 2n“); fflush(stdout); sleep(1); pthread_mutex_unlock( pthread_mutex_unlock( pthread_mutex_unlock( return NULL; void *thread3(void *arg) int i,j; pthread_mutex_lock( for(i=0;i30;i+) pri