2025-05-28 09:08:49 8672
想知道问题的答案,我们要从内存说起。
内存只有在加电后写入数据才能保存信息:
内存断电后这些信息就丢失了:
当计算机启动时内存中一片荒芜,显然CPU不能执行来自内存中的指令:
那么在你按下开机按键时CPU执行来自哪里的指令呢?答案是来自ROM或其它非易失性内存:
这些存储设备中保存了一小段指令,计算机启动时CPU会执行这一小段程序。
CPU怎么知道这段程序保存在哪里呢?答案是CPU会从一个提前设置好的位置开始执行指令,在IA-32架构在CPU会从0xffff0这个位置开始执行这段程序。
这一小段程序就是我们熟悉的BIOS(Basic Input/Output System),更现代的是UEFI(Unified Extensible Firmware Interface)。
BIOS这段程序有什么作用呢?这段程序用来检查硬件,各个硬件是否能正常工作等,CPU、内存、硬盘等,也就是所谓的自检,如果恰好你拆过机器忘记把内存条装回去,那么这一小段程序就会检测出系统中没有安装内存并给出告警提示。
找到启动设备后开始把磁盘前512字节的数据拷贝到内存,这512字节就是所谓的MBR:
其中包含了:
一段程序,这段程序的目的是加载其它程序,因此也被称之为boot loader
一段程序,这段程序的目的是加载其它程序,因此也被称之为boot loader
此时BIOS执行完毕,CPU开始执行MBR中的这段boot loader程序:
这段程序的目的是根据磁盘分区表加载一个更大的boot loader。
这个更大的boot loader功能更加强大复杂,如果你安装的是多操作系统,那么当这个更大的boot loader开始执行时会给你一个选项,在这里可以用户可以选择启动哪个操作系统。
在这里可以看到MBR中的boot loader程序加载了一个更大的boot loader程序,也因此这两个boot loader分别被称之为First stage boot loader和second stage boot loader,也就是一阶段引导程序和二阶段引导程序。
你可能会有疑问,为什么要有多阶段引导程序呢?为什么不能一阶段引导程序直接加载操作系统呢?
原因就在于MBR这个512字节的引导程序功能过于简陋,只能把磁盘中一段连续的数据copy到内存,加载操作系统这种多文件组成的大型程序需要解析文件结构,因此需要另一段功能更为强大的程序也就是二阶段引导程序的帮助。
此时CPU才开始真正执行操作系统,操作系统和我们写的程序一样也有一个初始化的过程,这个过程的最后会创建出一系列用户态进程,此时操作系统系统启动完毕可以接受用户的输入。
双击图标或者在命令行下输入指令时操作系统开始把我们写的程序加载到内存运行,这个过程就是在前一篇文章《》
当然在现代使用UEFI的现代系统中就不需要MBR中的一阶引导程序了。
以上就是操作系统启动的基本过程。返回搜狐,查看更多
世界杯直播频道 2025-05-15 06:38:44
男篮世界杯中国 2025-05-07 04:49:48
世界杯直播频道 2025-05-26 11:54:20
世界杯直播频道 2025-05-24 12:30:49
男篮世界杯中国 2025-05-16 02:35:51
丹麦世界杯阵容 2025-05-24 07:58:08
世界杯直播频道 2025-05-22 09:41:06
世界杯直播频道 2025-05-13 08:45:25
男篮世界杯中国 2025-05-26 22:51:45
丹麦世界杯阵容 2025-05-09 08:23:42