操作系统原理实验指导书2013.doc
《操作系统原理实验指导书2013.doc》由会员分享,可在线阅读,更多相关《操作系统原理实验指导书2013.doc(45页珍藏版)》请在咨信网上搜索。
操作系统原理实验指导书2013 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 计算机科学与技术专业适用 操作系统原理 实验指导书 使用班级:计软11 南京工业大学电子与信息工程学院 2013年5月 40 目 录 一、实验目的 1 二、实验要求与内容 1 2.1 实验题目 1 2.2 初始目录结构 1 2。3 系统操作命令简介 1 2。4 几点说明 2 三、设计方案 3 3.1 采用FAT文件格式 3 3.2 目录项(FCB)结构 3 3。3 根目录 4 3。4 主要函数 4 3.5 用户已打开文件表(UOF) 5 3。6 程序中有关变量的说明 5 1。 当前目录curpath数据结构 5 2。 删除文件恢复表udtab数据结构 5 3. 全局变量ffbp和Udelp 5 4。 全局数组comd[8][PATH_LEN] 6 5。 全局数组temppath[PATH_LEN] 6 3。7 主要函数的流程图 6 1。 主函数main()的流程图 6 2. create命令流程图 6 3. cd命令流程图 7 4。 del命令流程图 8 5。 dir命令流程图 8 6。 md命令流程图 9 7. rd命令流程图 9 8。 open命令流程图 10 9. close命令流程图 10 10。 write命令流程图 11 11。 read命令流程图 12 12. copy命令流程图 12 13。 ren命令流程图 14 14。 attrib命令流程图 14 15。 undel命令程序流程图 15 16。 FindPath( )函数程序流程图 15 17。 FindFCB( )函数程序流程图 15 18. ProcessPath( )函数程序流程图 17 四、实验任务 18 4。1 修改md命令 18 4.2 修改Help命令 18 4.3 修改命令行预处理程序 18 4.4 新增fc命令,实现两个文件的比较 18 4.5 新增replace命令,实现文件取代 18 4.6 新增move命令,实现文件“搬家”及子目录改名 19 4.7 新增batch命令,实现批处理 19 4.8 修改close、type等命令,允许不带文件名参数 21 4.9 完善copy命令 22 1。 改正某些缺陷 22 2。 允许覆盖同名文件(选做内容) 22 4。10 增加输出重定向功能(选做内容) 22 1. type命令的输出重定向形式 22 2. dir命令的输出重定向形式 23 4。11 修改del、copy等命令,使其可以使用统配符 *(选做内容) 23 4。12 修改copy命令,增加合并复制功能(选做内容) 23 4。13 修改程序,实现多磁盘文件系统(选做内容) 24 4.14 修改磁盘块容量(选做内容) 24 4。15 修改undel命令(选做内容) 25 1. 删除文件恢复表udtab不用数组存储,而直接存储在磁盘空间 25 2. 修改undel命令的执行方式并增强其功能 25 3. 采用类似于Windows的回收站方案 26 4.16 修改read命令,允许不带文件名参数(选做内容) 26 4。17 修改write命令,允许不带“文件名”参数(选做内容) 26 4.18 修改write命令,增加“删除”方式(选做内容) 27 五、文件系统中操作命令使用说明 27 5.1 基本系统的命令 27 5。2 增强系统的命令 32 六、学生应提交的实验材料 39 6.1 《实验报告》 39 6。2 源程序清单及其可执行文件 39 6。3 程序测试、运行的结果 39 操作系统原理实验指导书 一、实验目的 理解操作系统文件系统的某些工作原理,学习文件操作命令和目录操作命令的设计方法。通过实验,使学生加深对操作系统文件系统某些问题的理解,归纳学习方法和思考方法,做到理论联系实际。培养学生分析问题、解决问题的能力,提高学生软件设计能力和逻辑思维能力. 二、实验要求与内容 2.1 实验题目 文件系统的模拟设计 设计实现一个简单的文件系统,包括目录文件、普通文件,以及一些文件操作命令和目录操作命令(例如可以模仿DOS的有关命令)。具体要求如下列2.2和2.3。 2。2 初始目录结构 程序初始化时构造如图1所示的目录结构。 bin usr dev user lib bin li sun ma auto 图1 初始目录树 目录文件 普通文件 【图例说明】 根目录 图中auto是(普通)文件(初始化时假设是空文件),其余都是子目录(目录文件). 2.3 系统操作命令简介 在本文件系统中,要求可以实现如下操作: n 改变当前目录:cd [〈目录名>]。当前目录(工作目录)转移到指定目录下。指定目录不存在时,给出错误信息。若命令中无目录名,则显示当前目录路径。 n 创建文件:create 〈文件名〉 [〈属性>]。创建一个指定名字的新文件,即在目录中增加一目录项,不考虑文件的内容。对于重名文件给出错误信息. n 删除文件:del 〈文件名>。删除指定的文件,即清除其目录项和回收其所占用磁盘空间.对于只读文件,删除前应询问用户,得到同意后方能删除。当指定文件正在使用时,显示“文件正在使用,不能删除"的信息,当指定文件不存在时给出错误信息。 n 显示目录:dir[ 〈目录名〉[ 〈属性〉]]。显示“目录名"指定的目录中文件名和第一级子目录名。若指定目录不存在,则给出错误信息。 n 创建目录:md <目录名〉.在指定路径下创建指定目录,若没有指定路径,则在当前目录下创建指定目录.对于重名目录给出错误信息。 n 删除目录:rd 目录名。若指定目录为空,则删除之,否则,给出“非空目录不能删除”的提示。不能删除当前目录。 n 打开文件:open 〈文件名〉。若指定文件存在且尚未打开,则打开之,并在用户打开文件表(UOF)中登记该文件的有关信息。若指定文件已经打开,则显示“文件已打开"的信息;若指定文件不存在,则给出错误信息。只读文件打开后只能读不能写。 n 写文件:write <文件名> [<位置>][insert].在文件的指定位置处写入新内容。 n 读文件:read <文件名〉 [<位置m〉 [<字节数n>]]。从已打开文件中读指定内容并显示. n 关闭文件:close <文件名〉。若指定文件已打开,则关闭之,即从UOF中删除该文件对应的表项。若文件未打开或文件不存在,分别给出有关信息。 n 显示文件内容:type <文件名>。显示指定文件的内容.若指定文件不存在,则给出错误信息。 n 复制文件:copy 〈源文件名> 〈目标文件名>。命令功能:为目标文件建立目录项,分配新的盘块,并将源文件的内容复制到目标文件中。 n 文件改名:ren <原文件名> <新文件名〉。将指定文件的名字改为“新文件名"。若原文件不存在,给出错误信息.若原文件存在,但正在使用,也不能改名,同样显示出错信息。应检查新文件名是否符合命名规则以及是否存在重名问题。 n 显示、修改文件或目录属性:attrib 〈文件名〉[ 〈文件属性〉]。若命令中无“文件属性”参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。此命令对目录名同样适用。 2.4 几点说明 n 命令中的目录名和文件名可以统称为路径名,支持绝对路径(又称全路径)和相对路径; n 路径名是由目录结构中各级目录文件名和普通文件名(必定是最后一个名)用分隔符“/"连接而成的字符串组成。其中以字符“/”开始的路径名是绝对路径,表示从根目录开始;不是以字符“/”开始的路径名是相对路径,表示从当前目录开始.当前目录又称工作目录。 n 本系统规定,名字(文件名或目录名)的命名规则如下: (1) 名字长度不能超过FILENAME_LEN—1个字节,即10个字符(符号常数FILENAME_LEN为11)。允许输入的名字超过10个字符,但只有前10个字符有效; (2) 名字一般由字母(区分大小写)、数字、下划线等组成,名字允许是汉字; (3) 名字不能包含以下16个字符之一: ” * + , / : ; 〈 = 〉 ? [ \ ] | space(空格) (4) 名字中允许包含字符“。",但它不能是名字的第一个字符,故“。”、“.abc”、“..”和“.。abc"等等都是不合法的名字。“。。”代表父目录是例外,但它并非由用户通过键盘输入的名字,故不需要符合名字的命名规则。 n 本系统中,命令名(如dir)和命令参数中的有关关键字(如append或app、insert或ins等)不区分大小写.文件名和目录名中的字母是区分大小写的。 n 命令格式中,“<。..〉"代表某个字符串 ,“[ ]”中内容为可选项. 三、设计方案 本系统提供的参考程序在C++环境中开发,下面介绍系统的设计方案。 3.1 采用FAT文件格式 文件在磁盘上的组织采用FAT文件格式,为了设计程序方便,本系统的FAT表用整型数组FAT[K]表示(K为总盘块数,本系统中假定K=5000,即共有5000个盘块),而实际的操作系统,FAT表是存储在磁盘中的,当系统启动时装入内存。FAT[0]中存储空闲盘块数。 磁盘空间用字符数组Disk[K][SIZE] (其中SIZE为每个盘块的字节数,即盘块的容量)表示.本系统设定磁盘块容量为64B(功能较完整程序中盘块容量改为256B). 3.2 目录项(FCB)结构 本模拟系统的文件目录项(FCB)大小为16字节结构如下: 文件名 属性 首块号 文件长度 (11字节) (1字节) (2字节) (2字节) struct FCB //每个目录项16个字节 { char FileName[11]; //文件名最多10个字符且以’\0’结尾 char Fattrib; //文件属性 short int Addr; //文件首块号 short int Fsize; //文件长度 }; u 为简单,本系统不考虑文件扩展名,文件名为1~10个字符,以结尾标记'\0'存储(实际操作系统目录项中文件名一般没有结尾标记),命令中输入的文件名若超过10个则截取前10个字符。 u 文件属性为1个字节,其二进制位对应的属性如下图所示. D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1表示目录 0/1 0 1表示系统 0/1 1表示隐藏 0/1 0/1 1表示只读 u 文件的首块号Addr=0代表空文件(此时文件长度Fsize=0).文件名(目录名)的第一个字符的ASCII码为0E5H或00H,代表空目录项。其中0E5H是目录项被删除后的标志,00H代表该目录项从未使用过。 u 每个目录项占用16个字节,因系统中假设磁盘块大小SIZE=64,因此,每个盘块可存储4个目录项。 u 除根目录外,每个目录中的第一个目录项存储父目录的FCB(该目录项的名字为“。.”),其地址是父目录的首块号,它的作用是相当于指向父目录的指针,用于实现从该目录退回父目录。目录项“。。”是在创建目录时,由系统自动建立的,它不能被rd命令删除。 3。3 根目录 本系统假设根目录存储在1~30号盘块中,即存储在Disk[1]~Disk[30]的盘快中。因每个盘块可存储4个目录项,故本系统根目录中的文件目录项及子目录项最多共计120个。从31号盘块开始为文件区,用于存储文件及子目录。 本系统初始化时,图1所示的目录树的磁盘分配情况如图2所示。根目录 Disk[1] —— bin,usr,auto,dev Disk[31]:.. Disk[33]:.. Disk[32]:..,user,lib,bin Disk[30] Disk[35]:.. Disk[36]:.. Disk[34]:..,li,sun,ma Disk[37]:.. Disk[38]:.. Disk[39]:.. 图2 初始目录树的磁盘空间分配 指定目录 3。4 主要函数 系统参考程序的主要函数如下: main() 主函数 AttribComd() attrib命令处理函数 CdComd() cd命令处理函数 CloseComd() close命令处理函数 CopyComd() copy命令处理函数 CreateComd() Create命令处理函数 DelComd() del命令处理函数 DirComd() dir命令处理函数 MdComd() md命令处理函数 OpenComd() open命令处理函数 RdComd() rd命令处理函数 ReadComd() read命令处理函数 RenComd() ren命令处理函数 TypeComd() type命令处理函数 UndelComd() undel命令处理函数 WriteComd() write命令处理函数 ParseCommand() 分析、分解命令行 ExecComd() 执行命令 FindPath() 查找指定目录路径的首块号 FindFCB() 查找指定文件(或目录)的首块号 ProcessPath() 将路径名分离成目录路径与文件名两部分 3.5 用户已打开文件表(UOF) 设置一张“用户已打开文件表"(UOF),用于记录用户当前正在使用文件的情况.本系统允许用户最多同时打开或建立S个文件,故用户已打开文件表UOF共有S个登记栏。 用户请求打开或建立一个文件时,相应的文件操作把有关该文件的信息登记到UOF中。 UOF表项的结构如下: struct UOF //定义用户打开文件表的结构 { char fname[PATH_LEN]; //文件全路径名 char attr; //文件属性,1=只可读;0=可读写 short int faddr; //文件的首块号 short int fsize; //文件大小(字节数) FCB *fp; //指向该文件的目录项指针 short int state; //状态:0=空表项;1=新建;2=打开 short int readp; //读指针,指向某个要读的字符位置,0=空文件 short int writep; //写读指针,指向某个要写读的字符位置 }; 本程序中,用户打开文件表用数组UOF uof[S]表示,其中S=32,即最多允许同时打开32个文件.读指针和写指针用于指出对文件进行存取的当前位置。fp指向该UOF登记项对应的文件的目录项。系统启动时, UOF常驻内存,退出系统时,UOF不需要保存。 3。6 程序中有关变量的说明 1。 当前目录curpath数据结构 struct CurPath { short int fblock; //当前目录的首块号 char cpath[PATH_LEN]; //当前目录路径字符串 }; 当前目录用全局变量curpath存储:CurPath curpath; 根目录的路径字符串cpath是“/”,首块号为1。 2。 删除文件恢复表udtab数据结构 struct UnDel { //恢复被删除文件信息表的数据结构 char gpath[PATH_LEN]; //被删除文件的全路径名(不含文件名) char ufname[FILENAME_LEN];//被删除文件名 short ufaddr; //被删除文件名的首块号 short fb; //存储被删除文件块号的第一个块号(链表头指针) //首块号也存于fb所指的盘块中 }; 与实际系统不同,为简化程序设计,本系统的被删除文件恢复表用(全局变量)数组udtab存储,定义为:UnDel udtab[DM];程序中DM值为40,即最多保存40个被删除文件的信息(若删除文件数超过40个时,总是保持最新的40个被删除文件信息).一个被删除文件恢复后,其在udtab表中的信息将被删除。退出系统时该表可存于文件UdTab.dat中。 3。 全局变量ffbp和Udelp short Udelp; 它是udtab表的第一个空表项的下标,系统初始化时为0。当Udelp=DM时,表示表已满,需清除最早的表项(后续表项依次前移)。系统退出存盘时,其值保存到0号盘块Disk[0]中,以便下次启动系统使用. short ffbp; 它是分配盘块时FAT表的起始指针(下标),这样使得分配盘块类似于分区存储管理的“循环首次适应”分配算法,这有利于被删除文件的恢复。系统退出存盘时,其值也保存到0号盘块Disk[0]中。 4. 全局数组comd[8][PATH_LEN] char comd[8][PATH_LEN]; 它在分析命令时使用,其中comd[0]存放命令字符串,comd[1],。..,comd[7]用于存放命令参数。 5. 全局数组temppath[PATH_LEN] char temppath[PATH_LEN]; 用于临时存储文件的路径名(绝对路径名而非相对路径名)。例如,设当前目录为/usr,执行命令open user/boy时,系统将文件boy的全路径名(即绝对路径名) ”/usr/user/boy”,存放在temppath中,在登记UOF表项时,再将temppath存储到表项的fname域中。其他一些命令处理过程中也会用到temppath. 3。7 主要函数的流程图 1。 主函数main()的流程图 图3 主函数流程图 开始 初始化 结束 输入命令行 调用函数ParseCommand( ) 分解命令行 是 是exit吗? 否 调用执行命令函数ExecComd( ) 执行输入的命令 采用条件编译实现: 初始化目录树、FAT、Disk、UOF等 或者从文件读入FAT、Disk等数据 要保存数据吗? 保存相关数据 是 否 主函数main()的流程图如图3所示。 2。 create命令流程图 创建新文件的命令格式如下: create 〈文件名〉[ 〈文件属性〉] 命令中的“文件属性"规定了文件的使用权限,分为“只读"、“隐藏”、“系统”等,分别用“r”、“h”、“s”的形式表示,程序内部分别用1、2、4表示(参见3。2节的介绍),它们可以组合使用,例如“rh”表示“只读”且“隐藏"属性的文件,其属性值为3,又如“rhs”表示“只读”且“隐藏"且“系统”属性的文件,其属性值为7。若命令中无可选项“文件属性”,则创建的文件是属性值为0的普通文件,即不是只读文件,也不是隐藏文件,也不是系统文件。 create命令中的“文件名"允许是绝对路径名或相对路径名,例如命令 create /usr/user/boy 表示在根目录的usr子目录中的user子目录中建立文件boy,该文件为普通文件。又如 create bin/mail rh 图4 “创建文件”流程图 否 是 开 始 查temppath中最后一目录 该目录中有 该文件? 在该目录中找到空登记栏登记该文件名的目录项;在UOF中登记该文件,状态=建立,读指针=0(空文件),… 显示:同名文件 不能建立 返回 查找“文件名”中的路径, 并将该路径存于temppath中。 该路径存在吗? 否 显示:路径错误 是 返回 显示“文件创建成功” 表示在当前目录中的bin子目录中建立文件mail,该文件为“只读”且“隐藏"属性的文件。执行create命令时,当路径不存在或有同名文件,则分别给出错误信息。 create命令处理函数CreateComd()的简化流程图如图4所示. 3。 cd命令流程图 命令形式:cd [〈目录名〉]。命令功能:改变当前目录,即把指定目录变为当前目录(工作目录)。指定目录不存在时,给出错误信息。若命令中无目录名,则显示当前目录路径名.cd命令的处理函数为CdComd(),其简单流程图如图5所示. 开始 将查找过程得到的全路径名以及指定目录的首块号保存到当前目录变量中 返回 是 是 否 否 图5 cd命令函数流程图 显示错误信息 是 显示当前目录 否 命令格式正确吗? 命令中有参数吗? 指定路径正确吗? 4。 del命令流程图 命令形式:开始 命令格式正确吗? 调用FindFCB( )查找指定文件 指定文件存在吗? 删除指定文件的目录项 回收该文件占用的磁盘空间 返回 是 是 否 否 图6 del命令函数流程图 显示相关的错误信息 指定路径正确吗? 是 否 调用ProcessPath( )查找指定路径 文件正在使用吗? 是 否 否 开始 命令格式正确吗? 在指定目录中逐个查找目录项,显示文件或目录的名字,以及显示文件的长度或子目录标志。 最后显示文件和目录的统计数以及文件的总字节数和磁盘剩余字节数。 返回 是 否 图7 dir命令函数流程图 显示相关的错误信息 指定路径正确吗? 是 否 调用FindPath( )查找指定路径 否 del <文件名〉.命令功能:删除指定的文件,即清除其目录项和回收其所占用磁盘空间。对于只读文件,删除前应询问用户,得到同意后方能删除。当指定文件正在使用时,显示“文件正在使用,不能删除"的信息,当指定文件不存在时给出错误信息。del命令的处理函数为DelComd(),其简单流程图如图6所示。 5。 dir命令流程图 命令形式:dir [〈目录名>] [〈属性〉].命令功能:显示“目录名”指定的目录中文件名和第一级子目录名。若指定目录不存在,则给出错误信息.如果命令中没有指定目录名,则显示当前目录下的相应内容。若命令中无“属性”参数,则显示指定目录中“非隐藏”属性的全部文件名和第一级子目录名;若命令中有“属性”参数,则仅显示指定属性的文件名和目录名。属性参数的形式是“|属性符号”,其中属性符号有r、h和s三种(不区分大小写),分别表示“只读"、“隐藏”和“系统"三种属性,它们可以组合使用且次序不限。例如“|rh”,表示要求显示同时具有“只读"和“隐藏"属性的文件和目录名. dir命令显示文件名时,同时显示该文件长度;显示目录名时,同时显示“〈DIR〉”的字样。命令使用举例: dir /usr |h 显示根目录下usr子目录中全部“隐藏"属性的文件名和子目录名 dir .。 显示当前目录的父目录中全部“非隐藏”属性的文件和子目录名(包括“只读”、“系统”属性的文件和目录名也显示)。 dir命令的处理函数为DirComd(),其简单流程图如图7所示. 6。 md命令流程图 开始 命令格式正确吗? 在指定目录中查找空目录项(若已无空目录项,则为其分配新的盘块),找到后为新目录登记目录项。为新目录分配1盘块,用于登记该目录的第一个目录项,即“..”目录项。 返回 是 否 图 8 md命令函数流程图 显示相关的错误信息 指定路径正确吗? 是 否 新目录有重名吗? 是 否 命令形式:md 〈目录名>.命令功能:在指定目录路径下创建指定子目录。若没有指定路径,则在当前目录下创建指定子目录。对于重名目录给出错误信息.md命令的处理函数为MdComd(),其简单流程图如图8所示。 7。 rd命令流程图 命令形式:rd <目录名〉。命令功能:删除子目录。若指定目录为空(仅有一个“。."目录项的目录为空目录),则删除之,否则,给出“非空目录不能删除”的提示。不能删除当前目录。rd命令的处理函数为RdComd(),其简单流程图如图9所示。 开始 命令格式正确吗? 回收指定目录的磁盘空间,在其父目录中删除指定目录对应的目录项。 返回 是 否 图 9 rd命令函数流程图 显示相关的错误信息 是 否 是 否 指定路径正确吗? 要删当前目录吗? 指定目录空的吗? 是 否 8。 open命令流程图 命令形式:open <文件名〉。命令功能:打开文件.若指定文件存在且尚未打开,则打开之,并在用户打开文件表(UOF)中登记该文件的有关信息。若指定文件已经打开,则显示“文件已打开”的信息;若指定文件不存在,则给出错误信息。open命令的处理函数为OpenComd(),其简单流程图如图10所示. 开始 在UOF中登记指定文件的有关信息。显示文件打开成功。 返回 是 是 否 图10 open命令函数流程图 显示相关的错误信息 是 是 否 否 是 否 命令格式正确吗? 指定路径正确吗? 指定文件存在吗? 文件已打开了吗? UOF表已满了吗? 否 9。 close命令流程图 命令形式:close <文件名〉。命令功能:关闭文件.若指定文件已打开,则关闭之,即从UOF中删除该文件对应的表项。若文件未打开或文件不存在,分别给出有关信息。close命令的处理函数为CloseComd(),其简单流程图如图11所示。 开始 指定文件的首块号和长度保存到其目录项中;删除指定文件在UOF中的登记项。 显示文件关闭成功。 返回 是 否 图11 close命令函数流程图 显示相关的错误信息 是 否 命令格式正确吗? 指定文件打开了? 10。 write命令流程图 命令形式:write <文件名〉 [<位置>[ insert]]. 命令功能:向文件中写入信息。 命令中若无“位置"参数,则在写指针所指位置写入文件内容;若提供“位置”参数,则在对应位置写入内容。位置可以是整数n,是指在文件的第n个字节处开始写入(位置从1开始编号)。“位置"参数可以是“append”(前3个字符有效,不区分大小写),表示在文件尾部写入信息;参数“insert”(前3个字符有效,不区分大小写)表示新写入的内容插入到对应位置,对应位置开始的原内容后移。若无参数“insert”,写入内容代替文件原先的内容(改写方式)。写入内容中的“\n"代表“回车”符.写入完毕调整文件长度和写指针值。若文件未打开或文件不存在,分别给出错误信息。本系统约定:刚打开的文件,其写指针指向文件末尾.目前参考程序的write命令只有“插入”和“改写”两种功能,尚未提供“删除”功能。 write命令的处理函数为WriteComd(),其简单流程图如图12所示。 开始 是 否 否 图12 write命令程序流程图 是 是 否 否 是 否 命令中有文件名? 指定文件已打开? 是只读文件吗? 参数只有文件名? 第2参数是|app? 是 显示:“命令中无文件名” 显示:“文件未打开。” 显示:“只读文件不能写” 从写指针位置写 改写方式。 从文件尾部写 改写方式。 第2参数是|ins? 从写指针位置写,插入方式。 是 写入位置正确? 显示“写入位置错误。” 否 否 有第3参数吗? 是 第3参数是ins? 是 从写入位置写暂定为改写方式。 显示“命令参数错误。” 否 从写入位置写, 插入方式。 返回 返回 等待用户输入写入的内容 输入内容接到写入点 是插入方式吗? 写入点开始的原内容接到写入内容后边 是 否 11. read命令流程图 命令形式:read 〈文件名> [〈位置m> [<字节数n〉]]。命令功能:从已打开的文件中读文件内容并显示。若无“位置”参数,则从读指针所指位置开始读。若有“位置”参数,则从指定位置处开始读。位置m是指从文件开头第m个字节处读(m从1开始编号)。若无“字节数n"参数,则从指定位置读到文件末尾;若有“字节数n”参数,则从指定位置开始读n个字节。若文件未打开或文件不存在,分别给出错误信息。 read命令的处理函数为ReadComd(),其简单流程图如图13所示。 开始 按命令要求读出信息并显示 返回 是 否 否 图13 read命令程序流程图 显示“命令中参数太多或太少” 是 是 否 否 否 是 命令格式正确吗? 文件已打开了吗? 是空文件吗? 命令只有1个参数? 读位置正确吗? 是 显示“文件未打开或不存在。” 显示“是空文件,不能读。” 从读指针所指位置读到文件尾部 显示“命令中读位置错误。” 否 是 命令有第3参数? 从读位置开始读到文件尾部 否 是 读字节数n正确吗? 显示“命令中读字节数错误。” 从读位置开始读n个字节 调整读指针 12。 copy命令流程图 命令形式:copy <源文件名> 〈目标文件名〉。命令功能:为目标文件建立目录项,分配新的盘块,并将源文件的内容复制到目标文件中.若目标文件与源文件所在的目录相同,则只能进行更名复制,此时目标文件名不能省;若目标文件与源文件所在的目录不同,则既可更名复制也可同名复制,同名复制时目标文件名可省。 例如,命令 copy mail email (1) 若当前目录中不存在email(目录或文件),则该命令将当前目录中的文件mail,复制成当前目录下的文件email; (2) 若当前目录下存在email,但email是子目录名,则将当前目录中的文件mail,复制到当前目录中的email子目录内,文件名为mail(同名复制);此时若email目录内已经存在名字为mail的文件或目录,则出现重名错误; (3) 若当前目录内存在email文件,则出现重名错误(并不询问是否覆盖); (4) 若当前目录内不存在源文件mail(或者虽然有mail,但它是子目录名),则也报错。 【注】 l 在同一目录中,各目录项不能重名(不管是文件名还是子目录名) l 上述(2)(3)是为了简化程序设计,真实系统一般与这种处理方式有区别,请参见实习任务的“完善copy命令”中的叙述。 copy命令的处理函数为CopyComd(),其简单流程图如图14所示. 开始 为目标文件建立目录项,分配磁盘空间,复制源文件内容到新分配的磁盘空间。 返回 是 否 否 图14 copy命令程序流程图 显示“命令中参数太多或太少” 是 是 否 否 否 是 命令格式正确吗? 源文件存在吗? 源文件已打开? 命令只有1个参数? 目标路径正确吗? 是 显示“源文件不存在。” 显示“文件正在使用不能复制。” 文件复制到当前目录,同名复制 显示“路径名错误。” 否 是 目标文件名正确? 显示“目标文件名错误。” 是 否 目标文件名冲突? 显示“目标文件重名错误。” 目标文件与 子目录同名? 源文件同名复制到该子目录中 源文件更名复制到目标目录中 是 否 子目录有源文件同名文件? 是 否 13. ren命令流程图 命令形式:ren <原文件名> <新文件名〉。功能:文件改名,即将指定文件的名字改为“新文件名”。若原文件不存在,给出错误信息。若原文件存在,但正在使用,也不能改名,同样显示出错信息。应检查新文件名是否符合命名规则以及新文件名是否有重名冲突。 ren命令的处理函数为RenComd(),其简单流程图如图15所示. 开始 返回 是 否 否 图15 ren命令程序流程图 显示“命令中参数太多或太少” 是 是 否 否 命令格式正确吗? 改名文件存在吗? 文件已打开了吗? 新文件名合法吗? 是 显示“要改名的文件不存在。” 显示“文件正在使用不能改名。” 在该文件的目录项中用新名字代替原名字 显示“新文件名不合规则。” 否 是 新文件名重名吗? 显示“存在文件新文件重名。” 14。 attrib命令流程图 命令形式:attrib <文件名〉 [±〈文件属性〉].功能:显示、修改文件或目录属性。若命令中无“文件属性”参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。“文件属性"的形式有“+r或+h或+s"和“—r或—h或—s”两种形式,前者为设置指定文件为“只读"或“隐藏"或“系统"属性,后者为去掉指定文件的“只读”或“隐藏”或“系统”属性。各属性可组合使用且顺序不限.例如: attrib user/boy +r +h 上述命令的功能是设置当前目录下user子目录中的文件boy为只读、隐藏文件。又如 attrib /usr/user/box —h —r -s 上述命令的功能是取消根目录下usr子目录中user子目录中的box文件的“隐藏”、“只读"、“系统”属性。 当命令中指定的文件已打开或不存在,不能修改其属性,给出错误信息;当命令中提供的参数错误,也显示出错信息。 【注】本程序没有考虑属性的相关性和制约性.例如,DOS操作系统中,设置一个文件的“系统”属性时,必须先将该文件的属性设置成“只读"和“隐藏”后,才能设置它为“系统属性”,即设置属性有次序问题。本系统不受这些限制。 attrib命令的处理函数为AttribComd(),其简单流程图如图16所示. 开始 返回 是 否 否 图16 attrib命令程序流程图 显示“命令中参数太多或太少” 是 是 否 否 命令格式正确吗? 文件/目录存在吗? 命令没有属性吗? 命令指定的是文件? 是 显示“文件或目录不存在。” 显示指定文件或目录的属性。 按命令的属性给指定文件或目录设置属性 否 是 该文件打开了吗? 显示“文件正在使用,不能修改属性。” 所给属性正确吗? 否 显示“命令中的属性参数错误。” 是 15。 undel命令程序流程图 命令形式:undel [〈目录- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 实验 指导书 2013
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文