计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。

建议在电脑上看,手机上格式有点问题,认真读,这方面没问题的,肝了一天。

目录.计算机启动详解

  • 一.计算机启动直观图
  • 二.步骤详解
    • 前置准备
    • 磁盘初始化
    • 1.开机阶段
    • 2.执行BIOS阶段
    • 3.执行引导记录(MBR)阶段
    • 4.操作系统加载与初始化
  • 3.最终流程和关注重点
  • 4.样例

一.计算机启动直观图

在这里插入图片描述

二.步骤详解

前置准备

在计算机启动前,需要进行磁盘等硬件设备的前置准备,并且这个一般是由商家完成再进行售卖,或者用户自己在硬盘装操作系统。

阶段操作内容是否在启动时发生
物理初始化(低级格式化)划分磁道、扇区否(出厂完成)
分区创建MBR/GPT分区表否(用户手动操作)
逻辑格式化(高级格式化)创建文件系统(如EXT4)否(安装系统时完成)
启动时初始化挂载已格式化的文件系统

注意:分区是用户手动操作,通常在操作系统安装之前或通过磁盘管理工具进行。因此,在正常的启动流程中,分区操作并不属于启动阶段的一部分,而是系统安装或维护时的操作
注意:逻辑格式化(高级格式化)通常由操作系统安装程序或用户手动使用工具(如mkfs)完成。安装系统时,安装程序会在分区后对分区进行格式化以创建文件系统。
注意:MBR分区的创建通常由用户使用分区工具(如fdisk)在安装操作系统时完成,或者由操作系统安装程序自动处理。这一步骤发生在操作系统安装阶段,而非日常启动流程中。特别注意操作系统安装是指,将操作系统写进磁盘的操作,而不是PBR进行操作系统加载到内存,注意区分。

磁盘初始化

步骤执行者操作内容
物理初始化(低级格式化)硬盘制造商划分磁道、扇区,标记物理地址
创建分区表(MBR/GPT)用户或安装程序(如fdisk)MBR:划分主分区(最多4个)、扩展分区
逻辑格式化(高级格式化)用户或安装程序(如mkfs)创建文件系统(如EXT4/NTFS),初始化超级块、inode表、数据块位图。
写入引导程序操作系统安装程序MBR:写入Stage 1引导代码(如GRUB)。
操作系统安装安装程序将操作系统文件写入格式化后的分区(如Windows的C盘、Linux的/分区)。

注意:创建分区表中的MBR与写入引导程序中的MBR区分
a.前者
这应该是指在初始化硬盘时创建MBR分区表的过程。当用户使用分区工具(如fdisk、gdisk等)对硬盘进行分区时,工具会在硬盘的第一个扇区写入MBR结构,其中包含分区表信息。这个过程属于磁盘分区阶段,主要目的是定义硬盘的逻辑分区结构,即哪些区域属于主分区、扩展分区等。
b.后者
这通常指的是在MBR的引导代码部分写入具体的引导程序(如GRUB的Stage 1),以便在启动时加载操作系统。这一步是在系统安装或配置引导程序时完成的,属于引导加载程序的安装阶段。

1.开机阶段

 当按下电源按钮,电源供应器开始为各个硬件组件供电。此时,CPU重置,从固定的内存地址开始执行代码。这个阶段主要涉及硬件初始化,但还没有进入BIOS或UEFI代码的执行。

a.电源接通:主板、CPU、内存等硬件开始供电。
b.CPU重置:CPU从固定地址(如x86的0xFFFF0)开始执行代码(BIOS入口)。
c.时钟与总线初始化:主板芯片组初始化时钟信号和总线协议(如PCIe)。

2.执行BIOS阶段

 BIOS(Basic Input Output System基本输入输出系统)存储在主板上的ROM中,CPU在重置后会跳转到BIOS的入口地址(通常是0xFFFF0),BIOS负责进行POST(Power-On Self Test)。
 CPU重置后PC指向的内存地址就是BIOS,且是ROM内存(ROM和RAM一起编制组成内存)。此后CPU开始按照该内存地区中的指令一步步执行,如检测硬件设备如内存、硬盘、键盘等是否正常。POST完成后,BIOS会按照预设的启动顺序(Boot Order)查找可启动设备(如硬盘)。:

