資源簡介
操作系統多級反饋隊列模擬程序,用c語言編寫完成,有完整的源代碼及詳細報告

代碼片段和文件信息
#include
#include
typedef?struct?pcb{
char?name[10];
char?state;
int?ntime;
int?rtime;
int?atime;
struct?pcb?*next;
}PcbNode?*Pcb;
int?Time;
int?flag2flag3flag4tag;
void?insert_out(Pcb?headPcb?p1);
void?execute(Pcb?*link);
void?print(Pcb?*link);
void?insert_out(Pcb?head?Pcb?p1){
Pcb?p2;
p2?=?head;?
while(p2->next!=NULL?&&?p1->atime>p2->next->atime){
p2?=?p2->next;?
}?
p1->next?=?p2->next;
p2->next?=?p1;
}
void?read(Pcb?headPcb?p1FILE?*fp)
{
fscanf(fp“%s\t%c\t%d\t%d\t%d\n“p1->name&p1->state&p1->ntime&p1->rtime&p1->atime);
insert_out(headp1);
}
void?print(Pcb?*link){
int?k;
Pcb?p;
printf(“時間片:%d\n“Time);
????for(k?=?0;k<4;k++){
???? printf(“第%d隊列的情況:\n“k+1);
???? p?=?link[k];
???? while(p->next!=NULL){
???? p?=?p->next;
???? printf(“進程:%s????運行時間:%d?????服務時間:%d????狀態:%c?????到達時間:%d\n“p->namep->rtimep->ntimep->statep->atime);
???? }
????
????}
printf(“==============================================================\n\n“);?
}
void?execute(Pcb?*link){
Pcb?pqq1tt1t2;
????if(link[0]->next!=NULL){//第一隊列有進程?
????if(flag2!=0){//第2隊列有進程在服務?
?????????????t1?=?link[1]->next;
? ?????????t?=?link[1];
? ?????????t2?=?link[1]->next->next;
???? while(t->next!=NULL){
???? t=t->next;
???? }
???? t1->next?=?t->next;
???? t->next?=?t1;
???? link[1]->next?=?t2;
???? flag2?=?0;
???? t1->state?=?‘w‘;
}//第2隊列有進程在服務?
else?if(flag3!=0){//第3隊列有進程在服務?
??t1?=?link[2]->next;
????????????t?=?link[2];
????????????t2?=?link[2]->next->next;
???? while(t->next!=NULL){
???? t=t->next;
???? }
???? t1->next?=?t->next;
???? t->next?=?t1;
???? link[2]->next?=?t2;
???? t1->state?=?‘w‘;
???? flag3?=?0;
}?//第3隊列有進程在服務
else?if(flag4!=0){//第4隊列有進程在服務?
??t1?=?link[3]->next;
????????????t2?=?link[3]->next->next;
???? t?=?link[3];
???? while(t->next!=NULL){
???? t=t->next;
???? }
???? t1->next?=?t->next;
???? t->next?=?t1;
???? link[3]->next?=?t2;
???? t1->state?=?‘w‘;
???? flag4?=?0;
}//第4隊列有進程在服務
???? q?=?link[0]->next;
???? link[0]->next?=?q->next;
???? if(q->rtime?ntime){
???? q->rtime++;
???? q->state=‘w‘;
????
???? if(q->rtime?==?q->ntime){
????????q->state?=?‘f‘;
????????tag--;
???? }
????????
????????else?if(q->rtime?ntime){
???? p?=?link[1];
???? while(p->next!=NULL){
???? ???p?=?p->next;
}
???? q->next?=?p->next;
???? p->next?=?q;
????????}
????}
????}
else?if(link[0]->next?==?NULL&&link[1]->next!=NULL){//第1隊列無進程,第2隊列有進程?
q?=?link[1]->next;
if(q->rtime?ntime){
q->rtime++;
if(flag2==0)
q->state=‘r‘;
else?if(flag2?==?1)
q->state=‘w‘;
if(q->rtime?==?q->ntime){
q->state?=?‘f‘;
tag--;
link[1]->next?=?q->next;
if(flag2?==?1)
flag2?=?0;
}
else?if(q->rtime?ntime){
if(flag2?==?0)
flag2?=?1;
els
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????68??2016-11-19?18:59??操作系統第4次實驗\test_example.txt
?????文件????????6020??2016-12-29?22:11??操作系統第4次實驗\多級反饋隊列.cpp
?????文件??????159390??2017-01-02?18:22??操作系統第4次實驗\多級反饋隊列.docx
?????目錄???????????0??2017-01-02?21:09??操作系統第4次實驗\
- 上一篇:模擬設計段式存儲管理的分配與回收
- 下一篇:酒店管理系統 c++的代碼
評論
共有 條評論