NachOS实验报告(4个全)(3)

2019-03-22 21:44

1 把nachos4.1下载到/usr/local目录 2 tar -zvxf nachos-4.1.tgz

3 进入解压后的目录,其中有code子目录,再进入其中的build.linux子目录 4 输入 make depend

5 输入 make 看看结束有没有错误,如果没有,那么就成功了。

编译好的nachos系统镜像就在build.linux目录下,运行时直接 . / nachos 就可以了。

如果要到其他目录下运行的话,还要export才行。nachos详细运行参数可以用 . / nachos -u 得到。 交叉编译工具的搭建。

把下载的交叉编译工具放到 / 目录下,即根目录下然后用tar -zvxf 命令解压即可。必须放到根目录下,因为压缩包里面包含了/usr/local的目录层次。

另外还需要编译测试程序转换工具,进入 nachos4.1/code/coff2noff 运行 . / configure make 即可。

然后在Rat Hat上编译出nachos,其系统结构如下图所示: Si35Setup.rar的安装

虽然在linux我们可以高效地完成所有开发所需的任务,但是对于刚刚开始接触unix/linux的同学,一下子用熟那么多的工具还是有些困难的。正是基于这一点我们的教学网站上也提供了在windows下用来阅读代码的工具Source Insight,借助于它我们可以加快代码阅读速度。

这个软件的安装是个很简单的过程只要运行setup一路next下去就可以了。 代码阅读时要先建工程,点击project-new project,然后按照要求回答源代码的位置,工程就会顺利的建成。代码阅读时如果需要一些功能比如想要查找某个符号的定义只要在选定的符号上点右键就会弹出菜单,选择相应的命令就可以了。 Nachos的介绍

Nachos的全称是“Not Another Completely Heuristic Operating System”,它是一个可修改和跟踪的操作系统教学软件。它给出了一个支持多线程和虚拟存储的操作系统骨架,可让学生在较短的时间内对操作系统中的基本原理和核心算法有一个全面和完整的了解。

Nachos的目录结构

以上操作系统可以发现在工作目录下生成一个名为nachos-3.4 的目录。该目录中含有: copyright 文件 Nachos 的版权信息 readme 文件 Nachos 的readme 信息

nachos.ps 文件 Nachos 的介绍文档(Postscript 格式) c++example 目录 有关C++介绍和实例

doc 目录 Nachos 各个部分介绍和原有的作业要求 code 目录 Nachos 各个部分的源代码

最主要的部分是Nachos 的源代码部分。它的目录结构是: Makefile Makefile.common Makefile.dep 文件 文件 文件

Nachos 的Makefile 文件。当Nachos 需要移植到其它系统时, 可以修改Makefile.dep 中的HOST 参数 machine 目录 Nachos 虚拟机模拟部分源代码 threads 目录 Nachos 线程管理部分源代码 filesys 目录 Nachos 文件系统管理部分源代码 userprog 目录 Nachos 用户程序部分源代码 network 目录 Nachos 网络管理部分源代码 vm 目录 Nachos 虚拟内存管理部分源代码 test 目录 一些测试用应用程序

bin 目录 包含有用户程序目标码变换的程序

三、各个部分的编译运行

Nachos的各个部分都可以独立编译运行,也可以同时编译各个部分。全部编译可以采用如下

命令:

~/nachos-3.4$ make

当需要单独编译线程管理部分时,先进入threads 目录,然后采用如下命令: ~/nachos-3.4/threads$ make depend ~/nachos-3.4/threads$ make nachos

实际上,各部分目录下都有一个Makefile 文件,内容大体相同,区别在于一些条件编译的

参数。比如在单独编译线程管理部分时,文件管理部分就被屏蔽了,这样读者读者就可以专

心于线程管理部分的调试。

四、应用程序的编译

由于Linux 指令集和R2/3000 指令集不同,用户编写的应用程序用Linux 系统中标准gcc 编

译后,不能直接在Nachos 虚拟机环境下运行。所以需要采用交叉编译技术。所谓交叉编译

技术是在一个操作系统下将源码编译成另一个操作系统的目标码,这里就是在Linux 下通过

gcc 交叉编译版本将用户程序的源码编译成R2/3000 指令集的目标码。

在Linux 中,没有缺省的交叉编译工具。读者可以到上海交通大学计算机系FTP 服务器上

下载,URL 为:

