-
大小: 156KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-05
- 語言: C/C++
- 標(biāo)簽: 操作系統(tǒng)??
資源簡介
操作系統(tǒng)多級(jí)反饋隊(duì)列模擬程序,用c語言編寫完成,有完整的源代碼及詳細(xì)報(bào)告

代碼片段和文件信息
#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(“時(shí)間片:%d\n“Time);
????for(k?=?0;k<4;k++){
???? printf(“第%d隊(duì)列的情況:\n“k+1);
???? p?=?link[k];
???? while(p->next!=NULL){
???? p?=?p->next;
???? printf(“進(jìn)程:%s????運(yùn)行時(shí)間:%d?????服務(wù)時(shí)間:%d????狀態(tài):%c?????到達(dá)時(shí)間:%d\n“p->namep->rtimep->ntimep->statep->atime);
???? }
????
????}
printf(“==============================================================\n\n“);?
}
void?execute(Pcb?*link){
Pcb?pqq1tt1t2;
????if(link[0]->next!=NULL){//第一隊(duì)列有進(jìn)程?
????if(flag2!=0){//第2隊(duì)列有進(jìn)程在服務(wù)?
?????????????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隊(duì)列有進(jìn)程在服務(wù)?
else?if(flag3!=0){//第3隊(duì)列有進(jìn)程在服務(wù)?
??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隊(duì)列有進(jìn)程在服務(wù)
else?if(flag4!=0){//第4隊(duì)列有進(jìn)程在服務(wù)?
??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隊(duì)列有進(jìn)程在服務(wù)
???? 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隊(duì)列無進(jìn)程,第2隊(duì)列有進(jìn)程?
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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????????68??2016-11-19?18:59??操作系統(tǒng)第4次實(shí)驗(yàn)\test_example.txt
?????文件????????6020??2016-12-29?22:11??操作系統(tǒng)第4次實(shí)驗(yàn)\多級(jí)反饋隊(duì)列.cpp
?????文件??????159390??2017-01-02?18:22??操作系統(tǒng)第4次實(shí)驗(yàn)\多級(jí)反饋隊(duì)列.docx
?????目錄???????????0??2017-01-02?21:09??操作系統(tǒng)第4次實(shí)驗(yàn)\
評(píng)論
共有 條評(píng)論