處理器管理(進程、作業、PV操作、銀行家算法)


進程的管理與調度

進程的概念

  • 定義:進程是具有獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配、調度和保護的獨立單位。
  • 創建方式系統程序模塊統一創建;由父進程創建。
  • 進程的特性:動態性、並發性、獨立性、制約性、異步性、結構性

進程和程序的區別

  • 進程更能真實第描述並非,程序不能;
  • 進程是由程序、數據和控制塊三部分組成的;
  • 程序是靜態的,進程是動態的;
  • 進程是有生命周期,有誕生有消亡,程序相對長久;
  • 一個程序可以對應多個進程,反之亦然;
  • 進程具有創建其他進程的功能,程序沒有。

進程的狀態與轉換

運行態:進程占有CPU,並在CPU上運行

就緒態:一個進程已經具備運行條件,由於無CPU暫時不能運行

等待態:因等待某種事件的發生而暫時不能運行的狀態

進程控制塊PCB

  • 進程控制塊是操作系統為了管理進程而設置的一個數據結構,用來記錄進程的外部特征,描述進程的運動變化過程。
  • PCB是系統感知進程存在的唯一標志,進程與PCB是一一對應的

通常包含如以下的信息:

  1. 進程標識符(唯一)
  2. 進程當前狀態,通常同一狀態的進程會被放到同一個隊列;
  3. 進程的程序和數據地址;
  4. 進程資源清單。列出所擁有的除CPU以外的資源記錄。
  5. 進程優先級。反應進程的緊迫程度
  6. CPU現場保護區。記錄中斷時的CPU狀態
  7. 進程隊列的PCB的鏈接字。
  8. 進程相關的其他信息。記賬用的,如占用CPU多長時間等。

 作業的調度和管理

作業的概念

作業是用戶一次計算過程中,或者一次事務處理過程中,要求計算機系統所做工作的總稱。

作業和進程的區別

  • 作業是用戶向計算機提交任務的任務實體。進程是完成用戶任務的執行實體。
  • 一個作業可由多個進程組成,且必須至少由一個進程組成。反之不成立。
  • 作業的概念主要用在批處理系統中,進程的概念用在幾乎所有的多道程序系統中。

作業調度算法

T周轉時間=結束時間-進入時間

W帶權周轉時間=周轉時間/估計運行時間

  • FCFS:先來先服務,按照作業提交的先后次序分派CPU
  • SJF:最短作業優先算法,對預計執行時間短的作業優先分派處理機,通常后來的短作業不搶先正在執行的作業(無搶占式);
  • SRTF:最短剩余時間優先算法,(搶占式SJF)如果新作業需要的CPU時間比當前正在執行的作業剩余下來還需CPU的時間短,SRTF強行趕走當前正在執行的作業
  • HRN:最高響應比優先算法,R=作業周轉時間/作業處理時間=1+作業等待時間/作業處理時間

注意:單道程序環境和多道程序環境下,作業調度算法負責分配哪一個作業優先調入內存,在內存中哪一個作業優先執行需要其他調度算法控制。

 並發進程 

進程的同步和互斥

  • 進程互斥:針對某一共享資源同時只允許一個進程對其進行訪問,對資源的使用具有唯一性和排它性,互斥並不考慮和限制對資源的訪問順序
  • 進程同步:指系統中多個進程中發生的事件存在某種時序關系,需要相互合作,共同完成一項任務(直接作用)
  • 互斥是同步的一種特例,同步已經實現了互斥。

臨界區管理

  • 系統中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源。在進程中涉及臨界資源的程序段叫做臨界區。
  • 使用臨界區的規則:①有空讓進;②無空等待;③多中擇一;④有限等待;⑤讓權等待

信號量及P、V操作

  • 信號量的定義:負責協調各個進程,以保證它們能夠正確、合理的使用公共資源。(信號量是一個數據結構)
  • 信號量的使用:信號量在使用時必須置一次且只能置一次初值,且初值不能為負數,並且只能執行P、V操作。
  • 信號量及P、V操作的物理含義:
    • S>0表示有S個資源可用;
    • S=0表示無資源可用;
    • S<0則|S|表示S等待隊列中的進程個數;
    • P(S)表示申請一個資源;
    • V(S)表示釋放一個資源
  • P、V操作必須成對出現
    • 當為互斥操作時,它們同處一個進程;
    • 當為同步操作時,則不在同一進程中出現;
    • 如果P(S1)和P(S2)兩個操作在一起,一個同步P操作與一個互斥P操作在一起時,同步P在互斥P前,V操作順序不重要。
  • 經典生產者-消費者問題(同步問題)

  • 多個生產者-消費者問題(互斥問題)

死鎖的基本概念

  • 死鎖是指多個進程互不相讓,都得不到足夠的資源;飢餓是指一個進程長時間得不到資源
  • 產生死鎖的原因:因為資源不足(根本原因);進程運行推進的順序不合適;資源分配不當等
  • 產生死鎖的四個必要條件:互斥使用(資源獨占);不可強占(不可剝奪);請求和保持(部分分配,占有申請);循環等待

死鎖的預防和避免

死鎖的預防——解決死鎖的靜態方法

  • 破壞“不可剝奪”條件;
  • 破壞“請求和保持”條件;
  • 破壞“循環等待”條件

死鎖的避免——解決死鎖的動態方法

銀行家算法n表示系統進程的個數,m表示資源類型的種類

  • 可利用資源向量available[m]——長度為m的向量,代表每種資源的現有實例的數量。
  • 最大需求矩陣max[n][m]——n*m矩陣,定義每個進程的最大需求量。
  • 分配矩陣allocation[n][m]——n*m矩陣,定義每個進程現在已經分配的各類資源的實例數量。
  • 需求矩陣need[n][m]——n*m矩陣,定義每個進程還需要的剩余的資源。

當一個進程申請使用資源的時候,銀行家算法通過先“試探”分配給該進程資源,然后通過安全性算法判斷分配后的系統是否處於安全狀態,若不安全則試探分配作廢,讓該進程繼續等待。

死鎖的檢測和解除

系統為死鎖狀態的充分條件:當且僅當“進程-資源分配圖”無法化簡(資源分配圖化簡:找一個非孤立點進程結點且只有分配邊,去掉分配邊,將其變成孤立結點;再把相應的資源分配給一個等待該資源的進程,即將某進程的申請邊變成分配邊)。

死鎖的接觸:資源剝奪法;撤銷進程法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM