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