柔柔弱弱人人人

? 通用計算機啟動過程

1??一個基礎固件:BIOS

一個基礎固件:BIOS→基本IO系統,它提供以下功能:

  • 上電后自檢功能 Power-On Self-Test,即POST:上電后,識別硬件配置并對其進行自檢,保證正常運行和初始化;
  • 基本IO驅動與事件處理功能:初始化并驅動硬件,如顯示器、串口、鍵盤等接口,使能基本的中斷;
  • 啟動參數設置功能:過程中允許通過熱鍵啟動設置界面,進而對CMOS RAM中的啟動參數進行配置。CMOS RAM等效于BBSRAM,存放啟動配置數據,電池掉電后數據丟失;
  • 系統自動裝載功能:在系統自檢成功后,根據啟動順序,將相應啟動設備主引導記錄MBR(一般位于0磁道的0扇區,大小為512字節)的引導程序裝入內存并從入口地址運行;
2??WIndows操作系統啟動過程

① 系統上電或復位,X86處理器復位——代碼段寄存器CS為0xFFFF,指令指針寄存器IP為)0x0000,CS:IP地址存放下一條跳轉指令,跳轉至ROM中BIOS入口地址0xFFFFFFF0(復位向量地址),并啟動BIOS。
② BIOS上電自檢,若出現錯誤則初始化基本硬件,允許用戶進行參數配置。
③ BIOS將第1個啟動設備的第1個扇區加載到系統RAM的0x7C000地址,啟動MBR中的引導程序,進入引導的第一個階段。
④ 調用 Windows MBR Loader 或 LILO GRUB WinGrub等引導程序,進入引導的第二個階段。
⑤ 引導程序調用 OS Boot Loader 把用戶選擇的操作系統內核加載到內存,并跳轉到操作系統入口地址開始執行。
此時,計算機的控制權交給了操作系統,基本啟動過程完成。

? 嵌入式系統啟動過程

MCS-51 MCU 上電復位后,PC寄存器的初值為0x0000。0000H,0001H,0002H這三個單元存放了一條無條件跳轉指令,當從該地址執行時將直接跳轉到主程序的入口地址。
arm處理器復位后將從0x00000000地址處開始執行指令。

1??處理器片內集成啟動固件——嵌入式系統啟動

① 上電程序引導
片內集成獨立 Boot ROM (Brom),代碼 Rom Boot Loader (RBL) 支持從 NAND Flash、SPI、UART 等外部接口啟動。

  • 加電后,處理器將從該ROM的復位向量地址開始執行,RBL通過判斷處理器特定引腳的電平來進入正常啟動模式或開發模式;
  • RBL獲取下一步要執行的代碼,并將其復制到SRAM或SDRAM中引導執行;

② 嵌入式操作系統裝載
嵌入式操作系統的引導也需要特定的機制和軟件支持,即 Boot Loader。

  • 復位后,將 Boot Loader 代碼從Flash 拷貝到SDRAM的特定區間并引導執行;
  • Boot Loader 程序執行一系列基本的硬件初始化工作;
  • 將自身拷貝到SDRAM中,RAM中的 Boot Loader 繼續執行,為操作系統的運行做好環境準備,并將外部存儲器中的操作系統內核映像及根文件系統映像拷貝到內存中的代碼,數據空間,設置內核啟動參數;
  • 跳轉至內核入口地址開始執行。
2??裸機

直接部署在嵌入式硬件上的軟件稱為裸機代碼,或裸機(應用)軟件。一般來說都是些無限循環結構,比如空調、冰箱等嵌入式系統。通過板級支持包BSP,向下屏蔽硬件的細節,向上提供統一的服務和接口。沒有操作系統,通過中斷來實現多任務運行。

? Linux系統啟動過程

計算機接通電源上電后,需要經過BIOS加電自檢、MBR系統引導、加載內核三步之后,操作系統才會啟動。

1??BIOS加電自檢
  • BIOS全稱 Basic Input/Output System,即基本輸入輸出系統,它是一個被永久刻錄在ROM中的軟件,加電自檢是指 Power On Self Test,POST,屬于BIOS的主要組成部分。
  • 計算機在接通電源后,BIOS通過POST來加載硬件信息,進行內存、CPU、主板等檢測,如果硬件設備正常工作,BIOS會尋找硬盤第一個扇區中存儲的數據,并使用MBR中的數據激活引導加載程序。