a.硬件检测:检查内存、硬盘、键盘等关键设备是否正常,异常则通过蜂鸣器或屏幕提示报错。
b.中断初始化:初始化中断向量表(如INT 0x19用于加载引导程序)。
c.读取CMOS设置:按预设启动顺序(Boot Order)查找可启动设备(如硬盘、USB)。
d.加载引导扇区:从选中设备的第一个扇区(磁盘中的MBR)读取512字节到内存0x7C00。

注意:中断向量表(IVT)是计算机中用于处理中断和异常的数据结构,记录了每个中断号对应的处理程序地址。在启动过程中,BIOS阶段会初始化中断向量表,以便硬件中断能被正确处理。

3.执行引导记录(MBR)阶段

 BIOS找到启动设备后,会读取该设备的第一个扇区(即MBR,主引导记录),大小为512字节。MBR包含引导加载程序(引导加载PBR用的)和分区表。引导加载程序的任务是加载更复杂的引导程序(活动分区中的PBR),或者直接加载操作系统内核,然后将控制权交给操作系统。分区表则是记录了硬盘的分区信息。
 当CPU执行完BIOS程序之后,MBR内容已经载内存中了,CPU随之解析其内容并执行其一些列指令,如加载操作系统

a.解析MBR结构
 引导代码(446字节):加载并执行后续引导程序PBR用的。
 分区表(64字节):定义4个主分区信息(起始扇区、大小、类型等)。
 签名(2字节0x55AA):验证MBR有效性。
b.引导加载程序(用于加载PBR)
加载第二阶段引导程序PBR,或直接加载操作系统内核。
 切换至保护模式:设置GDT(全局描述符表)和IDT(中断描述符表)。
 传递内核参数:如根文件系统位置(root=/dev/sda1)。

注意:PBR(分区引导记录)位于每个分区的第一个扇区,用于加载该分区内的操作系统。
注意:MBR中存储的是用于引导加载PBR的引导程序,即操作系统的引导过程由MBR中的引导代码启动,然后跳转到活动分区的PBR执行进一步引导。
注意:

4.操作系统加载与初始化

 当MBR中的引导程序将PBR引导程序加载到内存时候,CPU会执行PBR中的一系列指令完成对操作系统的加载和初始化。

a.内核加载与初始化
 内核加载:引导程序将内核映像(如vmlinuz)加载到内存.
 内核初始化:
  1.初始化关键数据结构:GDT/IDT(定义内存段和中
   断处理程序),页表(启用分页机制)
  2.硬件探测与驱动加载:识别CPU、内存、磁盘控制
   器等,加载驱动程序。
  3.根文件系统挂载:根据引导参数挂载根分区。
b.用户空间初始化
 启动init进程:内核启动第一个用户进程(PID=1)。
 执行初始化脚本:如挂载文件系统,启动系统服务。
 登录界面就绪:启动显示管理器。

注意:MBR负责全局引导,PBR负责分区内引导。如此处就是MBR引导某分区PBR(通常为C盘),C盘中的活动分区PBR引导加载此盘中的操作系统。

3.最终流程和关注重点

 开机上电 → BIOS阶段(初始化IVT) → 加载MBR → 执行MBR引导代码 → 跳转至活动分区的PBR → 加载操作系统内核(挂载文件系统) → 系统启动完成

这部分还未完善,后续做题后补充。

4.样例

后续我会做408真题,再写。

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

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

相关文章

后端开发技术之Log日志框架

第一章 日志原理 1.1 log发展历史 从JDK1.4开始提供java.until.logging,后来大佬发现JUL太难用了,就自己手撸了个log4j,后来log4j发现安全漏洞,加上代码结构问题难以维护,于是从1.2就停止更新log4j,并又重…

美丽天天秒链动2+1源码(新零售商城搭建)

什么是链动21模式? 链动21主要是建立团队模式,同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规,同时激励用户 公司的利润分享机制,让您在享受购物折扣的同时,也能促进并获得客观收益。 链动21模…

Python10天冲刺-设计模型之策略模式

策略模式是一种行为设计模式,它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起,并让它们相互替换。 下面是使用 Python 实现策略模式的一个示例: 示例代码 假设我们有一个简单的购物车系统&#xf…

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url: http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss,所以对传参进行测试,修改?username1,进行访问 会发现username参数传入什么,welcome之后就…

自主机器人模拟系统

一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统,具备以下核心功能: 双模式控制:支持手动控制(WASD键)和自动导航模式(鼠标左键设定目标) 智能路径规划:采用改进型…

快速上手非关系型数据库-MongoDB

简介 MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。 NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 MongoDB 的设计理念是为了应对大数据量、…

