“操作系统实验”实验报告

熟悉实验环境

实验名称:熟悉实验环境

实验日期:2021年4月26日

班级:软件工程(嵌入式培养)191

姓名:华沁蓥

学号:1809041042

一、实验目的

熟悉实验环境,为下面的实验奠定基础。

二、实验环境

硬件环境:IA-32(x86) 架构的 PC 机

软件环境:x86 模拟器 Bochs 、 GCC 编译器 、GDB 调试器 、Ubuntu (GNU/Linux)

三、实验内容

根据实验要求编写应用程序、修改 Linux 0.11 的源代码,用 gcc 编译后,在 Bochs 的虚拟环境中运行、调试目标代码。

  1. 编译内核

  2. 运行

  3. 调试

  4. 文件交换

四、实验过程及数据记录

3.实验环境的工作模式

准备环境

# 进入到 oslab 所在的文件夹
$ cd /home/shiyanlou/oslab/

# 解压,并指定解压到 /home/shiyanlou/
# 这样的话,在 /home/shiyanlou/oslab/ 中就能找到解压后的所有文件
$ tar -zxvf hit-oslab-linux-20110823.tar.gz \
  -C /home/shiyanlou/

# 查看是否解压成功
$ ls -al
# 除了压缩包 hit-oslab-linux-20110823.tar.gz 之外,其他的就是压缩包中的内容
copy

图片描述 图片描述

4.使用方法

开始使用之前的准备活动:把当前目录切换到 oslab 下,用 pwd 命令确认,用 ls -l 列目录内容。 图片描述

4.1编译内核

首先要进入 linux-0.11 目录,然后执行 make 命令:

$ cd ./linux-0.11/
$ make all
copy

图片描述 因为 all 是最常用的参数,所以可以省略,只用 make,效果一样。

在多处理器的系统上,可以用 -j 参数进行并行编译,加快速度。例如双 CPU 的系统可以:

$ make -j 2
copy

图片描述 图片描述

4.2运行

在 Bochs 中运行最新编译好的内核,在 oslab 目录下执行:

# 注意是在上层目录
# 刚刚编译是在 oslab/linux-0.11/ 文件夹下
$ cd ~/oslab/

# 执行 run 脚本
$ ./run
copy

图片描述

4.3调试

(1)汇编级调试

# 确认在 oslab 目录下
$ cd ~/oslab/

# 运行脚本前确定已经关闭刚刚运行的 Bochs
$ ./dbg-asm
copy

可以用命令 help 来查看调试系统用的基本命令

图片描述

(2)C语言调试

首先执行如下命令:

$ cd ~/oslab
$ ./dbg-c
copy

然后再打开一个终端窗口,执行:

$ cd ~/oslab
$ ./rungdb
copy

注意:启动的顺序不能交换,否则 gdb 无法连接。

图片描述 图片描述

4.4文件交换

注意:开始设置文件交换之前,务必关闭所有的 Bochs 进程。

oslab 下的 hdc-0.11-new.img 是 0.11 内核启动后的根文件系统镜像文件,相当于在 bochs 虚拟机里装载的硬盘。在 Ubuntu 上访问其内容的方法是:

$ cd ~/oslab/

# 启动挂载脚本
$ sudo ./mount-hdc
copy

hdc 目录下是和 0.11 内核一模一样的文件系统,可以读写任何文件。

# 进入挂载到 Ubuntu 上的目录
$ cd ~/oslab/hdc

# 查看内容
$ ls -al
copy

图片描述 读写完毕,卸载这个文件系统:

$ cd ~/oslab/

# 卸载
$ sudo umount hdc
copy

图片描述

五、实验结果分析

代码经 gcc 编译后,在 Bochs 的虚拟环境中成功运行、调试,实现文件交换操作。

六、实验心得

经过本次实验课程,我初步了解了操作系统的基本设计原理和实现细节以及本实验用到的硬件IA-32(x86) 架构PC 机;软件x86 模拟器 Bochs 、GCC 编译器 、Ubuntu (GNU/Linux)的相关特性,学习掌握了实验前环境的准备及一系列基础的代码编译、运行、调试和文件交换操作,为后续的操作系统实验打下了一定的基础。

最新评论
暂无评论~