第2章 2-2進程控制與同步

進程控制的基本過程:

????????????????進程的創建

????????????????進程的終止

????????????????進程的阻塞與喚醒

????????????????進程的掛起和激活

關于進程的親屬關系

????????系統中運行的進程并不都是孤立的,有的進程運行后,會調用其他進程來執行,這樣就組成了進程間的父子關系。

????????可用 “進程圖”描述一個進程的家族關系,該圖實際就是一種有向樹。


* 感受進程及進程樹

1.“運行”——輸入“cmd”,啟動命令行控制臺

2.在cmd窗口輸入“notepad”啟動記事本。

3.現在進程“cmd.exe”和進程“notepad.exe”就組成了一個進程樹,后者為子進程,前者為父進程。

4.用“任務管理器”在“進程”頁,右擊cmd.exe選擇“結束進程樹”。則記事本子進程也會結束。

????????一些木馬服務端程序運行后會同時生成兩個木馬進程,這兩個進程互相監控、互相保護。對此類木馬,我們就可以分別對兩個木馬進程嘗試使用“結束進程樹”命令。


*還可用ProcessExplorerNt查看進程的父子關系

進程間的父子關系關系著資源的繼承。創建和撤銷進程時,其父、子進程要相應的被影響。

1.進程的創建

1)一個進程創建另一進程的事件(原因)

????????????????用戶登錄:分時情況下用戶的請求

????????????????作業調度:批處理中

????????????????提供服務:運行中的用戶程序提出功能請求,要創建服務進程(如打印服務)

????????????????應用請求:應用程序自己創建進程,完成特定功能的新進程。(木馬程序)

2)創建過程(重點)

????????????????(1) 申請空白PCB

????????????????(2) 為新進程分配資源

????????????????????????????主要是內存資源的處理

????????????????(3) 初始化進程控制塊

????????????????????????????標識符(包括父進程的)、程序計數器指向程序入口地址,就緒態、優先級等信息的填寫。

????????????????(4) 將新進程插入就緒隊列

上述過程很關鍵,不能被打斷!!!

原語是由若干指令構成的原子操作過程,作為整體實現功能,不可被打斷。

????????????????OS通過調用進程創建原語Creat()創建新進程。

????????????????其他各控制工作也都是由OS內核以“原語”的方式實現,以保證不被打斷。

2.進程的終止

1)引起進程終止的事件

????????????正常結束

????????????異常結束

????????????????????內存越界錯誤

????????????????????保護錯(權限錯,如修改只讀文件等)

????????????????????非法指令(不存在的指令,程序異常轉向而把數據當指令)

????????????????????特權指令錯(用戶態程序試圖執行只有OS可執行的指令)

????????????????????運行超時、運算錯、i/o故障等

? ??????????外界干預

????????????????????操作員或操作系統干預(死鎖時,可人為結束)

????????????????????父進程請求終止子進程

????????????????????父進程終止,子孫進程也跟著終止

2)終止過程

對上述事件,OS調用內核終止原語,執行下列過程:

????????????????(1) 根據進程標示符,檢索出該進程PCB,讀其狀態。

????????????????????????????*IF 執行態,立即終止該進程,置調度標志為真,指示重新進行調度。

????????????????????????????*IF 有子孫進程,亦應予以終止,以防成為不可控進程。

????????????????(2) 歸還全部資源至其父進程或系統。

????????????????(3) 將該進程PCB從所在隊列或鏈表中移出。

3.進程的阻塞與喚醒

1)引起進程阻塞和喚醒的事件

????????????????請求系統服務的滿足情況

????????????????啟動某種需等待(I/O)操作

????????????????合作需要的新數據尚未到達

? ? ? ? ? ? ? ? 執行某功能的進程暫時無新工作可做(如發送數據進程)

2)阻塞和喚醒過程

由進程調用阻塞原語阻塞自己,是主動行為:

????????????????(1)將PCB中的狀態改為阻塞

????????????????(2)該PCB加入到阻塞隊列中

????????????????(3)轉進程調度,將處理機分配給另一進程

????????????????(4)進行進程切換,即根據兩切換進程的PCB,保護與重新設置處理機狀態。

阻塞與喚醒原語作用相反,成對使用

????????????阻塞進程等待的事件發生時,有關進程(如放棄該資源的進程)調用喚醒原語把等待該事件的進程喚醒。

????????????????????????(1)把阻塞進程從等待該事件的阻塞隊列中移出

????????????????????????(2)將其PCB中的現行狀態改為就緒

????????????????????????(3)將PCB插入到就緒隊列中。

