操作系統學習筆記(4)——進程的控制與調度

一、進程執行(切換)

進程模式切換:一個進程從用戶態,在系統調用和中斷時轉換到核心態運行系統核心程序(還是同一個進程,只是從用戶態—>核心態

進程切換:進程進入操作系統核心後因爲自身等事件或有更迫切需要運行的進程就緒而讓出處理機,處理機轉去運行其他程序

模式切換過程:

  • 保護處理機現場,包括保護包含原程序計數器值的處理機狀態字,各種其他寄存器,如有用戶棧的指針
  • 將處理機模式轉換成核心態,以便以後執行的程序可以運行特權指令
  • 根據中斷級別設置中斷屏蔽。一般情況下,如果發生了某一級中斷,則要屏蔽該級及以下級別的中斷,轉中斷處理程序
進程切換過程:
  • 保存處理機的上下文,包括程序計數器PC、處理機狀態字PS、其他寄存器
  • 修改當前運行進程的PCB內容,包括將進程狀態從運行態改成其他狀態(等待狀態/就緒狀態)
  • 選擇另一個進程(按照調度算法)
  • 修改被調度進程的PCB內容,包括把其他狀態改變到運行態
  • 恢復被選現場(上一次切換出處理機時)的處理機現場,按原保護的程序計數器值重置程序計數器PC,運行新選進程

二、進程調度



進程的兩種調度方式      

引起進程調度的的三大情況:

1、當進程主動放棄處理機時:原來的進程主動放棄了處理機,選擇申請‘調度’來選擇另外的合適進程

  • 正在執行的進程執行完畢:操作系統在處理“進程結束”系統調用後影請求重新調度
  • 正在執行的進程出I/O請求:當操作系統內核驅動啓動外設I/O後,在I/O請求沒有完成前要講進程變成阻塞狀態,應該請求重新調度
  • 正在執行的進程要等待其他進程或系統發出的時間時:如等待另一個進程通訊數據,這時操作系統應將現運行進程掛到等待隊列,並且請求重新調度
  • 正在執行的進程暫時得不到所要的系統資源:如要求獨佔資源卻被其他進程佔用,這時等待的進程應阻塞到等待隊列上,並且請求重新調度

2、當有新進程就緒時:爲了支持可剝奪的調度方式,這時要申請‘調度’才能剝奪老進程

  • 當中斷處理程序處理完中斷,如I/O中斷引起某個阻塞進程變成就緒狀態時,應申請重新調度
  • 當進程釋放獨佔資源,引起其他等待該資源進程從阻塞狀態進入就緒狀態時,應該申請重新調度
  • 當某進程發“發送消息”系統調用,導致等待該消息的進程就緒時
  • 其他任何原因引起有進程從其他狀態變成就緒狀態,如進程被中級調度選中時

3、爲了支持可剝奪的調度方式,即使沒有新就緒進程,爲了讓所有就緒進程輪流佔用處理機,也可選擇申請‘調度’

  • 當時鍾中斷髮生,時鐘中斷處理程序調用有關時間片的處理程序,發現正運行進程的時間片到,應請求重新調度,以便讓其他進程佔用處理機
  • 在按進程優先級進行調度的操作系統中,任何原因引起進程的優先級發生變化時,應請求重新調度。如進程通過系統調用自願改變優先級時或系統處理時鐘中斷時,根據各進程等待處理機的時間長短而調整進程的優先級
 
進程調度和切換的時機



三、進程調度算法
選擇調度算法的原則:高資源利用率、高吞吐量(單位時間內運行完的進程越多越好)、用戶滿意

1、先來先服務調度算法(FCFS):誰先到就緒隊列就將處理機分給誰。
特點:都很公平,等待時間可以估計;
            並非公平,平均進程等待時間增加;
            不可剝奪算法,不適合實時處理;
            有利於長進程,不利於短進程。

2、短進程優先算法(SPF):取一個下次所需運行時間最短的進程(該算法能使平均等待時間最短)。
特點:
        非剝奪的調度,不適合實時系統;
        進程運行時間難以估計;等待運行時間難以估計,出現“餓死”現象(長進程一直等待但得不到處理機)。

3、最高響應比優先法:響應比R=(W+T)/T=1+W/T(W爲等待時間、T爲下次所需運行時間)
特點:
        T越小優先級越高(類似短進程優先算法),但還有W等待時間因素,就克服了短進程優先算法中長進程得不到調度的情況;
        非剝奪調度,響應比高者優先。

4、優先級調度算法:選優先級最高的進程佔用處理機(優先級可動態改變)。
有兩種方法:
         非剝奪的優先級調度;
         可剝奪的優先級調度,如UNIX系統。
特點:
          根據優先級進行調度,適合實時處理;
          可能出現餓死現象(優先級低的進程一直得不到處理機)。

5、最短剩餘時間優先調度:讓進程運行到完成時所需要的運行時間最短的進程優先得到處理。
特點:
        用於分時系統,保證及時響應用戶的要求;
        系統開銷大,可剝奪的調度。

6、時間片輪轉算法:
原理:將處理機時間劃分成若干的時間片,以時間片爲單位,進程依次輪流(即按先來先服務的原則)使用處理機一個時間片。
用途:算法多用於進程調度,以提高進程的併發性,縮短每一個進程的響應時間,以提高系統的資源利用率。
特點:適合分時系統,剝奪調度。
時間片的大小選取考慮的因素:
         ⑴  系統對響應時間的要求。
               計算公式:T=N·q(T表示響應時間,N表示用戶進程數,q表示時間片大小)
         ⑵  就緒隊列中進程的數目。
         ⑶ 系統的處理能力:用戶鍵入的命令能在一個時間片內處理完畢或者略大於大多數進程從計算到I/O的時間間隔。
時間片越大,越接近FCFS調度算法;時間片越小,帶權週轉時間越平均

7、多級反饋隊列調度法:
      


=======幾個時間的概念======
1)週轉時間:進程從創建到結束運行所經歷的時間(如果用時間軸表示,就是一個進程完成時在時間軸上的那個點的時間)
                           週轉時間=完成時間 — 到達時間
2)平均週轉時間:n 個進程的週轉時間的平均值;
3)帶權週轉時間:進程的週轉時間與系統爲其服務時間之比。
                                  帶權週轉時間=(週轉時間)/(服務時間)
4)等待時間:指進程處於等待處理機狀態時間之和。
                           等待時間=週轉時間 — 服務時間(運行時間)
5)平均等待時間:n個進程的等待時間的平均值。
6)運行時間/服務時間:進程要完成所需要佔用處理機的時間

======從兩道道例題來理解=======
例題一:
          
首先,根據分析題目,可以等到如下表格:
             
< 時間輪轉算法(已知時間片爲2)>
如圖畫的時間軸所示,時間片輪轉算法按照進程在就緒隊列中的順序依次運行;對於運行時間>2的進程,按照時間片只能夠運行2單位時間,還沒運行完的部分則繼續排隊但要讓出處理機;對於運行時間<=2的進程,則運行其對應的時間,並完成整個運行過程。

           

                            

< SPF短進程優先算法 >
如圖時間軸所示,按照短進程優先調度的原則,運行時間短的進程先運行。
                      
                                     
< 非剝奪優先級算法 >
如圖時間軸所示,根據非剝奪優先級算法,優先級高(數值大)的進程先調度運行,同等優先級的則優先調度在就緒隊列中次序靠前的進程。
                
                           


例題二:             

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章