Windows CPU Scheduling

來源:互聯網
上載者:User

 這學期開始學習OS課程,老師要求準備一個關於CPU Scheduling方面的內容在討論課上講以下,於是早早準備好,然後就是等待那一節課的到來,每天偶爾想起都會有一絲緊張,今天尤其如此,因為下午就要上台講了。可是在走上講台的那一刻感覺卻是那麼平靜,講的內容也還算順利,沒有出現卡車,不過下來後才發現我居然沒有用麥克,看了還是有點緊張^-^.

下面就是這次準備的主要內容:

 

Windows 作業系統中的CPU 調度 Agenda•    Overview of Windows Scheduling•    Priority Levels•    Thread States•    Dispatcher Database•    Scheduling ScenariosOverview•    Windows中採用的是優先順序驅動的搶佔式調度方法。                    在就緒隊列中,具有最高優先順序的線程總是處於運行態。                    當一個線程被調度執行時,它將獲得一個時間量(quantum)。這個時間量的大小因系統和進程而異:系統設定的不同(short or long quantum),前台進程還是後台進程,或者使用核心中的工作物件(job object)來修改。                    一個線程在其執行的時間量內隨時都可能被高優先順序的線程搶佔。 •    Windows中的調度演算法是在核心中實現的,但是並不存在一個獨立的“調度”模組或程式,因為核心中的這些代碼分布在和調度有關的各個事件處理中。所有的這些調度處理統稱為核心的發送器(dispatcher)。 •    調度發生在一下時刻: – 一個線程成為就緒態(ready); – 一個線程離開運行態(running); – 一個線程的優先順序發生改變; •    在每次調度時,Windows必須決定下一個要啟動並執行線程,當Windows選擇了一個線程去執行時,首先要進行環境切換(context switch)。 •    說明:Windows中的調度是以線程為單位的,這更體現了進程是不啟動並執行,它只是為它所包含線程的運行提供資源和上下文環境。因此在調度時我們並不考慮線程具體屬於那個進程。例如進程A有10個執行線程,進程B有2個執行線程,並且這12個線程具有相同的優先順序,那麼這12個線程將各佔用CPU時間的1/12,而不是進程A和B各佔用CPU時間的50%. Priority•    Windows核心中採用32級優先等級,從0級到31級,如所示:•     •    在Windows API中提供給使用者的優先順序只有一下6級: – Real-time– High– Above Normal– Normal– Below Normal– Idle•    每個進程只有一個基本優先順序,而每個線程都有兩個優先順序:基本優先順序(base)和當前優先順序(current)。 •    調度則是根據線程的當前優先順序進行的。 •    對處於可變等級(variable levels,0~15)的線程,在特定情況下Windows會提高其優先順序;而處於即時等級(real-time levels,16~31)的線程在其存在期內保持不變的優先順序。 •    預設情況下,線程初始的優先順序繼承自它所歸屬的進程,而進程的優先順序則繼承自建立它的進程。 •    當然也可以通過函數或命令改變進程和線程的初始優先順序,同時在建立後也可以改變其優先順序。 •    改變進程的優先順序將改變它所包含線程的優先順序,但是線程間的相對優先順序不會發生改變。 •    改變進程中某個線程的優先順序時,除非這個程式是你寫的或者你對這個程式中每個線程做什麼以及相互間的重要性很清楚,否則不要更改,因為改變它們間的相對優先順序很可能造成程式的非正常運行。 •    通常,進程的基本優先順序(也就是線程建立時的基本優先順序)預設設定為優先順序範圍的中間值(24,13,10,8,6 or 4)。 •    Windows的一些系統進程的基本優先順序要比預設優先順序要稍高,例如Session Manager(smss.exe), local security authentication server(lsass.exe)等。 •    對處於可變優先順序的線程在其時間片結束時,Windows發送器會降低它的優先順序,但是不會降到該線程的基本優先順序之下。降低線程的優先順序可以限制CPU-bound線程對CPU的長時間佔用。 •    當一個處於等待狀態的可變優先順序線程所等待的操作完成時,Windows發送器將提升該線程的優先順序。提升的程度取決於線程所等待的操作,例如一個等待鍵盤輸入的線程獲得的提高要比一個等待磁碟操作的線程獲得的提高要多,這樣才能使互動線程的回應時間更短,使I/O-bound線程保持I/O處於忙碌狀態,同時讓CPU-bound線程在後台使用CPU。 •    Windows 2000 和 Windows XP 中線程狀態轉換如下: Thread State•    •    Ready 等待執行的線程。發送器每次選取下一個要執行的線程也是從處於就緒狀態的線程中選擇。 •    Standby 下一個將被執行的線程。系統中每一個處理機上只能有一個處於備用狀態的線程。當然備用線程也可能在執行前被搶佔。 •    Running 正在執行的線程。 •    Waiting 線程等待其他對象的同步執行,等待I/O操作…•    Transition 線程已經準備好執行了,但是它的核心棧被移出記憶體。一旦它的核心棧被移入記憶體,它就會成為就緒態。 •    Terminated 線程運行結束 •    Initialized 線程被建立 Dispatcher Database•    為了實現線程的調度,Windows核心管理了一組稱為調度資料庫(Dispatcher Database)的資料結構。調度資料庫中記錄著哪些線程正等待執行,哪些線程正在哪個處理機上運行。 •    Windows系統中為每個優先順序都維護一個就緒隊列 •    為了加速線程的選擇,Windows維護了一個32位的位元遮罩(a 32-bit bit mask)。其中的每一位的置位(即1)表示該優先順序的就緒隊列中至少有一個等待線程。 Dispatch•    Windows系統中哪個線程將得到CPU完全是基於線程的優先順序,而在實際中又是如何?的?優先順序驅動的搶佔式多任務又是如何線上程層級上實現的? •    Voluntary Switch•    Preemption•    Quantum End•    TerminationVoluntary Switch•    一個線程會因等待某些資源而通過進入等待狀態來主動讓出CPU佔用權。          例如:等待一個事件的發生,互斥,訊號量,I/O操作的完成,等待某個進程,線程,Windows訊息等。          展示了一個線程進入等待狀態,Windows選取一個新的線程來執行的過程: Preemption•    一個高優先順序的線程進入就緒態後,會搶佔正在執行的低優先順序的線程。 •    這一情況的發生有以下兩個原因: – 高優先順序線程等待的操作已經完成; – 某個線程的優先順序被提升; •    以上任一情況發生時Windows就必須決定是讓當前線程繼續運行還是被搶佔。 •    使用者態的線程同樣可以搶佔核心態的線程。即線程的執行模式並不影響調度,只有線程的優先順序是決定因素。 •    當一個線程被搶佔後,它會被放在其優先順序的就緒隊列的頭部,如所示:•     Quantum End•    當一個線程使用完為其分配的CPU時間後,Windows就要決定是否降低其優先順序,以及是否要調度一個新的線程到處理機上執行。 •    如果一個線程的優先順序被降低後,Windows就要尋找一個更合適的線程來執行。 •    如果線程的優先順序沒有降低,但是在同優先順序的就緒隊列中還有其他線程,Windows將選取隊列中的第一個線程來執行,而將該線程放到隊列尾部(如所示)。如果沒有同優先順序的就緒線程,該線程將獲得一個新的時間片。 Termination•    當一個線程執行結束時,它將從執行態進入終態,同時該線程也將從其歸屬進程的線程列表終刪除,與之有關的資料結構也將被釋放,發送器將會從就緒隊列中再選取一個線程來執行。 •    如果此時CPU上已經沒有執行線程了,發送器就會調度Idle線程執行。在Windows中用工具可以看到Idle線程的優先順序是0,實際上Idle線程時沒有優先順序的,因為它只有在系統中沒有其他線程時才會被調度執行。此外,要注意每個Windows系統中只有1個0優先順序的線程--the zero page thread.   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.