計算機啟動流程中,都干了啥事。比如文件掛在,操作系統加載,中斷向量表加載,磁盤初始化在哪階段。

建議在電腦上看,手機上格式有點問題,認真讀,這方面沒問題的,肝了一天。

目錄.計算機啟動詳解

  • 一.計算機啟動直觀圖
  • 二.步驟詳解
    • 前置準備
    • 磁盤初始化
    • 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.pswp.cn/diannao/81370.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81370.shtml
英文地址,請注明出處:http://en.pswp.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)操作。 安裝必要的包 首先,需要安裝…