首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问:模拟CPU任务调度算法的有关问题

2012-03-29 
请教:模拟CPU任务调度算法的问题。这个问题已经想了2周了,但是还是没有头绪。找了许多模拟任务调度的算法,没

请教:模拟CPU任务调度算法的问题。
这个问题已经想了2周了,但是还是没有头绪。找了许多模拟任务调度的算法,没有关于周期性任务和非周期任务的算法,请大家看看,有没有好的办法,多谢。

任务描述如下:
要求手动输入任务的名称,优先级,执行时间和频率,例如:
-----------------------------------------
任务名称     优先级     执行时间(ms)   频率(Hz)  
-----------------------------------------  
        A               3                   1                     非周期
        B               5                   1                     100
        C               4                   2                     200
        D               2                   1                     100
        E               1                   1                     100
-----------------------------------------
优先级是固定的,如何编写调度程序,使CPU能够在1个Major   frame   (   Majorframe   =   1000/Min(频率)   =   10   ms   )中完成调度,并且最后输出Gantt   Chart,   CPU空闲的时刻用‘/’代替,如下:
Gantt   Chart:
---|---------------------
      |B|C|C|A|D|/|C|C|E|/|
---|--------------------->

我想请教大家这个算法,如何处理周期任务,因为它过某个时间又会出现。我用的是结构体,但是搜索到的许多调度程序是用的链表,如下,但是好像这个题目还用不到链表,对吗?
struct   content
{
            char   name;
            int   priority;
            int   exetime;
            int   frequency;
            struct   *content   next;   /*   链表   */
}
希望大家能够共同学习提高,多谢。




[解决办法]
使用优先队列 完全二叉树能实现这个吧,数组就行,效率高
[解决办法]
用c程序模拟cpu任务调度
如果你懂单片机中断和一般程序的话我想这个问题很容易解决了
hoho,自己研究一下吧!
[解决办法]
可以
把周期性任务的 task写的时钟中断里, 时间到了就模拟执行, 再将任务设成下一个周期的时间值.

是可抢占还是不可抢占, 还是非周期可抢占, 周期不可抢占, 楼主要考虑
[解决办法]

我想请教大家这个算法,如何处理周期任务,因为它过某个时间又会出现。我用的是结构体,但是搜索到的许多调度程序是用的链表,如下,但是好像这个题目还用不到链表,对吗?

=--------------------------------
任务队列,把要执行的任务都挂在队列内.
建立一个链表,把周期性任务链起来.周期性的检查该链表,到了就把它放入任务队列.它执行完记录它执行的
当前时间
[解决办法]
算法很多啊(google),队列queue就是和我们排队的概念一样,FIFO而已。

另外还有优先队列(堆),可以回头看看,磨刀不误砍柴工
[解决办法]
楼主,你这个问题,
是不是只要求结果,能模拟出来的样子就可以, 至于时间准确不准确就不考虑了.

有没有限制只能用C
[解决办法]
看看 < <linux内核完全注释> > , 找点思路.


------解决方案--------------------


这个问题一定会用到数据结构的, 既使用数组存储, 也需要类似链表的操作.
楼主可暂时不考虑 周期性 这个要求, 先实现非周期版本的, 这里的周期性实在不是主要问题,
如果楼主自己能实现非周期版本后, 肯定很容易明白周期怎样实现.
[解决办法]

楼主说搞了两个星期了, :p, 算是比较辛苦了 , 这几天偶也正好有空, (我对这个挺有兴趣), 写了个, 程序可能很垃圾, 比如, 不Ctrl-C停不下来 :), 但还是有参考价值的. 楼主可以看看

http://blog.csdn.net/roadtang/archive/2007/09/12/1782513.aspx

热点排行