计算机在启动一直到系统加载完成期间进行了哪些操作

零 扇区和分区的概念与联系

概念

  • 扇区(Sector)

    • 扇区是硬盘中最小的物理存储单位,每个扇区通常为512字节(一些新硬盘为4KB)。
    • 硬盘在制造时会被划分成许多扇区,这些扇区在硬盘中依次排列。数据被存储在扇区中,每次读写都以扇区为单位。
  • 分区(Partition)

    • 分区是硬盘逻辑上的分块可以包含多个扇区
    • 一个硬盘可以被划分为一个或多个分区。每个分区通常被操作系统当作一个独立的磁盘卷。
    • 分区信息存储在硬盘的主引导记录(MBR)或GUID分区表(GPT)中,描述了每个分区的起始扇区、大小和文件系统类型等信息。

扇区与分区的关系

  • 包含关系:分区是由多个扇区组成的逻辑存储单元。一个硬盘的第一个扇区(即MBR所在的扇区)通常用于记录分区信息。
  • 分区表与扇区编号:MBR分区表中使用扇区编号指定分区的起始位置和长度,以便操作系统可以正确地读取和管理每个分区的数据。

        例如,一个典型的硬盘可能包含数百万个扇区,通过分区操作将这些扇区划分为不同的分区(如C盘、D盘)。每个分区由特定的扇区范围构成,独立存储文件系统和数据。

一 系统的两种引导方式

BIOS(Basic Input Output System):基本输入输出系统。BIOS是一个固化在只读存储器(ROM)或者非易失性存储器(NvRAM)上的程序。

UEFI(Unified Extensible Firmware Interface): 统一的可扩展固件接口。UEFI是用模块化、高级语言构建的一个小型化系统。UEFI将替代传统式(Legacy)BIOS。EFI是UEFI的前身,通俗地说,EFI相当于1.0版,UEFI是2.0版。

BIOS和UEFI的区别:

1.1 启动模式

  • BIOS:使用传统的 MBR(Master Boot Record) 分区表,最多支持4个主分区,并且每个分区最大支持2TB存储空间。
  • UEFI:使用 GPT(GUID Partition Table) 分区表,支持128个分区(无需扩展分区),并且每个分区最大支持18EB(Exabyte,艾字节)存储空间,适合大容量磁盘。

1.2 启动过程

  • BIOS:通过称为 “启动扇区” 的代码执行启动。BIOS查找MBR,并将MBR中第一个扇区的启动代码加载到内存中,继而运行这个代码来引导操作系统。
  • UEFI:通过直接访问 EFI System Partition(ESP) 中的引导文件来启动系统。引导文件一般是 EFI/BOOT/BOOTX64.EFI,这样允许更灵活的启动方式,不再依赖MBR的启动扇区。

1.3 界面和配置方式

  • BIOS:采用键盘控制的字符界面(如蓝底白字的界面),通常只能使用方向键、回车键和功能键来进行配置,界面简单,功能相对有限。
  • UEFI:采用图形化界面支持鼠标操作,提供了更多配置选项,包括网络启动、磁盘检查等功能,使用体验更加现代化。

1.4 启动速度

  • BIOS:启动速度较慢,硬件初始化耗时较长。
  • UEFI:启动速度更快,尤其在开启 快速启动安全启动 时,初始化流程简化,加载速度提升明显。

1.5 兼容性

  • BIOS:主要适用于旧版硬件和操作系统,不支持新的特性如大容量磁盘支持和现代安全启动。
  • UEFI:兼容性更强,可以兼容BIOS启动(称为 Legacy Boot),也可以使用安全启动(Secure Boot)保护系统不被恶意软件攻击。

1.6 安全性

  • BIOS:没有安全启动机制,系统更容易受到Rootkit等攻击。
  • UEFI:支持 Secure Boot(安全启动)机制,可以确保操作系统的引导加载程序是经过签名和验证的,增强了系统的安全性。

1.7 存储方式

  • BIOS:BIOS固件通常存储在主板上的ROM芯片中,升级难度较大。
  • UEFI:UEFI固件通常存储在NVRAM中,可以更方便地升级和维护。