4.進程的掛起與激活

掛起原語將指定進程或阻塞進程掛起。

????????????????(1)檢查被掛起進程的狀態,活動就緒則改為靜止就緒,活動阻塞則改為靜止阻塞

????????????????(2)將該PCB復制到內存(方便檢查)/外存(對換)指定區域

????????????????(3)*若掛起的進程是執行態,則需重新進行進程調度。

注意:進程只能掛起自己或其子孫進程。

? ??????激活原語的執行過程

????????????????????????????若掛起進程在外存上,將其調入內存

????????????????????????????檢查進程狀態,若處于靜止就緒,則改為活動就緒,若處于靜止阻塞,則改為活動阻塞

* 關于調度

????????????????進程控制中,狀態轉換和調度密切相關。

????????????????運行態進程的改變必然產生調度行為

????????????????只要產生新就緒態進程,就需考慮調度策略

????????????????????????????只要是采用搶占式調度,要檢查新就緒進程是否可搶占CPU,引起新的調度。


進程間有什么相互影響?

兩種制約關系:

? ? ? ? ? ? ? ? 1.間接相互制約關系:主要源于資源共享,表現為

????????????????????????????進程A---打印機資源---進程B(互斥)

????????????????2.直接相互制約關系:主要源于進程合作,表現為

????????????????????????????進程A寫緩沖---進程B讀緩沖(有序)

1.進程同步的基本概念

1)進程同步的主要任務:

????????????????使并發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。

2)臨界資源

一次僅允許一個進程使用的資源。

????????????????例1:兩個進程A、B,它們共享一個變量x,他們共同使x值增長。







????????????????所以對生產者和消費者而言,counter應作為臨界資源,應對其互斥訪問

????????????????若是一群生產者和消費者

? ??????生產者之間共同要影響的變量in要互斥;消費者間的out也一樣;

理解同步


3)臨界區

每個進程中訪問臨界資源的那段代碼叫臨界區。

為了正確同步,對臨界區的代碼要增加控制

進入區:對欲訪問的臨界資源進行檢。若此刻未被訪問,設正在訪問的標志

臨界區:訪問臨界資源的代碼。

退出區:將正在訪問的標志恢復為未被訪問的標志

剩余區:其余部分


4)同步機制應遵循的規則

實現互斥的方法應符合如下每條原則

????????????????空閑讓進:資源使用最基本原則

????????????????忙則等待:保證互斥

????????????????有限等待:合適時被喚醒防止死等

? ? ? ? ? ? ? ? 讓權等待:能主動釋放CPU防止忙等

同步控制的關鍵

主要涉及”判斷”和”修改標志”操作

????????????????不應被打斷(原語,OS核心態運行)

硬件同步機制

????????????????許多計算機提供一些特殊的硬件指令,允許對一個字中的內容進行檢測和修正,或對兩個字的內容進行交換。利用這些特殊指令解決臨界區問題。

????????????????進入臨界區往往跟其標志有關,可將標志看做一個鎖,“鎖開”進入并關鎖,“鎖關”必須等待,初始時鎖是打開的。

①關中斷

????????????進入鎖測試前關閉中斷,直到完成鎖測試并上鎖后才能打開中斷。進程在臨界區執行期間,系統不響應中斷,從而不引發調度。

缺點

????????????????濫用風險

????????????????關中斷時間過長會影響效率,限制CPU交叉執行能力

????????????????不適用于多CPU系統

②Test-and-Set指令


③利用Swap指令實現進程互斥


????????????????完全利用軟件方法,有很大局限性,也不適于多進程,現在已很少采用。

????????????????硬件指令機械操作可保證鎖開、關操作不被打斷;適用于任意數目的進程。但等待要耗費CPU時間,不能實現“讓權等待”,從等待進程中隨機選擇一個進入臨界區,有的進程可能一直選不上,難以實現較為復雜的進程同步問題。

2.信號量機制

荷蘭科學家Dijkstra(狄克斯特拉)提出的一種卓有成效的進程同步機制。


Edsger Wybe Dijkstra (1930.5~2002.8)

1) 整型信號量

最初的信號量機制,兩個原子操作對一個共享整型量進行操作。

????????????????信號量定義為一個整型量;

????????????????根據初始情況賦相應的值;

????????????????僅能通過兩個原子操作來訪問。


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評論 6 545
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,795評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,943評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,057評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,773評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,106評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,282評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,793評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,507評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,741評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,929評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,325評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,661評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,482評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,702評論 2 380

推薦閱讀更多精彩內容