77范文网 - 专业文章范例文档资料分享平台

操作系统原理实验指导书(5)

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

《操作系统实验》指导书

四、实验任务

以下实验任务中,每个学生可在4.1~4.8中任选4项任务。4.9~4.17为“选做内容”,能力较强的学生可在完成上述必做题目基础上,选择几项“选做”任务并努力完成之。4.1~4.17中的各项功能,在“OS实验.exe”程序都已实现,同学们可运行该程序,观察各项功能的执行情况。

4.1 修改md命令

修改md命令,增加“属性”参数,用于创建指定属性的子目录。命令形式如下:

md <目录名>[ <属性>]

属性包括R、H、S以及它们的组合(不区分大小写,顺序也不限)。例如: md user rh

其功能是在当前目录中创建具有“只读”和“隐藏”属性的子目录user。

4.2 修改Help命令或命令行预处理程序

对下面两项任务,每个学生可任选其中一项。 1. 修改help命令的显示方式和显示内容

修改HelpComd()函数,使之提供菜单式的较详细的帮助信息。例如可以先用菜单形式简单列出各命令名称,当用户选择某个命令的序号后,再比较详细地介绍该命令,包括命令的各种形式,每种形式的功能,以及某些举例说明等等。 2. 修改命令行预处理程序

修改命令行预处理函数ParseCommand( ),使以下命令行(命令与参数间无空格符)可以正确执行: cd/ cd.. dir/usr

copy/usr/boy mail ??

即命令名称与后边的“/”或“..”之间不需要空格也能正确执行。

【说明】参考程序已经可以处理类似于“cd/”的形式,但还不能处理“cd..”等形式。另外,若有输出重定向功能,“>”、“>>”也允许不是用空格分隔符(即允许与其它参数连用)。例如:type/usr/boy>>/test

4.3 新增fc命令,实现两个文件的比较

命令形式:fc <文件名1> <文件名2>

命令功能:逐个字节比较指定的两个文件,若相同,显示“文件内容相同”字样;若不同,显示第一个不同字节的位置和各自的内容。若文件不存在则报错。

4.4 新增replace命令,实现文件取代

命令形式:replace <文件名> <目录名>

命令功能:以“文件名”指定的文件,取代“目录名”指定目录中的同名文件。 请按以下要求设计replace命令的函数:

? 若指定文件或被取代文件不存在,则报错; ? 若被取代的是只读属性的文件时,应询问用户; ? 具有隐藏和系统属性的文件不能被取代;

18

《操作系统实验》指导书

? 若目录名参数缺省,则取代当前目录的同名文件;

? 文件名指定的文件和被取代的文件不应该是同一个文件,即不能自己取代自己。

4.5 新增move命令,实现文件“搬家”及子目录改名

命令形式:move <文件名> <目录名> 命令功能:将“文件名”指定的文件或目录,移动到“目标名”指定目录中(名字保持不变)。此命令也可改变子目录名。“文件名”指定被操作的文件或目录,可以是目录名;“目录名”指定“文件名”的新位置或子目录的新名字,即必须是目录名,不能是文件名。文件或子目录转移时不能改名。

? 若转移的是一个文件,且目录名指定的目录原来已经存在,则将该文件转移到指定目

录中;若指定目录中有同名文件,则询问是否覆盖,若同意则覆盖之。

? 若转移的是一个子目录,而“目录名”指定的子目录不存在,则move命令执行子目录

改名操作(必须是同一目录内);若指定目录存在,则将“文件名”指定的目录转移到该目录中,但若指定目录中存在与“文件名”指定的目录同名的子目录,则报错。 move命令的要点归纳如下: (1) 文件或目录,无重名时,可转移到目标目录中(只能同名转移,转移必定是不同目录的); (2) move命令可对子目录改名,但不能用于文件改名(改名操作必定是同目录进行的); (3) 转移时,文件可覆盖文件,目录也可覆盖文件;但文件或目录都不能覆盖目录。 应用举例:

① 将当前目录中的子目录lin,改名为chen,可输入如下命令: move lin chen

【注】前提是lin是当前目录中的一个子目录,而当前目录中无chen子目录和chen文件。 ② 将当前目录中的子目录lin,转移到子目录/bin中,可输入如下命令: move lin /bin

【注】前提是lin是当前目录中的一个子目录,而根目录中已存在子目录bin,且/bin中无名字为lin的子目录。此命令可覆盖子目录/bin中的名字为lin的文件(要询问用户)。 ③ 将目录/usr中的文件boy,转移到当前目录下的bin子目录中,可以输入如下命令: move /usr/boy bin

【注】前提是boy是目录/usr中的一个文件,而当前目录中已存在子目录bin,且bin中无名字为boy子目录。若bin目录中已存在文件boy,则询问用户是否覆盖。 【说明】新增move命令和新增batch命令两项工作可任选其一。

4.6 新增batch命令,实现批处理

(注:设计此命令与设计move命令命令两项工作可任选其一) 命令形式:batch batchfile

命令功能:从磁盘文件batchfile逐行读入命令行执行,直到batchfile中所有命令行都执行完毕为止。

batchfile是一个预先编好的文本文件,其内容是多条可执行命令。例如,预先编好文本文件test.txt,其内容为: cd /usr dir

type boy

copy boy user/box

则执行命令batch test.txt,系统将依次自动执行cd /usr、dir、type boy和copy boy user/box四条命令,跟你用键盘依次输入上述四条命令的执行过程和执行效果完全相同。

