计算机启动过程

计算机的开机过程

  • 两个关键的寄存器:CS段寄存器和IP段内偏移寄存器
  • 计算机运行的本质即为“取址执行”,因此,在开机的瞬间,想要运行计算机,必须要找到需要执行的第一条指令,而该条指令的地址由一个指针指向,该指针即为PC
  • PC的计算来源于上述两个关键寄存器,在初始阶段,PC=CS<<4 + IP,因此,在计算机开机执行的第一条指令即为PC指向位置的指令,接下来,以x86构架的Windows计算机开机过程为例对计算机启动背后发生的故事进行简述

1.BIOS(basic input output system)

  • 计算机上电后,要执行PC指向的第一条指令,在通常情况下,计算机上电前,CS寄存器和IP寄存器都被初始化为一个确定值,例如CS=0xffff,IP=0x0000,此时,PC=0xffff0(即BIOS第一条指令的地址)
  • CPU根据PC寄存器内地址取出BIOS第一条指令开始执行,此时CS和IP值进行更新,指向下一条需要执行的指令,由此,计算机开始执行BIOS代码块。
  • BIOS的主要工作分为两个部分:
    1.对计算机硬件进行检查,例如RAM、电源模块、鼠标、键盘、显示器等
    2.将磁盘中的操作系统引导扇区移入内存(引导扇区通常是指磁盘的0磁道0扇区位置)例如:将引导扇区移动到内存0x7c00处(移动到此处的目的是为操作系统其它模块预留部分空间,使得操作系统可以从内存中的0位置处开始执行)同时,将CS置为0x07c0,IP值为0x0000,由此,跳转出BIOS,进入到引导扇区开始执行


2.引导扇区代码块bootsect.s(汇编文件)

  • bootsect.s的主要作用是将磁盘上的操作系统搬入内存中,其中,搬移的第一个模块为setup.s模块,搬移完成后,通过重置CS寄存器与IP寄存器,将控制权转交给setup模块


3.setup模块

  • setup模块的主要作用有以下三点:
    1.读取计算机硬件参数。例如读取内存大小,操作系统要对计算机进行管理首先需要知道计算机的硬件参数,只有获取了内存大小,才能通过某种形式的数据结构对内存进行管理
    2.将磁盘后续操作系统搬移到内存0位置处
    3.将内存置为保护模式,并重置CS寄存器和IP寄存器,使PC=0x0000
  • 磁盘装载顺序如下图所示:
图片名称


经过以上初始化步骤,计算机从内存0位置处开始执行,操作系统开始运行,计算机启动完成

posted @ 2021-04-14 19:21  积跬步至万里  阅读(579)  评论(0)    收藏  举报
Live2D