複製鏈接
請複製以下鏈接發送給好友

佔用週期

鎖定
在物理學,週期是時間循環的數值結果,是完成一次完整的自轉所費的時間,週期的倒數就是頻率。計算機中,關於週期的定義有很多,如指令週期、CPU週期。不同的週期定義,所對應的佔用週期的定義也不同。在計算機科學中,佔用週期主要有以下兩個解釋:一個指令佔用多少個CPU週期;進程調度中一個進程運行佔用多少CPU週期。
中文名
佔用週期
外文名
Occupancy cycle
學    科
計算機科學
定    義
指令週期、進程運行時間
有關術語
指令週期、進程調度
領    域
指令系統、操作系統

佔用週期指令週期

有關週期解釋
時鐘週期:這個名字的英文clock cycle; clock period;時鐘是用來計時的,是一個基本單位;在計算機中,cpu的晶振時間就是一個最最基本的單位,因此時鐘週期很基本,別的週期都用它來參考。
CPU週期 :又稱機器週期,CPU訪問一次內存所花的時間較長,因此用從內存讀取一條指令字的最短時間來定義。它一般由12個時鐘週期(振盪週期)組成,也是由6個狀態週期組成。而振盪週期=1秒/晶振頻率,因此單片機的機器週期=12秒/晶振頻率 。
總線週期(BUS Cycle):也就是一個訪存儲器或I/O端口操作所用的時間。
指令週期簡介
CPU每取出一條指令並執行這條指令,都要完成一系列的操作,這一系列操作所需要的時間通常叫做一個指令週期。換言之指令週期是取出一條指令並執行這條指令的時間。由於各條指令的操作功能不同,因此各種指令的指令週期是不盡相同的。例如一條加法指令的指令週期同一條乘法指令的指令週期是不相同的。 指令週期常常用若干個CPU週期數來表示,CPU週期也稱機器週期。指令不同,所需的機器週期數也不同。對於一些簡單的單字節指令,在取指令週期中,指令取出到指令寄存器後,立即譯碼執行,不再需要其它的機器週期。對於一些比較複雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器週期。通常含一個機器週期的指令稱為單週期指令,包含兩個機器週期的指令稱為雙週期指令。 [1]  指令佔用週期主要與指令的操作功能有關。有以下特點:
1、指令不同,所需的機器週期數也不同。對於一些簡單的的單字節指令,在取指令週期中,指令取出到指令寄存器後,立即譯碼執行,不再需要其它的機器週期。對於一些比較複雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器週期。
2、從指令的執行速度看,單字節和雙字節指令一般為單機器週期和雙機器週期,三字節指令都是雙機器週期,只有乘、除指令佔用4個機器週期。因此在進行編程時,在完成相同工作的情況下,選用佔用機器週期少的命令會提高程序的執行速率,尤其是在編寫大型程序程序的時候,其效果更加明顯。

佔用週期進程調度

概述
無論是在批處理系統還是分時系統中,用户進程數一般都多於處理機數、這將導致它們互相爭奪處理機。另外,系統進程也同樣需要使用處理機。這就要求進程調度程序按一定的策略,動態地把處理機分配給處於就緒隊列中的某一個進程,以使之執行。在操作系統中,往往要經歷下述三級調度:
高級調度:(High-Level Scheduling)又稱為作業調度,它決定把後備作業調入內存運行;
低級調度:(Low-Level Scheduling)又稱為進程調度,它決定把就緒隊列的某進程獲得CPU;
中級調度:(Intermediate-Level Scheduling)又稱為在虛擬存儲器中引入,在內、外存對換區進行進程對換。
調度方式
非剝奪方式
在採用這種調度方式時,一旦把處理機分配給某進程後,不管它要運行多長時間,都一直讓它運行下去,決不會因為時鐘中斷等原因而搶佔正在運行進程的處理機,也不允許其它進程搶佔已經分配給它的處理機。直至該進程完成,自願釋放處理機,或發生某事件而被阻塞時,才再把處理機分配給其他進程。
剝奪方式
這種調度方式允許調度程序根據某種原則去暫停某個正在執行的進程,將已分配給該進程的處理機重新分配給另一進程。搶佔方式的優點是,可以防止一個長進程長時間佔用處理機,能為大多數進程提供更公平的服務,特別是能滿足對響應時間有着較嚴格要求的實時任務的需求。但搶佔方式比非搶佔方式調度所需付出的開銷較大。搶佔調度方式是基於一定原則的,主要有如下幾條:
(1) 優先權原則。通常是對一些重要的和緊急的作業賦予較高的優先權。當這種作業到達時,如果其優先權比正在執行進程的優先權高,便停止正在執行(當前)的進程,將處理機分配給優先權高的新到的進程,使之執行;或者説,允許優先權高的新到進程搶佔當前進程的處理機。
(2) 短作業(進程)優先原則。當新到達的作業(進程)比正在執行的作業(進程)明顯的短時,將暫停當前長作業(進程)的執行,將處理機分配給新到的短作業(進程),使之優先執行;或者説,短作業(進程)可以搶佔當前較長作業(進程)的處理機。
(3) 時間片原則。各進程按時間片輪流運行,當一個時間片用完後,便停止該進程的執行而重新進行調度。這種原則適用於分時系統、大多數的實時系統,以及要求較高的批處理系統。 [2] 

佔用週期進程佔用週期

在進程調度中,進程每次運行所佔用的週期有相等的和不相等的,這主要與進程的調度算法有關。
佔用週期不相等的算法
先進先出算法
算法總是把處理機分配給最先進入就緒隊列的進程,一個進程一旦分得處理機,便一直執行下去,直到該進程完成或阻塞時,才釋放處理機。
例如,有三個進程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 算法時, 則每次調度是從就緒隊列中選擇一個最先進入該隊列的進程,為之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞後才放棄處理機。 [2] 
佔用週期相等的算法
短進程優先
最短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馬上分配給新到達的作業(搶佔式)。
參考資料
  • 1.    王爽.彙編語言:清華大學出版社,2013-09-01
  • 2.    湯小丹.計算機操作系統:西安電子科技大學出版社,2010