• 大小: 156KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: C/C++
  • 标签: 操作系统  

资源简介

操作系统多级反馈队列模拟程序,用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 < q->ntime){
     q->rtime++;
     q->state=‘w‘;
    
     if(q->rtime == q->ntime){
        q->state = ‘f‘;
        tag--;
     }
        
        else if(q->rtime < q->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 < q->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 < q->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次实验\

评论

共有 条评论