導圖分析讓你快速瞭解操作系統的運行機制

個人描述

操作系統的運行機制

操作系統的運行機制
倆種指令
特權指令
倆種處理器狀態
核心態
倆種程序
內核程序
非特權指令
用戶態
應用程序

一條高級語言的代碼翻譯過來可能會對應多條機器指令 :

編譯器:翻譯
C語言代碼
機器指令:二進制

指令 ” :處理器(CPU) 能識別、 執行的最基本命令

程序運行的過程其實就是CPU執行一條一條的機器指令的過程

注: 很多人習慣把 Linux、 Windows、 MacOS 的 “ 小黑框 ” 中使用的命令也稱爲“ 指令 ” , 其實這是“ 交互式命令接口 ” , 注意與本節的 “ 指令 ” 區別開。 此 “ 指令 ” 指二進制機器指令

內核程序 & 應用程序

我們普通程序員寫的程序就是“ 應用程序 ”

微軟、 蘋果有一幫人負責實現操作系統, 他們寫的是“ 內核程序

由很多內核程序組成了“ 操作系統內核 ” , 或簡稱“ 內核(Kernel) ”

內核是操作系統最重要最核心的部分, 也是最接近硬件的部分甚至可以說, 一個操作系統只要有內核就夠了(eg: Docker—>僅需Linux內核)

操作系統的功能未必都在內核中, 如圖形化用戶界面 GUI

特權指令 & 非特權指令

應用程序只能使用“ 非特權指令 ” , 如:加法指令、 減法指令等

操作系統內核作爲 “管理者” , 有時會讓CPU執行一些“特權指令” , 如: 內存清零指令。 這些指令影響重大,只允許“ 管理者 ” —— 即操作系統內核來使用

在CPU設計和生產的時候就劃分了 特權指令和非特權指令, 因此CPU執行一條指令前就能判斷出其類型

內核態 & 用戶態

CPU 有兩種狀態, “內核態” 和“用戶態”

處於內核態時, 說明此時正在運行的是內核程序, 此時可以執行特權指令

處於用戶態時, 說明此時正在運行的是應用程序, 此時只能執行非特權指令

拓展: CPU 中有一個寄存器叫 程序狀態字寄存器(PSW) , 其中有個二進制位, 1表示“ 內核態 ” , 0表示“ 用戶態 ”

別名: 內核態 = 核心態 = 管態; 用戶態 = 目態

內核態、 用戶態 的切換

內核態 -> 用戶態: 執行一條特權指令——修改PSW的標誌位爲“ 用戶態 ” , 這個動作意味着操作系統將主動讓出CPU使用權

用戶態 -> 內核態: 由“ 中斷 ” 引發, 硬件自動完成變態過程, 觸發中斷信號意味着操作系統將強行奪回CPU的使用權

除了非法使用特權指令之外, 還有很多事件會觸發中斷信號。 一個共性是, 但凡需要操作系統介入的地方, 都會觸發中斷信號

啓動過程:

  • 剛開機時, CPU 爲“ 內核態 ” , 操作系統內核程序先上CPU運行

  • 開機完成後, 用戶可以啓動某個應用程序

  • 操作系統內核程序在合適的時候主動讓出 CPU, 讓該應用程序上CPU運行,操作系統內核在讓出CPU之前, 會用一條特權指令把 PSW 的標誌位設置爲“ 用戶態

  • 應用程序運行在“ 用戶態

  • 此時, 一位猥瑣黑客在應用程序中植入了一條特權指令, 企圖破壞系統…

  • CPU發現接下來要執行的這條指令是特權指令, 但是自己又處於“ 用戶態

  • 這個非法事件會引發一箇中斷信號,CPU檢測到中斷信號後, 會立即變爲“ 核心態 ” , 並停止運行當前的應用程序, 轉而運行處理中斷信號的內核程序

  • 中斷 ” 使操作系統再次奪回CPU的控制權

  • 操作系統會對引發中斷的事件進行處理, 處理完了再把CPU使用權交給別的應用程序

    操作系統的運行機制
    簡單瞭解程序的運行原理
    高級語言編寫代碼_機器指令
    程序運行的過程就是CPU執行指令的過程
    倆類程序
    內核程序
    應用程序
    倆類指令
    特權指令
    非特權指令
    倆種處理器狀態
    用戶態\目態
    內核態\管態\核心態
    內核
    內核**kernel**是操作系統最重要最核心的部分
    由很多內核程序組成的操作系統內核
    任何換態
    內核態-到-用戶態

