3.進程控制

  • 進程管理中最基本的功能是進程控制
  • 進程控制任務:

進程的建立、終止、進程狀態的轉變等數據結構

  • 進程控制通常由OS內核來實現。

引發建立進程的事件

  • 用戶登陸
  • 做業調度
  • 提供服務
  • 應用請求

(1)(2)(3)由系統內核建立,應用請求由用戶本身建立。併發

進程的建立

  • 原語CREAT()按下述步驟建立一個新進程;

(1)申請空白PCBblog

(2)爲新進程分配資源隊列

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

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

PCB的初始化

(1)初始化標識信息資源

(2)初始化處理機狀態信息同步

(3)初始化處理機控制信息登錄

引發進程終止的事件

  • 正常結束請求

  • 異常結束

(1)越界錯誤

(2)保護錯(好比對只讀文件進行寫操做)

(3)非法指令

(4)特權指令

(5)運行超時

(6)等待超時

(7)算數運算錯

(8)I/O故障

  • 外界干擾

(1)操做員或OS干涉

(2)被父進程終止

(3)父進程終止(父進程終止,子孫進程必然也終止)

進程的終止過程

  • 從PCB集合中檢索出該進程的PCB,從中讀出該進程的狀態
  • 若處於執行狀態,終止該進程的執行,並置調度標誌爲真,從新調度。
  • 如有子孫進程,將全部子孫進程終止
  • 將進程所有資歸還其父進程或系統
  • 將其PCB從所在隊列(或鏈表)中移出

引發阻塞和喚醒的事件

  • 請求系統服務
  • 啓動某種操做
  • 新數據還沒有到
  • 無新工做可作

注意

  • BLOCKWAKEUP是一對做用相反的原語
  • 若是在某進程中調用了阻塞原語,則必須在與之相合做的另一個進程中或其餘相關的進程中,安排喚醒原語,以能喚醒阻塞進程;不然,被阻塞進程將會因不能被喚醒而長久地處於阻塞狀態,從而再無機會繼續運行。

進程的掛起

  • 掛起原語:SUSPEND()
  • 掛起原語的執行過程

檢查被掛起進程的狀態,若處於活動就緒狀態,改成靜止就緒;若處於活動阻塞狀態,則改成靜止阻塞;若正在執行,則轉向調度程序從新調度。

進程的兩種制約關係

  • 間接制約:進程間因爲共享某種系統資源,而造成的相互制約。
  • 直接制約:進程間因爲合做而造成的相互制約

進程的兩大關係

  • 互斥

互斥是併發執行的多個進程因爲競爭同一資源而產生的相互排斥的關係。

  • 同步

同步是進程間共同完成一項任務時直接發生相互做用的關係。

同步進程間具備合做關係,在執行時間上必須按必定的順序協調進行。

臨界資源

一次僅容許一個進程使用的共享資源,如:打印機、磁帶機、表格。

臨界區

在每一個進程中訪問臨界資源的那段程序。

進程必須互斥進入臨界區(即5個鏈接在同一個打印機上的打印程序,必須依次一個一個執行)

同步機制遵循的原則

(1)空閒讓進

(2)忙則等待

(3)有限等待

(4)讓權等待

信號量機制

信號量

  • 信號量是一種數據結構
  • 信號量的值與相應資源的使用狀況有關
  • 信號量的值僅由P、V操做改變
相關文章
相關標籤/搜索