操作系統:操作系統的結構(Structures of Operating System)

目錄

簡單結構(Simple Structure)

整體式結構(Monolithic Structure)

?什么是 Kernel(內核)?

?層次結構(Layered Structure)

微內核結構(Microkernel)

模塊化結構(Modular Structure)

操作系統結構對比總結?


我們現在來講講操作系統的結構(Structures of Operating System),從最基礎的 “Simple Structure(簡單結構)” 開始,為你打下理解現代操作系統結構的基礎。

操作系統結構是指:操作系統內部不同模塊、不同程序之間的組織方式和層級安排。

簡單結構(Simple Structure)

這是最基礎、最早期的操作系統結構形式,沒有嚴格的層級劃分,通常直接堆疊使用一些核心模塊。

組成部分說明:

1?? ROM BIOS Device Drivers(只讀內存中的基本設備驅動)

這部分代碼存儲在主板的 ROM(Read-Only Memory)中,在電腦剛開機時首先運行。

  • BIOS(Basic Input/Output System):
    是最基礎的硬件控制程序,用于識別和啟動 CPU、內存、硬盤、鍵盤等設備。

  • 含有最底層的 驅動程序(device drivers),比如控制鍵盤、顯示器、硬盤啟動等。

類比:它就像電腦的“點火鑰匙”與“初始控制中心”。

2?? Device Drivers(設備驅動)

驅動程序是用來控制具體硬件設備的軟件模塊:

  • 控制打印機、鼠標、攝像頭、網卡等

  • 每個設備都需要一個對應的驅動程序

  • 驅動程序是操作系統與硬件之間的橋梁

類比:就像你手機上的藍牙耳機 App,它讓系統可以和耳機通信。

3?? Resident System Programs(常駐系統程序)

這類程序一直駐留在內存中,提供一些基礎服務:

  • 文件管理(復制/粘貼文件)

  • 內存調度

  • I/O 操作管理

  • 進程創建與切換等

這些程序構成了操作系統的“主心骨”,負責協調各類資源。

類比:相當于物業管理員,幫助你調度資源、響應事件。

4?? Application Programs(應用程序)

最上層的就是用戶直接使用的程序,例如:

  • 瀏覽器、記事本、視頻播放器

  • Word、Excel、Photoshop

  • 游戲、編輯器等

這些程序依賴下方的系統服務來運行,但本身不屬于操作系統核心部分。

類比:是住在大樓里的“用戶”,使用操作系統提供的“電、水、暖”等基礎服務。

在這種結構:每一層依賴下一層,下一層為上一層提供服務。?

雖然結構簡單,但這種方式存在嚴重的問題:

?1. 沒有模塊化(No Clear Separation)

  • 各層之間的代碼往往混雜在一起

  • 比如應用程序可能直接調用硬件指令(不安全)

  • 很難在不影響整個系統的情況下修改某一部分

?類比:就像一棟沒有分區的房子,改一堵墻可能把整個屋頂搞垮。

?2. 難以維護與升級

  • 如果驅動程序有 bug,可能直接影響整個系統運行

  • 增加新功能要改動多個部分,容易出錯

  • 稍有修改,就可能影響整個系統穩定性

?3. 安全性差

  • 所有程序運行在同一個級別,沒有權限隔離

  • 應用程序可以直接操作硬件資源,容易造成破壞或被攻擊

?類比:任何人都可以開車進銀行金庫,沒有門禁控制。

?4. 不適合復雜系統

  • 隨著功能增多,代碼膨脹,系統會變得非常臃腫

  • 無法有效支持多用戶、多任務等復雜需求

  • 結構太“扁平”,功能太“集中”,容易崩潰


整體式結構(Monolithic Structure)

Monolithic Structure(整體式結構) 是一種將操作系統的所有核心功能寫在一個統一的大模塊(kernel)中的結構方式。所有服務(調度、內存、文件、驅動等)都運行在同一個空間、一個內核程序中。

