2314576

? 通用計算機啟動過程

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/716004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716004.shtml

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

相關文章

學習JAVA的第十二天(基礎)

算法 算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述 解決問題的策略 機制。 查找算法 基本查找(順序查找) 關鍵: 從0索引開始依次向…

學習:吳恩達:什么是神經元?神經網絡如何工作?

學習-吳恩達《AI for everyone》2019 深度學習非技術解釋 第2部分 可選.zh_嗶哩嗶哩_bilibili 深度學習Deep learning 人工神經網絡Artificial Neural network 什么是神經網絡? 只有一個神經元 4個神經元的神經網絡 神經網路的絕妙之處 神經網路的絕妙之處就在…

ctf_show筆記篇(web入門---信息收集)

目錄 信息收集 1-2:查看源代碼 3:bp抓包 4:robots.txt(這個文件里會寫有網站管理者不想讓爬蟲的頁面或其他) 5:網站源代碼泄露index.phps 6:同樣也是源碼泄露,(拿到…

Java快讀

java的快讀 (1)BufferedReader BufferedReader br new BufferedReader(new InputStreamReader(System.in));//定義對象String[] strings br.readLine().split(" ");//讀取一行字符串,以空格為分隔轉化為字符串數組int n Integer.parseInt(strings[0])…

k8s分布式圖床(k8s,metricsapi,vue3+ts)

image-manage 圖像管理應用 圖像管理應用提供了一個方便管理圖片的平臺,支持單機和Kubernetes集群部署。請確保您至少擁有一個MySQL數據庫和一個Redis數據庫,以及一個至少為Kubernetes 1.29版本的集群(如果選擇集群部署)。 文檔…

PCL1.14.0安裝、使用教程

寫在前面 本文內容 本文是PCL1.14.0在Windows下的安裝、使用教程; PCL、Open3D其他版本的編譯和使用相關教程見 各個版本的Open3D、PCL的編譯、使用教程平臺/環境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode轉載請注明出處&#xff…

http和https的區別是什么?

–前言 傳輸信息安全性不同、連接方式不同、端口不同、證書申請方式不同 一、傳輸信息安全性不同 1、http協議:是超文本傳輸協議,信息是明文傳輸。如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息。 2、h…

關于django makemigrations/migrate在生成數據表上遇到的一些問題

當你刪除了生成的 migration 文件夾,將數據庫從 SQLite 切換到 MySQL,并且在執行 makemigrations 命令時顯示沒有變化,同時 MySQL 中沒有生成表,可能是由于以下原因造成的: Django遷移系統的工作方式:Djang…

排序(3)——直接選擇排序

目錄 直接選擇排序 基本思想 整體思路(升序) 單趟 多趟 代碼實現 特性總結 直接選擇排序 基本思想 每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的…

軟考 系統分析師系列知識點之詳細調查(3)

接前一篇文章:軟考 系統分析師系列知識點之詳細調查(2) 所屬章節: 第10章. 系統分析 第2節. 詳細調查 在系統規劃階段,通過初步調查,系統分析師已經對企業的組織結構、系統功能等有了大致的了解。但是&…

力扣203移除鏈表元素

題目: 203. 移除鏈表元素 給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val val 的節點,并返回 新的頭節點 。 1,設置一個頭節點,統一操作。 2,這里是用p查找,但是…

BUUCTF---數據包中的線索1

1.題目描述 2.下載附件,是一個.pcap文件 3.放在wireshark中,仔細觀察數據流,會發現有個叫fenxi.php的數據流 4.這條數據流是http,且使用GET方式,接下來我們使用http.request,methodGET 命令來過濾數據流 5.在分析欄中我們追蹤htt…

查看端口占用命令

fuser 8080/tcp netstat -tuln | grep 8080 lsof -i:8080 ss -tuln | grep 8080

在Linux上使用通用二進制包安裝MySQL

下載安裝包 MySQL Community Downloads 安裝依賴 mysql 數據目錄初始化及服務啟動階段依賴libaio,檢測是否已安裝libaio dnf install libaio解壓安裝 ## 創建用戶組 groupadd mysql ## 創建用戶 useradd -r -g mysql -s /bin/false mysql ## 解壓安裝包 tar xv…

數據挖掘:航空公司的客戶價值分析

需求分析 理解并掌握聚類分析方法,掌握數據的標準化,掌握尋找最佳聚類數,掌握聚類的繪圖,掌握聚類分析的應用場景。 系統實現 實驗流程分析 借助航空公司數據,對客戶進行分類對不同類別的客戶進行特征分析&#xf…

IEEE754標準的c語言闡述,以及幾個浮點數常量

很多年前,調研過浮點數與整數之間的雙射問題: win7 intel x64 cpu vs2013 c語言浮點數精度失真問題 最近重新學習了一下IEEE754標準,也許實際還有很多深刻問題沒有被揭示。 計算機程序設計藝術,據說這本書中也有討論。 參考&…

電商數據分析13——電商平臺退貨率分析與降低策略

目錄 寫在開頭1. 退貨率分析的重要性1.1 退貨現象的影響1.2 退貨數據的收集與分析 2. 數據分析揭示的主要退貨原因2.1 產品描述不準確2.2 物流配送問題2.3 產品質量問題 3. 基于數據分析的退貨率降低策略3.1 優化產品描述和圖片3.2 改進物流配送服務3.3 加強質量控制和售后服務…

抖音視頻批量采集軟件|視頻評論下載工具

在日常工作中,需要頻繁下載抖音視頻,但逐個復制分享鏈接下載效率太低?別擔心!我們推出了一款專業的抖音視頻批量采集軟件,基于C#開發,滿足您的需求,讓您通過關鍵詞搜索視頻并自動批量抓取&#…

力扣每日一題 受限條件下可到達節點的數目 DFS

Problem: 2368. 受限條件下可到達節點的數目 文章目錄 思路復雜度Code 思路 &#x1f468;?&#x1f3eb; 靈神 復雜度 時間復雜度: O ( n ) O(n) O(n) 空間復雜度: O ( n ) O(n) O(n) Code class Solution {int ans 0;boolean[] set;List<Integer>[] es;publ…

Unity中URP下實現水體(C#動態生成漸變圖)

文章目錄 前言一、Shader部分1、申明水漸變圖紋理和采樣器2、在片元著色器&#xff0c;進行紋理采樣&#xff0c;并且輸出 二、C#腳本部分1、我們新建一個C#腳本2、我們定義兩個變量3、在Start內&#xff0c;new 一個Texture2D(寬&#xff0c;高)4、定義一個Color[寬*高]的顏色…