哈工大李治军操作系统--实验1 熟悉实验环境

哈工大李治军老师的操作系统真的是非常好,也是国内众多高校中为数极少的实实在在讲操作系统的课程,对标计算机顶尖高校斯坦福,直接使用Linux 0.11源码讲解.正如斯坦福操作系统所说"Learn OS concepts by coding them!",本课程就是要深入操作系统,彻底理解操作系统,让学生具备能够修改并扩充操作系统的能力.笔者对李治军老师由衷钦佩!

笔者认为学习操作系统具备的前置知识有,C语言,汇编语言,计算机组成原理,数据结构等.笔者推荐《穿越计算机的迷雾》来了解计算机组成原理,推荐《x86汇编语言:从实模式到保护模式》来学习汇编语言,推荐《妙趣横生的算法》打下数据结构的基础知识,C语言教程市面上到处都是,笔者不特别推荐.

由于是第一次使用本教程学习操作系统基础,笔者觉得重在搞懂基本设计原理和一些实现细节,暂不进行具体实现,所以后续博文均是搞基本原理,由于大实验实现起来非常耗时,后续如有机会再具体实现。

一个简单计算机的硬件组成
在这里插入图片描述
操作系统所处的层次
在这里插入图片描述
本课程学习操作系统的深度
在这里插入图片描述

实验一 熟悉实验环境

本课程的实验环境采用实验楼《操作系统原理与实践》, 如果想本地搭建环境,可以点我下载实验环境(含Linux 0.11源码)到本地. 笔者认为实践本系列实验需要具备使用Linux的基础知识GDB基础知识.

主要软件环境是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 allmake命令即可. 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] 中国大学MOOC《操作系统》李治军 哈尔滨工业大学
[2] 《Linux内核完全注释》赵炯
[3] 源码及实验环境下载地址

发布了323 篇原创文章 · 获赞 193 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/ccnuacmhdu/article/details/105176691