ROOT
ROOT
文章目录
  1. BIOS
  2. MBR
  3. 硬盘启动
  4. Bootloader
  5. 参考资料

计算机操作系统是如何启动的

暑假就带回了两本书,《操作系统》+《剑桥英语语法》,当然是计划在暑假学一下操作系统,然后了解操作系统是怎么制作的。

目前在学习这个项目:How to make an Operating System

BIOS

来说说计算机操作系统是怎么启动的吧。首先计算机启动的时候,会执行 ROM 区的机器代码,即基本输入输出系统 BIOSBIOS 的作用是硬件检测,然后进入启动顺序(Boot Sequence),这个可以在 BIOS 中设置的。

MBR

在启动顺序阶段,BIOS会检查设备是否可启动,如果第 511 和 512 个直接是 0x550xAA,则表示该设备可以启动,否则就按照启动顺序启动下个设备。

BIOS加载前 512 字节(MBR,主引导记录)到内存 0x7C00 的位置,如果检查设备可启动,那么跳转执行 0x7C00 位置的指令。

  • 第 1-446 字节:调用操作系统的机器码。
  • 第 447-510 字节:分区表(Partition table)。
  • 第 511-512 字节:主引导记录签名(0x55 和 0xAA)

硬盘启动

这里先说一下硬盘的知识,硬盘有很多重叠盘片堆积组成,盘片上每个同心圆称为磁道(Track),盘片上划分了几个扇形区域称为扇区(Sector),每个扇区一般为 512 字节,读写数据以扇区为单位。所有盘片相同的磁道称为柱面(Cylinder),从外缘的 0 开始编号。用来读写的称为磁头(Head), 每个盘片都有自己的磁头。

分区表用来记录硬盘分区情况,最多 4 个主分区,或者一个主分区做扩展分区,扩展无数个逻辑分区。分区可以安装多个操作系统,所以 MBR 必须知道将控制权转交给哪个分区,然后将其启动。

Bootloader

使用 Bootloader 之后,MBR不将控制权转交给分区,而是转交给Bootloader,由它来选择启动哪个操作系统。

Linux中最流行的 Bootloader 就是 Grub 了,它有一下几个有点:

  • 很容易使用
  • 能启动多种系统,比如 LinuxWindows 等等。

一旦选择了操作系统后,Grub会把选择的内核载入内存中,将控制权转交给内核,然后将其启动。

参考资料

支持一下
扫一扫,支持Netcan
  • 微信扫一扫
  • 支付宝扫一扫