《现代操作系统》读书笔记之——进程调度(二)
- 時間片輪轉調度算法(Round-Robin Scheduling)
對于這種調度算法來說,一個比較重要的議題是時間片的長度設置為多少比較合理。從一個進程切換到另外一個進程是需要花費一定的管理時間的,比如保存或者加載寄存器和內存映射,更新一系列的列表,刷新內存緩存等等,假設這部分時間花費1ms,而一個時間片是4ms,那么沒進行4ms的時間計算之后還需要花1ms時間來進行進程切換,那么20%的CPU時間被浪費了。很顯然,這種代價太高了。 ? ? 現在假設時間片是100ms,而同時又50個交互用戶在終端前等待計算機的響應。假設他們幾乎是同時輸好命令,并且按下enter鍵,這樣就形成了50個進程,并且調度器將這50個進程放進在一個就緒進程的列表里,然后第一個運行100ms,花1ms切換,以此類推,那么第50個用戶就倒霉了,5m多之后才得到響應。 ? ? 另外一個問題是,假設時間片的時間設置得長于CPU突發事件(CPU burst),那么幾乎不會出現搶占。而大部分進程在在時間片用完之前就發生阻塞,這樣就又導致進程切換。 ? ? 總結一下這個問題就是四個字:過猶不及。時間片不能太長也不能太短,一般來說大概30~50ms就好。
- 優先級調度算法(Priority Scheduling) ? ?
其調度算法如下:只要優先級4中有可運行進程,則給每個進程運行一個時間片,不需擔心低優先級組中的進程。如果優先級4這一組已經沒進城的話,則開始運行進程組3,以此類推。
- 多級隊列調度(Multiple Queues) ? ?
??? 對于有些進程,開始運行了一段長時間,但是隨后需要編程交互式的進程,那么可以采用下面的措施來防止它一直被懲罰:只要終端上有回車鍵(Enter鍵)按下,則屬于該終端的所有進程就都被移到最高優先級。但是這樣又會出現問題:假設一臺機器上的某個用戶發現了這個規律(只要沒幾秒敲一下回車,就可以大大提高響應時間),那么他很可能告訴所有的朋友。后果會怎樣呢?所以說,理論上合理離實際上可行還有一段很長的距離。 ? ? 還有一些其他的算法用來給進程分配一定的優先級類別。比如,伯克利制造的比較有影響力的XDS940系統就有四個優先級類別:終端、I/O、短時間片和長時間片。當一個一直等待終端輸入的進程最終被喚醒時,它被轉到最高優先級類(終端)。當等待磁盤塊數據的一個進程就緒時,將它轉到第2類。當進程在時間片用完時仍為就緒時,它一般被放入第3類。但如果一個進程已經多次用完時間片而從未因終端或其他I/O原因阻塞,那么它將被轉入最低優先級類。
- 最短進程優先(Shortest Process Next) ? ?
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) ? ?
- 平等分配調度(Fair-share Scheduling)? ??
? ? 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
總結
以上是生活随笔為你收集整理的《现代操作系统》读书笔记之——进程调度(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决报错:java.util.Unkno
- 下一篇: windows下xmllib2使用简介