ftp://donkey.cs.sjtu.edu.cn/linux/cross-compiler.tgz

该文件的解开需要有超级用户的权利,将解开至/usr/local/目录下: /# gzip -dc cross-compiler.tgz | tar xf -

在编译用户程序时,用交叉编译器将源码编译成R2/3000 指令集的目标代码,再经过一个简

单的转换就可以在Nachos 虚拟机上运行。注意,在读者实现虚拟存储之前,有些应用程序

可能会因为使用过多的内存而不能运行。

实验内容:

本项目在实践的过程中需要注意以下要点:

Shell项目的要求

一、 设计一个简单的命令行shell,满足下面的属性并且可以在指定的UNIX

平台下执行。

1. 这个shell支持一下内部命令:

a) cd——把当前默认目录改变为。如果没有

参数,则显示当前目录。如果该目录不存在,会出现合适的错误信息。 b) cle——清屏。

c) dir——列出目录的内容。 d) environ——列出所有的环境变量。

e) echo——在屏幕上显示并且换行(多个空格和制

表符可能被缩减为一个空格)。

f) help——显示用户手册,并且使用more命令过滤。 g) pause——停止shell操作直到按下回车键。 h) quit——推出shell。

i) shell的环境变量应该包含shell=/myshell,其中

/myshell是可以执行的shell完整路径(及shell的可执行路径,而不是他在目录下的硬连接路线)。

2. 其他的命令行输入被解释为程序的调用,shell创建并执行折个程序,

并作为自己的子进程。程序的执行的环境变量包含在以下条目中: parent=/shell,其中/myshell已经在1.i)中描述过了。

3. Shell必须能够从文件中提取命令输入 例如shell使用以下命令行被调用:

programname arg1 arg2 outputfile

这个批处理文件应该包括一组命令集,当到达文件结尾时shell退出。很明显,如果shell被调用是没有使用参数,他会在屏幕上显示提示符请求用户输入。

4. Shell必须支持i/o重定向,stdin和stdout,或者其中之一 a) 例如命令行:

programname arg1 arg2 outputfile

使用arg1以及arg2执行程序programname,输入文件流被替换为inputfile,输出文件流被替换为outputfile. b) stdout重定向应该支持一下的内部命令: i. dir ii. environ iii. echo iv. help

以上内部命令已在1中有具体解释,本处比在叙述。

使用输出重定向时,如果重定向字符为>,则创建输出文件,如果存在则覆盖之;如果重定向字符为〉〉,也会创建输出文件,如果存在则添加到文件尾。

5. shell必须支持后台程序执行。如果在命令行后面添加&字符,在加载

完程序后需要立刻返回命令行的提示符。命令行提示符必须包含当前路径。

二、 写一个关于使用如何使用shell的简单的用户手册,用户手册应该包括足

够的细节以方便UNIX的初学者简单方便的使用这个shell程序。

例如:解释i/o重定向,程序环境以及后台程序执行。用户手册必须命名为readme,必须为一个可以并准文件编辑器可以打开的简单的文档。

例如这个描述类型和深度的例子,cah和tcsh的在线帮助(man csh,man tcsh)。这两个shell明显比我们所谓的shell具有更加强大功能。所以用用户手册不一定要非常庞大,也不应包括编译指示——即文件列表和源代码,这个用户手册应该面向操作用户,所以台应该是一个操作用手册而不是一个程序员手册。

三、 源代码必须有很详细得注释,并且要有很好的组织结构以方便非制作人员

的阅读,维护或者修改。结构和注释使程序跟更加易于阅读和理解,并且可以保证批改你的作业的人不用很费劲的去读你的源代码。

四、 在提交的源代码文件中,包括: a) 原文件 b) makefile c) readme

并且这些源代码应该能够编译完成完整的结果。

五、 makefile必须产生二进制未见myshell。

例如一个makefile例子:

#Joe Citizen,s1234567-Operating Systems Project 1 #CompLab1/01 tutor: Fred Bloggs

myshell:myshell.c utility,c myshell.h gcc-Wall myshell.c utility.c-o myshell

在执行命令符键入make就会产生myshell程序。上述makefile从第4行必须以制表符开始。

六、 根据上述第6点的实例中,提交的目录中应该包含以下文件:

i. makefile ii. myshell.c


NachOS实验报告(4个全)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《电子商务》2016年必修考试题目资料答案题库(最完全)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: