Nachos 用户程序和系统调用实验报告
本实验报告的主要目的是了解 Nachos 操作系统中的用户程序和系统调用机制。通过本次实验,我们可以了解用户进程的启动过程、用户进程如何与操作系统内核通过系统调用进行交互,以及系统调用是如何实现的。
一、实验目的
本次实验的目的是了解 Nachos 操作系统中的用户程序和系统调用机制,具体来说包括:
* 如何启动用户进程
* 用户进程如何与操作系统内核通过系统调用进行交互
* 系统调用是如何实现的
二、实验环境
本次实验的环境设置如下:
* 硬件环境:CPU:core /2.4MHz,内存:2GB,硬盘:100GB
* 软件环境:Ubuntu 08.4-Linux 操作系统,Gnome 桌面 2.18.3,BASH_VERSION='3.2.33(1)-release,gcc version 4.1.2,vi 3.1.2,gedit 2.18.2,OpenOffice 2.3
三、实验步骤
1. 改变 halt.c 的代码,添加系统调用 Halt()
2. 重新编译 halt.c 文件,并添加权限
3. 使用以下命令生成 halt.s 文件
```
/usr/local/mips/bin/decstation-ultrix-gcc -I../userprog -I../threads -S halt.c
```
4. 将当前路径移动到 userprog 下,为该目录下的 addrspace.cc 添加新方法 Print()
5. 编译一下,使用 nachos -x ../test/halt.noff -d m 可察看系统调用分配的页和 MIPS 模拟器运行时所需的汇编命令
6. 将 halt.c 的文件内容改成如下格式:
```
#include "syscall.h"
static int a[40];
int main(){
Halt();
/* not reached */
}
```
四、实验结果分析
通过本次实验,我们可以了解 Nachos 操作系统中的用户程序和系统调用机制。我们可以看到,在用户程序中,我们可以使用系统调用来与操作系统内核进行交互。同时,我们也可以了解系统调用是如何实现的。
五、实验难点
本次实验的一个难点在于权限的赋予问题。如果没有赋权限,是无法完成的。开始时我们忽略了这一点,经过网上搜索才解决这个问题。
六、实验体会
通过本次实验,我们可以加深了对 Nachos 操作系统系统调用等方面的理解和使用。我们可以了解用户程序和系统调用机制的工作原理,并能够应用于实际应用中。