武汉大学计算机学院
本科生实验报告
操作系统设计与实现
专 业 名 称 :计算机科学与技术
课 程 名 称 :操作系统设计
指 导 教 师 :
学 生 学 号 :
学 生 姓 名 :
二○二○年七月
郑 重 声 明
本人呈交的实验报告,是在指导老师的指导下,独立进行实验工
作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中
已经注明引用的内容外,本实验报告不包含他人享有著作权的内容。
对本实验报告做出贡献的其他个人和集体,均已在文中以明确的方式
标明。本实验报告的知识产权归属于培养单位。
本人签名:
日期:
摘要
操作系统实验的实验目的是实现一个简单的操作系统。
实验设计主要遵循操作系统的实现、编译原理。
实验内容主要包括:《ORANGE’S:一个操作系统的实现》前 7 章
实验结论为成功实现操作系统前 7 章代码
关键词:操作系统;汇编语言;bochs
目录
1 马上动手写一个最小的“操作系统” ..................... 6
1.1实验内容及上机实验所用平台 ................................. 6
1.1.1 □实验内容 .......................................... 6
1.1.2 实验所用平台 ...................................... 6
1.2□数据结构及代码段分析 ....................................... 7
1.3调试过程 ................................................... 8
1.4实验结果 ................................................... 9
2搭建你的工作环境 ............................................ 10
2.1实验内容及上机实验所用平台 ................................ 10
2.1.1 □实验内容 ......................................... 10
2.1.2 实验所用平台 ..................................... 10
2.2□数据结构及代码段分析 ...................................... 11
2.3调试过程 .................................................. 11
2.4实验结果 .................................................. 13
3保护模式 ......................................................13
3.1实验内容及上机实验所用平台 ................................ 13
3.1.1 □实验内容 ......................................... 13
3.1.2 实验所用平台 ..................................... 13
3.2□数据结构及代码段分析 ...................................... 17
3.3调试过程 .................................................. 14
3.4实验结果 .................................................. 15
4让操作系统走进保护模式 ..................................... 17
4.1实验内容及上机实验所用平台 ................................ 24
4.1.1 □实验内容 ......................................... 24
4.1.2 实验所用平台 ..................................... 24
4.2□数据结构及代码段分析 ...................................... 25
4.3调试过程 .................................................. 32
4.4实验结果 .................................................. 33
5内核雏形 ......................................................35
5.1实验内容及上机实验所用平台 ................................ 35
5.1.1 □实验内容 ......................................... 35
5.1.2 实验所用平台 ..................................... 35
5.2□数据结构及代码段分析 ...................................... 36
5.3调试过程 .................................................. 42
5.4实验结果 .................................................. 43
6进程 .......................................................... 44
6.1实验内容及上机实验所用平台 ................................ 44
6.1.1 □实验内容 ......................................... 44
6.1.2 实验所用平台 ..................................... 44
6.2□数据结构及代码段分析 ...................................... 45
6.3调试过程 .................................................. 47
6.4实验结果 .................................................. 48
7输入/输出系统 ................................................ 50
7.1实验内容及上机实验所用平台 ................................ 50
7.1.1 □实验内容 ......................................... 50
7.1.2 实验所用平台 ..................................... 50
7.2□数据结构及代码段分析 ...................................... 51
7.3调试过程 .................................................. 52
7.4实验结果 .................................................. 52
8总结 .......................................................... 54
8.1实验中遇到的问题及解决方法 ................................ 54
8.2实验体会和收获 ............................................ 54
参考文献 ......................................................... 55
教师评语评分 .................................................... 56
1 马上动手写一个最小的“操作系统”
1.1实验内容及上机实验所用平台
1.1.1 □实验内容
动手写一个最小的操作系统,得到一个易于执行和调试的引导扇区,可以直
接在裸机上运行。
1.1.2 实验所用平台
(1)VirtualBox
VirtualBox 是一款简单易用还免费的开源虚拟机,VirtualBox 软件体积小
巧,使用时不会占用太多内存,操作简单,用户可以轻松创建虚拟机。不仅如此
VirtualBox 功能也很实用,支持虚拟机克隆,支持 Direct3D 等,为用户带来快
速便捷的使用体验。
(2)Ubuntu
Ubuntu 是一个以桌面应用为主的 Linux 操作系统。.Ubuntu 基于 Debian 发
行版和 GNOME 桌面环境,而从 11.04 版起,Ubuntu 发行版放弃了 Gnome 桌面环
境,改为 Unity,与 Debian 的不同在于它每 6 个月会发布一个新版本。Ubuntu
的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建
而成的操作系统。Ubuntu 具有庞大的社区力量,用户可以方便地从社区获得帮
助。2013 年 1 月 3 日,Ubuntu 正式发布面向智能手机的移动操作系统。
(3)Bochs
Bochs 是一个 x86 硬件平台的开源模拟器。它可以模拟各种硬件的配置。
Bochs 模拟的是整个 PC 平台,包括 I/O 设备、内存和 BIOS。更为有趣的是,甚
至可以不使用 PC 硬件来运行 Bochs。事实上,它可以在任何编译运行 Bochs 的
平台上模拟 x86 硬件。通过改变配置,可以指定使用的 CPU(386、486 或者 586),
以及内存大小等。一句话,Bochs 是电脑里的"PC"。根据需要,Bochs 还可以模
拟多台 PC,此外,它甚至还有自己的电源按钮。
1.2□数据结构及代码段分析
a):
文件:boot.asm
(1)主要数据结构:
常量 BootMessage
BootMessage:
db "Hello, OS world!"
(2)代码段分析:
主要代码结构:
代码主体框架
DispStr 函数
代码主体框架:
告诉编译器程序加载到 07c00 处
使 ds 和 es 两个段寄存器指向与 cs 相同的段
调用 DispStr 子程序显示字符串
无限循环
DispStr 子程序:
设置 ES:BP = 串地址
设置 CX = 串长度
设置 AH = 13,
AL = 01h
设置页号为 0(BH = 0) 黑底红字(BL = 0Ch,高亮)
10h 号中断
b):
文件:boot.asm
(1)主要数据结构:
常量 BootMessage
BootMessage:
db "Hello, OS world!"
(2)代码段分析:
主要代码结构:
代码主体框架
DispStr 函数
代码主体框架:
预编译宏
使 ds 和 es 两个段寄存器指向与 cs 相同的段
调用 DispStr 子程序显示字符串
无限循环
DispStr 子程序:
设置 ES:BP = 串地址
设置 CX = 串长度
设置 AH = 13,
AL = 01h
设置页号为 0(BH = 0) 黑底红字(BL = 0Ch,高亮)
10h 号中断
1.3调试过程
(1)修改 bochsrc
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: /usr/share/vgabios/vgabios.bin
改为:
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
keyboard_mapping:enabled=1,map=/usr/share/bochs/keymaps/x11-pc-us.
map
改为:
keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map
(2)打开终端,进入当前文件夹,在终端输入: