操作系統基礎——01 操作系統基本概念

来源:https://www.cnblogs.com/jll133688/p/18200179
-Advertisement-
Play Games

目錄電腦系統的層次結構操作系統的定義操作系統的功能和目標作為系統資源的管理者向上層提供方便易用的服務作為最接近硬體的層次操作系統的四個特征併發共用虛擬非同步操作系統的發展與分類操作系統的運行機制中斷和異常中斷的作用中斷類型中斷機制的基本原理系統調用系統調用的分類系統調用過程操作系統的內核巨集內核和微內 ...


目錄

電腦系統的層次結構

操作系統的定義

操作系統(Operating System, OS)是指控制管理整個電腦系統的硬體和軟體資源,併合理地組織調度電腦的工作和資源的分配;以提供給用戶和其他軟體方便的介面和環境;它是電腦系統中最基本的系統軟體

  1. 操作系統是系統資源(硬體和軟體)的管理者
  2. 向上層提供方便易用的服務
  3. 是最接近硬體的一層軟體

操作系統的功能和目標

作為系統資源的管理者

  • 提供的功能:

    • CPU(處理機)管理
    • 記憶體(存儲器)管理
    • 文件管理
    • 設備管理
  • 目標:安全、高效

向上層提供方便易用的服務

封裝思想:操作系統把一些硬體功能封裝成簡單易用的服務,使用戶能更方便地使用電腦,用戶無需關心底層硬體的原理,只需要對操作系統發出命令即可

  • 直接給用戶使用的

    • GUI
    • 命令介面:聯機命令介面、離線命令介面
  • 給軟體/給程式員使用

    • 程式介面:可以在程式中進行系統調用來使用程式介面。普通用戶不能直接使用程式介面,只能通過程式代碼間接使用

作為最接近硬體的層次

  • 需要實現對硬體機器的拓展:操作系統將 CPU、記憶體、磁碟、顯示器、鍵盤等硬體合理地組織起來,讓各種硬體能夠相互協調配合,實現更多更複雜的功能,普通用戶無需關心這些硬體在底層是怎麼組織起來工作的,只需直接使用操作系統提供的介面即可

操作系統的四個特征

併發和共用是兩個最基本的特征(沒有併發和共用,就談不上虛擬和非同步),二者互為存在條件

併發

  • 併發指兩個或多個事件在同一時間間隔內發生。這些事件巨集觀上是同時發生的,但微觀上是交替發生的。

並行:指兩個或多個事件在同一時刻同時發生

  • 操作系統的併發性指電腦系統中“同時”運行著多個程式,這些程式巨集觀上看是同時運行著的,而微觀上看是交替運行的。操作系統就是伴隨著“多道程式技術”而出現的。因此,操作系統和程式併發是一起誕生的
    • 單核 CPU 同一時刻只能執行一個程式,各個程式只能併發地執行
    • 多核 CPU 同一時刻可以同時執行多個程式,多個程式可以並行地執行

共用

  • 共用即資源共用,是指系統中的資源可供記憶體中多個併發執行的進程共同使用。

  • 兩種資源共用方式

    • 互斥共用方式:系統中的某些資源,雖然可以提供給多個進程使用,但一個時間段內只允許一個進程訪問該資源
    • 同時共用方式:系統中的某些資源,允許一個時間段內由多個進程“同時”(巨集觀上)對它們進行訪問

虛擬

  • 虛擬是指把一個物理上的實體變為若幹個邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上對應物(後者)是用戶感受到的。
    • 空分復用技術(如虛擬存儲技術)
    • 時分復用技術(如虛擬 CPU 技術)

顯然,如果失去了併發性,則一個時間段內系統中只需運行一道程式,那麼就失去了實現虛擬性的意義了。因此,沒有併發性,就談不上虛擬性

非同步

  • 非同步是指,在多道程式環境下,允許多個程式併發執行,但由於資源有限,進程的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是進程的非同步性。

如果失去了併發性,即系統只能串列地運行各個程式,那麼每個程式的執行會一貫到底。只有系統擁有併發性,才有可能導致非同步性。

