2.2進程控制與同步
一、進程控制
1、進程控制的基本過程:
1)進程的創建? 2)進程的終止? 3)進程的阻塞與喚醒? 4)進程的掛起和激活
2、系統中運行的進程并不都是孤立的,有的進程運行后,會調用其他進程來執行,這樣就組成了進程間的父子關系。
(一)進程的創建
1、一個進程創建另一進程的原因
1)用戶登錄? ?2)作業調度? ??
3)提供服務:運行中的用戶程序提出功能請求,要創建服務進程
4)應用請求:應用程序自己創建進程,完成特定功能的新進程。
2、創建過程(重點)
(1)申請空白PCB
(2)為新進程分配資源:內存資源的處理
(3)初始化進程控制塊:信息填寫
(4)將新進程插入就緒隊列
注:上述過程不可以被打斷!!
(二)進程的終止
1、引起進程終止的事件
1)正常結束? ?2)異常結束? ?3)外界干預
2、終止過程
(1)根據進程標示符,檢索出該進程PCB,讀其狀態。
? ? ?如果是執行態,就立即終止并置調度標志為真,指示重新進行調度。??
? ? ?如果有子孫程序,也要終止以防成為不可控進程。
(2)歸還全部資源至其父進程或系統。
(3)將該進程PCB從所在隊列或鏈表中移出。
(三)進程的阻塞與喚醒
1、引起進程阻塞和喚醒的事件
1)請求系統服務的滿足情況
2)啟動某種需等待(I/O)操作
3)合作需要的新數據尚未到達
4)執行某功能的進程暫時無新工作可做(如發送數據進程)
2、阻塞和喚醒過程
阻塞:
由進程調用阻塞原語阻塞自己是主動行為。
1)將PCB中的狀態改為阻塞
2)該PCB加入到阻塞隊列中
3)轉進程調度,將處理機分配給另一進程
4)進行進程切換,即根據兩切換進程的PCB,保護與重新設置處理機狀態。
喚醒:
1)把阻塞進程從等待該事件的阻塞隊列中移出
2)將其PCB中的現行狀態改為就緒
3)將PCB插入到就緒隊列中。
(四)進程的掛起與激活
1、掛起:
掛起原語將指定進程或阻塞進程掛起。
1)檢查被掛起進程狀態,活動就緒則改為靜止就緒,活動阻塞則改為靜止阻塞
2)將該PCB復制到內外存指定區域
3)若掛起的進程是執行態,則需重新進行進程調度。
注:進程只能掛起自己或其子孫進程。
2、激活:
1)若掛起進程在外存上,將其調入內存
2)檢查進程狀態,若處于靜止就緒,則改為活動就緒,若處于靜止阻塞,則改為活動阻塞
二、進程同步
1、兩種制約關系
1)間接相互制約關系:主要源于資源共享(互斥)
2)直接相互制約關系:主要源于進程合作(有序)
2、進程同步的任務:
使并發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。
3、臨界資源:
1)一次僅允許一個進程使用的資源。
2)共享變量應按臨界資源處理,一個進程還沒用完畢前不能讓其他進程使用。
4、生產者—消費者問題:
1)沒有產品不能取,沒有空間不能放。也不能同時對一個空間進行取和放
2)緩沖池組織為循環緩沖
?in加1表示為in:=(in+1)mod n? ? ? ? ? ? ? ? ? ?out加1表示為out:=(out+1)mod n
?當(in+1)mod n=out時表示緩沖池滿? ? ? ??in=out表示緩沖池空
3)若是一群生產者和消費者,生產者之間共同要影響的變量in要互斥;消費者間的out也一樣;
5、互斥:
在操作系統中,當一個進程進入臨界區使用臨界資源時,另一個進程必須等待,直到占用臨界資源的進程退出臨界區,我們稱進程之間的這種相互制約關系為“互斥”。
同步:
多個相互合作的進程,在一些關鍵點上可能需要互相等待或互相交換信息,這種相互制約關系稱為進程同步關系。可理解為“有序”。
6、臨界區
1)每個進程中訪問臨界資源的那段代碼叫臨界區。
2)為了正確同步,對臨界區的代碼要增加控制
3)進程代碼分四部分:
repeat
entry? section? 進入區:對欲訪問臨界資源檢驗。若未被訪問,設正在訪問標志
critical? section? ? ? ? ? ?臨界區:訪問臨界資源的代碼
exit? ?section? ? ? ? ? ? ? ? ?退出區:將正在訪問的標志恢復為未被訪問的標志
remainder???section? ? ? 剩余區:其余部分
until?? false
7、同步機制應遵循的規則
1)空閑讓進:資源使用最基本原則
2)忙則等待:保證互斥
3)有限等待:合適時被喚醒防止死等
4)讓權等待:能主動釋放CPU防止忙等
8、實現互斥的方法:
先修改、后檢查、后修改者等待
Repeat
flag[i]=true;? turn=j;
While(flag[j] and turn=j)??do no-op;
操作R的代碼
flag[i]=false;
??? …(其他操作)
Until
false
9、同步控制的關鍵
1)不被打斷的進行標志值的判斷和修改
2)制定一種寫法,使標志的使用適用于各種具體應用情況