task_running状态下的进程链表

     早先的linux版本把所有的可运行进程都放在同一个运行队列中(链表),由于维持这个链表按优先级排序时开销过大,因此,早期的调度程序不得在选择最佳可运行进程时扫描整个队列

     linux2.6实现方法有些不同,其目的是在固定时间内选出最佳可运行进程,与队列中的进程数目无关。

     提高调度运行速度的方法是建立多个可运行进程链表,每种进程优先权对应一个不同的链表。如果某个进程的优先权等于k,就把该进程放在优先级为k的进程链表中。

    内核必须为系统中每个运行队列保存大量的数据,不过运行队列的主要数据结构还是组成运行队列的进程描述符链表,所有这些链表都是有哟个单独的prio_array_数据结构实现,其字段说明如下:

   int       nr_active     链表中进程描述符的数量

  unsigned long【5】 bitmap 优先权位图:当且仅当某个优先权的进程链表不为空时设置相应的位标志

 struct list_head[15]  queue 140优先权队列的头结点

你可能感兴趣的:(数据结构,linux,链表)