BIOS是旧的启动固件标准,功能较少、速度较慢,但简单易用。而UEFI作为新的标准,支持更大的硬盘容量、更快的启动速度、图形化界面和更高的安全性,逐步取代了传统的BIOS,成为主流。

二 两种不同的磁盘分区结构

2.1 MBR

MBR(Master Boot Record): 主引导扇区。通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。

主引导扇区由三个部分组成(共占用512个字节)

  1. 主引导程序即主引导记录(MBR)(占446个字节)。
    主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如GNU,GRUB)。
  2. 磁盘分区表项(DPT,Disk Partition Table) (共占用64个字节)
    由四个分区表项构成(每个16个字节)。
  3. 结束标志(占2个字节)
    注:MBR有两个含义,根据语境确定指的是第一个扇区还是主引导记录。

Note: 主分区、扩展分区、逻辑分区

  1. 磁盘分区表项共占用64个字节,因为每个分区信息需要16个字节,所以对于采用MBR型分区结构的磁盘,最多只能识别4分区(3个主分区+1个扩展分区 或者 4个主分区)。
  2. 扩展分区最多只能有1个。
  3. 扩展分区(Extended)也是主要分区的一种,但它与主分区(Primary)的不同在于理论上可以划分为无数个逻辑分区。
  4. 只有主分区和逻辑分区才能被格式化作为数据访问的分区。

2.2 GPT

