【操作系統學習筆記】—— 【一】操作系統概述

本文參考:



一、操作系統的概念和功能

1. 什麼是操作系統

  • 操作系統(Operating System,簡稱OS)是管理計算機硬件與軟件資源的程序,是計算機系統的內核與基石;
  • 操作系統本質上是運行在計算機上的軟件程序 ;
  • 操作系統爲用戶提供一個與系統交互的操作界面 ;
  • 操作系統分內核與外殼(我們可以把外殼理解成圍繞着內核的應用程序,而內核就是能操作硬件的程序)。
    在這裏插入圖片描述

2. 操作系統的功能和目標

  • 對系統資源的管理

  • 向上層提供接口

    • 給普通用戶使用的:GUI圖形界面 / 命令接口
    • 給軟件/程序員用的:程序接口——系統調用
  • 對下層功能的擴展

    沒有任何軟件支持的計算機成爲裸機。在裸機上安裝的操作系統, 可以提供資源管理功能和方便用戶的服務功能,將裸機改造成功能 更強、使用更方便的機器

    類比汽車: 發動機——只會轉;輪胎——只會滾; 在原始的硬件機器上覆蓋一層傳動系統——讓發動機帶着輪子轉——使原始的硬件機器得到拓展

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

二、操作系統的四個特徵

1. 併發(最基本特徵)

  • 併發:併發是指宏觀上在一段時間內能同時運行多個程序。這些程序宏觀上是同時發生的,但微觀上是交替發生的。操作系統通過引入進程和線程,使得程序能夠併發運行。

    單核CPU同一時刻只能執行一個程序,各個程序只能併發地執行 ;
    多核CPU同一時刻可以同時執行多個程序,多個程序可以並行地執行。

    比如Intel的第八代i3處理器就是4核CPU,意味着可以並行地執行4個程序
    即使是對於4核CPU來說,只要有4個以 上的程序需要“同時”運行,那麼併發性依然是必不可少的,因此 併發性 是操作系統一個基本的特性

  • 並行:並行則指同一時刻能運行多個指令,指兩個或多個事件在同一時刻同時發生。並行需要硬件支持,如多流水線、多核處理器或者分佈式計算系統。

2. 共享(最基本特徵)

共享即資源共享,是指系統中的資源可供內存中多個併發執行的進程共同使用

兩種共享方式

  • 互斥共享
    互斥共享的資源稱爲臨界資源,例如打印機等,雖然可以提供給多個進程使用,但在同一時刻只允許一個進程訪問,需要用同步機制來實現互斥訪問。

  • 同時共享
    系統中的某些資源,允許一個時間段內由多個進程“同時”對它們進行訪問

    所謂的“同時”往往是宏觀上的,而在微觀上,這些進程可能是交替地對該資源進行訪問的(即分時共享)

實例:

  • 互斥共享方式:使用QQ和微信視頻。同一時間段內攝像頭只能分配給其中一個進程。
  • 同時共享方式:使用QQ發送文件A,同時使用微信發送文件B。宏觀上看,兩邊都在同時讀取併發送文件, 說明兩個進程都在訪問硬盤資源,從中讀取數據。微觀上看,兩個進程是交替着訪問硬盤的

💖 併發和共享互爲存在條件

併發性指計算機系統中同時存在着多個運行着的程序。
共享性是指系統中的資源可供內存中多個併發執行的進程共同使用。

通過上述例子來看併發與共享的關係:
使用QQ發送文件A,同時使用微信發送文件B。

  • 兩個進程正在併發執行(併發性)
    如果失去併發性,則系統中只有一個 程序正在運行,則共享性失去存在的 意義
  • 需要共享地訪問硬盤資源(共享性)
    如果失去共享性,則QQ和微信不能同時訪問硬盤資源,就無法實現同時發 送文件,也就無法併發

同時,沒有併發和共享,就談不上虛擬和異步,因此併發和共享是操作系統的兩個基本的特徵

3. 虛擬

虛擬是指把一個物理上的實體變爲若干個邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上 對應物(後者)是用戶感受到的。

用一個例子來理解:
我們都知道 一個程序需要放入內存並給它分配CPU才能執行

GTA5需要4GB的運行內存,QQ需要256MB的內存,Chrome需要256MB的內 存,網易雲音樂需要256MB的內存……
電腦:4GB內存
處理器:單核CPU

問題1:這些程序同時運行需要的內存遠大於4GB,那麼爲什麼它們還可以 在我的電腦上同時運行呢?
:這是虛擬存儲器技術 (空分複用技術)。實際只有4GB的內存,在用戶看來似乎遠遠大 於4GB

問題2:既然一個程序需要被分配CPU才能正常執行,那麼爲什麼單核CPU 的電腦中能同時運行這麼多個程序呢?
:這是虛擬處理器技術(時分複用技術),微觀上處理機在 各個微小的時間段內交替 着爲各個進程服務。實際上只有一個單核CPU,在用戶看來似乎有 6個CPU在同時爲自己服務

下面來解釋以下上述兩種虛擬技術:

  • 時分複用技術
    多個進程能在同一個處理器上併發執行使用了時分複用技術,讓每個進程輪流佔用處理器,每次只執行一小個時間片並快速切換。
  • 空分複用技術
    虛擬內存使用了空分複用技術,它將物理內存抽象爲地址空間,每個進程都有各自的地址空間。地址空間的頁被映射到物理內存,地址空間的頁並不需要全部在物理內存中,當使用到一個沒有在物理內存的頁時,執行頁面置換算法,將該頁置換到內存中。

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

4. 異步

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

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

三、中斷和異常

1. 用戶態和內核態

