1. 程式人生 > >作業系統原理第五章(資源分配與排程)

作業系統原理第五章(資源分配與排程)

一、資源管理  

           1.資源的動態分配:程序所需的資源是在程序執行中根據執行情況動態的分配、使用和釋放的。

                        靜態分配:批處理作業系統中,對作業一級採用資源靜態分配方法。作業所需要的資源是在排程到這個作業的時候,根據使用者給出的資訊進行分配,並在做作業執行完畢後釋放所獲得的的全部資源。

          2.資源管理任務:

              對資源資料結構的描述;確定資源的分配原則和排程原則;執行資源分配;存取控制和安全保護

          3.資源的分類:

              物理資源和程式資源;

              單一訪問入口資源(一次只能為一個程序所用)/多訪問入口資源(可同時為多個程序所共享)

              等同資源:在某些條件下,申請者申請資源時,無論給它分配哪一個具體裝置,對它而言都是等效的。

              虛擬資源

二、資源分配機制

          1.資源描述器:描述各類資源的最小分配單位的資料結構(RD),如主儲存器的主存塊,磁碟的扇區 

           2.資源資訊塊(rib):說明資源、請求者及實施分配所需的必要資訊的資料結構

                    

三、資源分配策略

       1.實施分配的時機:

                   當請求者發出一個明確地資源請求命令;                            當處理機空閒的時候;

                   當儲存區被釋放變為空閒的時候;                     當一個外部裝置發生完成中斷時;

          分配程式選擇一個請求的的策略:

                   按照請求來到的先後次序進行檢視;                將程序請求者的優先順序結合到每一個請求中;

                   滿足能更合理應用這個資源的請求

           先請求先服務(FIFO)           優先排程

           針對裝置特性的排程:

                        移臂排程:在滿足一個磁碟的請求時,總是選取與當前移動臂前進方向上最近的那個情求,使移臂距離最短

                         旋轉排程:在滿足一個磁碟請求時,總是選取與當前讀寫頭旋轉方向最近的那個情求,使旋轉圈數最少

四、死鎖

1.死鎖:在兩個或多個併發程序中,如果每種程序持有某種資源而又都等待著別的程序釋放它或它們現在保持的資源,在未改變這種狀態之前都不能向前推進,稱這一組程序產生了死鎖。

                 同類資源的死鎖     ;    非同類資源的死鎖

        2.產生死鎖的原因及必要條件  

                  根本原因:系統能夠提供的資源個數少於要求該資源的程序數

                  原因:系統資源不足;程序推進順序非法

                  必要條件:互斥條件;不剝奪條件;佔有並等待;環路條件 

        3.解決死鎖問題的策略

              預防死鎖:通過設定某些限制條件,破壞死鎖四個必要條件之一(多),來防止死鎖

                              破壞互斥條件(難)         破壞不剝奪條件(代價大)

                              破壞部分分配條件(預先靜態分配)

                               破壞環路條件(有序資源分配)

                    較容易實現,但由於限制太嚴格,導致資源利用率和吞吐率降低

               避免死鎖:在資源的動態分配過程中,用某種方法防止程序進入不安全狀態,從而避免死鎖的進入。

                     較難實現,只需較弱的限制,就可獲得較高的資源利用率和吞吐率

               檢測和恢復死鎖:允許死鎖發生,但可通過檢測機制及時檢測出死鎖狀態,並精確確定與死鎖有關的程序和資源,然後採用使用措施,將系統中的死鎖清除,將程序從死鎖狀態中解脫出來。

                          檢測方法:難

                         恢復方法:   常用的方法是撤銷或掛起一些程序,以回收一些資源,再將它們分配給處於阻塞狀態的程序,使之轉化為就緒狀態

                    實現難度大,但可獲得較高的資源利用率和系統吞吐量

          4.預防死鎖:

                    靜態預防:預先分配所有共享資源

                               改進:將資源的分配單位由程序改為程式步

                    動態預防:採用資源的動態分配

              避免死鎖:

                     有序資源分配法:系統中所有資源都給定一個唯一的編號,所有分配請求必須以上升的次序進行。要求程式:

                               對它所必須使用的屬於某一類的所有資源必須一次申請完成;

                               在申請不同類的資源時,必須安各類編號一次申請

                       銀行家演算法