//system shedule algorithm
//include the priority first algorithm and the time slice algorithm
//version 2.0
//author:chillycreator
#include
#include
#include
using namespace std;
class process
//gettors and settors
string getname()
int getpri()
int getneedtime()
int getcputime()
int getstate()
process* getnext()
void setstate(int state)
void setcputime(int time)
void setneedtime(int time)
void setpri(int pri)
void setnextprocess(process* next)
void print()
tail = temp; }
//user test
void test2(int n)
tail = temp; }
public:
//testn is for the various of tests. 1 is using the default test. 2 is using the user test.
system(int testn,int num)
//delete a process
void deleteprocess(process* a)
void toqueueend(process* a)
//put the process to the end of the queue
void toqueuehead(process* a)
//find parent
process* findp(process* a)
//when the process is sheduled into the cpu
void use(process* pro,int runtime,int depriority)
else
}
//find the highest priority
process* findhighest()
}
return first; }
// the priority first algorithm
void fp()
} }
//the time slice algorithm
void ts(int runtime)
} };
//test
int main()
time++;
cout <而void ft()演算法中這樣呼叫:
// the priority first algorithm
void fp()
if(fir != null)
oldtimer++;
}
}
這樣改動後就可以讓程序隨時間的增加而優先順序提高。當乙個程序在佇列中很長一段時間後,程序就會出現老化情況。為了防止老化(就是很難再得到利用)的發生,過一段時間後就會檢測程序。當發現長時間沒有用到的程序時,優先順序會公升高。
不過void findold(int runt)
並不嚴謹。可能會出現所以程序都提高優先順序的情況。所以還要進行優化。
另外在上一次的**中有可能會出現程序優先順序為負數的情況。可以這樣修改類process
void setpri(int pri)
Linux優先順序時間片排程
程序的優先順序有2種度量方法,一種是nice值,一種是實時優先順序 rtprio nice值的範圍是 20 19,值越大優先順序越低,也就是說nice值為 20的程序優先順序最大。實時優先順序 rtprio 的範圍是0 99,與nice值的定義相反,實時優先順序是值越大優先順序越高。實時程序都是一些...
排程演算法(時間片輪轉 優先順序排程 多級反饋佇列)
排程演算法 1 時間片輪轉排程演算法 rr 2 優先順序排程演算法 3 多級反饋佇列排程演算法 tips 各種排程演算法的學習思路 1.演算法思想 2.演算法規則 3.這種排程演算法是用於作業排程還是程序排程?4.搶占式?非搶占式?5.優點和缺點 6.是否會導致飢餓 1 演算法思想 公平地 輪流地為...
時間片輪轉演算法和優先順序排程演算法 C語言模擬實現
一 目的和要求 程序排程是處理機管理的核心內容。本實驗要求用高階語言編寫模擬程序排程程式,以便加深理解有關程序控制快 程序佇列等概念,並體會和了解優先數演算法和時間片輪轉演算法的具體實施辦法。二 實驗內容 1.設計程序控制塊pcb的結構,通常應包括如下資訊 程序名 程序優先數 或輪轉時間片數 程序已...