為什么叫“Monolithic”?

“Monolithic” 的字面意思是“單塊的”、“整體的”。

這就像一塊大石頭,把所有功能(進程管理、內存管理、設備驅動、文件系統等)都包在一起做成一個大內核:

?整體式結構的特點:

?1. 所有核心服務都運行在內核態(Kernel Mode)

  • 內核是一個單獨的大程序

  • 不劃分模塊運行層級

  • 不同功能之間可以直接調用和通信

?舉例:內存管理模塊可以直接調用文件系統、調度器、設備驅動等。

?2. 使用 System Call(系統調用)作為用戶與內核之間的接口

  • 用戶程序無法直接操作硬件

  • 但可以通過系統調用(如 read(), write(), fork())來請求服務

  • 系統調用進入內核,由對應模塊處理請求

實際例子:

  • UNIX 是最典型的 Monolithic Structure 操作系統

  • Linux 也是整體結構的一個“模塊化變種”(Modular Monolithic)

Monolithic 的缺點:

缺點說明
?易出錯所有服務共享內核空間,任何一個模塊出錯都可能導致整個系統崩潰
?不易維護功能耦合緊密,代碼龐大,修改或升級困難
?安全性低所有模塊都能訪問系統資源,缺乏隔離保護機制

就像一臺“功能超級齊全”的機器,但所有零件都焊死在一起,一個齒輪壞了整臺機器都停工。

?什么是 Kernel(內核)?

Kernel(內核) 是操作系統中最核心的部分,負責直接管理CPU、內存、文件、設備等系統資源,是用戶程序和硬件之間的中介和控制中心。

Kernel 是操作系統的“大腦”

你可以把操作系統想象成一個公司,而內核就是這個公司的總經理辦公室:

  • 程序 = 員工

  • 硬件 = 工具資源

  • 內核 = 總調度中心,誰做什么、何時做、用哪些資源,全都它說了算!

Kernel 與用戶程序的關系

用戶程序(瀏覽器、游戲等)不能直接操作硬件,必須通過內核來“委托”:

應用程序↓   請求服務
系統調用接口↓
操作系統內核(Kernel) ← 控制 → 硬件設備(CPU、內存等)

Kernel 運行在 特權模式(Kernel Mode)

現代計算機有兩種工作模式:Kernel Mode(內核態)和 User Mode(用戶態)

這部分內容不再詳細介紹,不懂的可以參考:操作系統:系統調用(System Calls)-CSDN博客


?層次結構(Layered Structure)

Layered Structure(分層結構) 是把操作系統按照功能模塊分成多個“層”,每一層只依賴于它的下一層,像洋蔥一樣一圈套一圈,結構清晰,便于設計、維護與修改。

為什么提出“層次結構”?

還記得我們講過:

  • 簡單結構:代碼雜亂、模塊無邊界、難維護

  • 整體式結構:雖然集中,但模塊之間依然緊耦合,修改麻煩

于是,人們提出一種更有條理性的方案:

? 把操作系統按職責分層,讓每一層只做自己該做的事,不能“越權”訪問更底層或更高層的內容。

層次結構的基本思路:

  • 最底層 → 與硬件最接近(如 CPU、內存)

  • 中間層 → 提供核心系統功能(如進程、文件)

  • 上層 → 與用戶交互(如命令行界面、應用程序)

常見分層結構(示意):

┌────────────────────────────┐
│ Layer 6: User Programs      │ ← 用戶應用,最上層
├────────────────────────────┤
│ Layer 5: System Calls / API│ ← 提供用戶調用接口
├────────────────────────────┤
│ Layer 4: I/O Management     │ ← 輸入輸出、緩沖、打印等
├────────────────────────────┤
│ Layer 3: Memory Management  │ ← 內存分配、分頁、回收
├────────────────────────────┤
│ Layer 2: Process Management │ ← CPU調度、進程控制
├────────────────────────────┤
│ Layer 1: Device Drivers     │ ← 控制硬件設備
├────────────────────────────┤
│ Layer 0: Hardware           │ ← 最底層,物理硬件
└────────────────────────────┘

