
作者:Cyapirear
來源:華為開發者論壇
操作系統是什么
操作系統(Operation System,OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。操作系統也是用戶與計算機硬件系統之間的接口,同時也是計算機硬件和其他軟件的接口。
操作系統發展歷程
手工階段
單道批處理系統
多道批處理系統
分時操作系統
實時操作系統
網絡操作系統和分布式操作系統,兩者的不同之處在于:
在分布式操作系統中,若干臺計算機相互協同完成同一任務。
在網絡操作系統中,每臺計算機都是相互獨立的,它們并不能相互協同完成同一任務。
操作系統中的基本概念
CPU(Central Processing Unit,中央處理器)
可以認為是程序執行時的一個實例。進程是系統進行資源分配的獨立實體,且每個進程擁有獨立的地址空間。比如打開一個瀏覽器就是啟動一個瀏覽器進程,打開兩個記事本就啟動了兩個記事本進程。
保存運行期間進程的數據,PCB是進程存在的唯一標志。進程=程序+數據+PCB。
線程
可以理解為“輕量級進程”,是CPU調度的基本單元,也是程序執行流的最小單元,由線程ID、程序計數器、寄存器集合和堆棧組成。在一個進程內部,可能要同時干多件事,這時就需要同時運行多個“子任務”,我們可以把這些“子任務”稱為線程。線程屬于進程,是進程的一個實體。如果把進程比喻為工廠,線程就相當于工廠里的各個流水線。
線程控制塊(ThreadControl Block,TCB)
保存運行期間線程的數據,TCB是線程存在的唯一標志。
線程和進程的區別
進程是資源分配和調度的一個獨立單元,而線程只是CPU調度的基本單元。線程自己不擁有系統資源,但它可以與同屬一個進程的其他線程共享進程所擁有的全部資源(寄存器、堆棧、上下文)。一個進程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以并發執行。一個進程至少包括一個線程。進程結束后它擁有的所有線程都將銷毀,而線程的結束不會影響同個進程中的其他線程的結束。
多線程
并發
兩個或多個事件在同一時間內發生,在單CPU系統中,這些事件分時交替執行。
并行
兩個或多個事件在同一時刻發生。在多處理器中,進程可以交替執行,還能重疊執行,實現并行處理。
臨界資源
一次僅允許一個進程使用的資源,如 打印機。
臨界區
每個進程中訪問臨界資源的那段代碼。
互斥
進程之間訪問臨界資源時相互排斥的現象。
同步
異步
和同步相對,同步是順序執行,而異步是彼此獨立,在等待某個事件的過程中繼續做自己的事,不需要等待這一事件完成后再工作。實現異步可以采用多線程技術或者交給其他進程來處理。
中斷
當出現需要時,CPU暫停執行當前程序,轉而執行新程序的過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的事務。此時,CPU暫時中止當前程序的執行轉而處理這個事務,這個過程就叫做中斷。
CPU的工作狀態
大多數計算機系統將CPU執行狀態分為管態與目態。
管態
目態
為什么叫object mode呢?
通常CPU會執行兩種不同性質的程序:一種是操作系統內核程序;另一種是用戶自己寫的程序或系統外層的應用程序。
對操作系統而言,這兩種程序的作用不同,前者是后者的管理者,因此“管理程序”要執行一些特權指令,而“被管理程序”出于安全考慮不能執行這些指令。因為管理者需要管理它,它就是管理者的管理目標,所以就叫object mode。
目態(用戶態)→管態(內核態)
從用戶態切換到內核態,可以通過系統調用、異常、外部設備的中斷這三種方式實現。
系統調用
這是用戶態進程主動要求切換到內核態的一種方式,用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作。系統調用機制的核心是使用了操作系統為用戶開放的中斷。
異常
當CPU在執行用戶態程序時,發生了某些事先不可知的異常,這時就會切換到處理此異常的內核程序中,也就轉到了內核態。
當外部設備完成用戶請求操作后,會向CPU發出相應的中斷信號,這時CPU會暫停執行下一條即將要執行的指令,轉而去執行與中斷信號對應的處理程序(該程序在內核態),如果先前執行的指令是用戶態下的程序,那么這個轉換的過程自然也就發生了由用戶態到內核態的切換。例如,硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中,執行后續的操作。
操作系統的特征
并發
兩個或者多個程序在同一時間內發生。
系統中的資源可供內存中多個并發執行的進程共同使用。
把一個物理上的實體變為若干個邏輯上的對應物。
在多道程序環境下,允許多個進程并發執行,但因資源有限,進程的執行不是一貫到底,而是走走停停,以不可預知的速度向前推送,這就是進程的異步性。

長按前往圖中包含的公眾號關注