操作系統的發展與分類

  1. 手工操作階段:紙帶機

  2. 批處理階段——單道批處理系統:引入離線輸入/輸出技術(用外圍機 + 磁帶完成),並由監督程式負責控製作業的輸入、輸出

    • 主要優點:緩解了一定程度的人機速度矛盾,資源利用率有所提升
    • 主要缺點:記憶體中僅能有一道程式運行,只有該程式運行結束之後才能調入下一道程式。CPU 有大量的時間是在空閑等待 I/O 完成,資源利用率依然很低
  3. 批處理階段——多道批處理系統:每次往記憶體中讀入多道程式,操作系統正式誕生,用於支持多道程式併發運行

    • 主要優點:多道程式併發執行,共用電腦資源。資源利用率大幅提升,CPU 和其他資源更能保持“忙碌”狀態,系統吞吐量增大。
    • 主要缺點:用戶響應時間長,沒有人機交互功能(用戶提交自己的作業之後就只能等待電腦處理完成,中間不能控制自己的作業執行。eg:無法調試程式/無法在程式運行過程中輸入一些參數)
  4. 分時操作系統:電腦以時間片為單位輪流為各個用戶/作業服務,各個用戶可通過終端與電腦進行交互。

    • 主要優點:用戶請求可以被即時響應,解決了人機交互問題。允許多個用戶同時使用一臺電腦,並且用戶對電腦的操作相互獨立,感受不到別人的存在。
    • 主要缺點:不能優先處理一些緊急任務。操作系統對各個用戶/作業都是完全公平的,迴圈地為每個用戶/作業服務一個時間片,不區分任務的緊急性。
  5. 實時操作系統: 在實時操作系統的控制下,電腦系統接收到外部信號後及時進行處理,並且要在嚴格的時限內處理完事件。實時操作系統的主要特點是及時性可靠性

    • 主要優點:能夠優先響應一些緊急任務,某些緊急任務不需時間片排隊。
    • 分類:硬實時操作系統:必須在絕對嚴格的規定時間內完成處理;軟實時操作系統:能接受偶爾違反時間規定
  6. 其他幾種操作系統:

    • 網路操作系統:是伴隨著電腦網路的發展而誕生的,能把網路中各個電腦有機地結合起來,實現數據傳送等功能,實現網路中各種資源的共用(如文件共用)和各台電腦之間的通信。(如:Windows NT 就是一種典型的網路操作系統,網站伺服器就可以使用)
    • 分散式操作系統:主要特點是分佈性和並行性。系統中的各台電腦地位相同,任何工作都可以分佈在這些電腦上,由它們並行、協同完成這個任務
    • 個人電腦操作系統:如 Windows XP、MacOS,方便個人使用

