注:本文档为《从0学x86操作系统》课程配套的学习文档,提供相应的辅助学习资料和答疑勘误。 有关该课程的信息,请点击这里访问:https://study.163.com/provider/1017884735/index.htm 在阅读本文档时,如有疑问和建议,欢迎在下方留言或者直接联系我。

本课时介绍计算机的启动流程,并结合qemu和gdb来具体分析其启动过程,与此同时简单了解gdb和qemu之间的连接。

启动流程

image.png

  1. 上电启动后,CPU处于16位运行的实模式,分页机制禁止,此时只有1MB内存可用,没有特权级
  2. CPU跳转到BIOS的入口(地址为0xFFFF0)开始执行
  3. BIOS进行硬件自检(POST),主板、硬盘、显卡、内存等自检,并保存一些配置数据到特定内存地址处(如硬盘的数量)
  4. 根据配置的启动顺序(光驱、U盘、硬盘等),加载引导代码运行。例如,从硬盘启动时,将硬盘的第1扇区(主引导纪录)读取到0x7c00处并且跳转到该地址处运行
  5. 引导代码对操作系统的运行初始环境进行配置,并加载操作系统到内存中
  6. 跳转到操作系统运行

我们的主要工作是完成最后两步,实现自己的引导代码和操作系统。

实测演示

课堂中演示了使用visual stdio code的调试控制台与qemu的运行控制交互,使用了以下指令:

  • -exec nexti :控制cpu单步运行下一条指令
  • -exec b *0x7c00:在0x7c00处设置断点
  • -exec c:全速运行

以上指令仅用于此次课时的演示使用,不必掌握。
此外,视频中演示的运行流程简单了解即可,也不必掌握。

参考资料