Linux之Kernel(1)系統基礎理論(1)
Author: Once Day Date: 2025年2月6日
一位熱衷于Linux學習和開發的菜鳥,試圖譜寫一場冒險之旅,也許終點只是一場白日夢…
漫漫長路,有人對你微笑過嘛…
全系列文章可參考專欄: Linux內核知識_Once-Day的博客-CSDN博客
參考文章:
- openEuler OS知識連載 - 知乎
- 引言 - rCore-Camp-Guide-2024A 文檔
- 計算機操作系統知識點總結(有這一篇就夠了!!!)-CSDN博客
- 5萬字、97 張圖總結操作系統核心知識點 - 程序員cxuan - 博客園
- 【王道】操作系統 知識點總結(合集)【超詳細!】 - Zyyyyyyyyy - 博客園
- 全方位剖析Linux操作系統,太全了-linux操作系統的特點
- OS發展史中各操作系統的形成、發展和特點_同時具備什么操作系統功能構成所謂前后系統,前后任務優先后臺任務-CSDN博客
- 《現代操作系統》
文章目錄
- Linux之Kernel(1)系統基礎理論(1)
- 1.概述
- 1.1 怎么理解操作系統
- 1.2 操作系統與應用程序的關系
- 1.3 并發編程與操作系統
- 1.4 并發與共享
- 2. 計算機硬件
- 3. 操作系統發展歷程
- 3.1 手工操作階段(此階段無操作系統)
- 3.2 批處理階段(操作系統開始出現)
- 3.3 分時操作系統
- 3.4 實時操作系統
- 3.5 網絡操作系統和分布式計算機系統
- 3.6 個人計算機操作系統
- 3.7 嵌入式操作系統
- 4. 操作系統運行環境
- 4.1 處理器運行模型
- 4.2 操作系統內核功能
- 4.3 中斷和異常
- 4.4 系統調用
- 5. 操作系統結構
- 6. 虛擬機
1.概述
1.1 怎么理解操作系統
(1)操作系統首先是軟件程序
操作系統是計算機系統中最基礎、最核心的軟件程序。它是計算機硬件與用戶之間的橋梁,為用戶提供一個方便、高效、安全的工作環境。操作系統管理和控制著計算機系統中的各種硬件資源,如CPU、內存、存儲設備、輸入輸出設備等,合理地組織、調度和分配這些資源,使它們能夠協調工作,發揮最大效能。
(2)計算機系統的核心和基石
操作系統也是其他應用軟件運行的基礎。它為應用程序提供了統一的編程接口和運行環境,屏蔽了硬件細節,使得應用程序開發者無需關注底層硬件,專注于應用功能的實現。常見的進程管理、內存管理、文件系統、網絡通信等,都是由操作系統提供支持的。
(3)管理計算機硬件,為應用程序提供基礎
從抽象的角度看,操作系統是一個非常高級的抽象層次。它比進程、文件、內存、網絡等具體的資源管理都要更加抽象和高級。操作系統將這些資源管理封裝起來,提供統一的調用接口,極大地方便了用戶和程序員。但操作系統又低于虛擬機這一更高級別的抽象。虛擬機在操作系統之上,可以模擬出多個獨立的、互不干擾的運行環境。
計算機科學的核心就是研究如何在不同層次上進行抽象,如何通過抽象來管理日益復雜的計算機系統。從具體的硬件到操作系統,再到虛擬機,是一個不斷抽象、封裝的過程。每一層抽象都隱藏了下層的復雜性,提供了更簡潔友好的上層接口。理解和掌握這些不同級別的抽象,是學習計算機科學的關鍵所在。
上圖引用自:全方位剖析Linux操作系統,太全了-linux操作系統的特點
1.2 操作系統與應用程序的關系
操作系統與應用程序之間存在著緊密的協作關系:
-
操作系統提供運行環境和必要的服務。
-
應用程序在操作系統提供的環境中運行并使用操作系統提供的服務。
上圖引用自全方位剖析Linux操作系統,太全了-linux操作系統的特點。
具體而言,操作系統為應用程序提供了以下支持:
- 執行環境:操作系統為應用程序提供了一個統一的執行環境,包括內存空間、CPU時間等計算資源。應用程序在這個環境中被裝載、執行,無需關心底層硬件的差異。
- 系統調用:操作系統提供了一組系統調用(System Call),使應用程序能夠請求操作系統的服務,如文件讀寫、進程管理、內存分配等。系統調用是應用程序與操作系統之間的重要接口。
- 資源管理:操作系統負責管理計算機系統中的各種硬件和軟件資源,如CPU、內存、I/O設備等,并為應用程序分配和回收這些資源。
- 安全保護:操作系統提供了多種安全保護機制,如用戶身份驗證、訪問權限控制、內存保護等,防止惡意或錯誤的應用程序破壞系統或其他程序。
應用程序則在操作系統的支持下運行,通過系統調用請求操作系統的服務,利用操作系統分配的資源完成計算任務。不同的應用程序可以并發執行,共享操作系統提供的資源。
單個程序通常不能發揮處理器的全部性能,因為程序在執行過程中難免遇到一些需要等待的情況,如等待I/O操作完成、等待某個事件發生等。這時程序會調用阻塞函數或睡眠函數,主動放棄CPU,進入等待狀態。操作系統會趁這個空檔,將CPU時間片分配給其他就緒的程序,以提高CPU的利用率。所以在多道程序環境下,多個程序輪流占用CPU,能夠充分發揮處理器的性能。而單個程序因為等待造成的CPU空閑浪費問題,則由操作系統的調度機制來解決,對程序員是透明的。
1.3 并發編程與操作系統
如果是無操作系統,要實現并行編程,必須要手動利用匯編進行CPU寄存器切換。
在沒有操作系統的情況下,如果要實現并行編程,程序員需要直接面對硬件,手工處理各種底層細節。比如,要在單個處理器上實現多個程序的并發執行,程序員必須使用匯編語言,精心設計程序,手動保存和恢復各個程序的CPU寄存器狀態,以實現程序之間的切換。這非常復雜和低效,對程序員的技能要求很高,而且難以保證正確性和可靠性。
而有了操作系統的支持,并發編程就容易多了。操作系統提供了進程或線程的概念,將并發執行的每個程序封裝為一個進程或線程。操作系統負責進程/線程的創建、切換、同步、通信和銷毀,程序員只需要使用操作系統提供的相關API,就可以方便地編寫并發程序。操作系統會自動保存和恢復CPU寄存器狀態,實現進程/線程之間的切換。
上圖引用自:計算機操作系統知識點總結(有這一篇就夠了!!!)-CSDN博客
(1)在單個處理器上的并發,多個程序分享處理器資源,將CPU時間切成許多時間片,宏觀上并發,但在微觀上單發。
在單處理器系統上,操作系統采用時間片輪轉的方式,將CPU時間劃分為多個時間片,并將時間片輪流分配給各個就緒的進程/線程,宏觀上實現了多個程序的并發執行。但在微觀上,單個處理器任一時刻只能執行一個程序,這稱為單處理器并發。
(2)在多個處理器上的并發,多個程序在不同處理器上同時運行,微觀上并發。
在多處理器系統上,操作系統可以將不同的進程/線程分配到不同的處理器上同時執行,真正實現了并行執行。每個處理器獨立工作,互不干擾。在微觀和宏觀上都是并行的,這稱為多處理器并行。現代的多核CPU就是典型的多處理器系統。
1.4 并發與共享
(1)并發指兩個或多個事件在同一時間間隔內發生。這些事件宏觀上是同時發生的,但微觀上是交替發生的。
操作系統的并發性是通過分時實現的。
- 單核CPU同一時刻只能執行一個程序,各個程序只能并發地執行。
- 多核CPU同一時刻可以同時執行多個程序,多個程序可以并行地執行。
并發性:兩個或多個事件在同一時間間隔內發生。
并行性:兩個或多個事件在同一時刻發生,需要硬件支持,如多流水線或多處理機硬件環境。
并發編程可以充分利用處理器資源,各程序可以同時運行。但是也會帶來時序問題,即運行結果取決于運行時具體的執行順序。
在多道程序環境下,允許多個程序并發執行,但由于資源有限,進程的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是進程的異步性。
(2)共享即資源共享,是指系統中的資源可供內存中多個并發執行的進程共同使用。
- 互斥共享方式:系統中的某些資源,雖然可以提供給多個進程使用,但一個時間段內只允許一個進程訪問該資源。例如,同一時間段內攝像頭只能分配給其中一個進程。
- 同時共享方式:系統中的某些資源,允許一個時間段內由多個進程“同時”對它們進行訪問。例如,同時打開兩個窗口讀取PDF文件。宏觀上看,兩邊都在同時讀取并顯示PDF內容,說明兩個進程都在訪問硬盤資源,從中讀取數據。微觀上看,兩個進程是交替著訪問硬盤的。
所謂的“同時”往往是宏觀上的,而在微觀上,這些進程可能是交替地對該資源進行訪問的(即分時共享)。
并發和共享是操作系統兩個最基本的特征,兩者之間互為存在的條件:
- 資源共享是以程序的并發為條件的,若系統不允許程序并發執行,則自然不存在資源共享問題;
- 若系統不能對資源共享實施有效的管理,則必將影響到程序的并發執行,甚至根本無法并發執行。
2. 計算機硬件
計算機硬件的基礎組成部分包括運算器、控制器、存儲器、輸入設備和輸出設備。它們各司其職,協同工作,共同完成計算機的各種功能。
圖片引用自:5萬字、97 張圖總結操作系統核心知識點 - 程序員cxuan - 博客園
下面進行詳細介紹:
- 運算器(Arithmetic Logic Unit, ALU):運算器是計算機的"大腦",負責執行各種算術和邏輯運算,如加減乘除、與或非等。它從存儲器中獲取數據,按照控制器的指令進行運算,并將結果寫回存儲器或輸出設備。現代CPU中的運算器通常由多個功能單元組成,可以并行執行多個運算,提高運算速度。
- 控制器(Control Unit, CU):控制器是計算機的"指揮中心",負責解釋和執行程序指令,控制和協調各個硬件部件的工作。它從存儲器中逐條取出指令,分析指令的類型和參數,向相關硬件發出控制信號,引導程序的執行流程。控制器的工作基于指令周期,包括取指、譯碼、執行等步驟。
- 存儲器(Memory):存儲器用于存放程序指令和數據,是計算機的"記憶系統"。它分為內存(Random Access Memory, RAM)和外存(External Storage)兩大類。內存是CPU可以直接訪問的高速存儲器,用于存放當前運行的程序和數據,特點是速度快、容量小、掉電易失。外存是用于長期保存程序和數據的大容量存儲器,如硬盤、U盤等,特點是速度慢、容量大、掉電不丟失。
- 輸入設備(Input Device):輸入設備是用戶向計算機輸入數據和指令的裝置,如鍵盤、鼠標、麥克風、攝像頭、掃描儀等。它們將人可讀的信息轉換為計算機可處理的數字信號,實現人機交互。
- 輸出設備(Output Device):輸出設備是計算機向用戶呈現處理結果的裝置,如顯示器、打印機、音響等。它們將計算機產生的數字信號轉換為人可感知的形式,如文字、圖形、聲音、視頻等,實現信息的可視化表達。
運算器和控制器共同組成了 CPU,這五部分也是馮諾伊曼的體系結構,它認為計算機必須具有如下功能:
把需要的程序和數據送至計算機中。必須具有長期記憶程序、數據、中間結果及最終運算結果的能力。能夠完成各種算術、邏輯運算和數據傳送等數據加工處理的能力。能夠根據需要控制程序走向,并能根據指令控制機器的各部件協調操作。能夠按照要求將處理結果輸出給用戶。
下面是一個實際PC電腦的硬件組成概念圖:
3. 操作系統發展歷程
3.1 手工操作階段(此階段無操作系統)
在計算機發展的早期階段,沒有操作系統的概念,計算機的使用完全依賴于手工操作。這一階段,用戶在計算機上進行任何任務,如程序的裝載、運行、結果輸出等,都需要人工手動完成。具體過程如下:
- 用戶將程序和數據以紙帶、磁帶等形式提供給計算機操作員。
- 操作員將程序和數據通過控制臺或紙帶讀取機輸入到計算機內存中。
- 操作員在控制臺上手動輸入啟動程序的命令,程序開始執行。
- 程序執行過程中,若需要數據輸入,操作員需要在控制臺上手動輸入數據。
- 程序執行完畢,操作員從控制臺上讀取輸出結果,并將結果打印輸出或保存到磁帶等外部存儲介質上。
- 操作員將計算結果返回給用戶。
這種完全手工操作的方式存在以下缺點:
- 用戶獨占全機:一個用戶的任務從開始到結束,獨占整個計算機系統,其他用戶無法使用,資源利用率極低。
- CPU利用率低:CPU大量時間都在等待手工操作,如等待裝入程序、等待輸入數據等,CPU的計算能力沒有得到充分利用。
這實際反映了人機矛盾,即CPU和I/O設備速度不匹配的矛盾。CPU的運算速度很快,而手工操作的速度很慢,二者之間存在巨大差異。CPU大量時間都在等待人工操作完成,導致CPU空閑浪費。
為了解決這些問題,后來出現了脫機批處理階段,引入了監督程序,實現了作業的自動調度和輸入輸出的重疊處理,在一定程度上緩解了人機矛盾,提高了資源利用率。但脫機批處理仍然存在用戶與作業之間、I/O與CPU之間的速度矛盾。這催生了分時系統和實時系統的出現,從而進入了操作系統時代。
3.2 批處理階段(操作系統開始出現)
單道批處理系統和多道批處理系統是操作系統發展過程中的兩個重要階段,標志著操作系統的雛形開始出現。
單道批處理系統引入了脫機輸入/輸出技術,實現了作業的自動調度和輸入/輸出的重疊處理。它的主要特征是:
- 自動性:在正常情況下,一批作業能夠自動地逐個運行,無需人工干預。
- 順序性:作業按照其在輸入設備上的順序依次進入內存執行,完成順序與進入內存的順序相同。
- 單道性:內存中每次只有一道作業,當前作業完成或異常終止后,才調入后繼作業運行。
單道批處理緩解了人機速度矛盾,減少了作業的建立時間和手工操作時間,提高了計算機資源的利用率。但由于內存中始終只有一道程序,CPU和其他資源還是要經常等待I/O完成,資源利用率仍然偏低。
多道批處理系統引入了多道程序設計技術,實現了作業的并發執行,進一步提高了資源利用率。多道程序設計允許多個程序同時進入內存并在CPU中交替運行,這些程序共享系統中的各種硬件和軟件資源。其主要特點包括:
- 多道性:內存中同時存放多個相互獨立的程序。
- 宏觀并行:同時進入內存的多個程序都處于運行過程中,但它們開始和結束的時間可能不同。
- 微觀串行:內存中的多個程序輪流占用CPU,交替執行。
- 間斷性:由于程序之間需要共享和競爭資源,每個程序的執行都是間斷的,而不是連續的。
- 共享性:多個程序之間共享系統的各種資源,如CPU、內存、I/O設備等。
- 制約性:多個程序之間存在相互制約關系,如同步、互斥、優先級等。
多道批處理系統需要解決處理器分配、內存分配、I/O設備分配、作業管理等問題。與單道批處理相比,它的優點是資源利用率高,系統吞吐量大;缺點是用戶響應時間長,缺乏人機交互能力。
3.3 分時操作系統
分時操作系統是操作系統發展歷史上的一個重要里程碑,它引入了分時技術,實現了多用戶交互式操作,極大地改善了人機交互體驗。
分時技術的核心是時間片輪轉,即將CPU的時間劃分為多個時間片,每個時間片分配給一個用戶或作業,多個用戶或作業在時間上交替使用CPU。當一個時間片用完時,操作系統會自動切換到下一個用戶或作業,從而實現多用戶或多任務的并發執行。每個用戶通過自己的終端與計算機交互,感覺似乎獨占了整個系統。
分時系統的主要特點包括:
- 同時性(多路性):允許多個終端用戶同時使用一臺計算機,用戶之間互不干擾。
- 交互性:用戶可以通過終端與系統進行實時的人機對話,控制程序運行,獲取即時響應。
- 獨立性:多個用戶可以彼此獨立地進行操作,互不影響,每個用戶感覺自己獨占整個系統。
- 及時性:用戶請求能夠在很短時間內得到響應,通常在幾秒鐘之內,滿足人機交互的需求。
與批處理系統相比,分時系統的優點在于:
- 大大改善了人機交互性,用戶請求可以被即時處理和響應,提高了用戶體驗。
- 實現了多用戶共享,提高了系統資源的利用率和系統的服務能力。
但分時系統也存在一些局限性,主要是無法優先處理緊急任務,所有用戶受到平等對待,緊急任務可能需要等待較長時間才能得到響應。
3.4 實時操作系統
實時操作系統是為了滿足實時任務處理需求而發展起來的一種專門的操作系統。實時任務對響應時間有嚴格要求,必須在規定的時間內完成處理,如果超過截止時間,就可能造成嚴重后果。
實時系統通過引入任務優先級機制,確保高優先級的緊急任務能夠優先得到處理,而不需要經過時間片排隊,從而保證了實時性。
實時系統可以分為軟實時系統和硬實時系統兩大類:
- 軟實時系統:在大多數情況下能夠滿足實時要求,但偶爾違反時間規定是可以接受的,不會引起永久性的破壞。典型的軟實時系統包括飛機訂票系統、銀行管理系統等,這些系統對響應時間有較高要求,但偶爾的延遲并不會造成嚴重后果。
- 硬實時系統:必須絕對嚴格地滿足實時要求,某個動作必須在規定的時刻或時間范圍內發生,絲毫不能違反,否則就可能導致災難性的后果。典型的硬實時系統包括飛行器自動控制、工業過程控制、醫療設備控制等,這些系統容不得任何時間上的誤差,必須精確、可靠地執行每一個操作。
實時系統的主要特點包括:
- 及時性:能夠在規定的時間內響應外部事件,并及時完成任務處理。
- 可靠性:必須保證系統的高度可靠,避免出現故障或錯誤,確保任務的正確執行。
相比其他類型的操作系統,實時系統的優點在于能夠優先處理緊急任務,保證關鍵任務的實時響應,適用于對時間要求極為嚴格的場合。但實時系統對硬件和軟件的要求也更高,需要專門的實時調度算法、中斷處理機制、異常處理機制等,以確保實時性和可靠性。
在實際應用中,實時操作系統廣泛應用于工業控制、機器人、航天航空、國防軍事等領域。一些知名的實時操作系統包括VxWorks、QNX、RTLinux、FreeRTOS等。這些系統都提供了專門的實時內核和開發工具,支持實時任務的快速開發和可靠執行。
3.5 網絡操作系統和分布式計算機系統
網絡操作系統和分布式操作系統是計算機技術發展到一定階段的產物,它們反映了計算機系統從集中式向分布式演進的趨勢。
網絡操作系統是指把計算機網絡中的各臺計算機有機地組合起來,提供一種統一、高效、經濟的方法來管理和使用網絡資源。它的主要特點包括:
- 資源共享:網絡中的硬件、軟件、數據等各種資源可以被所有用戶共享,提高了資源利用率。
- 通信能力:各臺計算機之間可以方便地進行數據交換和信息傳遞,實現了分布式處理。
網絡操作系統為用戶提供了一個統一的操作界面,屏蔽了底層網絡的復雜性,使得用戶可以方便地訪問和使用網絡資源。
分布式計算機系統是由多臺計算機組成的,這些計算機通過網絡互連,協同工作,完成共同的任務。分布式系統的主要特點包括:
- 分布性:系統中的硬件、軟件、數據等資源是分布在不同的計算機上的。
- 并行性:多臺計算機可以并行工作,協同完成同一個任務,提高了系統的處理能力。
- 對等性:系統中的每臺計算機地位平等,不存在主從關系。
- 資源共享:每臺計算機上的資源可以被所有用戶共享。
- 可重構性:系統的任意一部分都可以構成一個子系統,并且可以方便地進行重組。
分布式操作系統是指用于管理分布式計算機系統的操作系統,它提供了一種機制,使得用戶可以方便地開發和運行分布式應用,充分發揮分布式系統的優勢。
網絡操作系統和分布式操作系統的本質區別在于,網絡操作系統主要關注資源共享和通信,而分布式操作系統更強調任務的分布式執行和并行處理。在分布式系統中,一個任務被分解成多個子任務,分別在不同的計算機上并行執行,最后將結果匯總,完成整個任務。這種并行協同的工作方式是分布式操作系統的核心特征。
隨著互聯網、云計算、大數據等技術的興起,分布式系統變得越來越重要。許多大型互聯網應用,如搜索引擎、社交網絡、電商平臺等,都是建立在分布式架構之上的。一些著名的分布式操作系統包括Google的Borg、Microsoft的Dryad、Apache的Hadoop等,它們為海量數據的存儲、處理、分析提供了強大的支撐。
未來,分布式操作系統將在人工智能、物聯網、區塊鏈等領域扮演越來越關鍵的角色。如何實現高效、安全、可靠的分布式計算,如何平衡負載、容錯容災、動態伸縮,都是分布式操作系統需要解決的重要課題。可以預見,隨著計算機技術的不斷發展,分布式操作系統也將不斷演進,為構建更加智能、彈性的分布式應用提供更加完善的支撐。
3.6 個人計算機操作系統
個人計算機操作系統是普通用戶最為熟悉和廣泛使用的一類操作系統。隨著個人計算機的普及,個人計算機操作系統也得到了快速發展和廣泛應用。它為用戶提供了一個友好、直觀、易用的圖形用戶界面(GUI),使得非專業用戶也能方便地使用計算機,完成各種日常任務,如文字處理、電子表格、多媒體播放、網絡瀏覽、游戲娛樂等。
目前主流的個人計算機操作系統包括:
- Microsoft Windows:由微軟公司開發,是目前個人計算機上使用最廣泛的操作系統。Windows提供了豐富的應用軟件,支持多種硬件設備,具有良好的易用性和兼容性。主要版本有Windows 7、Windows 8、Windows 10等。
- macOS:由蘋果公司開發,專門用于蘋果Macintosh系列個人計算機。macOS以其流暢的用戶界面、優雅的設計風格、強大的多媒體功能而聞名,在創意設計、音視頻處理等領域有廣泛應用。
- Linux:一種基于UNIX的開源操作系統,有多個發行版本,如Ubuntu、Fedora、CentOS等。Linux以其穩定性、安全性、靈活性著稱,廣泛應用于服務器、嵌入式設備、個人桌面等領域。
- Chrome OS:由Google開發的基于Linux內核的輕量級操作系統,主要用于Chromebook筆記本電腦。Chrome OS以云服務為中心,提供了簡潔高效的瀏覽器界面,用戶的數據和應用都存儲在云端。
相比其他類型的操作系統,個人計算機操作系統的特點包括:
- 圖形用戶界面:提供了直觀、美觀的圖形界面,用戶可以通過鼠標、觸摸板等設備進行操作。
- 多任務處理:支持多個應用程序同時運行,用戶可以方便地在不同任務之間切換。
- 多媒體支持:內置了強大的多媒體框架,支持音頻、視頻、圖像等多種格式的播放和編輯。
- 網絡連接:提供了便捷的網絡連接和管理功能,用戶可以輕松接入互聯網和局域網。
- 硬件支持:支持各種外圍設備,如打印機、掃描儀、數碼相機等,可以方便地進行安裝和配置。
隨著個人計算機硬件性能的不斷提升和應用軟件的日益豐富,個人計算機操作系統也在不斷創新和發展。一些新的技術和理念,如云計算、人工智能、語音交互、虛擬/增強現實等,正在被集成到個人計算機操作系統中,為用戶提供更加智能、便捷、沉浸式的使用體驗。
3.7 嵌入式操作系統
嵌入式操作系統是一種專門用于嵌入式系統的操作系統。嵌入式系統是指以應用為中心、以計算機技術為基礎、軟硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。嵌入式操作系統就是運行在這些嵌入式設備上、管理硬件資源、支撐應用軟件的基礎軟件。
嵌入式操作系統的主要特點包括:
- 資源受限:嵌入式設備通常資源有限,如CPU速度較慢,內存容量較小,存儲空間不足等,嵌入式操作系統必須能夠在有限的資源中高效運行。
- 實時性:許多嵌入式系統需要對外部事件及時響應,完成實時控制和處理任務,嵌入式操作系統必須具備良好的實時性能。
- 可裁剪性:由于嵌入式設備的應用領域非常廣泛,需求千差萬別,嵌入式操作系統必須能夠根據具體應用需求進行裁剪和定制,以達到優化資源利用的目的。
- 可移植性:嵌入式系統采用的硬件平臺多種多樣,嵌入式操作系統需要具有良好的可移植性,以便在不同的硬件平臺上快速移植和部署。
- 可靠性:嵌入式系統通常要求長時間連續工作,并且許多應用領域對可靠性有極高要求,嵌入式操作系統必須具備高可靠、高穩定的特性。
嵌入式操作系統是物聯網、智能硬件、無人駕駛等新興領域的重要使能技術。隨著嵌入式設備的智能化、網絡化、多樣化趨勢不斷加強,嵌入式操作系統也在不斷創新發展,呈現出實時性與通用性兼顧、安全性與開放性并重、輕量化與高性能融合等新特點。
4. 操作系統運行環境
4.1 處理器運行模型
在現代計算機系統中,CPU通常運行在兩種不同的模式下:用戶態和內核態。這種區分是為了保護操作系統內核和系統資源的安全,防止用戶程序對系統造成破壞。
(1)指令的分類:
- 特權指令:只允許操作系統內核使用,如I/O指令、置中斷指令等。
- 非特權指令:允許用戶程序使用,僅限于訪問用戶自己的地址空間。
(2)CPU的運行模式:
- 用戶態:CPU只能執行非特權指令,運行用戶程序。
- 內核態:CPU可以執行特權指令,運行操作系統內核程序。
(3)模式切換:
- 內核態到用戶態:通過執行特權指令修改程序狀態字寄存器(PSW)中的模式位。
- 用戶態到內核態:通過系統調用、硬件中斷、異常等事件觸發,產生軟中斷,進入內核態。
(4)用戶程序與內核程序:
- 用戶程序受限于用戶態,只能使用非特權指令和有限的系統資源。
- 內核程序運行在內核態,可以執行特權指令,訪問所有系統資源。
- 用戶程序通過系統調用向內核程序請求服務,內核程序驗證和處理請求,完成后返回用戶態。
(5)操作系統內核的分層設計:
- 底層模塊:與硬件關聯緊密,如中斷處理、進程調度等,運行于最高特權級。
- 高層模塊:提供更抽象的服務,如文件管理、網絡通信等。
- 分層架構提高了系統的安全性和可維護性。
通過引入用戶態和內核態,現代操作系統實現了用戶程序和內核程序的隔離,提供了受控的系統調用接口,在保證系統安全和穩定的同時,為用戶程序提供了豐富的功能支持。理解用戶態與內核態的區別和切換機制,是掌握操作系統工作原理的基礎。
4.2 操作系統內核功能
操作系統內核(kernel)是計算機系統的核心部分,它直接管理硬件資源,為上層應用程序提供服務。內核由多個關鍵組件構成,各司其職,協同工作,以確保系統的高效、安全、可靠運行。
(1)內核的定義與作用:
- 內核是操作系統的最基本、最底層的軟件模塊。
- 它負責管理和分配系統資源,如處理器、內存、設備等。
- 內核通過系統調用接口,實現用戶程序與系統資源的交互。
(2)時鐘管理:
- 提供標準的系統時間,支持進程調度。
- 時鐘中斷是重要的系統事件來源,如定時器、看門狗等。
- 時間戳、計時器等機制也依賴于時鐘管理。
(3)中斷機制:
- 包括硬件中斷(外設觸發)和軟件中斷(程序發起,如系統調用)。
- 內核負責中斷識別、中斷處理程序調度、現場保護與恢復等。
- 中斷驅動的異步編程模型可提高系統的并發性和實時性。
(4)原語操作:
- 原語是由若干指令組成的不可分割的操作,用于完成特定的底層功能。
- 常見原語有進程同步和通信、內存分配和回收、原子操作等。
- 原語通常需要關中斷執行,以保證其原子性。
(5)系統數據結構:
- 內核維護進程、內存、設備等管理數據結構,以及中斷向量表、系統調用表等。
- 這些數據結構通常駐留在內核空間,受到嚴格的訪問控制和一致性保護。
- 高效的數據結構和算法(如多級反饋隊列、紅黑樹等)是內核性能的關鍵。
(6)其他內核組件:
- 進程間通信(IPC):管道、消息隊列、共享內存、信號量等機制。
- 安全和權限管理:用戶和用戶組管理、訪問控制、特權級別等。
- 文件系統:目錄結構、文件操作、數據緩存、日志等。
- 網絡協議棧:TCP/IP協議、Socket編程接口、網絡驅動等。
4.3 中斷和異常
中斷和異常可以讓操作系統內核強行奪回CPU的控制權,以及使CPU從用戶態變為內核態。
-
異常:又稱內中斷,指來自CPU執行指令內部的事件,如程序的非法操作碼、地址越界、運算溢出、虛存系統的缺頁及專門的陷入指令等引起的事件。
- 故障(Fault)通常是由指令執行引起的異常,如非法操作碼、缺頁故障、除數為0、運算溢出等。
- 自陷(Trap)是一種事先安排的“異常”事件,用于在用戶態下調用操作系統內核程序,如條件陷阱指令。
- 終止(Abort)是指出現了使得CPU無法繼續執行的硬件故障,如控制器出錯、存儲器校驗錯等。
-
中斷:又稱外中斷,指來自CPU執行指令外部的事件,通常用于信息輸入/輸出,如I/O中斷,時鐘中斷。
- 可屏蔽中斷:指通過INTR線發出的中斷請求,通過改變屏蔽字可以實現多重中斷,從而使得中斷處理更加靈活。
- 不可屏蔽中斷:指通過NMI線發出的中斷請求,通常是緊急的硬件故障,如電源掉電等。此外,異常也是不能被屏蔽的。
故障異常和自陷異常屬于軟件中斷(程序性異常),終止異常和外部中斷屬于硬件中斷。
異常不能被屏蔽,一旦出現,就應立即處理。
中斷和異常的處理過程:
-
當CPU在執行用戶程序的第i條指令時檢測到一個異常事件,或在執行第i條指令后發現一個中斷請求信號,
-
則CPU打斷當前的用戶程序,然后轉到相應的中斷或異常處理程序去執行。
-
若中斷或異常處理程序能夠解決相應的問題,則在中斷或異常處理程序的最后,CPU通過執行中斷或異常返回指令,回到被打斷的用戶程序的第i條指令或第i+1條指令繼續執行。
返回第i+1條指令:由自陷(Trap)引起的內中斷;如系統調用。由外部設備引起的外中斷,如鍵盤敲擊。
返回第i條指令:由故障(Fault)引起的內中斷;如缺頁等。
-
若中斷或異常處理程序發現是不可恢復的致命錯誤,則終止用戶程序。
通常情況下,對中斷和異常的具體處理過程由操作系統(和驅動程序)完成。
4.4 系統調用
系統調用(System Call)是操作系統提供給用戶程序的一組標準接口,使得用戶程序能夠請求操作系統內核提供服務,比如文件讀寫、進程管理、內存分配等。它是用戶態程序與內核態程序通信的橋梁,也是操作系統實現其功能和管理計算機硬件的重要手段。
系統調用的工作原理:
- 用戶程序通過API函數(如open、read、write等)發起系統調用。
- API函數將參數打包,并觸發軟中斷(如80h中斷),從用戶態切換到內核態。
- 內核根據系統調用號查找系統調用表,定位到相應的內核函數。
- 內核函數執行所請求的操作,完成后將結果返回給用戶程序,并切換回用戶態。
系統調用的類型:
- 進程控制:如fork、exec、exit等,用于創建、執行、終止進程。
- 文件管理:如open、close、read、write等,用于打開、關閉、讀寫文件。
- 設備管理:如ioctl、read、write等,用于與設備通信和控制。
- 信息維護:如getpid、alarm、sleep等,用于獲取或修改系統信息。
- 通信:如pipe、shmget、mmap等,用于進程間通信和同步。
系統調用的優點:
- 提供統一、標準、安全的接口,方便用戶程序使用系統資源。
- 封裝底層細節,提高程序的可移植性和兼容性。
- 通過權限檢查和參數驗證,保障系統的安全和穩定。
- 集中管理和調度資源,提高系統的效率和公平性。
系統調用的缺點:
- 頻繁的系統調用會引起大量的上下文切換,影響系統性能。
- 參數傳遞和結果返回需要在用戶空間和內核空間之間進行數據拷貝,帶來額外開銷。
- 內核代碼的bug或安全漏洞可能被惡意用戶程序利用,威脅系統安全。
5. 操作系統結構
操作系統結構是指操作系統內部各個組成部分之間相互關系和組織方式的抽象描述。合理的操作系統結構設計可以提高系統的性能、可靠性、安全性、可維護性等。常見的操作系統結構包括分層結構、模塊化結構、宏內核結構、微內核結構、外核結構等。
(1)分層結構,將操作系統按照功能和抽象級別劃分為若干層,上層依賴下層提供的服務,下層為上層屏蔽硬件細節。典型的分層包括硬件層、內核層、系統調用層、API層和用戶層。分層結構有利于系統的設計、實現和測試,但層次之間的頻繁切換可能影響性能。
(2)模塊化結構,將操作系統劃分為多個獨立的模塊,每個模塊完成特定的功能,模塊之間通過定義良好的接口進行通信。模塊化結構有利于系統的擴展、裁剪和移植,提高了系統的靈活性和可維護性。但模塊之間的依賴關系可能導致系統的復雜度增加。
(3)宏內核結構,又稱單內核結構,將操作系統的絕大部分功能(如進程管理、內存管理、文件系統、設備驅動等)都實現在內核態,提供了高度集成、高效的系統服務。宏內核結構是傳統操作系統(如Unix、Linux、Windows等)的主流選擇,但內核代碼龐大、耦合緊密,可能影響系統的穩定性和安全性。
常見的Windows、Linux、Android、IOS、macOS等系統都是宏內核,但它們也廣泛吸取微內核的優點進行改進。
(4)微內核結構,將操作系統的核心功能(如進程調度、中斷處理、IPC等)實現在內核態,而將其他功能(如文件系統、設備驅動等)實現在用戶態,內核與服務之間通過消息傳遞進行通信。微內核結構有利于系統的可靠性、安全性和可擴展性,但頻繁的消息傳遞可能影響系統的性能。
(5)外核結構,又稱庫操作系統結構,將傳統操作系統中的大部分功能(如進程管理、內存管理等)都實現在用戶態,內核只提供最基本的硬件抽象和保護機制。應用程序可以根據需要靈活選擇和組合各種操作系統服務。外核結構賦予了應用程序更大的自由度和控制權,但也可能引入安全隱患和兼容性問題。
除了上述經典結構外,現代操作系統還出現了一些新的結構形式,如虛擬機監控器(VMM)結構、容器化結構、微服務結構等,以適應云計算、邊緣計算、物聯網等新興應用場景的需求。
6. 虛擬機
虛擬機(Virtual Machine, VM)是一種通過軟件模擬的完整計算機系統,它可以在一臺物理計算機上運行多個不同的操作系統和應用程序,實現計算資源的靈活共享和動態管理。虛擬機技術已廣泛應用于服務器虛擬化、云計算、桌面虛擬化等領域。
根據虛擬機監控器(Virtual Machine Monitor, VMM)的實現方式和虛擬化層次,可將虛擬機分為兩大類:第一類虛擬機(Type-1 VM)和第二類虛擬機(Type-2 VM)。
圖片源自于【王道】操作系統 知識點總結(合集)【超詳細!】 - Zyyyyyyyyy - 博客園
第一類虛擬機,VMM直接運行在物理硬件之上,無需依賴宿主操作系統,因此也被稱為裸金屬虛擬機(Bare-Metal VM)。VMM負責對物理資源進行抽象和分配,并為每個虛擬機提供虛擬化的硬件環境(如CPU、內存、I/O設備等),使其可以像獨占硬件一樣運行。第一類虛擬機的代表產品有VMware ESXi、Microsoft Hyper-V、Xen等。優點是虛擬化開銷小,性能接近物理機,管理簡單,無需考慮宿主操作系統的兼容性和穩定性。缺點是硬件支持有限,需要CPU等提供虛擬化指令集,軟件生態相對封閉,難以與宿主系統的應用程序協同工作。
第二類虛擬機,VMM運行在宿主操作系統之上,借助宿主操作系統提供的API和服務來實現虛擬化功能,因此也被稱為托管虛擬機(Hosted VM)。VMM通過攔截和模擬虛擬機發出的特權指令和敏感操作,將其轉換為對宿主操作系統資源的訪問請求,再由宿主操作系統代為執行。第二類虛擬機的代表產品有VMware Workstation、Oracle VirtualBox、QEMU等。優點是更硬件兼容性好,可在各種商用硬件和操作系統上運行,軟件生態豐富,可與宿主系統的應用程序方便地交互和集成。缺點是虛擬化開銷大,性能受宿主操作系統的影響,管理復雜,需要同時維護宿主操作系統和虛擬機操作系統。
第一類VMM | 第二類VMM | |
---|---|---|
對物理資源的控制權 | 直接運行在硬件之上,能直接控制和分配物理資源 | 運行在Host OS之上,依賴于Host OS為其分配物理資源 |
資源分配方式 | 在安裝Guest OS時,VMM要在原本的硬盤上自行分配存儲空間,類似于"外核“的分配方式,分配未經抽象的物理硬件 | GuestOs擁有自己的虛擬磁盤,該盤實際上是HostOs文件系統中的一個大文件。GuestOs分配到的內存是虛擬內存 |
性能 | 性能更好 | 性能更差,需要Host Os作為"中介” |
可支持的虛擬機數量 | 更多,不需要和Host OS競爭資源,相同的硬件資源可以支持更多的虛擬機 | 更少,Host Os本身需要使用物理資源,Host OS上運行的其他進程也需要物理資源 |
虛擬機的可遷移性 | 更差 | 更好,只需導出虛擬機鏡像文件即可遷移到另一臺Host Os上,商業化應用更廣泛 |
運行模式 | 第一類VMM運行在最高特權級(Ring 0),可以執行最高特權的指令。 | 第二類VMM部分運行在用戶態、部分運行在內核態。GuestOs發出的系統調用會被VMM截獲,并轉化為VMM對Hostos的系統調用 |
除了上述兩類虛擬機外,近年來還出現了一些新的虛擬化技術和實現方式,如操作系統級虛擬化(如Docker容器)、庫操作系統虛擬化(如Unikernel)、硬件輔助虛擬化(如Intel VT、AMD-V)等,以進一步提高虛擬化的性能、安全性和靈活性。
Once Day
也信美人終作土,不堪幽夢太匆匆......
如果這篇文章為您帶來了幫助或啟發,不妨點個贊👍和關注,再加上一個小小的收藏?!
(。???。)感謝您的閱讀與支持~~~