筆記:現代操作系統:原理與實現(2)

第三章 操作系統結構

操作系統的機制與策略

操作系統乃至計算機系統中控制復雜度的—個重要設計原則是:將策略與機制相分離,其中策略(policy)表示要‘‘做什么”,機制(mechanjsm)表示該“如何做”。

操作系統復雜度管理方法

管理復雜系統的重要方法是 M.A.L.H 方法,即模塊化(modularity)、抽象(abstraction)、分層(layering)和層級(hierarchy)。

  • 模塊化:模塊化就是通過“分而治之”(divide and conquer)原則,將一個復雜系統分解為一系列通過明確定義的接口進行交互的模塊,并嚴格保障模塊之間的界限。
  • 抽象:抽象是在模塊化的基礎上,將接口與內部實現分離,從而使模塊之間只需通過抽象的接口進行相互調用,而無須關心各個模塊的內部實現。

小知識:寬進嚴出原則:

一個模塊的接口應該容忍各種可能的輸入,抑制錯誤甚至惡意的輸入,避免錯誤或惡意輸入的效果在模塊內傳播,并且盡可能嚴格地控制模塊對外的輸出,從而減少錯誤在模塊間的傳播。

  • 分層:分層是通過將模塊按照一定的原則進行層次的劃分,約束每層內部模塊間的交互方式與跨層次模塊間的交互方式,從而有效地減少模塊之間的交互。
  • 層級:層級是另外一種模塊的組織方式。首先將一些功能相近的模塊組成一個具有清晰接口的自包含子系統,然后再將這些子系統遞歸地組成一個具有清晰接口的更大子系統。

比如在操作系統中,既有分層的模塊結構(如內核層、用戶層),也有層級的進程管理結構(父進程與子進程)

操作系統內核架構

隨著操作系統功能的不斷增多和代碼規模的不斷擴大,提供合理的層級結構,對于降低操作系統復雜度、提升操作系統安全與可靠性來說變得尤為重要。下圖列舉了一些常見的操作系統內核架構。

在這里插入圖片描述

簡要結構

  • 特點:應用程序與操作系統放置在同一個地址空間(address space)中,無須底層硬件提供復雜的內存管理、特權級隔離等功能。
  • 優勢:任何程序對操作系統服務的調用可直接通過函數調用高效完成。
  • 劣勢:任何一個應用程序或操作系統模塊出現了問題,均有可能使整個系統崩潰。
  • 典型例子:MS-DOS(MicroSoft Disk Operating System)、FreeRTOG、uCOS。

MS-DOS的系統結構:

在這里插入圖片描述

宏內核結構

  • 特點:操作系統內核的所有模塊(包括進程調度、內存管理、文件系統、設備驅動等)均運行在內核態,具備直接操作硬件的能力。
  • 優勢:性能高、模塊間通信高效、資源管理集中、廣泛支持與優化。
  • 劣勢:一個通用的、適用于大部分場景的設計,常常意味著很難滿足特定場景下對安全性、可靠性、實時性等方面的需求;同時,在一個龐大的系統中進行創新也變得越來越困難。
  • 典型例子:UNIX/Linux、FreeBSD。

宏內核的基本結構:

在這里插入圖片描述

微內核結構

  • 特點:對宏內核架構的操作系統進行解耦,將單個功能或模塊(如文件系統、設備驅動等)從內核中拆分出來,作為一個獨立的服務部署到獨立的運行環境中;內核僅保留極少的功能,為這些服務提供通信等基礎能力,使其能夠互相協作以完成操作系統所必需的功能。
  • 優勢:服務與服務完全隔離,能有效提供操作系統的可靠性與安全性;方便為不同場景定制不同服務。
  • 劣勢:開發難度高,通信開銷大

外核結構

  • 特點:為不同的應用提供定制化的高效資源管理:按照不同應用領域的要求’將對硬件資源的抽象模塊化為一系列的庫(即LibOS)
  • 優勢:
    • 可按照應用領域的特點與需求,動態組裝成最適合該應用領域的 LibOS,最小化非必要的代碼,從而獲得更高的性能。
    • 處于硬件特權級的操作系統內核可以做到非常小,并且由于多個 LibOS 之間的強隔離性,從而可以提升整個計算機系統的安全性與可靠性。
  • 劣勢:
    • LibOS通常是為某種應用定制的’缺乏跨場景的通用性,應用生態差。
    • 不同的LibOS通常會實現相同或類似的功能,容易造成代碼冗余。

