操作系统启动过程_贪玩的木木的博客-程序员秘密

技术标签: 运维  linux  操作系统  服务器  

操作系统的启动过程大致可以分为以下几步:

  1. 启动 BIOS。进行硬件自检和初始化。
  2. 系统引导。找到操作系统。
  3. 启动系统。
  4. 初始化系统。

1 启动 BIOS

BIOS,Basic Input/Output System,基本输入输出系统。

早期的 BIOS 存储在内存的 ROM 中,不会断电消失;现在大多存储在内存的闪存(Flash Memory)中。

BIOS 程序执行过程有以下几步:

1.1 供电初始化

按下电源开关后,电源就开始给主板和其他设备供电,CPU 会把所有寄存器的值都设为默认值,即恢复初始状态。随后 CPU 会执行初始位置的指令,跳转到 BIOS 启动代码位置,开始启动 BIOS。

1.2 POST 硬件自检

BIOS 首先进行 POST(Power On Self Test,硬件自检),检查计算机硬件是否满足运行的基本条件,并完成相应的初始化工作。如果发现了问题,主板会发出不同的蜂鸣声表示不同的问题。

1.3 搜索可引导的存储设备

BIOS 按照启动顺序开始搜索可引导的存储设备,找到后,会将存储设备中的引导扇区读入物理内存,并执行引导扇区中的程序,开始系统引导。

BIOS 是按照顺序依次搜索可引导的存储设备的,这个顺序就叫启动顺序(Boot Sequence),可以在 BIOS 中进行查看和修改。

至此,BIOS 的工作就完成了。BIOS 所实现的功能可以简单地概括为以下几点:

  • 检测硬件设备并完成相应的初始化
  • 读入存储设备中的引导扇区,准备开始引导工作。

接下来以最常见的硬盘启动为例进行说明。

2 系统引导

2.1 读取 MBR

读取并执行硬盘的第一个扇区,即 MBR(Master Boot Record,主引导记录,大小为 512 字节)。其作用为告诉计算机到硬盘的哪一个位置去找操作系统。MBR 的结构如下:

  • 第1-446 字节:调用操作系统的机器码,可以被 CPU 直接执行。
  • 第 447-510 字节:分区表(Partition Table),将硬盘分为了若干个分区。
  • 第 511-512 字节:记录签名(0x55 和 0xAA),表示设备可以用于启动。

2.2 查找活动分区

搜索 MBR 中的分区表,找到唯一的活动分区(Active Partition),并将活动分区的第一个扇区中的引导扇区(称为“卷引导记录”,Volume Boot Record,VBR)读入内存,就能找到操作系统在这个分区中的位置。然后,计算机就会开始加载操作系统了。

分区表的长度只有 64 个字节,里面又分成四项,每项 16 个字节。所以,一个硬盘最多只能分四个主分区,但是可以将一个主分区作为扩展分区(扩展分区最多只有一个),并扩展成多个逻辑分区。一个主分区可以安装一个操作系统,像常见的 Windows 系统,C盘、D盘就是对应的一个个分区,而操作系统默认就是安装在 C 盘的。

3 启动系统

由于一台计算机中可以安装多个操作系统,所以启动系统时也会有不同的情况。当有多个操作系统时,会运行启动管理器(Boot Loader),让用户选择启动操作系统;当只有一个操作系统时,就会直接从激活分区中启动操作系统(当然也可以选择将控制权交给启动管理器,boot loader 可以存在 MBR 中,也可以存在主分区的引导扇区中)。

4 初始化系统

操作系统启动后,控制权就从 boot loader 转交给了操作系统,之后,操作系统的内核首先被载入缓存,随后会运行初始化进程进行操作系统的初始化。

至此,整个计算机的启动过程就完成了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43844995/article/details/126032137

智能推荐

python多行显示_如何在Altair python中突出显示多行图_王方浩的博客-程序员秘密