2??MBR系統引導
  • MBR全程 Master Boot Recode,是一種磁盤分區格式,也是以此種格式的磁盤中0盤片0扇區中存儲的一段記錄——主引導記錄。磁盤中扇區的大小為512byte,主引導記錄MBR占據第一個扇區的前446字節,剩余的空間依次存儲一個64字節的磁盤分區表,和一個用于標識MBR是否有效的2字節的模數。
  • 主引導記錄MBR中包含一個實現引導加載功能的程序——Boot Loader。由于BIOS只能訪問很少量的數據,所以MBR中的引導加載程序其實只是一段初始程序的加載程序 Initial Program Loader,IPL,這段程序唯一的功能就是定位并加載 Boot Loader 的主體程序。
  • 加載引導分為兩個階段
    • 第一階段,BIOS引導IPL獲取 Boot Loader 主題程序在磁盤中的位置,此時系統啟動的控制權由BIOS轉移到MBR;
    • 第二階段,Boot Loader 主題程序與操作系統對應的內核,定位到內核文件所在的位置,并將其加載到計算機內存中,此時系統啟動的控制權由MBR轉移到內核。
3??加載內核
  • 內核是操作系統的核心,Linux操作系統的內核就是Linux。內核以一種自解壓的壓縮格式壓縮,它與一個初始化的內存映像和存儲設備映像表一起存儲在 /boot 目錄下。
  • 在選定的內核被加載到內存中并開始執行前需要先從壓縮格式中解壓,一旦內核自解壓完成,systemd進程(也就是早期版本中的init進程)便被啟動。
  • systemd進程的啟動標識著引導過程的結束,也標識著啟動過程的開始。在系統啟動之初,由于系統中沒有除systemd之外的程序執行,系統初始化工作尚未完成,因此計算機不能執行任何和用戶相關的功能性工作。
  • 系統初始化需要進行掛載文件系統、啟動后臺服務等等一系列工作,這些初始化工作全部由systemd進程完成。對于用戶來說,系統初始化完成后,系統才算正式啟動。
4??附:init進程啟動級別

系統啟動流程:
BIOS → MBR → boot loader → kernel → init
BIOS → MBR → GRUB → kernel → init

  • BIOS:找到啟動介質 - 移動硬盤、磁盤、U盤等,找到啟動介質后讀取其中的第一個扇區;
  • MBR:第一個扇區(512字節)稱為主引導記錄。主引導記錄分為3部分,前446byte是引導信息,后64byte是磁盤分區信息,最后2byte是標志位。MBR的作用是找到 boot loader 。
  • GRUP:是一種 boot loader ,用于加載kernel核心信息。
  • kernel:內核。
  • init:內核的第一個程序,分為7個啟動級別。

查看啟動級別配置文件

cat /etc/inittab  #查看啟動級別相關的配置文件

inti命令可以切換系統的啟動級別

inti 0/1/2/3/4/5/6
  • 0表示關機(不能設置為開機默認啟動級別)
  • 1表示單用戶
  • 2表示多用戶(無網絡的3級別)
  • 3多用戶(命令行模式,字符終端)
  • 4用于開發
  • 5圖形界面,默認啟動方式
  • 6reboot(不能設置為開機默認啟動級別)
runlevel   #查看系統的啟動級別

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715971.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715971.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715971.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django項目中使用ON DUPLICATE KEY UPDATE 來進行數據庫批量插入

如果在遇到property_index字段沖突時更新其他所有字段,使其在ON DUPLICATE KEY UPDATE子句中明確指定除了property_index以外的所有字段應該如何更新。這意味著你需要構建一個更新賦值的列表,其中不包括property_index字段。 from django.db import con…

【RISC-V 指令集】RISC-V DSP 擴展指令集介紹(一)

前言: 本筆記是基于對RISC-V DSP擴展指令集文檔總結的,《P-ext-proposal.pdf》文檔的關鍵內容如下: 主要介紹了RISC-V的P擴展指令集及其相關細節。 首先,對P擴展指令進行了概述,并列出了其與其他擴展重復的指令。 …

關于NAT的幾種類型