外核結構架構圖:

在這里插入圖片描述

外核結構與微內核的區別

  • 外核架構將多個硬件資源劃分為一個“切片”,每個切片中保護的多個硬件資源由 LibOS 管理并直接服務于一個應用;而微內核架構則是通過讓一個操作系統模塊獨立運行在一個地址空間上來管理一個具體的硬件資源,為操作系統中所有的應用服務。
  • 外核架構中,運行在特權級的內核主要為 LibOS 提供硬件的多路復用能力并管理 LibOS;而微內核架構中,內核主要提供進程間通信(IPC)功能。
  • 外核架構在面向一個功能與生態受限的場景時可通過定制化 LibOS 獲得非常高的性能;而微內核架構則需要更復雜的優化才能獲得與之類似的性能。

多內核結構

  • 特點:將—個眾核系統看成一個由多個獨立處理器核通過網絡互聯而成的分布式系統;它提供了—層基于進程間通信的抽象,從而避免了處理器核之間通過共享內存進行隱式的共享。
  • 優勢:可以避免傳統操作系統架構中的復雜的隱式共享所帶來的性能可 擴展性瓶頸;非常容易支持異構處理器架構。
  • 劣勢:不同節點之間存在的狀態冗余對資源開 銷會造成一定壓力;需要移植現有應用才能適應多內核架構。

多內核架構圖:

在這里插入圖片描述

混合內核架構

由于設計需求的多樣化,現實中的操作系統往往融合了多種架構的設計思想。

  • 雖然Linux內核是公認的宏內核架構,但其近期也開始融合了微內核架構中的用戶態驅
    動模型(如UIO與VFIO等)。
  • 蘋果操作系統內核XNU是一個Mach微內核與BSD UNIX的混合體,被使用于MacOSX中。
  • WmdowsNT的操作系統內核也采用了微內核設計思想,但是將一些系統服務運行在內核態。

操作系統架構組合及演進:

在這里插入圖片描述

操作系統框架結構

Android系統框架

在這里插入圖片描述

在Linux內核之上運行的Android系統框架包括如下幾個主要組件:

  • 硬件抽象層(hardwareabstractlayer):Android在Linux內核上提供—層硬件抽象層的主要原因有兩個:
    • linux宏內核架構使得設備驅動運行在linux內核態,因此設備驅動的接口依賴于linux內核設備驅動接口的演進,這會阻礙 Android 系統框架的獨立演進與升級。
    • Linux 內核采用了 GPL v2 開源協議,協議要求運行在同一個地址空間的設備驅動必須開源代碼,這會導致一些硬件的實現細節也被公開,因此一些設備廠商擔心其硬件競爭力受到影響。
  • Android 庫(Android library):Android 庫一方面提供了一些方便 Android 應用開發的自定義庫,另外一方面也重新實現了一些標準庫(如 glibc 等),從而規避了 LGPL 開源協議。
  • Android 運行環境(Android Runtime, ART)。由于 Android 應用的主要開發語言是 Java,因此需要一個運行時環境將應用從字節碼轉化為可執行代碼。早期的 Android 采用 Dalvik 虛擬機的形式,通過解釋執行與 JIT(Just-in-Time)編譯的方式運行,因而帶來一些性能與功耗的損失。Android 自 5.0 后引入了 Android 運行環境(ART),通過 Ahead-of-Time (AOT) 預先編譯的方式,將 Java 代碼預編譯為二進制可執行代碼,從而避免了運行時的編譯開銷。
  • Android 應用框架(Android application framework)。Android 應用框架提供了應用運行所需要的基礎服務,包括服務管理(service manager)、活動管理(activity manager)、包管理(package manager)、窗口管理(window manager)等。這些服務化的組件利用操作系統內核提供的資源抽象,為應用構建了一系列方便調用的應用服務。

服務化架構與 Binder IPC

Android 系統框架的設計整體應用了類似微內核架構的思想,將系統框架組件化與服務化,各個組件依賴于 Android 提供的 Binder IPC 進行通信。

在這里插入圖片描述

ROS系統框架