操作系統的運行機制

  1. 如何區分 CPU 處於用戶態還是內核態:CPU 中有一個寄存器叫程式狀態字寄存器(PSW),其中有個二進位位,1 表示內核態,0 表示用戶態(有的 CPU 也可能相反)

  2. 內核態=核心態=管態,用戶態=目態

  3. 內核態和用戶態的切換

    • 剛開機時,CPU 為內核態,操作系統內核程式先在 CPU 運行
    • 開機完成後,用戶可以啟動某個應用程式
    • 操作系統內核程式在合適的時候主動讓出 CPU,讓該應用程式上 CPU 運行(操作系統內核在讓出 CPU 之前,會用一條特權指令把 PSW 的標誌位設置為用戶態)
    • 應用程式運行在用戶態
    • CPU 發現要執行的指令是特權指令,但是處在用戶態,這個非法事件會引發一個中斷信號
    • CPU 檢測到中斷信號後,會立即變為內核態,並停止運行當前的應用程式,轉而運行處理中斷信號的內核程式
    • 操作系統獲取 CPU 的控制權,直到處理完中斷後再將 CPU 使用權轉給應用程式
  • 內核態——用戶態:執行一條特權指令——修改 PSW 的標誌位為用戶態,這個動作意味著操作系統將主動讓出 CPU 使用權
  • 用戶態——內核態:由中斷引發,硬體自動完成變態過程,觸發中斷信號意味著操作系統將強行奪回 CPU 的使用權(除了非法使用特權指令之外,還有很多事件會觸發中斷信號。一個共性是,但凡需要操作系統介入的地方,都會觸發中斷信號

中斷和異常

  • 中斷是讓操作系統內核奪回 CPU 使用權的唯一途徑

中斷的作用

沒有中斷機制,就不可能實現操作系統,不可能實現程式併發

  1. 讓操作系統內核強行奪回 CPU 的控制權
  2. 使 CPU 從用戶態變為內核態

中斷類型

  • 內中斷(異常、例外):與當前執行的指令有關,中斷信號來源於 CPU 內部

    • 陷阱、陷入:執行陷入指令,意味著應用程式主動地將 CPU 控制權還給操作系統內核。 系統調用就是通過陷入指令完成(陷入指令)(註意不是特權指令,能再用戶態使用)
    • 故障:由致命錯誤引起,內核程式無法修複該錯誤,因此一般不再將 CPU 使用權還給引發終止的應用程式, 而是直接終止該應用程式。如:整數除 0、非法使用特權指令
    • 終止:由錯誤條件引起的,可能被內核程式修複。內核程式修複故障後會把 CPU 使用權還給應用程式,讓它繼續執行下去。如:缺頁故障。
  • 外中斷:與當前執行的指令無關,中斷信號來源於 CPU 外部

    • 時鐘中斷
    • I/O 中斷請求

每一條指令執行結束時,CPU 都會例行檢查是否有外中斷信號

中斷機制的基本原理

不同的中斷信號,需要用不同的中斷處理程式來處理

  1. 檢查中斷信號

    • 內中斷:CPU 在執行指令時會檢查是否有異常發生
    • 外中斷:每個指令末尾,CPU 都會檢查是否有外中斷信號需要處理
  2. 找到相應的中斷處理程式

    • 根據中斷信號的類型去查詢中斷向量表,以此來找到相應的中斷處理程式在記憶體中的存放位置

系統調用

系統調用是操作系統提供給應用程式使用的介面,可以理解為一種可供應用程式調用的特殊函數,應用程式可以通過系統調用來請求獲得操作系統內核的服務(和庫函數類似,但有區別)

  • 有的庫函數涉及系統調用(如 open),有的不涉及系統調用(如取絕對值的函數)

系統調用的分類

系統中的各種共用資源都由操作系統內核統一掌管,因此凡是與共用資源有關的操作(如存儲分配、I/O 操作、文件管理等),都必須通過系統調用的方式向操作系統內核提出服務請求,這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。

系統調用過程

操作系統的內核

巨集內核和微內核

操作系統結構

分層結構

最底層是硬體,最上層是用戶介面,每層可單向調用更低一層的介面(不能跨層調用)

模塊化

將操作系統按功能劃分為若幹個具有一定獨立性的模塊

內核 = 主模塊(進程、記憶體)+ 可載入內核模塊(驅動)

外核

外核能夠給用戶分配未經抽象的硬體資源(沒有虛擬化映射),用戶看到的是物理記憶體,可以提高訪存效率(在一些頻繁使用的物理地址可以這樣分配)

操作系統引導(開機過程)

  • 操作系統引導(boot):開機的時候,讓操作系統運行起來

虛擬機

虛擬機:使用虛擬化技術,將一臺物理機器虛擬化為多台虛擬機器,每個虛擬機器都可以獨立運行一個操作系統;需要使用到虛擬機管理程式(虛擬機監控程式/VMM/Hypervisor)

  • 第一類 VMM,直接運行在硬體上,只有 VMM 是運行在內核空間中的,操作系統是運行在用戶空間的,只不過是它自己以為運行在內核空間中,VMM 提供操作系統執行特權指令的功能

  • 第二類 VMM,直接運行在宿主操作系統上(VMware)

  • 兩類 VMM 對比


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是JLink 7.62優化了手動增加新MCU型號支持方法。 JLink 工具可以說是搞單片機開發的必備神器,JLink 包括一個硬體模擬器(分不同用途的 EDU/BASE/PLUS/WIFI/ULTRA+/PRO)和 PC 機上的驅動軟體 ...
  • Part C:搶占式多任務和進程間通信(IPC lab4到目前為止,我們能夠啟動多個CPU,讓多個CPU同時處理多個進程。實現了中斷處理,並且實現了用戶級頁面故障機制以及寫時複製fork。 但是,我們的進程調度不是搶占式的,現在每個進程只有在發生中斷的時候,才會被調度(調用shed_yeild),這 ...
  • 哈嘍大家好,我是鹹魚。 最近寫的一個 Python 項目用到了 jwcrypto 這個庫,這個庫是專門用來處理 JWT 的,JWT 全稱是 JSON Web Token ,JSON 格式的 Token。 今天就來簡單入門一下 JWT。 官方介紹:https://jwt.io/introduction ...
  • Part B Copy-on-Write Fork Unix 提供 fork() 系統調用作為主要的進程創建基元。fork()系統調用複製調用進程(父進程)的地址空間,創建一個新進程(子進程)。 不過,在調用 fork() 之後,子進程往往會立即調用 exec(),用新程式替換子進程的記憶體。例如,s ...
  • 在CentOS7中配置NFS服務並設置客戶端自動掛載的步驟如下: NFS服務端配置 安裝NFS服務: 首先,你需要在CentOS 7伺服器上安裝NFS服務。你可以使用yum命令來安裝: yum install nfs-utils 創建共用目錄: 創建一個你希望共用的目錄,例如: mkdir -p / ...
  • !!!是的沒錯,胖友們,保姆教程系列又更新了!!! @目錄前言1.將本地項目推送到遠程倉庫2. Idea Git回退到某個歷史版本3. 修改項目關聯遠程地址方法4. Git 修改分支的名稱5. Git 刪除分支6. master分支代碼複製到新的分支7. Git遷移項目到其他代碼倉庫,且保留分支與提 ...
  • 這個測試板在前面介紹過, 使用的是 HC32L110C4 晶元. 測試功能很簡單, 定時發送字元串`ashining`, 沒有參數修改選項. 因此僅僅適用於兩塊測試底板之間的測試, 無法配合其它 NRF24L01 硬體設備進行收發測試. 一直想重寫這個底板的功能, 增加更多的測試項, 但是太懶了一直... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...