实验(网络上)
操作系统实验指导 实验一 安装 Linux 操作系统................................................2 实验二 常用 Shell 命令............................................................4 1.目录及文件操作命令......................................................4 2.设备管理命令..................................................................6 3.系统及用户管理命令......................................................7 4.其他命令..........................................................................8 实验三 文本编辑器................................................................9 实验四 Linux 的进程创建.................................................15 实验五 进程通信................................................................18 实验六 处理器调度..............................................................22 实验七 主存空间的分配和回收....................................27 实验八 文件系统................................................................29
实 验 一 安 装 装 L L L Li i i in n n nu u u ux x x x 操 作 系 统 一、实验内容 安装 Red Hat Linux 9.0 操作系统,按照要求进行初始设置。
二、实验目的 1.以安装 Red Hat Linux 9.0 为例,学习和掌握 Linux 操作系统的安装。
2.掌握 Linux 操作系统的基本系统设置。
3.掌握与 Linux 相关的多操作系统安装的方法。
三、安装过程 将 Red Hat Linux 9.0 安装光盘插入光驱,然后启动计算机,即可从 CD-ROM启动 Linux 安装程序。
步骤 1 boot 提示 步骤 2 检查用户系统 步骤 3 欢迎使用 Red Hat Linux 步骤 4 语言选择 步骤 5 键盘配置 步骤 6 鼠标配置 步骤 7 选择安装还是升级 步骤 8 安装类型 步骤 9 磁盘分区设置 步骤 10 自动分区允许用户选择删除哪些数据 步骤 11 引导装载程序配置 步骤 12 网络配置 步骤 13 防火墙配置 步骤 14 语言支持的选择 步骤 15 选择时区 步骤 16 设置根口令 步骤 17 个人桌面的默认设置 步骤 18 选择软件包组
步骤 19 即将安装 步骤 20 安装软件包 步骤 21 继续插入系统光盘 步骤 22 创建引导盘 步骤 23 视频卡配置 步骤 24 显示器配置 步骤 25 定制图形化配置 步骤 26 安装完成 至此,安装完成。单击“退出”按钮来重新引导系统。
四、实验报告 1.整个安装工作能否正常进行?如果不行,可能的原因是什么? 2.安装体会是什么?和 Windows 系统的安装比较呢?
实 验 二 常 用 用 S S S Sh h h he e e el l l ll l l l 命 令 一.实验目的 熟悉常用的 shell 命令的格式,并能熟练操作。
二.实验内容 1.目录及文件操作命令 1)more 功能:显示文件内容 格式:more [选项] 文件...选项:-c 显示文件之前先清屏-n 行数 指定每屏显示的行数 + 行号 从指定行号开始显示 2)rm 功能:
删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
格式:
rm [选项] 文件… 选项:-f 忽略不存在的文件,从不给出提示。
-r 指示 rm 将参数中列出的全部目录和子目录均递归地删除。
-i 进行交互式删除。
3)mv 功能:
为文件或目录改名或将文件由一个目录移入另一个目录中 格式:
mv [选项] 源文件或目录 目标文件或目录 选项:
-i 交互方式操作。目标文件或目录存在时询问用户是否继续执行操作。
-f 禁止交互操作。
4)cp 功能:
文件或目录的拷贝
格式:
–r 源文件(source)目的文件(target)5)mkdir 功能:
创建一个目录 格式:
mkdir [选项] dir-name 选项:-m 对新建目录设置存取权限。也可以用 chmod 命令设置。
-p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可建立多个目录。
6)rmdir 功能:
删除空目录 格式:
rmdir [选项] dir-name 选项:
递归删除目录 dirname,当子目录删除后其父目录为空时,也一同被删除。
7)cd 功能:
改变工作目录 格式:
cd [directory] 8)pwd 功能:
显示出当前工作目录的绝对路径。
格式: pwd 9)ls 功能:
其功能为列出目录的内容 格式: ls [选项] [目录或是文件] 选项:
-a 显示指定目录下所有子目录与文件,包括隐藏文件。
-A 显示指定目录下所有子目录与文件,包括隐藏文件。但无“.”和 “..”。
-l 以长格式来显示文件的详细信息。每行列出的信息依次是:
文件类型与权限 链接数 文件属主 文件属组 文件大小 建立或最近修改的时间 名字 10)tar 功能:
可以为文件和目录创建档案 格式:
tar [主选项+辅选项] 文件或者目录 主选项:c 创建新的档案文件 t 列出档案文件的内容 x 从档案文件中释放文件 辅助选项:
f 使用档案文件或设备,这个选项通常是必选的。
v 详细报告 tar 处理的文件信息。如无此选项,tar 不报告文件信息 z 用 gzip 来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩 但还原时也一定要使用该选项进行解压缩。
2.设备管理命令 1)fdisk 命令 1:fdisk –l 功能:列出系统所有硬盘的信息 命令 2:fdisk-l 硬盘 功能:列出相应硬盘信息 命令 3:fdisk 硬盘 功能:可对相应硬盘添加、删除分区以及改变分
区属性 2)mkfs 功能:格式化磁盘 格式:mkfs [-V] [-t fstype] [fs-options] filesys [blocks] 选项:-t fstype 指定建立某种档案系统-c 在建立前检查是否有坏轨 示例:mkfs –t vfat /dev/hdb1 3)mount 功能:挂载某一设备成为某个目录名称 格式:mount [选项] 设备 目录 选项:-a 将 /etc/fstab 中定义的所有档案系统挂上。
示例:mount /dev/hdb1 /mnt/dev 4)umount 功能:将已安装的文件系统卸下 格式:umount 设备 示例:umount /dev/hdb1 3.系统及用户管理命令 1)shutdown –h now 功能:关闭系统 2)reboot 功能:重启系统 3)passwd
功能:
修改密码 格式:
passwd 用户名 4.其他命令 1)man 功能:查看指令的使用方法 格式:man 指令名称 2)vi 文本编辑器 语法:vi 文件名,可对指定的文件进行编辑 可在 vi 中使用的命令:
Esc:按
r:替换一个字符。
R:无限制地在一行中替换。
i:插入模式。
dd:删除一行。
x:删除一个字符。
wq:写文件并退出 vi。
q:退出 vi,不存文件。
实 验 三 文 本 编 辑 器 一.实验目标 熟练掌握文本文件编辑工具 pico、vi、emacs 等的按键命令语法及相关操作。
二.实验内容 1.使用 pico 编辑器创建短小、简单的文件; 2.使用 vi 编辑器进行较为复杂的文字处理; 3.使用 emacs 编辑器进行定制。
三.介绍文本文件编辑工具 1.如何使用 pico 编辑器进行简短编辑 实战演练 1:
步骤 1:在 shell 提示符下,输入 pico 并按
步骤 2:在 pico 屏幕的文本区,并将光标置于首行并输入。
This is text that I have entered on a line in the pico editor 按
步骤 3:按 3 次
步骤 7:同时按下
步骤 8:在 shell 提示符下,输入 more linespced 并按
表 1.1 pico 中重要的光标移动按键命令 按键命令 动 作 <^F> 将光标前移一个字符 <^B> 将光标后移一个字符 <^P> 将光标移到上面一行 <^N> 将光标移到下面一行 <^E> 将光标移到当前行的末尾 <^V> 将光标移到文本下一页 <^Y> 将光标移到文本上一页
表 1.2 pico 中按键命令及其动作 按键命令 动 作 <^Shift 6> 开始标记一段文本用作剪切文本 <^C> 报告当前光标位置(以所在行号和字符数号形式)<^G> 访问 pico 的帮助文本 <^J> 调整所选中段落的文本,使每行排满,与文字处理器中的自动换行(wordwrap)类似 <^K> 剪切选中的文本 <^O> 回写或保存当前的文本到文件中 <^R> 从文件中读取文本并粘帖到光标当前位置 <^T> 校验文本中的拼写错误 <^U> 粘帖所剪切的文本到当前位置 <^V> 将页面下翻一页 <^W> Whereis 功能(在文本中查找字符串)<^X> 退出(pico 允许在退出前保存修改)<^Y> 将页面上翻一页 2.vi 命令的格式和操作模式 实战演练 2:
步骤 1: 在 shell 提示符下,输入 vi fistvi 并按
步骤 11:输入 I,接着输入 This_.步骤 12:按
步骤 14:输入 a,接着输入 d.步骤 15:按
步骤 18:输入:wq 返回到 shell 提示符下。
表 2.1 vi 命令语法示例 命 令 动 作 5dw 从当前光标位置开始删除 5 个字 7dd 从当前行开始删除 7 行 7o 在当前行后面打开 7 个空行 7O 在当前行后面打开 7 个空行 c2b 修改光标前面两个字 d7,14 将缓冲区第 7 行~14 行删除 1G 将光标置于文件首行 10yy 将后面 10 行(从当前行开始)复制到临时缓冲区中 表 2.2 插入模式下的重要按键 按 键 动 作 在光标所在字符后添加文本 在当前行最后一个字符后面添加文本
替换单个字符 替换整行 表 2.3 命令模式下的重要命令 命 令 动 作 d 删除字,行等 u 撤销最近一次编辑动作 p(小写)在当前行后面粘帖(插入)此前被复制或剪切的行 P(大写)在当前行前面粘帖(插入)此前被复制或剪切的行 :r filename 读取 filename 文件中的内容并将其插入当前光标位置 :q!放弃缓冲区内容,并退出 vi :wq 保存缓冲区内容,并退出 vi :w filename 将当前缓冲区内容保存到 filename 文件中 :w!filename 用当前文本覆盖 filename 文件中的内容 ZZ 退出 vi,仅当文件在最后一次保存后进行了修改,才保存到缓冲区内容 3.使用 emacs 编辑器获取最大控制 emacs 是 Linux 文本编辑器中最复杂,可定制化程度最高的编辑器,它给你最大的自由度、灵活性和控制权来编辑文本文件。
表 3.1 重要的 emacs 命令 命 令 动 作
步骤 3: 按
步骤 4: 输入 alice dir/w=”ls”。
步骤 5: 同时按
步骤 6: 同时按
步骤 7: 输入 alias。
步骤 8: 同时按
步骤 9: 用方向键将光标置于第一空白行开头,即在 alias type=”more”那一行下面。
步骤 10:同时按
步骤 11:如果光标不在 alice 字尾,用方向键将其置于字 alice 的末尾。
步骤 12:用
步骤 13:输入 as copy=“cp”。
步骤 14:同时按
步骤 15:在 Write file:提示符在,用
步骤 16:同时按
步骤 17:同时按
实 验 四 L L L Li i i in n n nu u u ux x x x 的 进 程 创 建 一、实验目的(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)掌握使用 Linux 命令管理和操作进程的方法。
二、实验预备知识(1)阅读 Linux 的 sched.h 源码文件,加深对进程管理概念的理解。
(2)阅读 Linux 的 fork.c 源码文件,分析进程的创建过程。
三、实验内容(1)进程的创建 编写一段程序,使用系统调用 fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一句话和进程 ID,试观察记录屏幕上的显示结果,并分析原因。
(2)创建进程扇、进程链和进程树。
(3)使用 fork-exec 组合,用新创建的进程执行一个新的任务。
(4)使用一些 Linux 命令操作和管理进程。
四.实验报告 1.写出源程序及运行结果。
2.根据运行结果,绘制出进程扇、进程链和进程树,并进行分析。
五.系统调用函数、参数说明及定义 1.fork()创建一个新进程 int fork()返回:子进程中为 0,父进程中为子进程 id,出错为-1 2.void exit(int status);无返回 参数 0 正常结束,1 异常结束 3.int execl(char *pathname,char *arg0,…,char *argn,(char *)0);第一个是路径名,后面的是命令行参数,最后以空指针结尾。
返回:若出错为-1,成功无返回。
4.pid_t wait(int *status);返回:若成功则为进程 ID,若出错为-1。
六 . 程 序 示 例 1 1..使用 用 f fo or rk k(())创 建 进 程 #include
#include
实验五 进程通信 一.实验目的(1)了解 Linux 系统中进程通信的基本原理。
(2)了解和掌握管道通信机制。
(3)了解和熟悉消息通信机制、共享存储区机制以及信号通信机制。
二.实验内容 1.编写一段程序,实现进程的管道通信。
使用系统调用 pipe()建立一条管道,创建两个子进程 P1 和 P2。
让 P1 和 P2分别向管道各写一句话:
Child 1 is sending a message!Child 2 is sending a message!父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
要求父进程先接受子进程 P1 发来的消息,然后再接受子进程 P2 发来的消息。
2.消息的创建、发送和接受。
使用系统调用 msgget()、msgsnd()、msgrev()及 msgctl()编制一长度为 1K的消息的发送和接受程序。
3.共享存储区的创建、附接和断接。(选做)使用系统调用 shmget()、shmat()、shmdt()及 shmctl()编制一个与上述功能相同的程序。
4.编制一段程序,使其实现进程的软中断通信。(选做)创建两个子进程,让父进程捕捉键盘上来的中断信号(即“ctrl+C”),当捕捉到信号后,父进程使用系统调用 Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止 Child process 1 is killed!Child process 2 is killed!父进程等待两个子进程终止后,输出如下的信息后终止:
Parent process is killed!三.实验报告 1.写出源程序及其运行结果。
2 2..分 分 析 实 验 结 果。
1.管道通信有什么特点? 四.程序示例 1.消息队列的编程示例:
#include
// 接收消息 其中 1 为 msgtype 的值 if(i==-1){ printf("no message is avaliable of type!n");} else { printf("message of type 1 received with data: %sn",mq_buf.mtext);} msgct1(msgid,IPC_RMID,0);//msgctl 删除消息队列 } 2.信 信 号 通 信 编 程 示 例 :#include
struct sigaction so,sn;// 思考:该结构描述信号到达时,进程该怎样处理sn.sa_handler=SIG_IGN;sigemptyset(&sn.sa_mask);sigaction(SIGINT,&sn,&so);while((pid1=fork())==-1);if(pid1==0){ sn.sa_handler=Int1;//信号量处理程序的入口地址 sn.sa_flags=0;//该标志表示处理该信号的一些特殊约定 sigemptyset(&sn.sa_mask);//是一个阻塞掩码,表示当该处理程序运行时,进程对信号的阻塞情况 sigaction(16,&sn,&so);pause();exit(0);}else{ while((pid1=fork())==-1);if(pid2==0){ sn.sa_handler=Int2;sn.sa_flags=0;sigemptyset(&sn.sa_mask);sigaction(17,&sn,&so);pause();exit(0);}else{ sn.sa_handler=IntDelete;sn.sa_flags=0;sigemptyset(&sn.sa_mask);sigaction(SIGINT,&sn,&so);wait(0);printf("parent process is killedn");exit(0);} } }
实 验 六 处 理 器 调 度 一.实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实习模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。
二.实验内容 选择一个调度算法,实现处理器调度,本实习有两个题,学生可选择其中的一题做模拟练习。
第一题:设计一个按优先数调度算法实现处理器调度的程序。
[提示]:
(1)假定系统有五个进程,每一个进程用一个进程控制块 PCB 来代表,进程控制块的格式为:
进程名 指针 要求运行时间 优先数 状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为 P 1,P 2,P 3,P 4,P 5。
指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。
要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(3)为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。例:
队首标志 K 2 K1 P 1 K 2 P 2 K 3 P 3 K 4 P 4 K 5 P 5 0 K 4 K 5 K 3 K 1 2 3 1 2 4 1 5 3 4 2 R R R R R PCB1 PCB2 PCB3 PCB4 PCB5(4)处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:
优先数-1 要求运行时间-1 来模拟进程的一次运行。
提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。
(5)进程运行一次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。
(6)若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
(7)在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。
(8)为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。
第二题:设计一个按时间片轮转法实现处理器调度的程序。
[提示]:
(1)假定系统有五个进程,每一个进程用一个进程控制块 PCB 来代表。进程控制块的格式为:
进程名 指针 要求运行时间 已运行时间 状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为 Q 1,Q 2,Q 3,Q 4,Q 5。
指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。
要求运行时间——假设进程需要运行的单位时间数。
已运行时间——假设进程已经运行的单位时间数,初始值为“0”。
状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2)每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。
(3)把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到 P 2 执行,则有:
标志单元 K 2
K1 Q 1 K 2 Q 2 K 3 Q 3 K 4 Q 4 K 5 Q 5 K 2 K 3 K 4 K 5 K 1 2 3 1 2 4 1 0 0 0 0 R R R R R PCB1 PCB2 PCB3 PCB4 PCB5(4)处理器调度总是选择标志单元指示的进程运行。由于本实习是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行:
已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。
请同学注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已经运行满一个时间片。
(5)进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。
(6)若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有的进程都成为“结束”状态。
(7)在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。
(8)为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。
三.实验报告
(1)实验题目。
(2)程序中使用的数据结构及符号说明。
(3)N-S 流程图。
(4)打印一份源程序并附上注释。
(5)打印程序运行时的初值和运行结果。要求如下:
ⅰ 进程控制块的初始状态。
ⅱ 选中运行的进程名以及选中进程运行后的各进程控制块状态。
对于ⅱ要求每选中一个进程运行后都要打印。
实验七 主存空间的分配和回收 一 . 实 验 目 的 熟 悉 可 变 分 区 存 储 管 理 方 式 下,主 存 空 间 的 分 配 和 回 收。
二 . 实 验 内 容 假 设 主 存 当 前 状 态 如 右 表 所 示 :
系 统 采 用 首 次 适 应 或 最 优 适 应 分 配 算 法 为 作 业 分 配 主 存 空 间,而 且 具 有 紧 凑 技 术。
请 编 程 完 成 以 下 步 骤 :
((1 1))..输 出 此 时 的 已 分 配 区 表 和 未 分 配 区 表 ;((2 2))..装 入 J Jo ob b3 3((1 15 5K K)),输 出 主 存 分 配 后 的 已 分 配 区 表 和 未 分 配 区 表 ;((3 3))..回 收 J Jo ob b2 2 所 占 用 的 主 存 空 间,输 出 主 存 回 收 后 的 已 分 配 区 表 和 未 分 配 区 表 ;((4 4))..装 入 J Jo ob b4 4((1 13 30 0K K)),输 出 主 存 分 配 后 的 已 分 配 区 表 和 未 分 配 区 表。
三 . 实 验 要 求 1 1 . 已 分 配 区 表 的 数 据 结 构 定 义 如 下 :
# #d de ef fi in ne e n n 1 10 0 / /* * 假 定 系 统 允 许 的 最 大 作 业 数 量为 为 n n,n n 值为 为 1 10 0* */ / s st tr ru uc ct t { {i in nt t n nu um mb be er r;;/ /* * 序 号* */ / i in nt t a ad dd dr re es ss s;;/ /* * 已 分 配 分 区 起 始 地 址,单 位为 为 K KB B * */ / i in nt t l le en ng gt th h;;/ /* * 已 分 配 分 区 长 度,单位 位 K KB B* */ / f fl lo oa at t f fl la ag g;;/ /* * 已 分 配 区 表 登 记 栏 标 志,0 0 :
空 表 项,否 则 为 作 业 名 ;* */ / } }u us se ed d_ _t ta ab bl le e[ [n n] ];;/ /* * 已 分 配 区 表* */ / 2 2 . 未 分 配 区 表 的 数 据 结 构 定 义 如 下 :
# #d de ef fi in ne e m m 1 10 0 / /* * 假 定 系 统 允 许 的 空 闲 区 表 最 大为 为 m m,m m 值为 为 1 10 0* */ / s st tr ru uc ct t { {i in nt t n nu um mb be er r;;/ /* * 序 号* */ / i in nt t a ad dd dr re es ss s;;/ /* * 空 闲 区 起 始 地 址,单 位为 为 K KB B * */ /
i in nt t l le en ng gt th h;;/ /* * 空 闲 区 长 度,单 位为 为 K KB B* */ / i in nt t f fl la ag g;;/ /* * 空 闲 区 表 登 记 栏 标 志,0 0 :
空 表 项 ;1 1 :
空 闲 区* */ / } }f fr re ee e_ _t ta ab bl le e[ [m m] ];;/ /* * 空 闲 区 表* */ / 3 3 .以 以 a al ll lo oc ca at te e 命 名 主 存 分 配 所 用 的 过 程 或 函 数。
4 4 .以 以 r re ec cl la ai im m 命 名 主 存 回 收 所 用 的 过 程 或 函 数。
四.实验报告(1)实验题目。
(2)程序中使用的数据结构及符号说明。
(3)N-S 流程图。
(4)打印一份源程序并附上注释。
(5)打印程序运行时的初值和运行结果。
实 验 八 文 件 系 统 一.实验目的 1.熟悉和理解文件系统的概念和文件系统的类型。
2.了解文件系统的功能及实现。
3.学习文件系统的系统调用及命令。
二.实验内容 1.使用 creat、open、read、write 等系统调用,实现 cp 命令的功能。
2.使用 opendir 和 readdir 等系统调用完成 Ls 的命令行命令。
3.熟悉文件及目录操作的基本命令。
三.实验报告 1.写出源程序并附上注释。
2.比较程序的运行结果与命令的运行结果是否一致。
四.程序示例 #include
