banner
ShuWa

ShuWa

是进亦忧,退亦忧。然则何时而乐耶?
twitter

操作系統基礎

操作系統#

1. 操作系統是什麼#

本質上是一個運行在計算機上的軟件程序,主要用於管理計算機硬件和軟件資源。
內核(Kernel)是操作系統的核心部分,它負責系統的內存管理,硬件設備的管理,文件系統的管理以及應用程序的管理。 內核是連接應用程序和硬件的橋樑,決定著系統的性能和穩定性。

2. 有哪些功能#

  • 進程和線程的管理:進程的創建、撤銷、阻塞、喚醒,進程間的通信等。
  • 存儲管理:內存的分配和管理、外存(磁盤等)的分配和管理等。
  • 文件管理:文件的讀、寫、創建及刪除等。
  • 設備管理:完成設備(輸入輸出設備和外部存儲設備等)的請求或釋放,以及設備啟動等功能。
  • 網絡管理:操作系統負責管理計算機網絡的使用。網絡是計算機系統中連接不同計算機的方式,操作系統需要管理計算機網絡的配置、連接、通信和安全等,以提供高效可靠的網絡服務。
  • 安全管理:用戶的身份認證、訪問控制、文件加密等,以防止非法用戶對系統資源的訪問和操作。

3. 用戶態和內核態#

什麼是用戶態和內核態?#

  • 用戶態 (User Mode) : 用戶態運行的進程可以直接讀取用戶程序的數據,擁有較低的權限。當應用程序需要執行某些需要特殊權限的操作,例如讀寫磁盤、網絡通信等,就需要向操作系統發起系統調用請求,進入內核態。
  • 內核態 (Kernel Mode):內核態運行的進程幾乎可以訪問計算機的任何資源包括系統的內存空間、設備、驅動程序等,不受限制,擁有非常高的權限。當操作系統接收到進程的系統調用請求時,就會從用戶態切換到內核態,執行相應的系統調用,並將結果返回給進程,最後再從內核態切換回用戶態。
    用戶態和內核態

為什麼要有用戶態和內核態的區分?只用內核態不行嗎?#

  • 在 CPU 的所有指令中,有一些指令是比較危險的比如內存分配、設置時鐘、IO 處理等,如果所有的程序都能使用這些指令的話,會對系統的正常運行造成災難性地影響。因此,我們需要限制這些危險指令只能內核態運行。這些只能由操作系統內核態執行的指令也被叫做 特權指令
  • 如果計算機系統中只有一個內核態,那麼所有程序或進程都必須共享系統資源,例如內存、CPU、硬盤等,這將導致系統資源的競爭和衝突,從而影響系統性能和效率。並且,這樣也會讓系統的安全性降低,畢竟所有程序或進程都具有相同的特權級別和訪問權限。

!!用戶態和內核態是如何切換的?#

用戶態切換到內核態的 3 種方式:

  1. 系統調用(Trap):用戶態進程 主動 要求切換到內核態的一種方式,主要是為了使用內核態才能做的事情比如讀取磁盤資源。系統調用的機制其核心還是使用了操作系統為用戶特別開放的一個中斷來實現。
  2. 中斷(Interrupt):當外圍設備完成用戶請求的操作後,會向 CPU 發出相應的中斷信號,這時 CPU 會暫停執行下一條即將要執行的指令轉而去執行與中斷信號對應的處理程序,如果先前執行的指令是用戶態下的程序,那麼這個轉換的過程自然也就發生了由用戶態到內核態的切換。比如硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中執行後續操作等。
  3. 異常(Exception):當 CPU 在執行運行在用戶態下的程序時,發生了某些事先不可知的異常,這時會觸發由當前運行進程切換到處理此異常的內核相關程序中,也就轉到了內核態,比如缺頁異常。
    在系統的處理上,中斷和異常類似,都是通過中斷向量表來找到相應的處理程序進行處理。區別在於,中斷來自處理器外部,不是由任何一條專門的指令造成,而異常是執行當前指令的結果。

系統調用#

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

  • 設備管理:完成設備(輸入輸出設備和外部存儲設備等)的請求或釋放,以及設備啟動等功能。
  • 文件管理:完成文件的讀、寫、創建及刪除等功能。
  • 進程管理:進程的創建、撤銷、阻塞、喚醒,進程間的通信等功能。
  • 內存管理:完成內存的分配、回收以及獲取作業占用內存區大小及地址等功能。

系統調用和普通庫函數調用非常相似,只是系統調用由操作系統內核提供,運行於內核態,而普通的庫函數調用由函數庫或用戶自己提供,運行於用戶態。
總結:系統調用是應用程序與操作系統之間進行交互的一種方式,通過系統調用,應用程序可以訪問操作系統底層資源例如文件、設備、網絡等。

系統調用的過程#

系統調用的過程可以簡單分為以下幾個步驟:

  1. 用戶態的程序發起系統調用,因為系統調用中涉及一些特權指令(只能由操作系統內核態執行的指令),用戶態程序權限不足,因此會中斷執行,也就是 Trap(Trap 是一種中斷)。
  2. 發生中斷後,當前 CPU 執行的程序會中斷,跳轉到中斷處理程序。內核程序開始執行,也就是開始處理系統調用。
  3. 內核處理完成後,主動觸發 Trap,這樣會再次發生中斷,切換回用戶態工作。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。