日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

《现代操作系统》读书笔记之——进程调度(二)

發布時間:2023/12/18 windows 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《现代操作系统》读书笔记之——进程调度(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? 7.交互系統的調度算法
  • 時間片輪轉調度算法(Round-Robin Scheduling)
? ? 時間片輪換調度算法是最古老、最簡單、最公平并且使用最廣泛的調度算法之一。每個進程被分配一段時間間隔,叫做時間片(quantum)。進程在這個時間間隔內允許運行,如果時間片用完了,那么CPU將會被搶占并且分給別的進程。如果在時間片結束之前,進程阻塞或者是結束了,那么CPU也會被分配給別的進程。調度器需要做的,就是要維護一個可運行程序的列表。如下圖a所示。當一個進程的時間片結束了,那么這個進程會被放到這個列表的尾部,如圖b所示。

對于這種調度算法來說,一個比較重要的議題是時間片的長度設置為多少比較合理。從一個進程切換到另外一個進程是需要花費一定的管理時間的,比如保存或者加載寄存器和內存映射,更新一系列的列表,刷新內存緩存等等,假設這部分時間花費1ms,而一個時間片是4ms,那么沒進行4ms的時間計算之后還需要花1ms時間來進行進程切換,那么20%的CPU時間被浪費了。很顯然,這種代價太高了。 ? ? 現在假設時間片是100ms,而同時又50個交互用戶在終端前等待計算機的響應。假設他們幾乎是同時輸好命令,并且按下enter鍵,這樣就形成了50個進程,并且調度器將這50個進程放進在一個就緒進程的列表里,然后第一個運行100ms,花1ms切換,以此類推,那么第50個用戶就倒霉了,5m多之后才得到響應。 ? ? 另外一個問題是,假設時間片的時間設置得長于CPU突發事件(CPU burst),那么幾乎不會出現搶占。而大部分進程在在時間片用完之前就發生阻塞,這樣就又導致進程切換。 ? ? 總結一下這個問題就是四個字:過猶不及。時間片不能太長也不能太短,一般來說大概30~50ms就好。
  • 優先級調度算法(Priority Scheduling) ? ?
? ? 前一種調度算法,默認是認為所有的進程具有相同的優先級。但是對于很多多用戶的計算機的管理者并不這么認為。比如大學,社會等級可能是,校長第一,其次教授,再者秘書,再次是門衛,最后是學生。像這種,需要將外部因素考慮進來就導致了優先級調度。這種算法的基本思路是非常直接的:給每個進程賦予一個優先級,優先級最高的就緒進程才被挑選運行。 ? ? 即使只有一個用戶的PC機,各種進程的優先級也是不同的。比如一個在后臺發電子郵件的進程的優先級肯定地獄前臺播放視頻的播放器進程的優先級要低。 ? ? 為了阻止高優先級的進程一直運行下去,調度器需要在每個時鐘中斷的時候降低當前運行進程的優先級。如果這時候該進程的由優先級已經低于其他進程中優先級最高的進程,那么就會發生進程切換。另一種方法是,每個進程會被設置一個最長運行時間,如果超過這個時間,第二高優先級就會開始運行。 ? ? 進程的優先級可以靜態設置或者動態的設置。在商業計算中心,高優先級的進程可能收費$100每小時,中等優先級$75每小時,而低優先級的$50每小時。很有趣的是,UNIX系統中有個nice命令,用戶使用它來自愿讓出自己的CPU時間,以便對他人更加友好,但是沒人用這個命令。 ? ? 進程優先級有時候也會被動態的賦予來實現某些特定的系統目標。例如,對于I/O傾向的進程,只有它請求CPU就盡量滿足他,然后讓它開始下一個I/O請求,這樣,在它進行I/O操作的時候就可以讓其他的進程進行實際的計算。不然的話,I/O傾向的進程總是花時間在請求CPU,并且占著內存。一個簡單的給I/O傾向的進程提供優質服務的算法是給它的優先級設置為1/f,其中f指的是這個進程在上一個時間片中實際使用時間與時間片長度的比例。假設時間片是50ms,這個進程上個周期使用了1ms,那么1/f=1/(1/50)=50。如果他使用了25ms,那么優先級1/f=1/(25/50)=2。 ? ? 通常來說,將相同優先級的進程組合到一組中,然后組間采用優先級調度算法,而組內采用時間片輪換算法。下圖顯示了一個四組優先級的系統:

其調度算法如下:只要優先級4中有可運行進程,則給每個進程運行一個時間片,不需擔心低優先級組中的進程。如果優先級4這一組已經沒進城的話,則開始運行進程組3,以此類推。
  • 多級隊列調度(Multiple Queues) ? ?
? ? 最早的優先級調度器出現在MIT的CTSS系統,是一個運行在IBM 7094機型上的分時系統。CTSS有個問題是,它的進程切換是很慢的,因為7094只能在內存中存儲一個進程。每一次進程切換意味著將內存中的進程交換到硬盤,然后從硬盤中讀取一個新的進入內存。于是CTSS系統的設計者很快反應過來,給CPU傾向的進程更長的時間片,這樣減小交換。但是給所有進程更大的時間片意味著降低系統的響應時間,他們的解決方案就是設置優先級級別。最高級級別的進程運行一個時間片,次高級級別的進程運行兩個時間片,再次高級 級別的進程運行四個時間片。當一個進程用完分配給他的時間片,那么它會被降低一個別中去。
??? 對于有些進程,開始運行了一段長時間,但是隨后需要編程交互式的進程,那么可以采用下面的措施來防止它一直被懲罰:只要終端上有回車鍵(Enter鍵)按下,則屬于該終端的所有進程就都被移到最高優先級。但是這樣又會出現問題:假設一臺機器上的某個用戶發現了這個規律(只要沒幾秒敲一下回車,就可以大大提高響應時間),那么他很可能告訴所有的朋友。后果會怎樣呢?所以說,理論上合理離實際上可行還有一段很長的距離。 ? ? 還有一些其他的算法用來給進程分配一定的優先級類別。比如,伯克利制造的比較有影響力的XDS940系統就有四個優先級類別:終端、I/O、短時間片和長時間片。當一個一直等待終端輸入的進程最終被喚醒時,它被轉到最高優先級類(終端)。當等待磁盤塊數據的一個進程就緒時,將它轉到第2類。當進程在時間片用完時仍為就緒時,它一般被放入第3類。但如果一個進程已經多次用完時間片而從未因終端或其他I/O原因阻塞,那么它將被轉入最低優先級類。
  • 最短進程優先(Shortest Process Next) ? ?
??? 由于最短作業優先算法能夠使平均最短響應時間降到最低,因此,如果這個算法在交互式系統中也能被應用的話也是很不錯的。某種程度來說,確實是可以的。交互進程一般都遵守下面的模式:等待命令輸入,執行命令,等待命令輸入,執行命令......如果我們將每個需要執行的命令看作是一個"作業",那么可以通過優先選取最短的那個命令運行來降低平均響應時間。問題就在于怎么判定哪個進程是最短的呢。 ? ??一種方法是根據以往的經驗作出估計,然后挑選最短的那個。假設某個終端上每條命令的估計運行時間為T0?,F在假設測量到其下一次運行時間為T1。可以用這兩個值的加權和來改進估計時間,即aT0 + (1-a)T1。通過選擇a的值,可以決定是盡快忘掉老的運行時間,還是在一段長時間內始終記住它們。當a = 1/2時,可以得到如下序列:

T0,T0/2 + T1/2,T0/4 + T1/4 + T2/2, T0/8 + T1/8 + T2/4 + T3/2??梢钥吹?#xff0c;在三輪過后,T0在新的估計值中所占的比重下降到1/8。有時把這種通過當前測量值和先前估計值進行加權平均而得到下一個估計值的技術稱作老化(aging)。老化技術在很多需要根據以前的值進行預測的情況下都是適用的。當a取1/2時,老化技術非常好實現。這一點很顯然。

  • 保證性調度(Guaranteed Scheduling) ? ?

? ??一種完全不同的調度算法是向用戶作出明確的性能保證,然后去實現它。一種很實際并很容易實現的保證是:若用戶工作時有n個用戶登錄,則用戶將獲得CPU處理能力的1/n。類似地,在一個有n個進程運行的單用戶系統中,若所有的進程都等價,則每個進程將獲得1/n的CPU時間。同樣的道理,為了實現所做的保證,系統必須跟蹤各個進程自創建以來已使用了多少CPU時間。然后它計算各個進程應獲得的CPU時間,即自創建以來的時間除以n。由于各個進程實際獲得的CPU時間是已知的,所以很容易計算出真正獲得的CPU時間和應獲得的CPU時間之比。比率為0.5說明一個進程只獲得了應得時間的一半,而比率為2.0則說明它獲得了應得時間的2倍。于是該算法隨后轉向比率最低的進程,直到該進程的比率超過它的最接近競爭者為止。

  • 彩票調度(Lotterry Scheduling) ? ?
? ? 給用戶一個保證,然后兌現之,這是個好想法,不過很難實現。但是,有一個既可給出類似預測結果而又有非常簡單的實現方法的算法,這個算法稱為彩票調度(lottery scheduling)。其基本思想是向進程提供各種系統資源(如CPU時間)的彩票。一旦需要做出一項調度決策時,就隨機抽出一張彩票,擁有該彩票的進程獲得該資源。在應用到CPU調度時,系統可以掌握每秒鐘50次的一種彩票,作為獎勵每個獲獎者可以得到20ms的CPU時間。 ? ??為了說明George Orwell關于“所有進程是平等的,但是某些進程更平等一些”的含義,可以給更重要的進程額外的彩票,以便增加它們獲勝的機會。如果出售了100張彩票,而有一個進程持有其中的20張,那么在每一次抽獎中該進程就有20%的取勝機會。在較長的運行中,該進程會得到20%的CPU。相反,對于優先級調度程序,很難說明擁有優先級40究竟是什么意思,而這里的規則很清楚:擁有彩票f份額的進程大約得到系統資源的f 份額。 ? ??彩票調度具有若干有趣的性質。例如,如果有一個新的進程出現并得到一些彩票,那么在下一次的抽獎中,該進程會有同它持有彩票數量成比例的機會贏得獎勵。換句話說,彩票調度是反應迅速的。 ? ??寫作進程之間可以交換彩票。一個客戶進程向服務器進程發送消息后就被阻塞,該客戶進程可以把它所有的彩票交給服務器,以便增加該服務器下次運行的機會。在服務器運行完成之后,該服務器再把彩票還給客戶機,這樣客戶機又可以運行了。事實上,如果沒有客戶機,服務器根本就不需要彩票。 ? ??彩票調度可以用來解決用其他方法很難解決的問題。一個例子是,有一個視頻服務器,在該視頻服務器上若干進程正在向其客戶提供視頻流,每個視頻流的幀速率都不相同。假設這些進程需要的幀速率分別是10、20和25幀/秒。如果給這些進程分別分配10、20和25張彩票,那么它們會自動地按照大致正確的比例(即10∶20∶25)劃分CPU的使用。
  • 平等分配調度(Fair-share Scheduling)? ??
? ??到現在為止,我們假設被調度的都是各個進程自身,并不關注其所有者是誰。這樣做的結果是,如果用戶1啟動9個進程而用戶2啟動1個進程,使用輪轉或相同優先級調度算法,那么用戶1將得到90%的CPU時間,而用戶2只得到10%的CPU時間。 ? ??作為一個例子,考慮有兩個用戶的一個系統,每個用戶都保證獲得50% CPU時間。用戶1有4個進程A、B、C和D,而用戶2只有1個進程E。如果采用輪轉調度,一個滿足所有限制條件的可能序列是:

? ? A E B E C E D E A E B E C E D E …

? ? 另一方面,如果用戶1得到比用戶2兩倍的CPU時間,我們會有

? ? A B E C D E A B E C D E …

? ? 當然,大量其他的可能也存在,可以進一步探討,這取決于如何定義公平的含義。

8.實時系統的調度算法

????實時系統是一種時間起著主導作用的系統。典型地,外部的一種或多種物理設備給了計算機一個刺激,而計算機必須在一個確定的時間范圍內恰當地做出反應。實時系統是一種時間起著主導作用的系統。典型地,外部的一種或多種物理設備給了計算機一個刺激,而計算機必須在一個確定的時間范圍內恰當地做出反應。對于這種系統來說,正確的但是遲到的應答往往比沒有還要糟糕。

? ? 實時系統被分為硬實時系統和軟實時系統。這兩個概念是從對實時的要求力度。硬實時要求絕對滿足截止時間要求,而軟實時倒是可以偶爾不滿足。兩種情況下,實時是通過將問題分攤到很多進程上,并且每個進程的行為時可提前預測到的。這些進程往往存活時間很短,當一個外部事件被檢測到時,調度器需要調度這些進程來滿足所有的截止期要求。 ? ? 實時系統需要響應的事件可以分為周期性的與非周期性的。一個系統可能要響應多個周期性事件流。根據每個事件需要處理時間的長短,系統甚至有可能無法處理完所有的事件。例如,如果有m個周期事件,事件i以周期Pi 發生,并需要Ci秒CPU時間處理一個事件,那么可以處理負載的條件是

? ? ?滿足這個條件的系統被稱作可調度系統。作為一個例子,考慮一個有三個周期性事件的軟實時系統,其周期分別是100ms、200ms和500ms。如果這些事件分別需要50ms、30ms和100 ms的CPU時間,那么該系統是可調度的,因為 0.5 + 0.15 + 0.2 < 1。如果有第四個事件加入,其周期為1秒,那么只要這個事件是不超過每事件150ms的CPU時間,那么該系統就仍然是可調度的。在這個計算中隱含了一個假設,即上下文切換的開銷很小,可以忽略不計。

? ? 實時系統的調度算法可以是靜態或動態的。前者在系統開始運行之前作出調度決策;后者在運行過程中進行調度決策。只有在可以提前掌握所完成的工作以及必須滿足的截止時間等全部信息時,靜態調度才能工作。而動態調度算法不需要這些限制。




轉載于:https://www.cnblogs.com/wawlian/archive/2012/02/21/2361819.html

總結

以上是生活随笔為你收集整理的《现代操作系统》读书笔记之——进程调度(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。