首页 > 其他 > 详细

操作系统lab0实验报告

时间:2021-03-14 14:02:33      阅读:133      评论:0      收藏:0      [点我收藏+]

实验文档-lab0

 

一、思考题汇总

 

思考1:通过你的使用经验,简单分析 CLI Shell,GUI Shell 在你使用过程中的各自优劣(100 字以内)

答:CLI指命令行界面,GUI指图形界面。

对于图形界面,其优势在于:

  • 界面较为清晰美观,适合初学者使用。

  • 能发挥鼠标的作用。

  • 适合不具有程序设计基础的广大大众使用。

  • 可以设计出许多需要运用图形界面的游戏等。

 

对于命令行界面,其优势在于:

  • 所有操作都用输入命令操控,不需要打开文件,只需要敲击简单的代码就能完成许多复杂的操作。

  • 程序执行的速度相对于图形界面更加快。

  • 具有更高的稳定性。

 

思考2:使用你知道的方法(包括重定向)创建下图内容的文件(文件命名为test),将创建该文件的命令序列保存在command文件中,并将test文件作为批处理文件运行,将运行结果输出至result文件中。给出command文件和result文件的内容,并对最后的结果进行解释说明(可以从test文件的内容入手) 具体实现的过程中思考下列问题:echo Shell Start 与 echo ‘Shell Start‘效果是否有区别 echo $c>file1 与 echo ‘$c>file1‘ 效果是否有区别

技术分享图片

答:在echo指令中,加单引号表示对引号中字符原封不动是进行输出,而不加的情况下,对于后方参数中的变量,会被变量替换。在test中,实现的是定义a, b, c三个变量,令c = a + b,并将a, b, c三个变量分别存入file1, file2, file3中,再将三个文件的内容逐一重定向输出到file4中,再将file4的内容另存为到result中。

 

思考3:仔细看看这张图,思考一下箭头中的 add the file 、stage the file 和commit 分别对应的是 Git 里的哪些命令呢?

技术分享图片

答:

  • add the file 对应 git add

  • stage the file 对应 git add

  • commit 对应 git commit

 

思考4:
  • 深夜,小明在做操作系统实验。困意一阵阵袭来,小明睡倒在了键盘上。等到小明早上醒来的时候,他惊恐地发现,他把一个重要的代码文件printf.c删除掉了。苦恼的小明向你求助,你该怎样帮他把代码文件恢复呢?

  • 正在小明苦恼的时候,小红主动请缨帮小明解决问题。小红很爽快地在键盘上敲下了git rm printf.c,这下事情更复杂了,现在你又该如何处理才能弥补小红的过错呢?

  • 处理完代码文件,你正打算去找小明说他的文件已经恢复了,但突然发现小明的仓库里有一个叫Tucao.txt,你好奇地打开一看,发现是吐槽操作系统实验的,且该文件已经被添加到暂存区了,面对这样的情况,你该如何设置才能使Tucao.txt在不从工作区删除的情况下不会被git commit指令提交到版本库?

    答:

    1. 需要使用

      git checkout printf.c
    2. 需要依次使用

      git reset HEAD printf.c
      git checkout printf.c
    3. 需要编写.gitignore,并在其中写入

      /mtk/Tucao.txt

 

思考5:

思考下面四个描述,你觉得哪些正确,哪些错误,请给出你参考的资料或实验证据。

  1. 克隆时所有分支均被克隆,但只有HEAD指向的分支被检出。

  2. 克隆出的工作区中执行 git log、git status、git checkout、git commit等操作不会去访问远程版本库。

  3. 克隆时只有远程版本库HEAD指向的分支被克隆。

  4. 克隆后工作区的默认分支处于master分支。

答:

  1. 错误,克隆后若不使用git checkout,分支不能被检出,且克隆时只会克隆远程库的master分支。

  2. 正确,若不使用git push,则所有访问都是在本地库中进行,不会访问到远程库。

  3. 正确。

  4. 正确。

 

二、实验难点图示

本实验主要考察的是bash脚本的编写以及makefile的编写

bash脚本的创建首先要创建.sh文件,并运用vim等编辑器将shell指令写入其中,再给予权限,最后用bash进行脚本运行,例如在task7中,编写modify.sh如下。

sed -i "s/$2/$3/g" $1

之后,再在主机中输入指令:

chmod -x modify.sh

最后,用bash运行

bash modify.sh

技术分享图片

makefile是shell中常用的工程文件,可以在其中编写指令来进行一段系统的操作。

每一个makefile的主体由若干个命令块组成,命令块的格式为:

target:dependencies
commend1
commend2
commend3
...
commendn

其中的commend便是常规的shell指令,dependencies为此方法执行的依赖,某个dependence不存在,则在makefile中寻找target为该dependence的命令块并递归执行,再执行此命令块。例如在task8中,csc与code中的Makefile文件分别如下。

SUBDIR = ./code
MAKE = make
CLEAN = clean
CC = gcc
submake: $(SUBDIR)/main.o $(SUBDIR)/fibo.o
       $(CC) -o fibo $(SUBDIR)/fibo.o $(SUBDIR)/main.o -I include
      ./fibo
?
$(SUBDIR)/main.o:
       cd $(SUBDIR) && $(MAKE) omain
?
$(SUBDIR)/fibo.o:
       cd $(SUBDIR) && $(MAKE) ofibo
clean:
       $(MAKE) $(CLEAN) --directory=$(SUBDIR)
?
CC = gcc
?
ofibo: fibo.c
       $(CC) -c fibo.c -I ../include
omain: main.c
       $(CC) -c main.c -I ../include
?
clean:
       rm *.o

技术分享图片

 

三、体会与感想

本实验并不涉及操作系统课程的主体部分,仅仅是一个对shell指令的练习。作为一个之前使用命令行界面并不频繁的人,在学习这些指令,尤其是在bash与makefile的使用中,以及完成作业上仍然还是花了较多的时间。在后期进行真正的操作系统架构的设计时,仍然需要多次调用这些指令,因此掌握它们尤为重要,在接下来的时间中,我仍应该多去用虚拟机对这些指令进行联系,从而让自己接下来的操作系统实验进行得更加顺利。

操作系统lab0实验报告

原文:https://www.cnblogs.com/moc-85422729/p/xwc_os_lab0.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!