操作系统启动背后的故事:BIOS、BootLoader和CPU控制权移交
在探索操作系统的启动机制之前,我们必须先了解几个关键的前提条件:
- 操作系统OS的起源:操作系统最初位于硬盘DISK的起始扇区,静静地等待被激活。
- BIOS的使命:当计算机加电启动时,BIOS(基本输入输出系统)便开始工作,它负责检测计算机系统的各种外设,并加载相应的执行软件。
- BootLoader的角色:BootLoader是启动过程中的关键角色,它负责将操作系统OS从硬盘DISK加载到内存中,为CPU的执行做好准备。
启动过程详解
- 自检与初始化:加电后,计算机从内存的CS:IP=0xf000:fff0地址开始执行,进行自检、寻找显卡、检查外设,并执行BIOS程序。这一系列自检完成后,BIOS会将BootLoader从硬盘加载到内存中,并将CPU的控制权转交给BootLoader。
- BootLoader的使命:一旦BootLoader获得控制权,它将寻找硬盘的起始扇区,定位操作系统OS,并将其加载到内存中。随后,它将CPU的控制权交给操作系统OS。
- 操作系统的掌控:经过这一系列精心编排的步骤后,操作系统成功启动并接管了CPU的控制权,开始运行。
CPU控制权移交的重要性
在计算机系统中,CPU通过总线与I/O、DISK和内存进行通信。每个阶段完成后,都需要将CPU控制权移交给下一阶段,以确保整个启动过程的顺利进行。
BIOS在内存中的位置
BIOS(基本输入输出系统)在内存中占据了一块固定的区域。以X86架构为例,BIOS的内存空间地址为CS:IP=0xf000:fff0,其中CS代表段寄存器,IP代表指令寄存器。这两个寄存器共同指定了一个内存地址。
BIOS如何加载BootLoaderBootLoader
通常位于硬盘的第一个主引导扇区。BIOS的任务就是在硬盘的这个特定位置找到BootLoader,并将其加载到内存中。在X86架构中,BootLoader通常被加载到内存的0x7C00位置,占据512字节的空间。
变化
随着UEFI(统一可扩展固件接口)的普及,传统的BIOS正在被逐渐替代,启动过程也有所变化。