GUID分区表(简称GPT,使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的一种较新的磁盘分区表结构的标准。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:

  1. 支持2TB以上的大硬盘。
  2. 每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。
  3. 分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616。
  4. 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
  5. 循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
  6. 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
  7. 每个分区可以有一个名称(不同于卷标)。

三 BIOS+MBR启动流程

BIOS+MBR启动流程的主要步骤依次为:上电自检(POST)-> 查找引导设备 -> 读取并执行MBR -> 读取并执行PBR -> 引导加载程序加载操作系统 -> 内核加载与硬件初始化 -> 启动用户空间 -> 操作系统加载完成

3.1 上电自检(POST - Power-On Self Test)

        当计算机上电或重启时,BIOS开始执行“上电自检”。在此阶段,BIOS会对硬件设备进行基本检测,以确保硬件的正常工作。

  • 检测CPU:检查CPU是否存在,是否能正常工作。
  • 检测内存:对内存条进行初始化和检测,以确保内存可用。
  • 检测显卡和输入输出设备:检查显卡是否存在以及基本工作是否正常,初始化键盘、鼠标等输入设备。
  • 检查硬盘:检查系统硬盘是否存在,是否可以正常访问。

        在上电自检完成后,如果所有硬件检测都通过,BIOS会开始寻找启动设备。

3.2 查找引导设备

       BIOS在硬件检测完成后,开始按照设定的引导顺序查找存储设备(例如硬盘、USB设备、光盘驱动器等)。一旦找到包含有效引导程序的设备,BIOS就会将控制权转移给该设备上的引导程序。

  • 引导顺序:BIOS中通常会设置一个启动顺序,可以指定优先尝试启动的设备,如硬盘、U盘、光盘等。
  • 检查MBR:BIOS在硬盘的第一个扇区(LBA 0)查找MBR。MBR是硬盘的第一个扇区,大小为512字节,其中包含了启动加载程序和硬盘分区表。

3.3 读取和执行MBR(Master Boot Record)

       BIOS将硬盘的MBR加载到内存中并执行。MBR包含两个重要的部分:

  • 启动代码:MBR前446字节是启动代码区域,该代码会指引系统找到操作系统的启动分区,并将控制权转移给分区的引导扇区。
  • 分区表:MBR的446-510字节是分区表(Partition Table),描述了硬盘上的主分区信息。
  • 签名:最后两个字节(0x55AA)为签名,用于表示该扇区是有效的MBR。

       MBR的启动代码会在内存中运行,并查找标记为“活动”(Active)的分区,这通常是主分区。找到后,MBR将控制权交给该分区的引导扇区。

3.4 读取并执行分区引导扇区(PBR - Partition Boot Record)

       操作系统的引导扇区(PBR)位于“活动”分区的第一个扇区。PBR的任务是进一步加载并引导操作系统的核心文件。

  • 引导代码:PBR包含特定的引导代码,该代码可以加载更高级的引导加载程序(如NTLDR、bootmgr、GRUB等)。
  • 加载引导加载程序:PBR的引导代码通常会将控制权交给更高级的引导加载程序,例如 Windows 系统的 bootmgr,或 Linux 系统的 GRUB

3.5 引导加载程序阶段

       引导加载程序是操作系统的一个核心部分,其作用是加载系统内核并将控制权交给内核。不同操作系统使用不同的引导加载程序:

  • Windows:在Windows系统中,PBR会加载bootmgr,接着bootmgr会读取Boot Configuration Data (BCD),选择加载的Windows操作系统版本并将控制权交给该系统的内核。
  • Linux:Linux系统常用GRUB作为引导加载程序。GRUB会提供启动菜单供用户选择操作系统,并根据配置文件grub.cfg加载Linux内核和初始化内存磁盘(initrd/initramfs)。

3.6 加载内核(Kernel Loading)

       引导加载程序将内核加载到内存中。内核是操作系统的核心组件,负责管理硬件和系统资源。内核加载的过程如下:

  • 初始化内存管理:内核首先初始化内存管理模块,用于管理物理内存和虚拟内存。
  • 硬件检测与初始化:内核检测并初始化硬件设备,包括硬盘、网络设备、输入输出设备等。
  • 加载驱动程序:内核加载必要的设备驱动,以确保硬件能正常使用。

3.7 启动用户空间(User Space Initialization)

       内核加载完成后,会启动第一个用户空间进程(Linux中为init进程,Windows中为smss.exe),并依次启动系统的基本服务和后台程序。

  • 初始化守护进程和服务:如系统日志服务、网络管理服务等。
  • 加载图形用户界面:如果系统设置了图形界面,会加载图形化登录管理器,进入桌面环境。

3.8 操作系统加载完成

       当所有核心服务和用户进程初始化完成后,系统进入空闲状态(idle),等待用户的操作。此时,系统启动完成,用户可以进行交互。

四 UEFI+GPT启动流程

        BIOS+MBR启动流程的主要步骤依次为:电源自检 → 2. UEFI固件初始化 → 3. UEFI Boot Manager查找EFI引导文件 → 4. 引导加载程序运行 → 5. 加载操作系统内核 → 6. 内核初始化 → 7. 系统服务启动 → 8. 用户登录界面显示

4.1 上电自检 (Power-On Self Test, POST)

  • 计算机通电后,首先进行硬件的自检(POST),检查CPU、内存、硬盘、显示器等是否正常。这个过程由UEFI固件负责。
  • 如果自检未通过,系统会返回错误信息并停止启动;如果通过,则进入下一步。

4.2 UEFI 固件初始化

  • UEFI(统一可扩展固件接口)是一种现代化的固件接口,负责初始化硬件并执行启动引导操作。与传统BIOS不同,UEFI具有图形界面、支持鼠标和更灵活的编程环境。
  • PEI(Pre-EFI Initialization): UEFI初始化分为多个阶段,PEI阶段初始化最基本的硬件,包括CPU、内存等,以便后续执行更复杂的操作。
  • DXE(Driver Execution Environment): PEI阶段后,进入DXE阶段,此阶段加载UEFI驱动程序,初始化剩余的硬件(例如USB、网络、存储设备等)。

4.3 UEFI Boot Manager 加载

  • 完成硬件初始化后,UEFI Boot Manager负责找到并加载操作系统的引导程序。
  • UEFI固件会读取硬盘上的GPT分区表,查找EFI系统分区(EFI System Partition,ESP),这是一个特殊的分区,专门存储启动加载程序。
  • ESP分区格式通常为FAT32,兼容性强,分区中包含UEFI引导文件(例如Windows的bootmgfw.efi或Linux的grubx64.efi)。

4.4 引导加载程序 (Boot Loader) 运行

  • 找到ESP分区后,UEFI Boot Manager会执行对应的引导文件。引导文件因操作系统不同而不同,比如:
    • Windowsbootmgfw.efi
    • Linux:可以使用GRUB(GRand Unified Bootloader)等引导加载程序,例如grubx64.efi
  • 引导加载程序负责进一步初始化系统,并将控制权交给操作系统内核。

4.5 加载内核 (Kernel Loading)

  • 引导加载程序被执行后,它会从指定的分区或位置加载操作系统的内核(Kernel)。
  • 内核是操作系统的核心,负责控制硬件和管理系统资源。此时,内核被加载到内存中,但尚未开始运行。

4.6 内核初始化 (Kernel Initialization)

  • 一旦内核加载到内存中,它就开始初始化进程,包括设置虚拟内存、初始化CPU多核管理、设备驱动程序和文件系统等。
  • 用户空间(User Space)初始化:操作系统在内核初始化完成后,启动系统的基本服务进程(例如Windows的smss.exe和Linux的init进程)。

4.7 系统服务启动

  • 内核启动完毕后,接下来就是启动各个系统服务和守护进程,例如图形界面服务、网络服务、登录服务等。
  • 不同的操作系统可能有不同的启动项,例如Windows的服务(Services)和Linux的守护进程(Daemons)。

4.8 用户登录界面

  • 最终,操作系统启动登录管理程序,进入登录界面,等待用户登录。
  • 在用户成功登录后,整个操作系统启动过程才算完全完成,用户可以正常使用系统。

五 总结

优缺点对比

  • BIOS+MBR适合传统计算机和兼容性要求较高的旧设备,但在硬盘支持、安全性和启动速度方面受限。
  • UEFI+GPT适合现代计算机系统,支持大容量硬盘和增强的安全性,并提供更高的启动效率,是主流的启动机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Meta AI 新技术,赋予机器人 “触觉” 的革命

Meta AI 新技术,赋予机器人 “触觉” 的革命 简介 传统机器人的局限 Meta AI 的新技术突破 技术应用前景 未来展望 简介 在科技飞速发展的今天,人工智能领域不断取得令人惊叹的突破。11月4日,Meta公司宣布其基础人工智能研究团队(FAIR)在…

IPguard与Ping32加密软件对比评测,哪款更适合企业数据保护?

在信息化时代,企业的数据安全至关重要,特别是在文件管理和源代码加密方面,更需要强有力的防护工具。目前,IPguard与Ping32是市场上两款常用的企业数据加密软件。今天,我们从多方面进行对比,为大家解析哪款软…

【linux】CentOS 的软件源(Repository)学习

CentOS 7 的软件源(Repository)是用于分发和管理软件包的集中存储库。这些源包含了操作系统所需的各种软件包,包括系统工具、库、应用程序等。通过配置不同的软件源,用户可以选择从不同的服务器下载软件包,以提高下载速…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接: [【Python篇】PyQt5 超详细教程——由入门到精通(序篇)](【Python篇】PyQt5 超详细教程——由入门到精通(序篇)-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果,方便理…

JSX 语法与基础组件使用

在 React Native 中,JSX 是一种 JavaScript 的语法扩展,用于描述 UI 界面。JSX 语法类似于 HTML,但它是 JavaScript 的语法糖,可以直接在 JavaScript 代码中编写 UI 组件。本章节将介绍 JSX 语法的基础知识,以及 React…

会议直击|美格智能受邀出席第三届无锡智能网联汽车生态大会,共筑汽车产业新质生产力

11月10日,2024世界物联网博览会分论坛——第三届无锡智能网联汽车生态大会在无锡举行,美格智能CEO杜国彬受邀出席,并参与“中央域控:重塑汽车智能架构的未来”主题圆桌论坛讨论,与行业伙伴共同探讨智能网联汽车产业领域…

昇思大模型平台打卡体验活动:项目1基于MindSpore实现BERT对话情绪识别

基于MindSpore实现BERT对话情绪识别 1. 模型简介 BERT(Bidirectional Encoder Representations from Transformers)是由Google于2018年末开发并发布的一种新型语言模型,基于Transformer架构中的Encoder,并且具有双向编码的特性。…

vue+Springboot实现简单文件上传到本地

实现效果 点击上传文件按钮后&#xff0c;选择需要上传的文件&#xff0c;如果是图片的话&#xff0c;上传成功后可以直接在下面预览。 前端页面 <template><div class"file-upload"><el-upload:headers"getUploadConfig(token).headers"…

解决 Vue3、Vite 和 TypeScript 开发环境下跨域的问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端&#xff08;端口 3000&#xff09;和后端&#xff08;端口 80&#xff09;之间的跨域问题&#xff1a; 在开发环境中&#xff0c;前端使用的 Vite 端口与后端端口不一致&#xff0c;会产生跨域错误提示&#xff1a; Access to X…

Java项目实战II基于微信小程序的订餐系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 随着移动互联网技术的飞速发展&#xff0…

闯关leetcode——202. Happy Number

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/happy-number/description/ 内容 Write an algorithm to determine if a number n is happy. A happy number is a number defined by the following process: Starting with any positive inte…

昇思大模型平台打卡体验活动:项目4基于MindSpore实现Roberta模型Prompt Tuning

基于MindNLP的Roberta模型Prompt Tuning 本文档介绍了如何基于MindNLP进行Roberta模型的Prompt Tuning&#xff0c;主要用于GLUE基准数据集的微调。本文提供了完整的代码示例以及详细的步骤说明&#xff0c;便于理解和复现实验。 环境配置 在运行此代码前&#xff0c;请确保…

中国药品注册审批数据库- 药品注册信息查询与审评进度查询方法

药品的注册、审评审批进度信息是医药研发相关人员每天都会关注的信息&#xff0c;为了保证药品注册申请受理及审评审批进度信息的公开透明&#xff0c;CDE药审中心提供药品不同注册分类序列及药品注册申请受理的审评审批进度信息查询服务。但因CDE官网的改版导致很大一部分人不…

FMC 扩展子卡6 路 422,8 组 LVDS,8 路 GPIO

FMC 扩展子卡6 路 422,8 组 LVDS,8 路 GPIO 卡是一款支持多路 LVCMOS 和 LVDS 信号互转的 FMC 扩展子板。它能支持 6 路 422 信号的输入 / 输出 ,8 组 LVDS 信号的输入 / 输出和 8 路 GPIO 信号的输入 / 输出。本产品基于一些逻辑转换芯片而设计&#xff0c;能实现差分信号转单…

C++builder中的人工智能(21):Barabási–Albert model(BA)模型

在此之前&#xff0c;大多数网络被想当然的认为是随机的&#xff0c;因此连接度分布可以近似用泊松分布来表示&#xff0c;而巴拉巴西与其学生阿尔伯特、郑浩雄通过对万维网度分布测量的结果却显示万维网度分布服从幂律分布&#xff0c;存在枢纽节点&#xff08;拥有大量链接的…

MyBatis3-获取参数值的方式、查询功能及特殊SQL执行

目录 准备工作 获取参数值的方式&#xff08;重点&#xff09; 查询功能 查询一个实体类对象 查询一个list集合 查询单个数据 查询一条数据为map集合 查询多条数据为map集合 特殊SQL执行 模糊查询 批量删除 动态设置表名 添加功能获取自增的主键 准备工作 模块My…

链表(Linkedlist)

序言 我们都了解链表是一种数据的存储结构&#xff0c;在Java使用中逻辑与c&#xff0c;c语言数据结构别无二致&#xff0c;但主要由于Java中不存在指针的说法&#xff0c;从而导致在实现过程中的代码不同&#xff0c;所以在学习的过程中我们无需过于担心&#xff0c;逻辑都是…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 多类型数据库(MySql、MongoDB)

介绍 DotNetCore.CAP简称CAP, [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用,CAP 拥有自己的特色,它不要求使用者发送消息或者处理消息的时候实现或者继承任何接口,拥有非常高的灵活性。我们一直坚信…

利用pythonstudio写的PDF、图片批量水印生成器,可同时为不同读者生成多组水印

现在很多场合需要将PDF或图片加水印&#xff0c;本程序利用pythonstudio编写。 第一步 界面 其中&#xff1a; LstMask:列表框 PopupMenu:PmnMark LstFiles:列表框 PopupMenu:PmnFiles OdFiles:文件选择器 Filter:PDF文件(.PDF)|.PDF|图像文件(.JPG)|.JPG|图像文件(.png…

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…