計算機操作系統基礎筆記2
1 人贊了文章
程序並發執行時的特徵:
1、間斷性
程序並發執行時,由於它們共享系統資源,以及為完成同一項任務而相互合作,致使在這些並發執行的程序之間形成了互相制約的關係:並發程序具有「執行--暫停--執行」的間斷性的活動規律。
2、失去封閉性
當系統中存在著多個可以並發執行的程序時,系統中的各種資源將為他們共享,而這些資源的狀態也由這些程序來改變,致使其中任一程序在運行時,其他環境都必然受到其他程序的影響。
3、不可再現性
兩個循環程序A和B,它們共享一個變數N。
程序A每執行一次時,都要做N=N+1操作;
程序B每執行一次時,都要做執行Print(N)操作,之後執行N=0操作;
A、B以不同的速度運行,則可能出現下述3種情況(假設某時刻變數N的值為n)
n+1,n+1,0
n,n+1,0
n,0,n+1
進程的三種基本狀態:
(1)就緒狀態:進程已獲得除CPU外的所有必要資源,只等待CPU時的狀態。一個系統會將多個處於就緒狀態的進程排成一個就緒隊列。
(2)執行狀態:進程已獲CPU,正在執行。單處理機系統中,處於執行狀態的進程只一個;多處理機系統中,有多個處於執行狀態的進程。
(3)阻塞狀態:正在執行的進程由於某種原因而暫時無法繼續執行,便放棄處理機而處於暫停狀態,即進程執行受阻。(這種狀態又稱等待狀態或封鎖狀態)
通常導致進程阻塞的典型事件有:請求I/O,申請緩衝空間等。
哲學家進餐問題:
有五個哲學家,他們的生活方式是交替地進行思考和進餐。他們共用一張圓桌,分別坐在五張椅子上。
在圓桌上有五個碗和五支筷子,平時一個哲學家進行思考,飢餓時便試圖取用其左、右最靠近他的筷子,只有在他拿到兩支筷子時才能進餐。進餐完畢,放下筷子又繼續思考。
1.至多只允許四個哲學家同時進餐,以保證至少有一個哲學家能夠進餐,最終總會釋放出他所使用過的兩支筷子,從而可使更多的哲學家進餐。
2.通過互斥信號量 mutex 對 eat() 之前取左側和右側筷子的操作進行保護,可以防止死鎖的出現。
推薦閱讀: