哈工大李治军操作系统-实验1-熟悉实验环境
哈工大李治军操作系统–实验1 熟悉实验环境
哈工大李治军老师的操作系统真的是非常好,也是国内众多高校中为数极少的实实在在讲操作系统的课程,对标计算机顶尖高校斯坦福,直接使用Linux 0.11源码讲解.正如斯坦福操作系统所说"Learn OS concepts by coding them!",本课程就是要深入操作系统,彻底理解操作系统,让学生具备能够修改并扩充操作系统的能力.笔者对李治军老师由衷钦佩!
笔者认为学习操作系统具备的前置知识有,C语言,汇编语言,计算机组成原理,数据结构等.笔者推荐《穿越计算机的迷雾》来了解计算机组成原理,推荐《x86汇编语言:从实模式到保护模式》来学习汇编语言,推荐《妙趣横生的算法》打下数据结构的基础知识,C语言教程市面上到处都是,笔者不特别推荐.
由于是第一次使用本教程学习操作系统基础,笔者觉得重在搞懂基本设计原理和一些实现细节,暂不进行具体实现,所以后续博文均是搞基本原理,由于大实验实现起来非常耗时,后续如有机会再具体实现。
一个简单计算机的硬件组成
操作系统所处的层次
本课程学习操作系统的深度
实验一 熟悉实验环境
本课程的实验环境采用 , 如果想本地搭建环境,可以 到本地. 笔者认为实践本系列实验需要具备使用 和 知识.
主要软件环境是Bochs + GCC编译器 + GDB调试器 + 编辑器 / IDE + Ubuntu + Linux 0.11 源代码, 其中Bochs 是一个免费且开放源代码的 IA-32(x86)架构 PC 机模拟器。
准备环境
执行命令
tar -zxvf hit-oslab-linux-20110823.tar.gz -C /home/shiyanlou/
, 解压路径/home/shiyanlou/oslab下的hit-oslab-linux-20110823.tar.gz.
实验环境的工作模式
对Linux 0.11的修改和编译后, 在linux-0.11目录下会生产一个名为Image的文件, 把它从软/硬盘的0扇区写入,启动Bochs, 会进入Linux 0.11内核。
而bochs运行后会自动在它的虚拟软驱A和虚拟硬盘上各挂载一个镜像文件, 软驱上挂载是linux-0.11/Image(bochs配置文件设置从软驱 A 启动, Linux 0.11被自动加载), 硬盘上挂载的是hdc-0.11.img(Minix文件系统的镜像), Linux 所有版本都支持这种格式的文件系统,所以可以直接在宿主Linux上通过mount 命令访问此文件系统,达到宿主系统(Ubuntu)和bochs内运行的Linux 0.11之间交换文件的效果。
编译Linux 0.11
在Linux 0.11目录下,执行
make all
或
make
命令即可. make 命令会自动跳过未被修改的文件,链接时直接使用上次编译生成的目标文件, 从而节约编译时间. 但如果重新编译后, 你的修改貌似没有生效, 可以试试先 make clean, 再 make all(或者一行命令: make clean && make all. make clean是删除上一次编译生成的所有中间文件和目标文件, 确保是在全新的状态下编译整个工程).
运行Bochs
在oslab目录下执行
run
命令即输入
./run
.
调试
汇编级调试: 在oslab目录下输入
./dbg-asm
, 可查看Bochs手册或使用
help
命令查看调试命令.
C语言级调试: 在oslab目录下输入
./dbg-c
, 再打开一个命令窗口输入
./rungdb
.
文件交换
Ubuntu和Linux 0.11之间交换文件. Linux 0.11作为一个很小的操作系统, 其上的编辑工具只有vi, 使用非常不便, 可以先在Ubuntu上编辑好, 再传到Linux 0.11上, nice。
参考资料
[1]
[2] 《Linux内核完全注释》赵炯
[3]