初學者必備的操作系統知識

關注、星標公衆,不錯過精彩內容

作者:Cyapirear

來源:華爲開發者論壇

01

操作系統是什麼

操作系統(Operation System,OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。操作系統也是用戶與計算機硬件系統之間的接口,同時也是計算機硬件和其他軟件的接口。

02


操作系統發展歷程

  • 手工階段

  • 單道批處理系統

  • 多道批處理系統

  • 分時操作系統

  • 實時操作系統

  • 網絡操作系統和分佈式操作系統,兩者的不同之處在於:

  • 在分佈式操作系統中,若干臺計算機相互協同完成同一任務。

  • 在網絡操作系統中,每臺計算機都是相互獨立的,它們並不能相互協同完成同一任務。

03

操作系統中的基本概念

  • CPU(Central Processing Unit,中央處理器)

是一塊超大規模的集成電路,是一臺計算機的運算核心(Core)和控制核心   (Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟件中的數據。

  • 進程

可以認爲是程序執行時的一個實例。進程是系統進行資源分配的獨立實體,且每個進程擁有獨立的地址空間。比如打開一個瀏覽器就是啓動一個瀏覽器進程,打開兩個記事本就啓動了兩個記事本進程。

  • 進程控制塊(ProcessControl Block,PCB

保存運行期間進程的數據,PCB是進程存在的唯一標誌。進程=程序+數據+PCB。

  • 線程

    可以理解爲“輕量級進程”,是CPU調度的基本單元,也是程序執行流的最小單元,由線程ID、程序計數器、寄存器集合和堆棧組成。在一個進程內部,可能要同時幹多件事,這時就需要同時運行多個“子任務”,我們可以把這些“子任務”稱爲線程。線程屬於進程,是進程的一個實體。如果把進程比喻爲工廠,線程就相當於工廠裏的各個流水線。

  • 線程控制塊(ThreadControl Block,TCB)

保存運行期間線程的數據,TCB是線程存在的唯一標誌。

  • 線程和進程的區別

進程是資源分配和調度的一個獨立單元,而線程只是CPU調度的基本單元。線程自己不擁有系統資源,但它可以與同屬一個進程的其他線程共享進程所擁有的全部資源(寄存器、堆棧、上下文)。一個進程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以併發執行。一個進程至少包括一個線程。進程結束後它擁有的所有線程都將銷燬,而線程的結束不會影響同個進程中的其他線程的結束。

  • 多線程

指從軟件或者硬件上實現多個線程併發執行的技術。

  • 併發

兩個或多個事件在同一時間內發生,在單CPU系統中,這些事件分時交替執行。

  • 並行

兩個或多個事件在同一時刻發生。在多處理器中,進程可以交替執行,還能重疊執行,實現並行處理。

  • 臨界資源

    一次僅允許一個進程使用的資源,如 打印機。

  • 臨界區

    每個進程中訪問臨界資源的那段代碼。

  • 互斥

    進程之間訪問臨界資源時相互排斥的現象。

  • 同步

進程之間存在依賴關係,一個進程結束的輸出作爲另一個進程的輸入。具有同步關係的一組併發進程之間發送的信息稱爲消息。

  • 異步

    和同步相對,同步是順序執行,而異步是彼此獨立,在等待某個事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。實現異步可以採用多線程技術或者交給其他進程來處理。

  • 中斷

    當出現需要時,CPU暫停執行當前程序,轉而執行新程序的過程。即在程序運行過程中,系統出現了一個必須由CPU立即處理的事務。此時,CPU暫時中止當前程序的執行轉而處理這個事務,這個過程就叫做中斷。

04

CPU的工作狀態

大多數計算機系統將CPU執行狀態分爲管態與目態。

  • 管態

supervisor(管理者)mode,又叫特權態、系統態或者內核態。CPU在管態下可以執行指令系統的全集。如果程序處於管態,則該程序就可以訪問計算機的任何資源,即它的資源訪問權限不受限制。通常,操作系統在管態下運行。

  • 目態

object(目標)mode又叫常態或用戶態。處於目態時,程序只能執行非特權指令,不能直接使用系統資源,也不能改變CPU的工作狀態,並且只能訪問這個用戶程序自己的存儲空間。

  • 爲什麼叫object mode呢?

通常CPU會執行兩種不同性質的程序:一種是操作系統內核程序;另一種是用戶自己寫的程序或系統外層的應用程序。

對操作系統而言,這兩種程序的作用不同,前者是後者的管理者,因此“管理程序”要執行一些特權指令,而“被管理程序”出於安全考慮不能執行這些指令。因爲管理者需要管理它,它就是管理者的管理目標,所以就叫object mode。

  • 目態(用戶態)→管態(內核態)

從用戶態切換到內核態,可以通過系統調用、異常、外部設備的中斷這三種方式實現。

  • 系統調用

這是用戶態進程主動要求切換到內核態的一種方式,用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作。系統調用機制的核心是使用了操作系統爲用戶開放的中斷。

  • 異常

當CPU在執行用戶態程序時,發生了某些事先不可知的異常,這時就會切換到處理此異常的內核程序中,也就轉到了內核態。

  • 外部設備的中斷

當外部設備完成用戶請求操作後,會向CPU發出相應的中斷信號,這時CPU會暫停執行下一條即將要執行的指令,轉而去執行與中斷信號對應的處理程序(該程序在內核態),如果先前執行的指令是用戶態下的程序,那麼這個轉換的過程自然也就發生了由用戶態到內核態的切換。例如,硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中,執行後續的操作。

05

操作系統的特徵

  • 併發

    兩個或者多個程序在同一時間內發生。

  • 共享

    系統中的資源可供內存中多個併發執行的進程共同使用。

  • 虛擬

    把一個物理上的實體變爲若干個邏輯上的對應物。

  • 異步

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

免責聲明:本文素材來源網絡,版權歸原作者所有。如涉及作品版權問題,請與我聯繫刪除。

推薦閱讀:

幾種常見的校驗算法

微軟發佈更強的 Terminal 2.0路線圖

分享一篇專治MCU各種 HardFault 的庫

關注微信公衆號『strongerHuang』,後臺回覆“1024”查看更多內容,回覆“加羣”按規則加入技術交流羣。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章