性能优化实践:启动优化方案

性能优化实践:启动优化方案 在Flutter应用开发中,启动性能是用户体验的第一印象,也是应用性能优化的重要环节。本文将从理论到实践,深入探讨Flutter应用的启动优化方案。 一、Flutter应用启动流程分析 1. 启动类型 冷启动&…

在文本废墟中打捞月光

在文本废墟中打捞月光 ----再读三三的《山顶上是海》之“暗室”所理 今天是2025年5月1日,传统的“五一”小长假。当我早饭后“坐”在卫生间的那几分钟里,闺女和儿子就骑着家中仅有的两辆电动车去了图书馆。我是该做些什么? 于是我左手拿着三…

C++之类和对象基础

⾯向对象三⼤特性:封装、继承、多态 类和对象 一.类的定义1. 类的定义格式2.类域 二.实例化1.对象2.对象的大小 三.this指针 在 C 的世界里,类和对象构成了面向对象编程(Object-Oriented Programming,OOP)的核心框架&…

计算机网络——HTTP/IP 协议通俗入门详解

HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议?1. 基本定义2. HTTP 是怎么工作的? 二、HTTP 协议的特点三、HTTPS 是什么?它和 HTTP 有啥区别?1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解: 五、常见…

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 (一)任务调度的目标 (二)任务调度框架的关键组成 二、任务状态设计 (一)任务状态流转设计 (二)任务表设计(SQL) 三、单机任…

基于GPT 模板开发智能写作辅助应用

目录 项目说明 1. 项目背景 2. 项目目标 3. 功能需求 4. 技术选型 项目结构 详细代码实现 前端代码(client) client/src/main.js client/src/App.vue client/src/components/HistoryList.vue 后端代码(server) server/app.js server/routes/api.js server/mo…

linux 使用nginx部署next.js项目,并使用pm2守护进程

前言 本文基于:操作系统 CentOS Stream 8 使用工具:Xshell8、Xftp8 服务器基础环境: node - 请查看 linux安装node并全局可用pm2 - 请查看 linux安装pm2并全局可用nginx - 请查看 linux 使用nginx部署vue、react项目 所需服务器基础环境&…

使用huggingface_hub需要注意的事项

在安装huggingface_hub的时候要注意如果你的python是放在c盘下时记得用管理员模式命令行来安装huggingface_hub,否则安装过程会报错,之后也不会有huggingface-cli命令。 如果安装时因为没有用管理员权限安装而报错了,可以先卸载huggingface-…

Spring MVC @RequestHeader 注解怎么用?

我们来详细解释一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于将 HTTP 请求中的**请求头(Request Headers)**的值绑定到 Controller 方法的参数上。 请求头是 HTTP 请求的一部分,包含了关于…

Rust 学习笔记:关于结构体的例题

Rust 学习笔记:关于结构体的例题 Rust 学习笔记:关于结构体的例题下面的程序能通过编译吗?下面的程序能通过编译吗?下面的程序能通过编译吗?哪种说法最能描述 Display 和 Debug 特质之间的区别?下面哪个选项…

STM32 SPI通信协议

1. SPI协议概述 1.1 什么是SPI? SPI(Serial Peripheral Interface)是由摩托罗拉公司于1980年代提出的同步串行通信协议,主要用于短距离高速芯片间通信。作为四线制全双工通信协议,它以简单的硬件实现和高效的传输速率…

92.一个简单的输入与显示示例 Maui例子 C#例子

一、关于项目命名的注意事项 在开发.NET MAUI项目时,项目命名是一个不可忽视的细节。如果你习惯了在C#控制台或WPF项目中使用中文项目名称,那么在.NET MAUI中,你可能会遇到一些问题。我之前就因为使用中文项目名称而导致项目无法直接运行&am…

Locate 3D:Meta出品自监督学习3D定位方法

标题: Locate 3D: Real-World Object Localization via Self-Supervised Learning in 3D 摘要: 我们提出了 Locate 3D,这是一种可根据指代表达(如“沙发和灯之间的小咖啡桌”)在三维场景中定位物体的模型。Locate 3…

FastAPI 与数据库交互示例

目录 安装必要的包完整代码示例运行应用使用说明API 端点说明代码解析 下面将创建一个简单的 FastAPI 应用程序,演示如何与 SQLite 数据库进行交互。这个例子包括创建、读取、更新和删除(CRUD)操作。 安装必要的包 首先,需要安装…