计算机的启动加载操作系统内核的过程(当按下开机键后发生了什么?)

本文讲述的问题是:
*当我们按下开机键后,发生了什么?

问题的前置 计算机组成原理 基本知识
1:内存是存储指令和数据的地方,给出一个地址信号,就可以到相应的内存区域中取出数据/指令。
2:CPU的工作是不断的从存储数据和指令的内存中取出指令,并执行
3:CPU从内存的哪个地址取出指令,是由CPU中的PC寄存器(程序计数器)中的值决定的,这个值会不断的进行+1操作,或者由跳转指令指出其值是多少,最后根据值去内存的相应区域取出指令或数据。

补充知识:
1 :BIOS :BIOS是英文"Basic Input Output System"的缩略词,直译 过来后中文名称就是"基本输入输出系统"。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

2:内存地址范围 :CPU地址总线的宽度决定了可访问的地址空间的大小。如字长32位的CPU其地址总线宽度为32位,则其可访问的地址空间大小是2^32 / 1024/ 1024/ 1024=4G.即其地址范围为4G。

3:内存映射 : 可访问的内存空间很大,但寻址的对象不只有内存,还有一些外部设备也要通过地址总线的方式去访问。即需要在地址范围中划出一片片的区域,这块给硬盘控制器,那块给显存,等等。同时,我们在外设对应的内存区域去进行读写就相当于在外设的相应位置进行读写。故内存映射指的就是外设的存储区域,被映射到了内存的某一片区域,即提供了一层对外设存储的抽象,这样我们就不用管外设,关注的仍然只是一个简单的内存。

计算机启动过程
1:计算机刚开机的时候只有1M的内存可以使用。 此时内存会被各种外设瓜分,映射在内存的相应区域。同理,BIOS里的信息会被映射到内存的一段连续的区域中(0xC0000–0xFFFFF),其中最为关键的系统BIOS被映射到了0xF0000–0xFFFFF位置,CPU开机就是执行了系统BIOS这块内存区域中的代码,注意BIOS中的程序还会占用内存开头的一些区域,如把中断向量表写在了内存开始的位置。
2:在开机的一瞬间,CPU中的PC寄存器被强制初始化为0xFFFF0。BIOS程序的入口地址就是0xFFFF0,然后CPU就开始跑起来,执行BIOS中的程序。

BIOS 的工作?
BIOS会从特定地址处开始执行,会先检测一些外设信息,并初始化好硬件,建立中断向量表并填写中断例程等。BIOS最精彩和重要的工作是: 加载启动区

加载启动区?
所谓的加载: 就是把某设备(如硬盘)中的程序复制到内存中的过程。
加载启动区就是: BIOS程序把启动区的内容复制到了内存的某区域

什么是启动区?
启动区是符合某种特征的一块区域,人们把它叫做启动区。

BIOS的查找启动盘的顺序是可以设置的,如U盘启动,硬盘启动,软盘启动,光盘启动等。

所谓的符合某种特征指的是: BIOS会按照设置的启动盘顺序,轮流去读取这些启动盘中位于0盘0道1扇区的内容。这0盘0道1扇区一共有512字节,如果末尾的两个字节分别是0x55和0xaa,那么BIOS就会认为它是个启动区。如果不是,就下一个启动盘接着寻找,都找不到的话会报出无启动区的错误。

BIOS把启动区的512字节复制到内存的0x7c00位置,并用一条跳转指令把pc寄存器的值指向0x7c00。

至于为何是ox7c00这个地址,这个是为了兼容性人为设定的。

启动区的代码写了啥和干了啥
首先说明的是启动区中就512字节确实干不了什么事情,
启动区负责的是区加载真正的操作系统内核。

BIOS负责加载启动区,而启动区又负责加载真正的操作系统内核

总结开机后发生的过程:
1:按下开机键,CPU将PC寄存器的值强制初始化为特定值,这个值是BIOS程序的入口地址。(BIOS是通过特定外设自动映射加载到内存)
2:该入口地址是一个跳转指令,会跳转到特定的位置,开始执行一些硬件检测工作,并最后一步是将启动区加载到内存中,并跳转到这里。
3:启动区的代码主要是负责加载操作系统内核,并跳转到加载处,来到了操作系统的世界。


The End!!创作不易,欢迎点赞/评论!!欢迎关注个人公众号

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值