1.1 Smart-VM 的启动流程
Smart-VM 目前实现的是硬盘启动方式。
计算机从硬盘读取引导扇区到内存的 0x7C00 ,然后将控制权直接交给引导程序。
1. 在引导程序中,将 loader.bin 和 root.bin 读取到内存中,然后跳转到保护模式,在保护模式下,将控制权交给 loader.bin ;
2. loader.bin 获取控制权后,开启虚拟内存机制,然后跳转到 root.bin ;
3. root.bin 获取控制权之后,就开始初始化运行环境,内容包括:
a) 初始化全局描述符、中断描述符和任务描述符,建立基本的程序运行环境;
b) 初始化控制台驱动程序;
c) 初始化键盘驱动程序;
d) 初始化硬盘驱动程序;
e) 开启中断;
f) 从硬盘读取客户操作系统的引导程序到内存中;
4. 完成基本的程序运行环境之后,就开始跟 Intel-VT 相关的操作,内容包括:
a) 激活 VMX 模式;
b) 为运行客户操作系统做相关的准备;
1.2 引导程序
硬件自动将 boot.bin 加载到 0x7c00 ,然后自动跳转到 0x7c00 执行第一条指令。引导程序在执行的时候,要注意 PC BIOS 的内存分布图(图 6.1 )。
引导程序的运行流程:
图 6 . 1 PC BIOS 内存分布图
1. boot.bin 将自己拷贝到内存的 0x90000 ;
2. 跳转到新的位置上的执行点;
3. 从硬盘读取 loader.bin