动态优先级调度算法

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:41:08
进程 到达时间 要求服务时间
A 0 4
B 1 3
C 2 5
D 3 2
E 4 4
T=0:只有作业A已到达,调度作业A运行。
T=4:作业A完成,作业B、C、D、E已到达,计算作业B、C、 D、E响应比RP分别为: 1+3/3、1+2/5、1+1/2、1+0/4,作业B响应比最大调度运行。
T=7:作业B完成,作业C、D、E已到达,计算作业C、D、E响应比RP分别为: 1+5/5、1+4/2、1+3/4,作业D响应比最大调度运行。
T=9:作业D完成,作业C、E已到达,计算作业C、E响应比RP分别为: 1+7/5、1+5/4,作业C响应比最大调度运行。
T=14:作业C完成,只有作业E未完成,调度作业E运行。

优先权=响应时间/要求服务时间
望高手 给我编个C++,我已经变了两天 实在想不出来了,最后结果要求输出顺序的 ,也就是ABDCE
如果可行再加 50分,写好最好解析下。。
一数组比较完大小,把比较得出的最大的去掉,其余继续比较 怎么实现

给你两个例子,第一个:http://dev.csdn.net/article/53/53415.shtm

第二个:

#include "stdio.h"
#include <STDLIB.H>
#include <CONIO.H>
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0
struct pcb { /* 定义进程控制块PCB */
char name[10];
char state;
int super;
int ntime;
int rtime;
struct pcb* link;
}*ready=NULL,*p;
typedef struct pcb PCB;
sort() /* 建立对进程进行优先级排列函数*/
{
PCB *first, *second;
int insert=0;
if((ready==NULL)||((p->super)>(ready->super))) /*优先级最大者,插入队首*/
{
p->link=ready;
ready=p;