每一層都只使用「下一層提供的功能」

  • Layer 5 調用 Layer 4 提供的服務

  • Layer 2 不能跳過 Layer 1 直接訪問硬件

  • ?每一層都像一個“黑盒”,對上層隱藏實現細節

層次結構的優點:?

優點說明
模塊化強每一層功能單一,界限清晰
易于調試和維護修改某一層時,不影響其他層
安全性高上層不能直接訪問下層以下的內容
可擴展性好新功能可加到某一層,不影響整體結構

?缺點:

缺點說明
?實現難度高必須設計好各層之間的接口
?性能略低每一層都需經過調用,響應時間比 Monolithic 長
?層間強依賴一層出錯可能導致上層全部失效

微內核結構(Microkernel)

?Microkernel(微內核) 是一種將操作系統核心(Kernel)功能精簡到最小,只保留最基本服務(如進程通信、CPU調度、內存管理),其余服務全部移出內核,運行在用戶空間 的操作系統結構。

Microkernel 的核心設計思想:

把非核心服務都移出內核,做“最小可運行內核”,提高系統安全性和穩定性。

icrokernel 內部和外部服務的分離

在內核中(核心功能)

在用戶空間(外部服務)

?CPU 調度(進程切換)

?文件系統服務

?內存管理

?驅動程序(打印機、硬盤等)

?IPC(進程間通信)

?用戶界面(GUI、命令行)

?系統調用接口

?網絡協議、權限控制模塊

🔄 微內核運行流程示意

┌────────────────────────────┐
│      應用程序(用戶空間)     │ ← 用戶程序 / 驅動 / 文件服務
├────────────────────────────┤
│ 微內核(Kernel Mode)       │ ← 只負責通信、調度、內存
├────────────────────────────┤
│       硬件(CPU, Memory)   │
└────────────────────────────┘

所有的外部服務(如文件管理、驅動)通過IPC(Inter-Process Communication,進程間通信)與內核交互。

實際例子:

  • MINIX(微型教學操作系統)

  • QNX(實時操作系統,廣泛用于汽車、醫療設備)

  • macOS(部分使用微內核):其核心 XNU 結合了微內核和整體結構

  • L4、Symbian OS(早期手機系統)

微內核結構的優點:

優點說明
更安全外部服務運行在用戶空間,出錯不影響系統核心
更穩定內核非常小,bug 少、崩潰概率低
易于擴展和移植不同模塊可獨立開發、替換
模塊化強每個功能像插件一樣可卸載、重啟

?缺點:

缺點說明
性能開銷大內核與外部服務需頻繁通信(IPC),速度慢于整體結構
實現復雜服務拆分、接口通信設計難度高
驅動開發難驅動在用戶空間運行,調試較復雜

類比幫助理解:

?Monolithic(整體內核):

就像一個大型百貨商場,所有服務都集中在一棟樓里,方便但一旦失火(系統崩潰),整棟樓就癱了。

?Microkernel(微內核):

像一個分布式小鎮,政府只負責調度交通和治安(調度 + 通信),其他功能(商店、醫院、學校)都是獨立運行的,哪個壞了不影響其他。


模塊化結構(Modular Structure)

模塊化結構是一種“整體式內核 + 模塊化管理”的結構,內核支持將功能劃分為多個獨立的模塊,這些模塊可以在需要時動態加載或卸載,既保持了執行效率,又提高了靈活性與可維護性。

背景:為什么需要“模塊化”?

在我們之前講的 Monolithic Structure 中:

  • 所有功能(進程管理、文件系統、驅動程序)都寫死在一個大內核里

  • 改一個模塊,必須重新編譯整個內核

  • 不方便擴展,也難調試

于是提出一種改進思路:

