多级反馈队列调度算法

#include

#include

#include

#define NULL 0

#define MAL(type) (type *)malloc(sizeof(type))

using namespace std;

typedef struct LNode

{char name[5];

char state;

int runtime;

int needtime;

struct LNode *next;

}LNode;

LNode *H;

int T,D,J;

void print()

{LNode *p=H;

printf("\n进程名 需执行时间 已执行时间 状态\n");

for(int i=0;i

{printf("%s %10d %10d %c\n",p->name,p->needtime,p->runtime,p->state); p=p->next;

}

system("PAUSE");

}

void input()

{int i;

printf("请输入进程数:");

scanf("%d",&J);

for(i=0;i

{LNode *p,*q;

q=MAL(LNode);

printf("\n请输入第%d个进程的进程名:",i+1);

scanf("%s",&q->name);

printf("请输入第%d个进程需要的执行时间:",i+1);

scanf("%d",&q->needtime);

if(q->needtime

{printf("所需时间要大于0\n 请重新输入——\n");i--;}

else

{q->runtime=0;

q->state='N';

q->next=NULL;

}

if(i==0)

H=p=q;

else

{p->next=q;p=q;}

}

printf("\n进程初始化态为:");

print();

}

void run()

{int i,time=0,l=1;

printf("\n请输入队列个数:");

scanf("%d",&D);

printf("请输入第一个队列的时间片长度:");

scanf("%d",&T);

for(i=0;i

{int k=1;

LNode *p,*q;

if(i

else i--;

p=H;

while(p!=NULL)

{if(p->state=='Y'){p=p->next;continue;}

p->runtime=p->runtime+time;

if(p->needtimeruntime)

{if(p->needtime==p->runtime)

{p->state='Y';printf("进程%s已运行完毕!",p->name);} else

{p->runtime=p->needtime;p->state='Y';}

}

p=p->next;

}

for(q=H;q!=NULL;q=q->next)

{if(q->state=='N'){k=0;break;}

}

if(k==1)break;

else print();

}

}

int main()

{input();

run();

print();

printf("所有进程执行完成!\n"); system("PAUSE"); return 0;

}


相关文章

  • 多级反馈队列调度算法的研究与实现
  • 题 目: 姓 名: 邹善席 年 月 日 目 录 摘 要 .................................................. 1 1.课题背景 ............................................... 2 2.调度算法分析 ... ...

  • 实验2-处理机调度
  • 操作系统实验2:处理机调度 实验目的 模拟在单处理器多进程操作系统的CPU调度.帮助学生掌握多种CPU调度算法的知识原理和运作机制.本实验为模拟实验,不要求实现真正的进程创建与进程调度.主要实现各种调度算法. 实验内容 进程PCB结构:标识符.进程名称.到达时间.服务时间.剩余运行时间.已使用时间. ...

  • [计算机操作系统期末考试试题]试题9
  • A. 首次适应法 B.最佳适应法 C.最坏适应法 D.循环首次适应法 13. LRU置换算法所基于的思想是( ). A. 在最近的过去用得少的在最近的将来也用得少 B. 在最近的过去用得多的在最近的将来也用得多 C. 在最近的过去很久未使用的在最近的将来会使用 ( 至 学年第 学期)D. 在最近的过 ...

  • 进程调度算法模拟-
  • 进程调度算法模拟 专业:计算机科学与技术 学号:120602105 姓名:黄凡 实验日期:2014年12月2日 一.算法综述 调度也称dispatcher,这是内核的主要职责之一就是决定该轮到哪个任务运行了多数实时内核是基于优先级调度算法的每个任务根据其重要程度的不同被赋予一定的优先级,基于优先级的 ...

  • 操作系统实验报告+进程调度+作业调度等
  • 操作系统实验报告 1.进程调度 2.作业调度 3.主存空间的分配与回收 4.文件系统 学生学院______计算机学院______ 专业班级____网络工程(3)班_____ 学 号______3107007062_____ 学生姓名________张菲__ _____ 指导教师_______胡欣如 ...

  • 操作系统课程设计(进程管理)
  • 操作系统 课程设计报告 题 目:进程管理 专 业: 班 级: 姓 名: 学 号: 指导老师: 年 月 日 <操作系统>课程设计任务书 一.课程设计题目(任选一个题目) 1. 模拟进程管理 2. 模拟处理机调度 3. 模拟存储器管理 4. 模拟文件系统 5. 模拟磁盘调度 二.设计目的和要 ...

  • 20**年软件设计师考试大纲(新)
  • 2013软件设计师考试大纲 一.考试说明 1.考试目标 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写.调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件:具有工程 ...

  • 动态分区分配算法的详细过程
  • 动态分区分配算法的详细过程 #include #include #include #define L 10 using namespace std; typedef struct LNode {int startaddress; int size; int state; }LNode; LNode ...

  • 实验六模拟处理机调度算法
  • 实验六 模拟处理机调度算法 一.实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态.当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器.本实验模拟在单处理器情况下处理器调度,帮助自己加深了解处理器调度的工作. 二.实验题目 选择一个调度算法,实现处理 ...

  • 基于动态关键任务的多处理器任务分配算法
  • 第30卷第3期计算 机 学报 v01.30No.3 2007年3月 CHINESEJOURNAL0FCOMPUTERS Mar.2007 基于动态关键任务的多处理器任务分配算法 兰 舟孙世新 (电子科技大学计算机科学与工程学院成都610054) 摘要多处理器调度问题是影响系统性能的关键问题,基于任务 ...

© 2024 范文中心 | 联系我们 webmaster# onjobs.com.cn