大話操作系統(1)基本概念

December 14, 2015 1:54 PM

每一臺計算機可以看做是一個工廠,時刻運行着。爲了工廠穩定的運轉,我們需要一些明確的規章制度以及一些管理員負責確保這些規章制度有序的執行,操作系統就是在扮演這樣一個角色,確保計算機可以高效的完成我們交給它的任務。一個工廠裏邊有廠長(CPU),有負責車間的副廠長(內存管理),有負責庫房的副廠長(外存管理),有負責機器維護及使用的副廠長(設備管理),在車間,爲了提高效率,引進流水線操作(批處理),這些部分構成了操作系統的核心內容。
操作系統核心內容

  • CPU管理:處理機管理核心,CPU時間分配,即進程調度;
  • 內存管理:分配內存給不同應用和用戶
  • 外存管理:分配磁盤給不同的應用和用戶
  • 設備管理:分配硬件設備給不同的應用和用戶
  • 批處理:提供一個無需人機交互的的處理任務,達到吞吐量最大化。

工廠的運行離不開電,有時候電力有限(單個CPU),一次只能供給一個車間使用,也就是說一個車間開工的時候,其他車間必須停工,單核CPU一次只能運行一個任務或者叫進程,進程要用的所有資源集合稱爲進程空間。

進程:進展中的程序,一個動態的概念,程序的靜態的概念,進程是程序的一次執行。

但是,不同車間的生產任務都很重要,不能只讓一個車間霸佔着電力系統,這個時候解決的辦法是,每個車間供電一段時間,不通車間輪流工作(多通道編程)。

多通道編程:CPu同時輪流運行多個進程
- 提高CPU的利用率
- 改善響應時間

進程狀態:
- 執行->就緒(進程執行期間運行時間過長)
- 執行->阻塞(等待資源到達)
- 阻塞->就緒(資源就緒)
- 就緒->執行(CPU調度)

每一個車間有一個組長記錄車間的相關信息,每一個進程有一個進程控制塊(PCB),這個進程控制塊存放的就是有關該進程的信息,擺闊寄存器、狀態字、棧指針、優先級、信號、創建時間、所耗CPU時間等。
不同車間規模不一樣,對電力的需求也不一樣,電力資源的分配需要最大限度的滿足所有車間的需求(進程調度)。

進程調度:選擇下一個要執行的進程,極小化平均響應時間、極大化系統吞吐量。
- FCFS(先到先服務)
- 時間片輪轉算法(每個進程輪流執行一小段時間)
- STCF(短任務優先算法)
- 優先級算法(按照一定優先級選擇下一個執行的進程)
- 混合調度(結合上述幾個方法)

不同車間可能是一個大的生產任務的不同部分,有時候不同車間需要協商討論,然後合作完成任務。不同的進程也需要通信。車間和車間離的近可以直接對話,離的遠需要打電話,進程之間通信也有不同的方式。

  • 管道:相關進程通信或者需要知道名字。
  • 套接字:一方爲服務方,另一方爲客戶方
  • 信號:內核數據結構,一個內核對象,進程電報,發送方將數據結構填好,發出中斷請求,操作系統收到請求後查找接收方並通知接收方。
  • 共享內存:共享大量數據,安全性脆弱。
  • 消息隊列:新消息在隊尾,多個進程可以同時讀寫消息隊列。

車間裏除了機器還需要工人,不同的工人相當於不同的線程,使用Word時,實際多個線程同時工作,有的負責顯示,有的負責輸入,有的負責存盤,一起運轉。

線程模型:
- 內核態線程:線程控制塊位於內核,操作系統負責調度,簡單
- 用戶態線程:位於進程,用戶負責線程調度

同步:多個線程讀寫同一個全局變量,一個線程在讀寫期間另一個對該變量作了修改,則程序很可能出錯,甚至引發嚴重後過。同步確保程序執行的確定性,讓所有線程按照一定的規則執行,使其正確性和效率有跡可循。
車間內不同工人有時候是獨立工作的,有時候會有交集,比如使用同一臺機器,或者使用同一個房間,這時候就構成了競爭。兩個或多個線程執行多一段代碼或訪問同一資源的現象稱爲競爭。其中,可能造成競爭的共享代碼段或資源稱爲臨界區
有的地方可以容忍多個工人同時存在比如辦公室,有的地方同一時間只允許一個人存在,比如廁所。同樣,任何時刻都只有一個線程在臨界區稱爲互斥,解決辦法是用,一個人進來廁所將廁所鎖上,出去的時候將鎖打開,在臨界區的線程用鎖告訴別的線程,現在臨界區正在使用,待會再來。
一個工人佔用着廁所,那別的工人是在門口一直候着嗎?顯然不是,別的工人先去歇會,廁所裏的工人出來叫他一聲就好了。
所以線程用鎖解決了線程同步的問題,然後讓本來等待的線程先去睡覺,然後第一個線程結束後負責叫醒睡覺中的線程。
但這又會帶來死鎖問題。
第一個工人剛上完廁所,出門的一瞬間,第二個人正好扭頭走了,第一個人不知道第二個人要上廁所,第二個人認爲裏邊還有人,這樣,第二個人會一直等第一個人去叫他,但第一個人永遠不會去叫他,這種情況叫做死鎖。
這個時候,我們一想,好麻煩,上個廁所真費勁,乾脆花錢請一個看廁所的吧,這樣,有什麼事問他就知道了,這就是管程,管程使用鎖和條件變量,條件變量控制執行的順序。
有時候搬東西,需要好幾個工人一起用力,不能大家東一下,西一下的,需要按照口號同時發力。
柵欄,等待所有線程到達後開始執行,多用於並行計算。

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章