ROS 是 Robot Operating System 的縮寫,即機器人操作系統。雖然名字中包含操作系統,但 ROS 實際上是一個面向機器人硬件場景的系統框架,可運行在 Linux 內核以及其他兼容 POSIX 接口的操作系統內核之上。作為一個操作系統的系統框架,ROS 提供了

ROS層次架構圖:

在這里插入圖片描述

簡要而言,ROS 可以分為基礎設施層、通信層和應用層。其中,基礎設施層包括 ROS 中的 Python、C++ 等運行環境、ROS 文件系統與 ROS 包管理機制等。在基礎設施層之上運行了 ROS 的通信層,提供基礎的 ROS IPC 機制以及 ROS 的數據分發服務(Data Distribution Service, DDS)等。ROS 的應用層是由一個個節點所構成的計算,這些節點之間可以使用 ROS 的通信層直接進行互相調用,或者通過對一些話題(topic)發布消息或者訂閱消息來進行間接通信。

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

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

相關文章

c++ 壓縮與解壓縮

1、使用zip開源庫,引入比較簡單,只需要包含四個頭文件,不需要編譯成庫文件:zip.h、zip.cpp、unzip.h、unzip.cpp。2、壓縮使用到的主要函數:CreateZip 創建zip文件ZipAdd 添加文件ZipAddFolder 添加文件夾CloseZip 關閉…

水下無線光通信(UWOC)TDD系統:光收發端編解碼與信號處理分析與方案(數字版)

在光收發模塊中添加編解碼與信號處理模塊,核心目標是提升水下信道抗干擾能力(對抗后向散射、環境光、信號衰減)、降低誤碼率,同時兼容原有TDD時隙控制邏輯。以下從“編碼方案選型”“光發送端信號處理”“光接收端信號處理”“與原有系統集成”四部分展開,形成完整技術閉環…

Seat 事務@GlobalTransactional傳播行為

一,分布式事務傳播行為調用鏈描述一個普通事務注解的方法,調用一個分布式事務注解方法分布式事務注解方法:包含一個本地更新,和兩個外部服務更新操作,涉及三個服務問題1,普通事務注解方法,在全局…

美團龍貓利用expat庫實現的保存xml指定范圍數據到csv的C程序

用自己代碼逐個字符解析的速度較慢,嘗試了libxml2也比較慢,它需要一次性讀入內存,而expat庫支持流式讀取。就讓龍貓寫了一個程序,畢竟是久經考驗的庫,程序很快就調試通過了。要不是我一開始沒信心,讓他先輸…

Transformer核心—自注意力機制

Transformer基礎—自注意力機制 當我們處理文本、語音這類序列數據時,總會遇到一個老問題:模型到底該怎么理解“前后文”呢? RNN 和 LSTM 曾經是熱門的答案,它們沿著時間順序一點點地讀數據,但讀得太慢,還容…

分片上傳-

分片上傳原理:客戶端將選擇的文件進行切分,每一個分片都單獨發送請求到服務端;斷點續傳 & 秒傳原理:客戶端 發送請求詢問服務端某文件的上傳狀態 ,服務端響應該文件已上傳分片,客戶端再將未上傳分片上傳…

零知開源——基于STM32F103RBT6的智能風扇控制系統設計與實現

?零知IDE 是一個真正屬于國人自己的開源軟件平臺,在開發效率上超越了Arduino平臺并且更加容易上手,大大降低了開發難度。零知開源在軟件方面提供了完整的學習教程和豐富示例代碼,讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品&am…

ReACT Agent概述

目錄 1. 核心思想:解決傳統方法的局限性 2. ReACT 的工作原理:一個循環過程 3. 技術實現的關鍵要素 4. ReACTAgent 在任務中的具體工作流程 5. 優勢與重要性 6. 挑戰與局限性 總結 ReACT 是一個非常重要的框架,它代表了構建能夠推理&a…

必知!機器人的分類與應用:RPA、人形與工業機器人

每當提及“機器人”這三個字,許多人的第一反應或許仍是科幻電影中那種具備人類外形、可自由行走與對話的仿生裝置。然而,一個值得深入探討的科技現實是:我們對于人形機器人的迷戀,更多源自文化敘事與情感投射,而非真實…

最快的 C 語言 JSON 庫 - yyjson

