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

请教:模拟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内核完全注释> > , 找点思路.


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