各位请进,小弟有一个大问题请教。绝对高分送人

zhenzhen88 2003-12-08 09:32:39
算法进程:就绪链按优先数大小从高到低排列,链首进程首先投入,每过一个时间片,运行进程 所需运行时间减一,说明它已运行了一个时间片,优先数也减了(理由是该进程如果在一个时间片完成不了,优先数应降低一级),接着比较现行进程和就绪链的链首进程的优先级,如果现行进程或是相同就让现行进程继续运行,否则,调度就绪链的链首进程投入运行,原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。
...全文
31 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bacp 2003-12-10
  • 打赏
  • 举报
回复
这么难的题
呵呵
2周
晕死了
ZhangYv 2003-12-09
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/read_article.asp?id=20123
ZhangYv 2003-12-09
  • 打赏
  • 举报
回复
优先队列(priority queue)是一个以集合为基础的抽象数据类型,每个元素都有一个优先级,对优先队列执行的操作有1) 查找;2) 插入一个新元素;3) 删除。在最小优先队列(min priority queue)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操作用来搜索优先权最大的元素,删除操作用来删除该元素。优先权队列中的元素可以有相同的优先权,查找与删除操作可根据任意优先权进行。



优先队列的数据结构实现方式有很多种: 无序链表,有序链表,二叉搜索树,左高树,优先级树等等.其中优先级树满足以下两个性质:

1)树中每个结点只存一个元素

2)树中任意一个结点的值高于其儿子结点中存储的元素的值.

特别的,当一棵优先级树为近似满二叉树时,我们称它为堆或偏序树.比如堆排序就是利用这种数据结构(优先队列)来完成的,优先级就是待排数据的值.

以下举5个具体的例子说明优先队列在解决问题中的应用.

(1) 在作业调度算法中常常利用的优先队列数据结构,先举”短作业优先调度”为例子:

一般情况下,我们希望将耗时少的作业尽快完成,也就是说短作业都优先于已经消耗一些时间的作业.使短作业优先而又不让锁死长作业的方法之一就是为每个作业分配一个优先级.分配优先级公式是100 * (Tused(x)-Tinit(x)),Tused()是作业总共消耗的时间,Tinit()是作业到达的时间.100是一个可以根据需要进行调整的数,通常要大等于最大的作业总数.一个作业可以用一个由作业标识符和作业优先级组成的结构体来表示,即:

struct ProcessType{

int id;

int priority;

};

为了给作业安排时间,分时系统中设置了类型为ProcessType的优先队列WAITING. 过程Initial()和Select()对该优先队列做处理.每当一个新作业到达时,过程Initial()就将这个作业插入优先队列WAITING中.当系统有时间段可以使用时,Select()就从中选出一个优先权最高的一个作业,并将该作业从WAITING中删除,由Select()暂存该作业记录,以便完成时间段后带回一个新的优先级重新入队. 这里假设有DeleteMin()函数返回是指向优先级最高的作业的指针,CurrentTime()是用来记时的函数,Execute()是处理作业的过程.下面给出该算法实现的框架.

void Initial(int p) //p是作业号

{

ProcessType process;

process.id = p;

process.priority = -CurrentTime();//记时

Insert(process, WAITING); //对新达到的作业入优先队列

}

void Select()

{

int begintime, endtime;

ProcessType process;

process = (DeleteMin(WAITING))->element;//选中优先级最高的作业并出队

begintime = CurrentTime();

Execute(process.id); //作业调入运行

endtime = CurrentTime();

process.priority += 100 * (endtime-begintime); //重新分配优先级

Insert(process, WAITING);//process带回新的优先级重新入队

}

ks9960 2003-12-09
  • 打赏
  • 举报
回复
算法不完整啊,优先级不可能无限减啊,时间片完了程序就不执行了?…………要是这是一个模拟操作系统进程处理的作业的话,就自己加些条件做简单点,表示意思就行了;不然恐怕要去啃砖头咯!
barryfat 2003-12-09
  • 打赏
  • 举报
回复
这个代码长哦!
我帮你顶一下!
flinymengw4u 2003-12-09
  • 打赏
  • 举报
回复
这么长,帮你顶
glacierrr 2003-12-09
  • 打赏
  • 举报
回复
作业
zhenzhen88 2003-12-09
  • 打赏
  • 举报
回复
各位哥哥姐姐们,能不能写详细一点。
我是没有时间了。
我要交课程设计。有VB,网页。网络啊。
只有2周时间。

绝对给分。
高分相求。
magelfly 2003-12-09
  • 打赏
  • 举报
回复
ZhangYv(英语-痛苦、绝望) 很有深度!
liushuaiboy 2003-12-09
  • 打赏
  • 举报
回复
同意
ilovedonny 2003-12-09
  • 打赏
  • 举报
回复
ZhangYv(英语-痛苦、绝望)的帖子是最实用的了,楼主快给分吧!!
lengfenghongyu 2003-12-08
  • 打赏
  • 举报
回复
哦,好长啊!帮你顶一下吧!
cai114 2003-12-08
  • 打赏
  • 举报
回复
我也不会帮你UP吧
zhenzhen88 2003-12-08
  • 打赏
  • 举报
回复
能不能将代码写清楚,多谢各位了。这个题我真的不会做了。

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