文章目錄DOM 模式下的性能比對一、AWS EC2 (AMD EPYC 7R32, gcc 9.3)二、iPhone (Apple A14, clang 12)持續更新中 持續更新中 持續更新中一個用 ANSI C(C89) 編寫的高性能 JSON 庫 API.md DOM 模式下的性能比對 DOM 模式,即構建完整 JSON 內存結構后訪問數據的模…

TP8 模型save更新不成功

一、User文件頭部代碼class User extends Model {const TITLE_NAME 用戶;//名稱//不能刪除protected $name user_; //表名 protected $connection \app\services\database\model\DbConnModel::CONN_DB_SITE; //數據庫的連接二、更新部分我要更新user_1用戶表中的用戶信息$se…

中囯移動電視盒子(魔百和)B860AV2.1-A2和CM311-5-zg刷機手記

文章目錄B860AV2.1-A2電視盒子情況打開隱藏或屏蔽的功能進入Recovery模式打開WiFi(如果被隱藏)打開運維調試打開ADB調試安裝第三方應用、設置第三方桌面等(Fiddler抓包替換官方App安裝包)開啟ADB和使用ADB禁止“首次啟動設置”刷機…

【系統架構設計(14)】項目管理下:軟件質量與配置管理:構建可靠軟件的基礎保障

文章目錄一、核心思想二、軟件質量屬性:定義"好軟件"的標準三、質量保證與控制:實現質量標準的方法四、CMMI模型:組織質量能力的演進路徑五、軟件配置管理:質量成果的保護機制六、軟件工具:質量管理的技術支…

碼農的“必修課”:深度解析Rust的所有權系統(與C++內存模型對比)

在軟件開發的世界里,內存管理是至關重要的一個環節。它是程序運行的基礎,直接關系到程序的性能、穩定性和安全性。一個糟糕的內存管理策略,可能導致內存泄漏、野指針、緩沖區溢出等一系列令人頭疼的問題,甚至帶來災難性的安全漏洞…

Java全棧學習筆記30

# MySQL 卸載安裝版電腦管家/360/控制面板卸載mysql服務即可刪除ProgramData中的MySQL目錄解壓版winr 輸入 services.msc 打開服務管理。查看是否存在MySQL,如果存在則刪除注冊表 winR regedit 打開注冊表計算機\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Servic…

Transformers 學習入門:前置知識補漏

在學習 Transformers 之前,打好神經網絡和自然語言處理的基礎至關重要。本文整理了需要掌握的核心前置知識,用通俗的例子幫你快速理解復雜概念,為后續學習鋪平道路。? 一、神經網絡基礎? 1. 多層感知機(MLP)&#xf…

雙攝工業相機的主要特點和應用場景

雙攝工業相機(雙目攝像頭)在工業領域中的應用非常廣泛,其核心優勢在于通過雙鏡頭模擬人眼立體視覺,能夠獲取深度信息并實現高精度三維重建。 一、雙攝工業相機的核心優勢 深度感知與三維重建 雙目攝像頭通過兩個鏡頭從不同角度拍…

YOLOv11改進:FocalModulation替換SPPF(精度更高的空間金字塔池化)

YOLOv11:FocalModulation替換SPPF(精度更高的空間金字塔池化) 引言 在目標檢測領域,YOLO系列算法以其高效性和準確性廣受歡迎。作為YOLO系列的最新成員之一,YOLOv11在多個方面進行了優化和改進。其中,空間金…

LLM與數據工程的融合:衡石Data Agent的語義層與Agent框架設計

在數字經濟浪潮中,企業數據智能正經歷從"工具輔助"到"智能協同"的范式躍遷。傳統BI系統受限于靜態報表與預設指標,難以應對動態業務場景的復雜需求。衡石科技發布的HENGSHI SENSE 6.0通過"Data AI Agent"架構創新&#x…

假設一個算術表達式中包含圓括號、方括號和花括號3種類型的括號,編寫一個算法來判別,表達式中的括號是否配對,以字符“\0“作為算術表達式的結束符

思想:這道題是棧的應用類型,我們可以建立一個棧來保存(,[,{,通過遍歷字符串如果是三個左括號其中一個則入棧,當遇到)]}則出棧配對,如果左右匹配,則遍歷下一個元素,如果不匹配直接返回,如果遍歷字符串結束&a…