1.程序包括三種狀態:就緒態、執行態和阻塞態(等待態)。
2.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程序處於非執行狀態。
單個cpu一次只能執行乙個任務。
3.執行緒就好比車間裡的工人。乙個程序可以包括多個執行緒。
4.車間的空間是工人們共享的,比如許多房間是每個工人都可以進出的。這象徵乙個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體。
可是,每間房間的大小不同,有些房間最多只能容納乙個人,比如廁所。裡面有人的時候,其他人就不能進去了。這代表乙個執行緒使用某些共享記憶體時,其他執行緒必須等它結束,才能使用這一塊記憶體。
乙個防止他人進入的簡單方法,就是門口加一把鎖。先到的人鎖上門,後到的人看到上鎖,就在門口排隊,等鎖開啟再進去。
這就叫「互斥鎖」
(mutual exclusion,縮寫 mutex),防止多個執行緒同時讀寫某一塊記憶體區域。
5.還有些房間,可以同時容納n個人,比如廚房。也就是說,如果人數大於n,多出來的人只能在外面等著。這好比某些記憶體區域,只能供給固定數目的執行緒使用。
這時的解決方法,就是在門口掛n把鑰匙。進去的人就取一把鑰匙,出來時再把鑰匙掛回原處。後到的人發現鑰匙架空了,就知道必須在門口排隊等著了。
這種做法叫做
「訊號量」
(semaphore),用來保證多個執行緒不會互相衝突。
不難看出,mutex是semaphore的一種特殊情況(n=1時)。也就是說,完全可以用後者替代前者。但是,因為mutex較為簡單,且效率高,所以在必須保證資源獨佔的情況下,還是採用這種設計。
作業系統的設計,因此可以歸結為三點:
(1)以多程序形式,允許多個任務同時執行;
(2)以多執行緒形式,允許單個任務分成不同的部分執行;
(3)提供協調機制,一方面防止程序之間和執行緒之間產生衝突,另一方面允許程序之間和執行緒之間共享資源。
作業系統入門
1 作業系統 是乙個控制程式,是乙個資源管理器 作業系統軟體的組成 shell命令列介面,鍵盤操作 gui圖形使用者介面 kernel作業系統的內部 2 作業系統特徵 併發 同時存在多個執行的程式,需要os管理和排程 共享 巨集觀 同時 訪問,微觀互斥共享 虛擬 利用多道程式設計技術,讓每個使用者都...
作業系統 入門介紹
什麼是作業系統?作業系統都有哪些功能?作業系統如何工作?在進入作業系統這些概念之前,首先有必要了解一下整個計算機系統的結構,以及作業系統和計算機系統的關係。下面將計算機系統的結構用一張圖來展現 硬體中的儲存器除了包含主存和輔存外,cpu中的暫存器也可以看成一種特殊的儲存器。硬體位於計算機系統的最內層...
Linux作業系統入門
1 linux是乙個開源的免費的作業系統。一般是部署在伺服器上。2 具有很高的安全性,穩定性非常高。3 基於命令來作業系統地特定功能,一切以檔案的形式存在。4 樹形的檔案儲存形式,根目錄為 5 系統的使用者 使用者,使用者歸屬於系統組或者是使用者組。1 ls 查詢當前目錄下所有檔案和資料夾的命令 2...