程式設計實現時間片輪轉演算法,並求出每個作業的完成時間、周轉時間、帶權周轉時間,及平均周轉時間、平均帶權周轉時間。
任選一種高階語言實現;
選擇1-2種排程演算法;
能夠輸入程序的基本資訊,如程序名、提交時間、預估執行時間等;
根據選擇的排程演算法顯示程序排程順序;
顯示完成排程後每個程序的開始時間、完成時間呢、周轉時間,帶權周轉時間;
計算平均周轉時間和平均帶權周轉時間;
1、 設計思想
系統將所有的就緒程序按fcfs策略排成乙個就緒佇列。系統可設定每隔一定時間(如30ms)便產生一次中斷,去啟用程序排程程式進行排程,把cpu分配給隊首程序,並令其執行乙個時間片。當它執行完畢後,將程序管道就緒佇列的隊尾,再把處理機分配給就緒佇列中新的隊首程序,也讓它執行乙個時間片,以此類推。這樣,就可以保證就緒佇列中的所有程序在確定的時間段內,都能獲得乙個時間片的處理機時間。
將程序按fcfs排成乙個佇列,每次排程取隊首程序分配cpu,時間片到,將pcb掛到就緒隊尾。
在時間片輪轉排程演算法中,應在何時進行程序的切換,可分為兩種情況:
② 在乙個時間片用完時,計時器中斷處理程式被啟用。如果程序尚未執行完畢,排程程式將把它送往就緒佇列的末尾。
2.執行結果
四、實驗**
public class thread
public void setid(int id)
public int getarrivetime()
public void setarrivetime(int arrivetime)
public int getruntime()
public void setruntime(int runtime)
public int getrmaintime()
public void setrmaintime(int rmaintime)
public int getendtime()
public void setendtime(int endtime)
public int getturnovertime()
public void setturnovertime(int turnovertime)
public float getqturnovertime()
public void setqturnovertime(float qturnovertime)
public thread()
public thread(int id, int arrivetime, int runtime,int rmaintime)
@override
public string tostring() ';
}}package com.hu;
import j**a.util.iterator;
import j**a.util.linkedlist;
import j**a.util.random;
public class test
public static void rr(linkedlist queue)else }}
public static thread initthread()
if (threads[j].arrivetime == threads[j + 1].arrivetime) }}
}return threads;
}public static linkedlist initqueue(thread threads)
return queue;}}
時間片輪轉演算法實現
include include define null 0 typedef struct quen 定義結構 char pname 8 int time1 int time2 char state struct quen next quen main 主程式 quen q,p,head,m char...
時間片輪轉演算法
include include include include include include includeusing namespace std 初始化程序池 初始化就緒佇列 rr演算法 struct pcb pcb string name,int atime,int rtime,char st...
時間片輪轉
時間片輪轉排程演算法,這種演算法是將程序控制塊按照進入就緒佇列的先後次序排成佇列。關於就緒佇列的操作就是從隊頭摘下乙個程序控制塊和從隊尾掛入乙個程序控制塊。單處理器系統中程序控制塊分成乙個正在執行程序的程序控制塊 就緒程序的程序控制塊組織成的就緒佇列和等待程序的程序控制塊組成的等待佇列。由於實驗模擬...