一、前言
在日常生活中,我们使用计算机的功能都是在操作系统中完成的,那么我们在操作系统上的操作又是如何被执行的呢?通过编译器、解码器、环境、驱动程序等要素将指令集架构无法执行的计算机语言转换为其能够执行的机器码实现计算机的实际行动。那么这里还有一个问题,操作系统在开启的情况下它可以运行指令,那在操作系统没有开启的情况下肯定不能运行指令,那它又是如何实现操作系统启动的呢?在计算机领域中,操作系统的启动专业术语为操作系统的初始化,而我们今天要介绍的内容就是围绕操作系统的初始化展开。
二、操作系统初始化简介
1.操作系统索引
(1)当我们按下电源之后主板供电模块开始初始化并供电,CPU的寄存器也恢复默认值并跳转至BIOS存储位置执行启动代码。
(2)BIOS通过加电自检(POST)检查CPU、内存、GPU、主板、硬盘等硬件是否存在故障,有故障即报错,没有故障就执行下一步。
(3)BIOS按照预设的启动顺序寻找可引导设备,找到之后读取其扇区内的主引导记录(MBR)到内存中执行,执行成功后将控制权移交给BootLoader(引导加载程序)。
2.内核加载解压
(4)BootLoader先会定位操作系统内核的位置,并将其加载到内存中并在必要的情况下进行解压。
3.操作系统运行
(5)操作系统内核解压完成之后,BootLoader将计算机控制权移交给操作系统内核。操作系统内核进行必要的初始化操作(如初始化驱动程序、挂载根文件系统)后,启动进程系统服务管理器并移交控制权。
(6)系统服务管理器在获得权限后便开始挂载服务进程,呈现出面向用户的操作系统界面。
4、补充
以上操作系统初始化流程是一个较为通用的流程,也就是说实际上的操作系统在初始化的流程是不同的,比如说在内核加载和解压环节、系统服务管理器它们都是不同的。如下图:
| 操作系统/环节 | Windows | Linux | Mac OS |
|---|---|---|---|
| BootLoader | Windows Boot Manager/NTLDR | GRUB/LILO/systemd-boot | Apple Boot ROM |
| 系统服务管理器 | smss.exe + services.msc | systemd | launchd |
三、总结
今天我们主要分享了操作系统启动的整个流程,解答了在没有操作系统运行时,计算机是如何实现初步的指令执行及启动操作系统的。分享较为简单、通俗,但这也是了解计算机运行的一个重要环节。
感谢大家的观看,咱下次再见!
3515

被折叠的 条评论
为什么被折叠?