【注】(1) 文本文件可以在“记事本”或MSDEV或其他任何文本编辑环境中编写。利用此命

19

《操作系统实验》指导书

令,可以改写(简化)目录初始化程序,建立如图1所示的初始目录结构。

(2) 功能较完整的演示程序“OS实验.exe”,除了从真正的磁盘文件读入并执行批处

理命令外,batch命令还提供了如下形式(带一个参数“s”): batch filename s

该命令从模拟盘Disk[][]中读入批处理文件,并逐条执行命令,例如,模拟盘根目录中有文件test,其内容如下: dir

type map cd usr dir

open /boy cd user/ma type qil_nanj cd / uof

close boy

则在当前目录为根目录时,键入命令:

C:/>batch test s (下划线部分为键入内容) 系统执行过程如下: C:/>dir

The Directory of C:/

bin

usr

auto 0 dev

boy 170 abc_map 203 map 76 test 77 5 file(s) 526 bytes 3 dir(s) 313856 free

C:/>type map A A A A A A A A A A A A A A A A

C:/>cd usr

20

《操作系统实验》指导书

C:/usr>dir

The Directory of C:/usr

..

user lib bin

boy 270 cat 171 dirfile 279 dir0 281

4 file(s) 1001 bytes 4 dir(s) 313856 free

C:/usr>open /boy

文件/boy打开成功。

C:/usr>cd user/ma

C:/usr/user/ma>type qil_nanj

七律 人民解放军占领南京 1949.04

钟山风雨起苍黄,百万雄师过大江。 虎踞龙盘今胜昔,天翻地覆慨而慷。 宜将胜勇追穷寇,不可沽名学霸王。 天若有情天亦老,人间正道是沧桑。

C:/usr/user/ma>cd / C:/>uof

打开文件表UOF的内容如下:

文件名 文件属性 首块号 文件长度 状态/boy 普通 40 170 打开 1 171

C:/>close boy

关闭文件/boy成功。

从上可见,其执行过程与直接键入命令完全相同。

4.7 修改close、type等命令,允许不带文件名参数

修改close、type等命令,使其可以使用如下命令形式: (1) close命令改成可用如下形式: close <文件名>——关闭指定文件

close——关闭当前操作文件(新增形式)

21

读指针 写指针

《操作系统实验》指导书

(2) type命令改成可用如下形式:

type <文件名>——显示指定文件内容

type——显示当前操作文件内容(新增形式)

所谓“当前操作文件”,是指上一次使用create、open、write、read、rewind或fseek等命令操作过的文件。

另外,fseek、rewind、block等非正规操作系统命令也可增加没有文件名的命令形式。如修改fseek命令后,使它可用如下2种命令形式:

fseek <文件名> |p——将指定文件的读、写指针移到文件第n字节处。此处“|p”表示位置,“”表示某个整数(此形式与参考程序对应命令功能相同)。

fseek |p——将当前操作文件的读、写指针移到文件第n字节处(新增形式) 【注】为了将文件名与位置参数区别开来,位置参数前加字符“|”以便与文件名区别。

4.8 完善copy命令

1. 改正某些缺陷

目前参考程序中的copy命令不能处理如下情况:假设当前目录是/usr,执行如下命令之一 copy boy / copy boy ..

上述2条命令应该是将当前目录/usr中的文件boy复制到其父目录(根目录)中,文件名仍为boy。但系统不能正确执行,而显示“目标文件名错误”的信息。正确的功能应该是: ? 若当前目录中不存在文件boy,则报错;

? 第2个命令若当前目录是根目录,因根目录没有父目录,故应报错;

? 若当前目录的父目录中已经存在名为boy的文件,也报错(或询问用户是否覆盖)。 ? 其他情况上述命令都应能正确执行。

请按此要求修改copy命令处理程序,使之在上述命令形式也能正确执行。 2. 允许覆盖同名文件(选做内容)

参考程序中的copy命令,为了程序设计方便,当目标文件存在同名文件或同名子目录时,就停止执行复制操作。可模仿DOS操作系统,修改copy命令,使当目标文件存在同名文件时,询问用户是否覆盖,得到肯定回答时,即使该同名文件是只读文件,也仍然复制(覆盖原先文件,即与目标文件同名的文件被删除)。例如,当执行命令:copy boy /usr/test时,若子目录/usr中已存在文件test,则询问是否覆盖;若test是子目录名,则将文件boy复制到子目录/usr/test下,文件名与源文件相同,即boy。但是如果/usr/test/boy仍为子目录,则显示错误信息,停止执行copy命令。

4.9 增加输出重定向功能(选做内容)

某些命令执行结果在屏幕显示,可以使其输出结果保存到某个文件中(屏幕不再显示),这就是所谓的“输出重定向”功能。例如,可以修改如下命令,使之具有输出重定向功能(输出重定向用符号“>”或“>>”表示): 1. type命令的输出重定向形式

命令形式1:type <文件名1> > <文件名2>

命令功能:将原先应该显示的“文件名1”指定的文件内容,保存到“文件名2”指定的文件中。文件名2指定文件的原先内容被删除。这相当于复制文件。 命令形式2:type <文件名1> >> <文件名2>

命令功能:将原先应该显示的“文件名1”指定的文件内容,保存到“文件名2”指定的文件中。文件名2指定文件的原先内容不删除,新内容接到原先内容尾部。这相当于合并复制文件。

22

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统原理实验指导书(5)在线全文阅读。

操作系统原理实验指导书(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/652791.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: