程序1、計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行
2、假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務
3、程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程序處於非執行狀態
4、乙個車間裡,可以有很多任務人。他們協同完成乙個任務。
執行緒5、執行緒就好比車間裡的工人。乙個程序可以包括多個執行緒。
6、車間的空間是工人們共享的,比如許多房間是每個工人都可以進出的。這象徵乙個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體
7、可是,每間房間的大小不同,有些房間最多只能容納乙個人,比如廁所。裡面有人的時候,其他人就不能進去了。這代表乙個執行緒使用某些共享記憶體時,其他執行緒必須等它結束,才能使用這一塊記憶體。
互斥鎖 「mutex」8、乙個防止他人進入的簡單方法,就是門口加一把鎖。先到的人鎖上門,後到的人看到上鎖,就在門口排隊,等鎖開啟再進去。這就叫"互斥鎖"(mutual exclusion,縮寫 mutex),防止多個執行緒同時讀寫某一塊記憶體區域。
訊號量 「semaphore」9、還有些房間,可以同時容納n個人,比如廚房。也就是說,如果人數大於n,多出來的人只能在外面等著。這好比某些記憶體區域,只能供給固定數目的執行緒使用。
10、這時的解決方法,就是在門口掛n把鑰匙。進去的人就取一把鑰匙,出來時再把鑰匙掛回原處。後到的人發現鑰匙架空了,就知道必須在門口排隊等著了。這種做法叫做"訊號量"(semaphore),用來保證多個執行緒不會互相衝突。
不難看出,mutex是semaphore的一種特殊情況(n=1時)。也就是說,完全可以用後者替代前者。但是,因為mutex較為簡單,且效率高,所以在必須保證資源獨佔的情況下,還是採用這種設計。
初探 作業系統之程序執行緒
2016.11.1補充 1.18 fork後,子程序繼承父程序的什麼,父 子程序區別?執行緒 引入的狀態 狀態間的轉換 核心模式到使用者模式 將當前工作目錄更改為根目錄 因為從父程序繼承過來的目錄可能在乙個掛載的檔案系統中,如果不更改為根目錄,則所掛載的檔案系統不能解除安裝 關閉不需要的檔案描述符 ...
作業系統之執行緒和程序
以下內容 於 上面的面試題可以看出,其實都是一回事,只是換了一種提問方式,只要我們能掌握核心要點,隨便面試官怎麼提問,我們都能輕鬆應對!所以我們可以說 程序 是包含 執行緒 的,執行緒 是 程序 的乙個子集。程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排...
《現代作業系統》之 程序與執行緒
作業系統中最核心的概念是程序,它是對正在執行程式的乙個抽象,包括作業系統。乙個程序就是乙個正在執行程式的例項,包括程式計數器 暫存器和變數的當前值。下圖中有四個程序,但是只有乙個物理程式計數器。在執行其中某個程式時,例如執行a程序,此時程序a的邏輯程式計數器就會被載入到物理程式計數器中。並且在實際的...