我尝试使用Python中的Altair模块创建一个交互式timeseries图表,其中包含20多行数据。在创建我正在查看的形状的数据帧的代码如下:import numpy as npimport altair as altyear = np.arange(1995, 2020)day = np.arange(1, 91)def gen_next_number(previous, limit, ma...

Flash编程基础:As3.0概要 _wx红杉树的博客-程序员秘密

-->随着一些相关资料对as3.0的介绍,有人可能认为它是另一种语言。它的根本改变在哪呢,它是什么呢?现在我们要放松一点。如果你熟知as2.0,那么它的变化并不是很大,甚至增加了一些命令你可以使用。     从我们第一眼看as3.0,它并不是一个全新的语言,它的架构要好于AS2.0,你将从FLASH8开始发现这些。任何东西都有自已的类和整洁的子类。类的继承关系看起来很复杂,但是它却是很容易

大数据在医疗领域的应用_数控小J的博客-程序员秘密

大数据顾名思义就是数量极其庞大的数据资料。大数据的意义在于提供‘大见解’:从不同来源收集信息,然后分析信息,以揭示用其他方法发现不了的趋势。早期,IBM定义了大数据的5v特性:大量性( Volume), 多样性(Variety), 快速性(Velocity)价值(Value)真实(Veracity)。

[调试]python3.8 + win10 安装 python-Levenshtein 失败_pandarking的博客-程序员秘密

python3.8 + win10 安装 python-Levenshtein 失败安装失败安装方法直接下载 .whl 文件,直接安装安装失败C:\Users\86189\Downloads>pip install python_LevenshteinLooking in indexes: http://mirrors.aliyun.com/pypi/simple/Collecting python_Levenshtein Downloading http://mirrors.aliyun

读论文12——NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis_nerf 多模态融合_廿载风光同笑泪的博客-程序员秘密

目录AbstractIntroductionRelated WorkNeural Radiance Field Scene RepresentationVolume Rendering with Radiance FieldsOptimizing a Neural Radiance FieldPositional encodingHierachical volume samplingImplementation detailsResultsDatasetsComparisonsDiscussionAblat

Linux-RPM和及YUM安装命令_没有该命令:module。请使用 /usr/bin/yum --help_ZhuxiaowenLinda的博客-程序员秘密

[[email protected] ~]# ll总用量 286436-rw-r--r-- 1 root root 0 11月 22 13:54 a-rw-r--r-- 1 root root 0 11月 22 13:54 ab-rw-r--r-- 1 root root 0 11月 22 13:54 abc...

随便推点

Zabbix 值匹配字符串 创建触发器_zabbix触发器等于字符串_我是李超人的博客-程序员秘密

Zabbix监控脚本返回值是字符串时,也可以使用字符串函数来创建触发器。举个栗子,现在有个需求要监控从服务器上下载数据是否出现异常,当数据下载失败时返回异常并告警。那么就可以在监控脚本中设置当下载成功时返回值为”download complete”,下载失败时返回值为异常信息。 创建监控项时设置返回值为字符型。创建触发器 选择当存在匹配值时,则返回1否则返回0设置匹配值V为download co

MatlabR2014a凸优化工具箱CVX安装_matlab mcr安装凸优化工具_summer15407901的博客-程序员秘密

MatlabR2014a凸优化工具箱CVX安装计算机小白记录学习过程,望能够坚持下去.老师布置的任务:实现压缩感知加密. 发现代码的实现需要CVX工具箱,于是在此记录安装过程.下载CVX安装包前往CVX官网下载页面:http://cvxr.com/cvx/beta/,可以看到如下界面.我的电脑是Win7系统,matlab是64位的R2014a,所以下载了cvx-w64-zip.下载后解...

liunx重启机器命令_重启机器指令代码_niu_hao的博客-程序员秘密

今天要重启一台Liunx机器,对于Liunx小白来说当然不知道啦,打电话问同事得到结果,直接执行命令:reboot搞定。

每天记录学习的新知识 :String和String.intern()实现原理_string和intern_清风徐来辽的博客-程序员秘密

简介String.intern() 方法可以使得所有含相同内容的字符串都共享同一个内存对象,减少内存中相同字符串的数量,节省一些内存空间。注意:字符串常量池中的 String 对象,也是可以被 GC 回收的,只要它不再被引用了。intern原理分析 注:本文基于JDK8分析 ,如有错误,欢迎指出,非常感谢。1. new String() String str1 = new Stri...

vue项目在IE11中一片空白,报错SCRPT1003,SCRIPT1006_vue ie11 空白 vue-loader_chunchun_H的博客-程序员秘密

公司项目用vue写需要兼容IE浏览器,我最近做的两个项目在IE11中都是一片空白,一个是用webpack初始化的,另一个使用vue脚手架初始化的。1、用webpack初始化的这个项目在IE打开一片空白,且中报错如下图:一般情况下IE浏览器打开页面空白是js没有加载成功,报错 script1003,根据报错信息定位到是封装的一个组件直接引用了element依赖的ji,而在打包的时候报node_modules的element的js是忽略的,默认下载的是转了ES5后的。方法1:可以在webpack配置中.

推荐文章

热门文章

相关标签