一.處理機調度相關基本概念
????????處理機調度:多道程序環境下,動態的把處理機分配給就緒隊列中的一個進程使之執行。
????????提高處理機的利用率、改善系統性能,很大程度上取決于處理機調度的性能。
????????處理機調度便成為OS設計的中心問題之一。分配的任務由處理機調度程序完成。
????????作業進入系統駐留在外存的后備隊列上,再至調入內存運行完畢,可能要經歷下述三級調度。
????????????????1、高級調度(High Scheduling)
????????????????????????又稱作業調度或長程調度(Long-Term Scheduling),接納調度(Admission Scheduling)
? ????????????????????????主要在早期批處理階段,處理在外存上的作業。
?????????????????????????????????決定外存后備隊列中的哪些作業調入內存;
?????????????????????????????????為它們創建進程、分配必要的資源;
?????????????????????????????????將新創建的進程排在就緒隊列上,準備執行。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *管理的方面比較多。
????????????????????????作業調度決定的細節
????????????????????????????????在每次執行作業調度時,都須作出兩個決定:
????????????????????????????????????????接納多少作業——取決于多道程序度。應根據系統的規模和運行速度等情況綜合考慮。
????????????????????????????????????????接納哪些作業——取決于采用的調度算法。如先來先服務,短作業優先等(后面詳細介紹)
????????????????????????系統運行并不一定存在高級調度
????????????????????????????????批處理系統:作業進入系統后先駐留外存,故需要有作業調度。
????????????????????????????????分時系統:為及時響應,作業由終端直接送入內存,故不需作業調度。
????????????????????????????????實時系統中,通常也不需作業調度。
????????????????2、低級調度(Low Level Scheduling)
????????????????????????也稱為進程調度、微觀調度或短程調度(Short-Term Scheduling)
? ? ? ? ? ? ? ? ? ? ? ? ?決定內存就緒隊列中的哪個進程獲得處理機,進行分配工作。是最基本的一種調度,在三種基本OS中都有。
????????????????????????進程調度方式
????????????????????????????????1)非搶占方式(Non-preemptive Mode)
????????????????????????????????????????? 一旦處理機分配給某進程,該進程一直執行。決不允許其他進程搶占已分配運行進程的處理機。
????????????????????????????????2)搶占方式(Preemptive Mode)
????? ????????????????????????????????????允許調度程序根據某種原則,暫停某個正在執行的進程,將處理機重新分配給另一進程。
????????????????????????調度程序的任務職能:調度和分派。
????????????????????????????????(1) 記錄系統中所有進程的有關情況
????????????????????????????????(2) 確定分配處理機的原則
????????????????????????????????(3) 分配處理機給進程
????????????????????????????????(4) 從進程收回處理機
3、中級調度(Intermediate-Level Scheduling)
????????又稱交換調度或中程調度(Medium-Term Scheduling)
????????引入目的:提高內存利用率和系統吞吐量。根據條件將一些進程調出或再調入內存。
三種調度的頻率和復雜度
????????進程調度:運行頻率最高,算法不能太復雜,以免占用太多的CPU時間。分時系統通常10~100ms便進行一次。
????????作業調度:一個作業運行完畢退出系統時即觸發重新調度一個新作業入內存,周期較長,大約幾分鐘一次。因而也允許作業調度算法花費較多的時間。
????????中級調度:運行頻率基本上介于上述兩種調度之間。
4、調度隊列模型
????????不論高級、中級或者低級調度,都涉及到進程隊列,由此形成了三類調度隊列模型。從這三種方式中體驗調度的過程。
????????1)僅有進程調度的調度隊列模型
????????????????常見情況:
????????????????????????分時系統。
????????????????????????通常僅設置進程調度,用戶鍵入的命令和數據,都直接送入內存。
????????????????調度對象:
????????????????????????處于就緒狀態的進程。
????????????????組織形式:
????????????????????????棧、樹或一個無序鏈表
????????????????????????用何種形式取決于OS類型和采用的調度算法。如:分時系統中把就緒進程組織成FIFO隊列形式:按時間片輪轉方式運行。
? ????????????????進程調度過程如下圖:
????????????????????????每個進程在執行時按規定的時間片算法,在給定時間片內任務有三種執行情況:
????????????????????????????????①完成工作,釋放處理機進入完成狀態
????????????????????????????????②未完成,將該任務再放入就緒隊列末尾
????????????????????????????????③因某事件而被阻塞,被OS放入阻塞隊列
????????2)具有高級和低級調度的調度隊列模型
????????????????批處理系統中,還需要作業調度
????????3)同時具有三級調度的調度隊列模型
????????????????引入中級調度后,進程的狀態變化:
????????????????????????就緒狀態:分為內存就緒和外存就緒。
????????????????????????阻塞狀態:分為內存阻塞和外存阻塞。
? ????????????????中級調度使進程在上述狀態間變化,并使數據在內外存間互換。
5. 選擇調度方式和調度算法的若干準則
????????什么算法是好算法?
????????????????不同的情況和對象需求不同,適用的方式和算法也不同。
????????1)面向用戶的準則
????????????????周轉時間短:
? ????????????????????????針對批處理系統的性能指標。作業從提交到完成所經歷的時間。
?????????????????????????CPU執行用時Ts
?????????????????????????總的等待時間Tw = 在后備隊列中等待 + 就緒隊列上等待+阻塞隊列中等待(等待I/O操作用時)
?????????????????????????周轉時間T=Ts+Tw
?????????????????????????帶權周轉時間W= T/Ts
?????????????????????????平均周轉時間、平均帶權周轉時間(n個作業求平均)
????????????????響應時間快:針對分時系統。用戶輸入一個請求(如擊鍵)到系統給出首次響應(如屏幕顯示)的時間
????????????????均衡性:系統響應時間的快慢與用戶所請求的復雜性相適應。
????????????????截止時間的保證:針對實時系統的性能指標。開始截止時間和完成截止時間。任務必須按規定的時間開始或完成,調度方式和算法必須能保證該要求。
????????????????優先權準則:三大基本OS在調度算法的選擇時都可遵循。可以使關鍵任務達到更好的指標。
????????2)面向系統的準則
????????????????系統吞吐量高:批處理系統的重要指標。
?????????????????????????單位時間內所完成的作業數,跟作業本身(與作業平均長度密切相關)和調度算法都有關系;
????????????????處理機利用率好(主要針對大中型主機)
????????????????各類資源的平衡利用(主要針對大中型主機)
????????????????不同系統需求各有側重
????????????????????????批處理系統?
?????????????????????????????????平均周轉時間短
?????????????????????????????????系統吞吐量高
?????????????????????????????????處理機利用率好
????????????????????????分時系統
?????????????????????????????????響應時間快
?????????????????????????????????均衡
????????????????????????實時系統
?????????????????????????????????截至時間的保證
?????????????????????????????????可預測性
二.常用調度算法
調度的實質就是一種資源分配。不同的系統和系統目標,通常采用不同的調度算法——適合自己的才是最好的。
?????????如批處理系統為照顧為數眾多的短作業,應采用短作業優先的調度算法;
?????????如分時系統為保證系統具有合理的響應時間,應采用輪轉法進行調度。
?????????目前存在的多種調度算法中,有的算法適用于作業調度,有的算法適用于進程調度;但有些算法作業調度和進程調度都可以采用。
1、先來先服務調度算法FCFS(First Come First Service)
????????一種最簡單的調度算法,按先后順序進行調度。既可用于作業調度,也可用于進程調度。
????????按照作業提交,或進程變為就緒狀態的先后次序分派CPU;
????????新作業只有當當前作業或進程執行完或阻塞才獲得CPU運行
????????被喚醒的作業或進程不立即恢復執行,通常等到當前作業或進程出讓CPU。 (所以,默認即是非搶占方式)
????????不足:短作業C的帶權周轉時間竟高達100,這是不能容忍的;而長作業D的帶權周轉時間僅為1.99。
????????關于應用:有利于CPU繁忙型的作業,而不利于I/O繁忙的作業(進程)。
????????????????從程序規模上看,一般I/O繁忙型作業CPU進行處理的用時相對比較短,CPU繁忙型的作業相對較長。而FCFS不利于短作業,I/O繁忙型作業一旦排隊靠后就會處于劣勢。
????????????????另一方面,I/O繁忙型作業需頻繁的請求I/O,即使排隊靠前,但由于I/O請求阻塞,重新排隊可能就會排到隊尾(這一情況在其他算法下也是普遍的,但不同的算法,排隊情況不同,相對的在照顧公平性上也會有所不同)。
????????????????目前大多數事務處理都屬于I/O繁忙型作業。
2. 短作業(進程)優先調度算法SJF/SPF(Shortest Job First) OR (Shortest Process?First)
????????優點:
????????????????通過上表可見采用SJF/SPF算法,平均周轉時間、平均帶權周轉時間都有明顯改善。SJF/SPF調度算法能有效的降低作業的平均等待時間,提高系統吞吐量。
????????方式:
????????????????分搶占和非搶占兩種方式,上例為簡單的非搶占式。
????????SJF/SPF的不足:
? ? ? ? ? ? ? ? 1.對短作業有利,但同時造成了對長作業的不利。
? ? ? ? ? ? ? ? 2.由于作業(進程)的長短含主觀因素,不一定能真正做到短作業優先。
? ? ? ? ? ? ? ? 3.未考慮作業的緊迫程度,因而不能保證緊迫性作業(進程)的及時處理。
3. 高優先權優先調度算法HPF Highest Priority First
????????照顧緊迫性作業,使其獲得優先處理而引入調度算法。常用于批處理系統中的作業調度算法,以及多種操作系統中的進程調度算法
????????1)分兩種方式:
????????????????非搶占式優先權算法
????????????????搶占式優先權算法 關鍵點:新作業產生時
????????2)優先權的類型
????????????????靜態優先權:創建進程時確定,整個運行期間保持不變。一般利用某一范圍的一個整數來表示,又稱為優先數。
????????????????動態優先權:創建進程時賦予的優先權可隨進程的推進或隨其等待時間的增加而改變。
????????關于進程優先權的確定?依據如下:
? ? ? ? ? ? ? ? ①進程類型:一般來,系統進程高于用戶進程。
? ? ? ? ? ? ? ? ②進程對資源的需求:如進程的估計時間及內存需要量的多少,對要求少的進程賦予較高優先權。
? ? ? ? ? ? ? ? ③用戶要求:由用戶進程的緊迫程度及用戶所付費用的多少來確定優先權的。
? ??????3)高響應比優先調度算法HRRN Highest Response Raito Next
????????????????短作業優先算法是一種比較好的算法(相當于根據作業長度設定的靜態優先權算法),適用于短作業較多的批處理系統中,其主要不足是長作業的運行得不到保證。
????????????????HRRN為每個作業引入動態優先權,使作業的優先級隨著等待時間的增加而以速率a提高:
????????????????優先權 =(等待時間+要求服務時間)/要求服務時間= 響應時間 / 要求服務時間
? ??????*對不同作業都有照顧*
? ? ? ? ? ? ? ? ①同時到達的作業優先權相同。
????????????????????????初始t=0,隨著時間增長,如果等待時間 t相同,執行時間愈短的優先權愈高,利于短作業。
????????????????????????對于長作業,作業的優先級可以隨等待時間的增加而提高,當其等待時間足夠長也可獲得處理機。長作業有照顧。
? ? ? ? ? ? ? ? ②當執行時間相同的作業,優先權的高低決定于其等待時間的長短,也就是先來先服務。
????????什么時候計算各進程的響應比優先權?
????????????????需要進行調度選擇的時候比較各自優先權
?????????????????????????作業完成時
?????????????????????????新作業產生時(搶占、非搶占)
?????????????????????????時間片完成時
?????????????????????????進程阻塞時
4.基于時間片的輪轉調度算法RR(Round Robin)
????????分時系統新需求:及時響應用戶的請求;采用基于時間片的輪轉式進程調度算法。
????????早期分時系統采用的是簡單的時間片輪轉法,進入90年代后廣泛采用多級反饋隊列調度算法。
????????(1)時間片輪轉算法
? ? ? ? ? ? ? ? ①將系統中所有的就緒進程按照FCFS原則,排成一個隊列。
? ? ? ? ? ? ? ? ②每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。
? ? ? ? ? ? ? ? ③在一個時間片結束時,發生時鐘中斷。
? ? ? ? ? ? ? ? ④調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,并通過上下文切換執行當前就緒的隊首進程。
????????????????進程阻塞情況發生時,未用完時間片也要出讓CPU
????????????????能夠及時響應,但沒有考慮作業長短等問題。
????????關于時間片長度
????????????????時間片長度的選擇要與完成一個基本的交互過程所需的時間相當,保證一個基本的交互過程可在一個時間片內完成。
????????????????設置不合適反而都會導致響應時間長。
?????????????????????????過長會怎樣?——FCFS
?????????????????????????過短會怎樣?——頻繁切換
????????影響時間片長度的主要因素
????????????????系統的處理能力和系統的負載狀態。(依據系統的處理能力確定時間片長度,使用戶輸人通常在一個時間片內能處理完,否則使響應時間、平均周轉時間和平均帶權周轉時間延長。為了保證不同負載狀態下用戶交互的響應時間,需要對時間片長度進行適當調整。)
????????爭議:若同時有時間片到放棄CPU的A進程、新就緒的進程B,二者在就緒隊列中如何排序。
????????做題時給出統一的假設:
????????????????若設新進程就緒比較快,就統一按BA的順序排入就緒隊列。
?????????????????若設舊進程該為就緒比較快,則統一按AB排序
????????(2)多級反饋隊列算法FB(Multiple-level Feed Back Queue)
????????????????特點:多個就緒隊列,循環反饋;動態優先級、時間片輪轉
? ? ? ? ? ? ? ? ①設置多個就緒隊列,各隊列有不同的優先級,優先級從第一個隊列依次降低。
? ? ? ? ? ? ? ? ②賦予各隊列進程執行時間片大小不同, 優先權越高,時間片越短。
? ? ? ? ? ? ? ? ③當一個新進程進入內存,引發的調度過程
? ? ? ? ? ? ? ? ? ? ? ? a.準備調度:先將它放入第一個隊列的末尾,按FCFS原則排隊等待調度。
? ? ? ? ? ? ? ? ? ? ? ? b.IF時間片內完成,便可準備撤離系統;
? ? ? ? ? ? ? ? ? ? ? ? c.IF時間片內未能完成,調度程序便將該進程轉入第二隊列的末尾等待再次被調度執行。
? ? ? ? ? ? ? ? ? ? ? ? d.當第一隊列中的進程都執行完,系統再按FCFS原則調度第二隊列。在第二隊列的稍放長些的時間片內仍未完成,再依次將它放入第三隊列。
? ? ? ? ? ? ? ? ? ? ? ? e.依次降到第n隊列后,在第n隊列中便采取按時間片輪轉的方式運行。
????????注意:
????????????????各隊列的時間片逐漸增大。優先級逐漸降低
????????????????僅當優先權高的隊列(如第一隊列)空閑時,調度程序才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,才會調度第i隊列中的進程運行。
????????????????高優先級搶占問題:
?????????????????????????第i隊列中為某進程正占有CPU,又有新進程進入優先權較高的隊列(第1~i-1隊中);
?????????????????????????被搶占的進程放回原就緒隊列末尾;
????????* 多級反饋隊列調度算法的性能 *
????????????????多級反饋隊列調度算法具有較好的性能,能較好的滿足各種類型用戶的需要。
????????????????終端型作業用戶。大多屬于較小的交互性作業,只要能使作業在第一隊列的時間片內完成,便可令用戶滿意。
????????????????短批處理作業用戶。周轉時間仍然較短,至多在第二到三隊列即可完成。
????????????????長批處理作業用戶。將依次在1~n級隊列中輪轉執行,不必擔心作業長期得不到處理。
????????基于公平原則的更多算法
? ? ? ? ? ? ? ? ①保證調度算法
?????????????????????????處理機分配的公平性:
?????????????????????????已經執行時間/應獲得執行的時間,比值小的優先獲得處理機
? ? ? ? ? ? ? ? ②公平分享調度算法
?????????????????????????針對用戶考慮,如根據a(4個進程),b(2個進程)用戶所擁有進程數目,決定一個比率
?????????????????????????a1,a2,b1,a3,a4,b2……
????????優先級倒置問題的討論
?????????????????????????有人罩著就是好^_^
?????????????????????????p1,p2,p3?優先級從高到低
?????????????????????????p3(運行)先占有一互斥信號mutex
?????????????????????????p2(運行)可以搶p3(就緒)
?????????????????????????p1來申請mutex,即使優先級高,但信號量拿不到只能阻塞,又回到p2
?????????????????????????p2來了,p3
三.實時調度
????????什么是實時系統?
????????????????指系統能夠在限定的響應時間內提供所需水平的服務。
????????????????指計算的正確性不僅取決于程序的邏輯正確性,也取決于結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。
? ??????實時任務:具有明確時間約束的計算任務,有軟/硬,隨機/周期性之分。
????????硬實時任務:必須滿足任務對截止時間的要求
? ? ????軟實時任務:聯系著一個截止時間,但不嚴格,可偶爾錯過,不會對系統造成大的影響。
?????????????????實時系統的任務往往帶有某種程度的緊迫性,因而實時系統的調度有某些特殊要求。
? ? ????為此引入適合的實時調度算法
????????為保證系統正常工作,調度應具備下列條件
1. 實現實時調度的基本條件
????????1)提供必要的信息
? ? ? ? ? ? ? ? 為了實現實時調度,系統應向調度程序提供有關任務的下述信息:
????????????????就緒時間。該任務成為就緒狀態的時間。
????????????????開始截止時間、完成截止時間。
????????????????處理時間。從開始執行到完成所需時間。
????????????????資源要求。任務執行時所需的一組資源。
????????????????優先級。根據任務性質賦予不同優先級。
? ??????2)系統處理能力足夠強
????????????????處理能力不足可能會出現某些實時任務不能得到及時處理,導致難以預料的后果。
????????????????如:
????????????????????????系統中有M個周期性的硬實時任務,處理時間為Ci,周期時間表示為Pi,單機系統中必須滿足條件
????????????????????????一個系統,6個硬實時任務,周期都是50ms,每次處理時間10ms。根據公式,系統是不可調度的。10*6/50
????????提高系統處理能力的方法
????????????????增強單機系統的處理能力
????????????????采用多處理機系統
????????????????此情況下需滿足
????????????????????????∑( Ci / Pi )≤N,N為處理機數
? ??????3)采用搶占式調度機制
????????????????硬實時任務:廣泛采用搶占機制。
????????????????小的實時系統:如能預知任務的開始截止時間,為簡化調度程序和對任務調度時所花費的系統開銷,可采用非搶占調度機制
????????4)具有快速切換機制
? ? ? ? ? ? ? ? ①對外部中斷的快速響應能力。
????????????????????????利用快速硬件中斷機構,可在緊迫的外部事件請求中及時響應。
? ? ? ? ? ? ? ? ②快速的任務分派能力。
????????????????????????使系統中的運行功能單位適當的小,提高切換速度。類如線程的思想
2. 實時調度算法的分類
????????根據實時任務的性質? ??????????????????????????????根據調度時間不同
????????????????硬實時調度算法????????????????????????????????????????靜態調度算法
????????????????軟實時調度算法;????????????????????????????????????動態調度算法。
????????按調度方式? ??????????????????????????????????????????????多處理機環境下
????????????????非搶占調度算法????????????????????????????????????????集中式調度
????????????????搶占調度算法;????????????????????????????????????????分布式調度
? ??????1)非搶占調度算法
????????????????該算法較簡單,用于一些小型實時系統或要求不太嚴格的實時系統中,又可分為:
? ? ? ? ? ? ? ? ? ? ? ? ①非搶占式輪轉調度算法。常用于工業生產的群控系統中,要求不太嚴格。
? ? ? ? ? ? ? ? ? ? ? ? ②非搶占式優先調度算法。要求相對嚴格,根據任務的優先級安排等待位置。可用于有一定要求的實時控制系統中。(精心設置可獲得百ms級的響應時間)
????????2)搶占式調度算法
????????????????較嚴格的實時系統中(t約為數十ms),選擇采用搶占式優先權調度算法。根據搶占發生時間可分為:
? ? ? ? ? ? ? ? ? ? ? ? ①基于時鐘:某高優先級任務到達后并不立即搶占,而等下一個時鐘中斷時搶占。
? ? ? ? ? ? ? ? ? ? ? ? ②立即搶占:一旦出現外部中斷,只要當前任務未處于臨界區,就立即搶占處理機。
3. 常用的幾種實時調度算法
????????目前有許多實時調度算法,在常用的算法中簡單介紹兩種實時調度算法:
????????1)最早截止時間優先EDF(Earliest Deadline First)
????????????????根據任務的開始截止時間來確定任務的優先級。截止時間越早,其優先級越高。
????????????????????????系統保持一個實時任務就緒隊列
????????????????????????隊列按各任務截止時間的早晚排序
????????????????????????調度程序總是選擇就緒隊列中的第一個任務,分配處理機使之投入運行。
????????????????新任務產生時,是否等當前程序執行完:
????????????????????????搶占式/非搶占式
????????????????可能會使作業錯過,但可適用于軟實時系統
????????2)最低松弛度優先LLF(Least Laxity First)
????????????????根據任務緊急(或松弛)的程度,來確定任務的優先級。任務的緊急程度越高(松弛度值越小),優先級就越高。
????????????????松弛度= 截止完成時間 – 還需執行時間 - 當前時間
????????????????可理解為當前時刻到開始截止時刻間的差距,隨著時間的推進,這個差值逐漸變小,任務越來越緊迫。
????????進程切換發生的時機
????????????????進程執行完
????????????????進程I/O阻塞
????????????????新進程出現時可能的搶占
????????????????某進程松弛度為0時發生搶占
????????????????有的時刻,其他并發的實時任務下一周期未到來,會出現只有一個任務的情況。
????????多處理機系統中的調度
????????????????提高計算機系統性能的途徑:
????????????????提高計算機元器件速度
????????????????改進計算機系統體系結構
????????????????20世紀70年代出現多處理器系統MPS(MultiProcessor System)。90年代中后期,功能較強的主機或服務器都采用了MPS。
1. 多處理器系統的類型
????????不同角度分類
????????1)緊密耦合MPS和松弛耦合MPS
????????????????緊密耦合(Tightly Coupted)
????????????????????????高速總線或高速交叉開關來實現多個處理器之間的互連。
????????????????????????共享主存儲器系統和I/O設備。系統中所有進程和資源由OS統一控制管理。
????????????????松散耦合(Loosely Coupted)
????????????????????????通過通道或通信線路來實現多臺計算機之間互連。
????????????????????????每臺計算機都有自己的存儲器和I/O設備,可以獨立工作。
????????2)對稱MPS和非對稱MPS
????????????????對稱多處理系統SMPS(Symmetric MultiProcessor System)平等型:在系統中所包含的各處理器單元在功能上和結構上都相同。當前的絕大多數MPS屬于此類。
????????????????非對稱多處理器系統。主從型:系統中有多種類型的處理單元,它們的功能和結構各不相同,其中只有一個主處理器,其余為從處理器。
2. 進程分配方式
????????在多處理器系統中,進程的調度與系統結構有關。
????????????????同構性系統中,所有處理器都相同,可將進程分配到任一處理器上運行;
????????????????非對稱MPS,對任一進程而言,都只能將其分配到某一適合于其運行的處理機上去執行。下面分別介紹對稱MPS和非對稱MPS中的進程分配方式。
????????1)對稱MPS中的進程分配方式
? ? ? ? ? ? ? ? ①靜態分配(Static Assignment)方式:
????????????????????????進程從開始至完成被固定分配到一個處理器上。
????????????????????????優點是進程調度開銷小,缺點是各處理器可能出現忙閑不均。
? ? ? ? ? ? ? ? ②動態分配(Dynamic Assignment)方式:
????????????????????????系統中僅設置一個公共的就緒隊列,分配進程總是給空閑處理器。某一進程的執行可能曾在不同的處理器上。
????????????????????????優點是消除忙閑不均現象。但松散耦合系統增大調度開銷。
????????2)非對稱MPS中的進程分配方式
????????????????OS的核心部分駐留在一臺主機上,而從機上只是用戶程序,進程調度只由主機執行。主機中保持有一個就緒隊列。
????????????????每當從機空閑時向主機發一索求進程信號,然后等待主機分配進程。
????????????????優點是系統處理比較簡單,缺點是處理靠一臺主機導致不可靠。(克服缺點的方法是利用多臺而非一臺管理系統)
3. 進程(線程)調度方式
????????MPS已廣為流行多年,存在著多種調度方式,許多都是以線程作為基本調度單位的,比較有代表的如下:
1)自調度(Self-Scheduling)方式
????????自調度機制,最簡單的一種調度方式。
????????系統中設置一個公共的進程或線程就緒隊列,所有的處理器空閑時,都可自己到該隊列中取得一進程(線程)來運行。
????????調度算法:可采用FCFS、FPF和搶占式最高優先權優先調度算法等。經實驗證明FCFS算法在多處理器環境下簡單開銷小,目前成為較好的調度算法。
自調度方式的特點
????????優點:
? ????????????????1)易將單機環境下的調度機制移植到MPS中;
? ????????????????2)不會發生處理器忙閑不均的現象,有利于提高處理器的利用率。
????????缺點:? ?
? ????????????????1)瓶頸問題。多處理器互斥訪問唯一就緒隊列。
????????????????? 2)低效性。高速緩存的使用效率很低。
? ????????????????3)線程切換頻繁。相關的其他線程未必會同時獲得處理器導致切換頻繁。
2)成組調度(Gang Scheduling)方式
????????為解決自調度方式中線程頻繁切換的問題
????????將進程的一組線程分配到一組處理器上去執行。分配處理器時間的方式:
? ? ? ? ? ? ? ? ①面向所有應用程序平均分配處理器時間
? ? ? ? ? ? ? ? ②面向所有線程平均分配處理器時間
????????優點:
????????????????相互合作的進程或線程能并行執行,可有效的減少阻塞,減少切換使系統性能得到改善;
????????????????每次調度都可以解決一組線程的處理器分配問題,故可顯著減少調度頻率,減少了調度開銷。
3)專用處理器(Dedicated Processor Assignment)方式
????????1989年Tucker提出該方式。在一個應用程序的執行期間,專為該應用程序分配一組處理器,每一個線程一個處理器。
????????這種方式很浪費。但仍有利用市場,適用于并發程度相當高的多處理機環境:
????????????????對系統的性能和效率來講,單個處理器的利用率已不太重要。
????????????????“專用”完全避免了切換,從而大大加速了程序運行。
????????????????同時加工的應用程序,線程總和不應超過系統處理機的數目。