资源简介
操作系统多级反馈队列模拟程序,用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次实验\
- 上一篇:模拟设计段式存储管理的分配与回收
- 下一篇:酒店管理系统 c++的代码
相关资源
- Linux操作系统C语言编程入门pd
- 操作系统 虚拟存储器地址转换
- 操作系统的模拟实现 C++编写
- 操作系统课程设计(最佳适应算法的
- MFC实现的操作系统页面置换FIFO、LRU、
- 进程调度的设计与实现图形界面实现
- myshell:操作系统编程-自己用C语言写
- 操作系统 内存分配与回收 C语言模拟
- 操作系统实验——spooling技术
- 操作系统使用C语言链表实现进程管理
- 哲学家进餐实验报告
- 《基于Linux的设备分配及磁盘调度》
- 操作系统生产者与消费者综合性实验
- C语言实现调度算法源代码-山东大学操
- 操作系统文件管理系统c++
- 基于FCFS和SPF的进程管理系统可用资源
- 操作系统课程设计 linux文件系统
- c++写的操作系统课程设计:模拟文件
- 操作系统文件管理系统模拟实现
- 处理机调度的模拟实现_C语言
- 操作系统课程设计,设备分配与磁盘
- 多道批处理系统两级调度的模拟
- 空闲分区链源代码
- 操作系统 4种经典同步互斥问题
- 广工操作系统课设:多道批处理系统
- 操作系统抢占式动态优先级调度算法
- 操作系统课设__多道批处理系统两级调
- 计算机操作系统实验报告,C语言实现
- 操作系统基本分页存储系统
- 操作系统实验报告处理机调度算法的
评论
共有 条评论