根據進程訪問資源的特點,我們可以把進程在系統上的運行分爲兩個級別:

  • 用戶態(user mode) : 用戶態運行的進程或可以直接讀取用戶程序的數據。
  • 系統態(kernel mode):可以簡單的理解內核態運行的進程或程序幾乎可以訪問計算機的任何資源,不受限制。

2. 中斷的作用

CPU上會運行兩種程序,一種是 操作系統內核程序 (是整個系統的 管理者
),一種是 應用程序

在合適的情況下,操作系統內核會把CPU的使用權主動讓給應用程序。“中斷”是讓操作系統內核奪回CPU使用權的唯一途徑

如果沒有“中斷”機制,那麼一旦應用程序上CPU運行,CPU就會一直運行這個應用程序。沒有中斷機制,就不可能實現操作系統,不可能實現程序併發

  • 內核態->用戶態:執行一條特權指令 —— 修改PSW的標誌位爲“用戶態”,這個動作意味着操作系統 將主動讓出CPU使用權
  • 用戶態->內核態:由“中斷”引發,硬件自動完成變態過程,觸發中斷信號意味着操作系統將強行奪 回CPU的使用權

總結:“中斷”會使CPU由用戶態 變爲 內核態 ,使操作系統重新奪回對CPU 的控制權

3. 中斷的類型

  • 內中斷(也稱 異常、例外)
    與當前執行的指令有關, 中斷信號來源於CPU內部。如非法操作碼、地址越界、算術溢出,除數爲0等

    有時候應用程序想請求操作系統內核的服務,此時會執行一條特殊的指令——陷入指令,該指令會引發一個內部中斷信號
    執行“陷入指令”,意味着應用程序主 動地將CPU控制權還給操作系統內核。 系統調用”就是通過陷入指令完成的

  • 外中斷 (也稱 中斷,狹義的中斷)
    與當前執行的指令無關, 中斷信號來源於CPU外部。如 I/O 完成中斷,表示設備輸入/輸出處理已經完成,處理器能夠發送下一個輸入/輸出請求。此外還有時鐘中斷、控制檯中斷等。

4. 中斷機制的基本原理

不同的中斷信號,需要用不同的中斷處理程序來處理。當CPU檢測到中斷信號後,會根據中斷信號 的類型去查詢“中斷向量表”,以此來找到相應的中斷處理程序在內存中的存放位置。

四、系統調用

1. 什麼是系統調用,有何作用

操作系統作爲用戶和計算機硬件之間的接口,需要向上提供一些簡單易用的服務。主要包括命令接 口和程序接口。其中,程序接口由一組系統調用組成。

“系統調用”是操作系統提供給應用程序(程序員/編程人員)使用的接口,可以理解爲一種可供應用 程序調用的特殊函數,應用程序可以通過系統調用來請求獲得操作系統內核的服務

如果一個進程在用戶態需要使用內核態的功能,就進行系統調用從而陷入內核,由操作系統代爲完成。

2. 系統調用與庫函數的區別

有的庫函數涉及系統調用,有的不涉及

  • 不涉及系統調用的庫函數:如“取絕對值”的函數
  • 涉及系統調用的庫函數:如“創建一個新文件”的函數

3. 爲什麼系統調用是必須的

  • 實例:去學校打印店打印論文,你按下了WPS的“打印”選項,打印機開 始工作。 你的論文打印到一半時,另一位同學按下了Word 的“打印”按鈕,開始打印他 自己的論文。
  • 思考:如果兩個進程可以隨意地、併發地共享打印機資源,會發生什麼情況?
    兩個進程併發運行,打印機設備交替地收到WPS和Word 兩個進程發來的打印請 求,結果兩篇論文的內容混雜在一起了…
  • 解決方法:由操作系統內核對共享資源進行統一的管理,並向上提供 “系統調用” ,用戶進程想要使用打印機這種共享資源,只能通過系統調用向操作系統內核發出請求。內核會對各個請求進行協調處理。

4. 什麼功能要用到系統調用

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

這些系統調用按功能大致可分爲如下幾類:

  • 設備管理。完成設備的請求或釋放,以及設備啓動等功能。
  • 文件管理。完成文件的讀、寫、創建及刪除等功能。
  • 進程控制。完成進程的創建、撤銷、阻塞及喚醒等功能。
  • 進程通信。完成進程之間的消息傳遞或信號傳遞等功能。
  • 內存管理。完成內存的分配、回收以及獲取作業佔用內存區大小及地址等功能。

5. 系統調用的過程

傳遞系統調用參數 ——> 執行陷入指令(用戶態),引發一個內中斷,使CPU進入內核態 ——> 執行相應的請求,內核程序處理系統調用(內核態)——> 返回應用程序

五、操作系統的體系結構

操作系統的體系結構可以分爲 大內核 + 微內核

內核是操作系統最基本、最核心的部分。 實現操作系統內核功能的那些程序就是內核程序。


1. 大內核

大內核是將操作系統功能作爲一個緊密結合的整體放到內核。由於各模塊共享信息,因此有很高的性能。

  • 優點:高性能
  • 缺點:內核代碼龐大,結構混亂,難以維護

2. 微內核

由於操作系統不斷複雜,因此將一部分操作系統功能移出內核,從而降低內核的複雜性。移出的部分根據分層的原則劃分成若干服務,相互獨立。

在微內核結構下,操作系統被劃分成小的、定義良好的模塊,只有微內核這一個模塊運行在內核態,其餘模塊運行在用戶態。

因爲需要頻繁地在用戶態和核心態之間進行切換,所以會有一定的性能損失。

  • 優點:內核功能少,結構清晰,方便維護
  • 缺點:需要頻繁地在用戶態和核心態之間進行切換,性能低
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章