91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-06
  • 語言: C/C++
  • 標簽: 操作系統??

資源簡介

用C語言實現的多級反饋隊列調度算法,操作系統課程作業。用VC6.0調試通過。

資源截圖

代碼片段和文件信息

#include????
#include????
#include????
typedef?struct?node?????????????????????????/*進程節點信息*/??
{???
char?name[20];?????????????????????????????/*進程的名字*/??
int?prio;??????????????????????????????????/*進程的優先級*/??
int?round;?????????????????????????????????/*分配CPU的時間片*/??
int?cputime;???????????????????????????????/*CPU執行時間*/??
int?needtime;????????????????????????????/*進程執行所需要的時間*/??
char?state;??????????????/*進程的狀態,W——就緒態,R——執行態,F——完成態*/??
int?count;?????????????????????????????/*記錄執行的次數*/??
struct?node?*next;??????????????????????/*鏈表指針*/??
}PCB;???
typedef?struct?Queue?????????????????/*多級就緒隊列節點信息*/??
{???
PCB?*linkPCB;??????????????????????/*就緒隊列中的進程隊列指針*/??
int?prio;????????????????????????????/*本就緒隊列的優先級*/??
int?round;???????????????????????????/*本就緒隊列所分配的時間片*/??
struct?Queue?*next;??????????????????/*指向下一個就緒隊列的鏈表指針*/??
}ReadyQueue;???
PCB?*run=NULL*finish=NULL;?????/*定義三個隊列,就緒隊列,執行隊列和完成隊列*/??
ReadyQueue?*Head?=?NULL;???????????????????/*定義第一個就緒隊列*/??
int?num;???????????????????????????????????/*進程個數*/??
int?ReadyNum;???????????????????????????/*就緒隊列個數*/??
void?Output();???????????????????????????/*進程信息輸出函數*/??
void?InsertFinish(PCB?*in);???????/*將進程插入到完成隊列尾部*/??
void?InsertPrio(ReadyQueue?*in);?????/*創建就緒隊列,規定優先數越小,優先級越低*/??
void?PrioCreate();???????????????????????/*創建就緒隊列輸入函數*/??
void?GetFirst(ReadyQueue?*queue);?????/*取得某一個就緒隊列中的隊頭進程*/??
void?InsertLast(PCB?*inReadyQueue?*queue);???/*將進程插入到就緒隊列尾部*/??
void?ProcessCreate();???????????????????????/*進程創建函數*/??
void?RoundRun(ReadyQueue?*timechip);?????/*時間片輪轉調度算法*/??
void?MultiDispatch();?????????????/*多級調度算法,每次執行一個時間片*/??
??
int?main(void)???
{???
PrioCreate();?????????????????????????/*創建就緒隊列*/??
ProcessCreate();??????????????????????/*創建就緒進程隊列*/??
MultiDispatch();??????????????????????/*算法開始*/??
Output();?????????????????????????????/*輸出最終的調度序列*/??
return?0;???
}???
void?Output()????????????????????????/*進程信息輸出函數*/??
{???
ReadyQueue?*print?=?Head;???
PCB?*p;???
printf(“進程名\t輪數\tcpu時間\t需要時間\t進程狀態\n“);???
while(print)???
{???
??if(print?->linkPCB?!=?NULL)???
??{???
???p=print?->linkPCB;???
???while(p)???
???{???
????printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->state);??????
????p?=?p->next;???
???}???
??}???
??print?=?print->next;???
}???
p?=?finish;???
while(p!=NULL)???
{???
??printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->state);???
??p?=?p->next;???
}???
p?=?run;???
while(p!=NULL)???
{???
??printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->statep->count);???
??p?=?p->next;???
}???
??
??
}???
void?InsertFinish(PCB?*in)???????????/*將進程插入到完成隊列尾部*/??
{???
PCB?*fst;???
fst?=?finish;???
??
if(finish?==?NULL)???
{???
??in->next?=?finish;???
??finish?=?in;???
}???
else??
{???
??while(fst->next?!=?NULL)???
??{???
???fst?=?fst->next;???
??}???
??in?->next?=?fst?->next;???
??fst?->next?=?i

評論

共有 條評論