? 把內核劃分為功能模塊,可按需加載或卸載,不用重啟系統、不用重編內核!

模塊是怎么工作的?

  • 系統運行中,只有“需要的模塊”才被加載進內核

  • 加載/卸載可以動態進行(無需重啟)

  • 內核提供專門的命令或接口來管理模塊(例如 Linux 的 insmodrmmod

類比:像一個智能手機系統,相機、GPS、藍牙這些功能都是“插件”——用時開啟,不用時關閉,省資源還不怕崩潰。

結構示意

┌────────────────────────────┐
│   用戶程序(User Programs) │
├────────────────────────────┤
│     系統調用接口(Syscalls) 
├────────────────────────────┤
│ 模塊化內核(Modular Kernel  │
│  ├─ 核心內核功能(調度、內存 │
│  ├─ 可加載模塊(驅動、文件系統│
└────────────────────────────┘

內核模塊的例子:

模塊類型舉例說明
驅動模塊如鼠標驅動、聲卡驅動、網卡驅動
文件系統模塊如 ext4、NTFS、FAT32
網絡協議模塊TCP/IP、UDP、ICMP
安全模塊防火墻、SELinux 模塊等

實際例子:Linux 內核

  • Linux 是一個 Monolithic Kernel,但它的實現是模塊化的

  • 它支持大量 Loadable Kernel Modules(LKM),包括:

    • 文件系統

    • 設備驅動

    • 網絡協議

    • 系統監控插件

?模塊化結構的優缺點:

優點說明
?高模塊化各模塊獨立,界限清晰,便于維護
?易于擴展加載新模塊無需改動核心內核
?易于測試與調試出問題只需卸載該模塊,不影響內核整體
?性能優于 Microkernel各模塊仍運行在內核態,無需頻繁 IPC
缺點說明
?模塊出錯仍可能影響系統因為模塊運行在內核態,仍有全局訪問權限
?安全性不如微內核沒有完全的隔離機制,模塊崩潰可能拖垮系統
?相較于微內核,耦合仍較強核心仍比較大,非最小核心系統

類比幫助理解:

  • Monolithic Kernel:一個功能強大的“大倉庫”,所有東西都裝在一起

  • Modular Kernel:一個可以加掛插件的“模塊化倉庫”

  • Microkernel:一個超簡倉庫,其他功能都外包出去(不自己做)

操作系統結構對比總結?

特征/結構類型Simple Structure(簡單結構)Monolithic Structure(整體結構)Layered Structure(層次結構)Microkernel(微內核)Modular Structure(模塊化結構)
?核心設計思想沒有明確分層,功能雜糅所有功能集中在一個大內核中操作系統功能劃分為多個層次只保留最小內核,其它服務運行在用戶空間內核功能模塊化,按需加載/卸載
?模塊劃分清晰度? 極低? 較差(全在一起)? 明確分層? 極高? 高(但仍屬內核空間)
?運行效率? 高(簡單無切換)? 很高(無需進程間通信)?較低(層層調用)?慢(IPC 通信頻繁)? 高(可擴展又高效)
?安全性與穩定性? 極低? 較低(一個模塊崩潰拖全系統)? 較高(層隔離)? 極高(服務在用戶空間)? 中等偏上
?易維護/易擴展? 差? 差(耦合緊密)? 容易? 最容易? 非常方便
?開發難度? 簡單? 一般? 高(接口定義復雜)? 高(服務分散、通信設計難)? 中等
?示例系統MS-DOS, CP/MUNIX, Linux (早期)THE OS, MULTICSMINIX, QNX, SymbianLinux(現代), Windows NT
?服務位置所有功能寫死在系統中所有功能集中在內核分層管理,逐層調用內核只做調度+通信,其它功能外部運行核心功能 + 可加載模塊
?內核大小(功能集中度)很大或無結構非常大中等極小(最小功能內核)中等

五種結構一圖總結:

Simple        → 所有代碼混在一起,沒有分工
Monolithic    → 所有功能集中在一個內核程序里
Layered       → 功能按層級劃分,每層只調用下層
Microkernel   → 只保留調度、通信,其它功能外包出去
Modular       → 核心內核 + 可加載模塊(組合式結構)

使用場景建議(理解+選擇):

需求場景推薦結構原因說明
小型嵌入式設備Microkernel / Modular更安全、更穩定、易于維護
教學 / 實驗系統Simple / Layered結構易理解,適合演示系統原理
高性能服務器系統Modular / Monolithic性能要求高,模塊化擴展能力強,響應快
商業桌面操作系統Hybrid / Modular靈活、安全與性能的平衡
實時系統(航天/汽車)Microkernel模塊獨立,崩潰不會影響核心系統,適合關鍵任務系統

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

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

相關文章

Python柱狀圖

1.各國GDP柱狀圖2.各國GDP時間線柱狀圖

FastGPT:企業級智能問答系統,讓知識庫觸手可及

在信息爆炸的時代,企業如何高效管理和利用海量知識?傳統搜索和文檔庫已難以滿足需求。FastGPT正成為企業構建智能知識核心的首選。一、FastGPT:不止于問答的智能知識引擎FastGPT 顛覆了傳統知識庫的局限,其核心優勢在于&#xff1…

探索 MyBatis-Plus

引言在當今的 Java 開發領域,數據庫操作是一個至關重要的環節。MyBatis 作為一款優秀的持久層框架,已經被廣泛應用。而 MyBatis-Plus 則是在 MyBatis 基礎上進行增強的工具,它簡化了開發流程,提高了開發效率。本文將詳細介紹 MyBa…

Hive【安裝 01】hive-3.1.2版本安裝配置(含 mysql-connector-java-5.1.47.jar 網盤資源)

我使用的安裝文件是 apache-hive-3.1.2-bin.tar.gz ,以下內容均以此版本進行說明。 以下環境測試安裝成功: openEuler 22.03 (LTS-SP1)系統 MySQL-8.0.40 1.前置條件 MySQL數據庫 我安裝的是 mysql-5.7.28 版本的,安裝方法可參考《Linux環境…

璞致 PZSDR-P101:ZYNQ7100+AD9361 架構軟件無線電平臺,重塑寬頻信號處理范式

璞致電子 PZSDR-P101 軟件無線電平臺以 "異構計算 寬頻射頻 工業級可靠性" 為核心設計理念,基于 Xilinx ZYNQ7100 處理器與 ADI AD9361 射頻芯片構建,為工程師提供從 70MHz 到 6GHz 的全頻段信號處理解決方案。無論是頻譜監測、無線通信原型…

【基礎】go基礎學習筆記

基礎及關鍵字if for switch都支持使用隱形聲明(:)來快速聲明一個變量,無需在上面一行額外聲明,這可以增加代碼簡潔性,但不太符合其他常規語言的寫法,需要習慣一下if for switch都不需要使用(&am…

AI驅動的企業知識管理革新

Baklib:人工智能引領的知識管理平臺Baklib 是領先的 AI 驅動知識管理系統,專為企業打造智能化、模塊化的知識共享平臺。功能覆蓋在線幫助中心、內聯網、CMS 網站、客戶支持系統、視頻中心、活動教學平臺和客戶社區,全面提升組織在知識管理、員…

使用 FFmpeg 實現 RTP 音頻傳輸與播放

🔊 使用 FFmpeg 實現 RTP 音頻傳輸與播放(Ubuntu) 在音視頻開發或遠程通信場景中,RTP(Real-time Transport Protocol) 是一種常用的實時音頻傳輸協議。本文將介紹如何使用 FFmpeg 在 Ubuntu 上實現從一臺主…

Android 導出聯系人為 vCard(.vcf)

有時需要將聯系人數據導出為可共享的標準格式:vCard(.vcf)格式,可被系統直接導入通訊錄一、導出聯系人為 vCard(.vcf)? 支持字段我們支持導出的字段包括:姓名個人電話家庭電話工作電話郵箱備注…

大模型-bacth之chunked prefills

一、chunked prefills 1.1 chunked prefills核心思想 ORCA雖然很優秀,但是依然存在兩個問題:GPU利用率不高,流水線依然可能導致氣泡問題。 我們來看sarathi-serve做的一個實驗。左右兩圖分別刻畫了在不同的batch size下,prefil…

multiprocessing模塊使用方法(一)

結合Python代碼示例說明multiprocessing模塊的使用方法、Linux啟動命令、服務部署及真實應用場景:一、multiprocessing基礎用法 Python的multiprocessing模塊通過創建子進程實現并行計算,核心步驟如下(引用):創建進程對…

vector如何判斷應該擴容?

std::vector 的擴容機制是 C 容器性能優化的一個核心點。它的判斷標準、行為特征和實現細節如下所示:? 一、vector 的核心結構 std::vector 內部維護三個指針: begin -> 指向數據起始位置 end -> 指向當前已使用的元素末尾(size…

ICMP考點

在網絡工程師、運維工程師、安全工程師等崗位的面試中,??ICMP(Internet Control Message Protocol,互聯網控制報文協議)?? 是高頻必考知識點。ICMP作為IP協議的“輔助協議”,雖然不直接傳輸用戶數據,但…

服務器帶寬具體是指什么意思?

企業在選擇服務器租用或托管服務時,需要根據自身的業務情況來選擇合適的服務器帶寬,以便于能夠讓其業務持續穩定的運行工作,做到及時響應用戶的訪問請求,但是很多用戶對于帶寬一詞沒有過多的概念,本文就來探討一下服務…

CANape之ASAP2 Studio介紹

提到ECU的測量標定工具,很多小伙伴第一個想到的就是CANape。但其實,除了強大的測量標定功能之外,CANape還有很多其他功能。例如,CANape中集成的小工具——ASAP2 Studio,其支持對A2L文件(由ASAM組織所定義&a…

【debug日記】MONAI SwinUNETR 目標檢測項目調試總結(AI自動總結)

MONAI SwinUNETR 目標檢測項目調試總結 日期: 2025年7月25日 項目: 使用 MONAI,以預訓練的 SwinUNETR 為骨干網絡,微調 RetinaNet 進行3D肺結節檢測。 本文檔旨在記錄在項目配置、數據處理和模型訓練過程中遇到的一系列問題及其解決方案,作為…

AI同傳領域,字節跳動與科大訊飛激戰進行時

在AI同聲傳譯市場,行業巨頭科大訊飛長期占據主導地位,但新晉玩家字節跳動正以迅猛姿態發起挑戰。7月24日,字節旗下火山引擎正式發布豆包同聲傳譯模型 Seed LiveInterpret 2.0,主打“人類級延遲”和“0樣本聲音復刻”,試…

[C++]string::substr

string substr (size_t pos 0, size_t len npos) const;substr() 主要功能是復制(截取更準確)子字符串,要求從指定位置 pos 開始,并具有指定的長度 len 。如果沒有指定長度或者超出了源字符串的長度,則子字符串將延續…

KNN算法:從原理到實戰全解析

一 算法介紹 K近鄰(K-Nearest Neighbors, KNN)是一種基于實例的監督學習算法,適用于分類和回歸任務。其核心思想是通過計算待預測樣本與訓練集中樣本的距離,選取距離最近的K個鄰居,根據這些鄰居的標簽進行投票&#xf…

醫療器械:DFEMA和PFEMA

在醫療器械行業,DFMEA(Design FMEA,設計失效模式及影響分析)和 PFMEA(Process FMEA,過程失效模式及影響分析)是核心的風險管理工具,旨在通過系統性識別潛在風險、分析影響并采取預防…