资源简介
操作系统多级反馈队列模拟程序,用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++的代码
相关资源
- 操作系统c语言模拟文件管理系统844
- 操作系统课设 读写者问题 c语言实现
- ROS操作系统入门讲义
- Linux操作系统下C语言编程从零开始
- 操作系统存储管理实验报告c/c++
- 操作系统课程设计(银行家算法)附
- 现代操作系统第三版高清
- C++操作系统课设-进程管理
- 哲学家进餐问题的c++模拟实现
- 操作系统课程设计(生产者-消费者存
- 操作系统——5个实验.zip
- 操作系统进程管理实验
- 操作系统—页面置换算法C++实现
- 操作系统 内存管理 模拟 图形界面
- 银行家算法 mfc 含源代码 界面 操作系
- 操作系统生产者消费者问题MFC动态实
- 操作系统课程设计:Windows 命令接口之
- 操作系统课程大作业-文件管理系统
- C语言实现最低松弛度优先算法源代码
- 操作系统信号量PV经典问题:沉睡的理
- 基于C++的银行家算法模拟实现
- 生产者消费者问题源码-MFC实现-进程模
- 操作系统实验 进程调度 高响应比优先
- 操作系统文件管理C++代码实现
- 嗜睡的理发师进程同步与实现c++
- 安徽大学操作系统实验八基于扫描的
- 安徽大学操作系统实验四主存空间的
- 操作系统——银行家算法
- 操作系统_生产者消费者c++、mfc实现
- 磁盘调度c++模拟实现计算机操作系统
评论
共有 条评论