NAT網絡地址轉換(Network Address Translation)主要用于解決IP地址不足而提出的,NAT主要有以下幾類 1、S-NAT(Source Network Address Translation)基于源地址的NAT 2、D-NAT(Destination Network Addres…

串及BF樸素查找算法(學習整理):

關于串的相關定義: 串:用‘ ’表示的字符序列空串:包含零個字符的串子串:包含傳本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7個:串的長度的階乘1(空串)真子串:不包含自身的所…

解讀OWASP應用安全驗證標準ASVS

OWASP應用程序安全驗證標準(OWASP Application Security Verification Standard,ASVS)為測試web應用程序技術安全控制提供了基礎,還為開發人員提供了安全開發的要求列表。 1. 簡介 OWASP應用安全驗證標準,是一份測試應…

電子電氣架構——AUTOSAR架構下EcuM喚醒源事件詳解

電子電氣架構——AUTOSAR架構下EcuM喚醒源事件詳解 我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 沒有人關注你。也無需有人關注你。你必須承認自己的價值,你不能站在他人的角度來反對自己。人…

Verilog原語、Verilog保留關鍵字

Verilog基元 Vivado合成支持Verilog門級原語,下表所示除外。 Vivado合成不支持Verilog開關級原語,例如以下原語: cmos、nmos、pmos、rcmos、rnmos、rpmos rtran、rtranif0、rtranif1、tran, tranif0,tranif1 門級…

Qt/自定義控件的封裝

新建文件,選擇Qt設計師界面類 創建空界面 這是自己控件封裝的文件,雙擊跳轉到設計界面進行設計 跳轉到其他的ui界面,創建一個widget 右鍵,選擇提升為 在提升的類名稱輸入剛剛創建的類名,添加后選擇提升,勾選…

政安晨【示例演繹虛擬世界開發】(五):從制作一個對戰小游戲開始(Cocos Creator 《擊敗老大》)(第二段)

政安晨的個人主頁:政安晨 歡迎 👍點贊?評論?收藏 收錄專欄: AI虛擬世界大講堂 希望政安晨的博客能夠對您有所裨益,如有不足之處,歡迎在評論區提出指正! 現在我們已經學會了如何向場景中添加圖片,接下來繼…

計算機設計大賽 深度學習機器視覺車道線識別與檢測 -自動駕駛

文章目錄 1 前言2 先上成果3 車道線4 問題抽象(建立模型)5 幀掩碼(Frame Mask)6 車道檢測的圖像預處理7 圖像閾值化8 霍夫線變換9 實現車道檢測9.1 幀掩碼創建9.2 圖像預處理9.2.1 圖像閾值化9.2.2 霍夫線變換 最后 1 前言 🔥 優質競賽項目系列,今天要分…

怎么運行/opencv/modules/imgproc/test下的test_cvtyuv.cpp

怎么運行/opencv/modules/imgproc/test下的test_cvtyuv.cpp 要運行test_cvtyuv.cpp,你需要按照以下步驟操作: 獲取OpenCV源代碼,編譯并安裝opencv:首先,確保你已經下載并安裝了OpenCV。如果沒有,請前往Open…

Leetcode630. 課程表 III

Every day a Leetcode 題目來源:630. 課程表 III 解法1:反悔貪心 經驗告訴我們,在準備期末考試的時候,先考的課程先準備。同理,lastDay 越早的課程,應當越早上完。但是,有的課程 duration 比…

2023年09月CCF-GESP編程能力等級認證Scratch圖形化編程四級真題解析

一、單選題(共15題,共30分) 第1題 人們所使用的手機上安裝的 App 通常指的是( )。 A:一款操作系統 B:一款應用軟件 C:一種通話設備 D:以上都不對 答案:B 第2題 下列流程圖的輸出結果是?( ) A:9 B:7 C:5 D:11 答案:A 第3題 默認小貓角色,執行下列程序…

IO,硬盤與文件

IO與計算機存儲空間 IO(輸入/輸出)是計算機領域中指的是數據在計算機與外部設備之間的傳輸過程。存儲通常指的是計算機中用來保存數據的介質或設備,硬盤是存儲設備的一種,通常是指硬盤驅動器(Hard Disk Drive&#xf…

文章解讀與仿真程序復現思路——電網技術EI\CSCD\北大核心《考慮時空相關性的流域水風光多能互補系統高維不確定性場景生成方法》

本專欄欄目提供文章與程序復現思路,具體已有的論文與論文源程序可翻閱本博主免費的專欄欄目《論文與完整程序》 論文與完整源程序_電網論文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 這篇文章的標題涵蓋了以下幾個關鍵方…

C語言編程大題

以下總結編程大題的常考題型 1,輸出 100-200 之間所有素數。 要求: (1)編寫一個判斷一個整數是否為素數的函數 void prime(int n),若是素數則輸出,否則不輸出 (2)主函數中調用 prime 函數,輸出 100-200 之間所有素數 說明:素數是指除了1和該數本身之外,不能被其它任何整…

【C++】用命名空間避免命名沖突

🌸博主主頁:釉色清風🌸文章專欄:C🌸今日語錄:如果神明還不幫你,說明他相信你。 🪷文章簡介:這篇文章是結合譚浩強老師的書以及自己的理解,同時加入了一些例子…

NOC2023軟件創意編程(學而思賽道)python小高組初賽真題

軟件創意編程 一、參賽范圍 1.參賽組別:小學低年級組(1-3 年級)、小學高年級組(4-6 年級)、初中組。 2.參賽人數:1 人。 3.指導教師:1 人(可空缺)。 4.每人限參加 1 個賽項。 組別確定:以地方教育行政主管部門(教委、教育廳、教育局) 認定的選手所屬學段為準。 二、…

MATLAB知識點:if條件判斷語句的嵌套

?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。? MATLAB教程新手入門篇(數學建模清風主講,適合零基礎同學觀看)_嗶哩嗶哩_bilibili 節選自?第4章:MATLAB程序流程控制 我們通過一個…

基于springboot+vue的教師工作量管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…