计算机的启动原理

1.开启电源
2.启动自检
3.初始化所有寄存器,其中的CS:0xF000、IP:0xFFF0
4.如果存在异常,则将异常写入EAX中。
5.检测EAX的值是否正常。如果不为0,则发生错误。
6.CPU开始执行CS:IP处代码。
注意:在64位CPU环境下,平时的工作都是在保护模式下进行的。使用的都是虚拟地址来访问内存。由内存管理单元MMU负责做地址转换(虚拟地址->物理地址)。但在开机时,虚拟地址转换所需的页目录、页表等数据都尚未加载,所以MMU暂时无法使用。因此开机时使用的都是16位寄存器。在实地址模式下运行使用的是真实物理地址(段地址x16+偏移地址),最大寻址空间为1MB。0xF000:0xFFF0表示的物理地址:0xFFFF0。即cs左移4位。2的20次方最大1MB也就是0xFFFFF。而0xFFFF0指向的就是接近末端的位置。
在这里插入图片描述

7.刚开机时,内存中是没有数据的。因为内存中的数据都是动态写入的,关机就会消失。所以在开机后,主板BOIS就会将自己ROM中的数据映射到内存中。
8.CPU开始执行CS:IP(0xFFFF0)处指令。而这个地址处的指令是一个jmp XXXX的跳转指令,这是一种非常好的兼容写法,方便日后的扩展改动。这样CPU就不需要进行改动,无论主板怎么更新,CPU开机第一件事就是执行0xFFFF0处指令。
9.BOIS开始对计算机进行各种检测。而此时需要注意的是,整个CPU的执行过程都是单核的,也就是其他的核心都在摸鱼。只有等操作系统加载后,才会正真发挥多核作用。
10.当BOIS检测完计算机后,开始加载操作系统。
11.寻找第一块顺位启动盘。这个启动顺序可以在bois设置中找到。
在这里插入图片描述

12.加载主引导记录MBR。MBR保存在磁盘第0盘第0道第1扇区,大小为512字节。
下图使用的是WinHex对C盘进行查看。其中最末尾的“55 AA”是MBR的关键标识。
在这里插入图片描述

BOIS会将MBR加载到内存的0x7C00处。之所以是0x7C00,而不是别的地方。是因为沿用了Intel第一代个人电脑8088芯片的设计。此后为了保持兼容长久使用了0x7C00地址。
在这里插入图片描述

13.当MBR加载到内存的0x7C00后,CPU就开始正式执行操作系统指令了。
14.切换工作模式为保护模式。
15.加载页目录和页表,使MMU可以对虚拟地址进行转换。
下图为MMU工作原理
在这里插入图片描述

MMU其实就是一个骗子,每个进程都以为自己拥有独立的内存空间,但实际上都是MMU给出的假象。真实的物理地址是由MMU进行管理和分配的。假设每个进程的虚拟地址都是都是0-100,但对应的真实物理地址却是不同的。
16.创建多条线程开始启动系统,此时CPU的多核才开始发挥作用,进行协同工作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤月丶星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值