指令周期
有關周期解釋
時鐘周期:這個名字的英文clock cycle; clock period;時鐘是用來計時的,是一個基本單位;在計算機中,cpu的晶振時間就是一個最最基本的單位,因此時鐘周期很基本,別的周期都用它來參考。
CPU周期 :又稱機器周期,CPU訪問一次記憶體所花的時間較長,因此用從記憶體讀取一條指令字的最短時間來定義。它一般由12個時鐘周期(振盪周期)組成,也是由6個狀態周期組成。而振盪周期=1秒/晶振頻率,因此單片機的機器周期=12秒/晶振頻率 。
匯流排周期(BUS Cycle):也就是一個訪存儲器或I/O連線埠操作所用的時間。
指令周期簡介
CPU每取出一條指令並執行這條指令,都要完成一系列的操作,這一系列操作所需要的時間通常叫做一個指令周期。換言之指令周期是取出一條指令並執行這條指令的時間。由於各條指令的操作功能不同,因此各種指令的指令周期是不盡相同的。例如一條加法指令的指令周期同一條乘法指令的指令周期是不相同的。 指令周期常常用若干個CPU周期數來表示,CPU周期也稱機器周期。指令不同,所需的機器周期數也不同。對於一些簡單的單位元組指令,在取指令周期中,指令取出到指令暫存器後,立即解碼執行,不再需要其它的機器周期。對於一些比較複雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。 指令占用周期主要與指令的操作功能有關。有以下特點:
1、指令不同,所需的機器周期數也不同。對於一些簡單的的單位元組指令,在取指令周期中,指令取出到指令暫存器後,立即解碼執行,不再需要其它的機器周期。對於一些比較複雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。
2、從指令的執行速度看,單位元組和雙位元組指令一般為單機器周期和雙機器周期,三位元組指令都是雙機器周期,只有乘、除指令占用4個機器周期。因此在進行編程時,在完成相同工作的情況下,選用占用機器周期少的命令會提高程式的執行速率,尤其是在編寫大型程式程式的時候,其效果更加明顯。
進程調度
概述
無論是在批處理系統還是分時系統中,用戶進程數一般都多於處理機數、這將導致它們互相爭奪處理機。另外,系統進程也同樣需要使用處理機。這就要求進程調度程式按一定的策略,動態地把處理機分配給處於就緒佇列中的某一個進程,以使之執行。在作業系統中,往往要經歷下述三級調度:
高級調度:(High-Level Scheduling)又稱為作業調度,它決定把後備作業調入記憶體運行;
低級調度:(Low-Level Scheduling)又稱為進程調度,它決定把就緒佇列的某進程獲得CPU;
中級調度:(Intermediate-Level Scheduling)又稱為在虛擬存儲器中引入,在內、外存對換區進行進程對換。
調度方式
非剝奪方式
在採用這種調度方式時,一旦把處理機分配給某進程後,不管它要運行多長時間,都一直讓它運行下去,決不會因為時鐘中斷等原因而搶占正在運行進程的處理機,也不允許其它進程搶占已經分配給它的處理機。直至該進程完成,自願釋放處理機,或發生某事件而被阻塞時,才再把處理機分配給其他進程。
剝奪方式
這種調度方式允許調度程式根據某種原則去暫停某個正在執行的進程,將已分配給該進程的處理機重新分配給另一進程。搶占方式的優點是,可以防止一個長進程長時間占用處理機,能為大多數進程提供更公平的服務,特別是能滿足對回響時間有著較嚴格要求的實時任務的需求。但搶占方式比非搶占方式調度所需付出的開銷較大。搶占調度方式是基於一定原則的,主要有如下幾條:
(1) 優先權原則。通常是對一些重要的和緊急的作業賦予較高的優先權。當這種作業到達時,如果其優先權比正在執行進程的優先權高,便停止正在執行(當前)的進程,將處理機分配給優先權高的新到的進程,使之執行;或者說,允許優先權高的新到進程搶占當前進程的處理機。
(2) 短作業(進程)優先原則。當新到達的作業(進程)比正在執行的作業(進程)明顯的短時,將暫停當前長作業(進程)的執行,將處理機分配給新到的短作業(進程),使之優先執行;或者說,短作業(進程)可以搶占當前較長作業(進程)的處理機。
(3) 時間片原則。各進程按時間片輪流運行,當一個時間片用完後,便停止該進程的執行而重新進行調度。這種原則適用於分時系統、大多數的實時系統,以及要求較高的批處理系統。
進程占用周期
在進程調度中,進程每次運行所占用的周期有相等的和不相等的,這主要與進程的調度算法有關。
占用周期不相等的算法
先進先出算法
算法總是把處理機分配給最先進入就緒佇列的進程,一個進程一旦分得處理機,便一直執行下去,直到該進程完成或阻塞時,才釋放處理機。
例如,有三個進程P1、P2和P3先後進入就緒佇列,它們的執行期分別是21、6和3個單位時間,
執行情況如下圖:
對於P1、P2、P3的周轉時間為21、27、30,平均周轉時間為26。
可見,FIFO算法服務質量不佳,容易引起作業用戶不滿,常作為一種輔助調度算法。
短進程優先
最短CPU運行期優先調度算法(SCBF--Shortest CPU Burst First)
該算法從就緒佇列中選出下一個“CPU執行期最短”的進程,為之分配處理機。
例如,在就緒佇列中有四個進程P1、P2、P3和P4,它們的下一個執行
期分別是16、12、4和3個單位時間,執行情況如下圖:
P1、P2、P3和P4的周轉時間分別為35、19、7、3,平均周轉時間為16。
該算法雖可獲得較好的調度性能,但難以準確地知道下一個CPU執行期,而只能根據每一個進程的執行歷史來預測。
先來先服務調度算法
先來先服務(FCFS)調度算法是一種最簡單的調度算法,該算法既可用於作業調度,也可用於進程調度。當在作業調度中採用該算法時,每次調度都是從後備作業佇列中選擇一個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源、創建進程,然後放入就緒佇列。 在進程調度中採用 FCFS 算法時, 則每次調度是從就緒佇列中選擇一個最先進入該佇列的進程,為之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞後才放棄處理機。
占用周期相等的算法
短進程優先
最短CPU運行期優先調度算法(SCBF--Shortest CPU Burst First)
該算法從就緒佇列中選出下一個“CPU執行期最短”的進程,為之分配處理機。
例如,在就緒佇列中有四個進程P1、P2、P3和P4,它們的下一個執行
進程調度
期分別是16、12、4和3個單位時間,執行情況如下圖:
P1、P2、P3和P4的周轉時間分別為35、19、7、3,平均周轉時間為16。
該算法雖可獲得較好的調度性能,但難以準確地知道下一個CPU執行期,而只能根據每一個進程的執行歷史來預測。
多級反饋佇列調度算法
多級反饋佇列調度算法既能使高優先權的作業得到回響又能使短作業(進程)迅速完成。一般情況進程每一次運行占用周期是相同的。
多級反饋佇列調度算法描述:
1、進程在進入待調度的佇列等待時,首先進入優先權最高的Q1等待。
2、首先調度優先權高的佇列中的進程。若高優先權中佇列中已沒有調度的進程,則調度次優先權佇列中的進程。例如:Q1,Q2,Q3三個佇列,只有在Q1中沒有進程等待時才去調度Q2,同理,只有Q1,Q2都為空時才會去調度Q3。
3、對於同一個佇列中的各個進程,按照時間片輪轉法調度。比如Q1佇列的時間片為N,那么Q1中的作業在經歷了N個時間片後若還沒有完成,則進入Q2佇列等待,若Q2的時間片用完後作業還不能完成,一直進入下一級佇列,直至完成。
4、在低優先權的佇列中的進程在運行時,又有新到達的作業,那么在運行完這個時間片後,CPU馬上分配給新到達的作業(搶占式)。