兩種指令、 兩種處理器狀態、 兩種程序

有的指令“人畜無害” 。 比如: 加、 減、 乘、 除 這些普通的運算指令。

有的指令有很高的權限。 比如: 內存清零指令。 如果用戶程序可以使用這個指令, 就意味着一個用戶可以將其他用戶的內存數據隨意清零, 這樣做顯然是很危險的。

指令
特權指令:如內存清零指令
非特權指令:如普通的運算指令

特殊指令:不允許用戶程序使用

程序狀態字寄存器(PSW) 中的某標誌位來標識當前處理器處於什麼狀態。 如 0 爲用戶態, 1 爲核心態

用戶態:此時CPU只能執行非特權指令

核心態:特權指令、 非特權指令都可執行

倆種處理器狀態
用戶態$目態$
核心態$管態$

內核程序:操作系統的內核程序是系統的管理者,既可以執行特權指令, 也可以執行非特權指令, 運行在核心態

應用程序:爲了保證系統能安全運行, 普通應用程序只能執行非特權指令, 運行在用戶態

倆種程序
內核程序
應用程序

操作系統的內核

用戶
應用程序$_軟件_$
非內核功能
進程管理\存儲器管理\設備功能等功能
時鐘管理
中斷處理
原語__$_設備驅動\CPU切換等_$
裸機
實現計時功能
原語是一種特殊的程序,是最靠近硬件的部分,運行具有原子性

內核是計算機上配置的底層軟件, 是操作系統最基本、 最核心的部分。

實現操作系統內核功能的那些程序就是內核程序

有的操作系統不把這部分功能歸爲“ 內核功能 ” 。 也就是說, 不同的操作系統, 對內核功能的劃分可能並不一樣

操作系統內核
時鐘管理
實現計時功能
中斷處理
負責實現中斷機制
原語
是一種特殊的程序
處於操作系統最底層,最靠近硬件的部分
運行時間短,調用頻繁
這種程序具有原子性__-__只能一氣呵成,不能中斷
對系統資源進行管理的功能
進程管理
存儲器管理
設備管理
操作系統的體系結構
大內核
將操作系統的主要功能模塊都作爲系統內核,運行在覈心態
優點:高性能
缺點:內核代碼龐大,結構混亂,難以維護
微內核
只把最基本的功能保留在內核
優點:內核功能少,結構清晰,方便維護
缺點:需要頻繁在用戶態與核心態切換,性能低

比喻:

內核就是企業的管理層, 負責一些重要的工作。

只有管理層才能執行特權指令, 普通員工只能執行非特權指令用戶態核心態之間的切換相當於普通員工和管理層之間的工作交接

大內核: 企業初創時體量不大, 管理層的人會負責大部分的事情。 優點是效率高; 缺點是組織結構混亂, 難以維護。

微內核: 隨着企業體量越來越大, 管理層只負責最核心的一些工作。 優點是組織結構清晰, 方便維護; 缺點是效率低。

特權指令只能在核心態下執行

內核程序只能在核心態下執行

OS的運行機制和體系機構
運行機制
倆種指令
特權指令
非特權指令
倆種處理器狀態
核心態
用戶態
倆種程序
內核程序
應用程序
操作系統內核
時鐘管理
中斷管理
原語
是一種特殊的程序,具有原子性,不可中斷
對系統資源進行管理的功能
進程管理
存儲器管理
設備管理
操作系統的體系結構
大內核
優點:性能高
缺點:內核龐大,結構複雜,難以維護
微內核
優點:功能少,結構清晰,方便維護
缺點:頻繁在用戶態與核心態切換,性能低
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章