设为首页 加入收藏

TOP

Linux进程调度的运行队列
2014-11-24 01:23:01 来源: 作者: 【 】 浏览:1
Tags:Linux 进程 调度 运行 队列

运行队列


当Linux内核要寻找一个新的进程在CPU上运行时,必须只考虑处于可运行状态的进程,(即在TASK_RUNNING状态的进程),因为扫描整个进程链表是相当低效的,所以引入了可运行状态进程的双向循环链表,也叫运行队列(runqueue)。


运行队列容纳了系统中所有可以运行的进程,它是一个双向循环队列


该队列通过task_struct结构中的两个指针run_list链表来维持。队列的标志有两个:一个是“空进程”idle_task、一个是队列的长度。


另一个重要标志是队列长度,也就是系统中处于可运行状态(TASK_RUNNING)的进程数目,用全局整型变量nr_running表示,在/kernel/fork.c中定义如下:


int nr_running=1;


若 nr_running为0,就表示队列中只有空进程。在这里要说明一下:若nr_running为0,则系统中的当前进程和空进程就是同一个进程。但是Linux会充分利用CPU而尽量避免出现这种情况。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇浅析Java中的深拷贝与浅拷贝 下一篇怎样使用Java读取OpenOffice文档

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: