Linux中TASK_RUNNING状态的进程链表
2012-02-08 16:25
253 查看
早先的Linux版本把所有处于TASK_RUNNING状态的进程组织在一个叫做运行队列(runqueue)的链表中,由于维持链表中的进程按优先级排序的开销过大,因此,早期的调试程序需扫描整个队列以选择“最佳”的可运行程序。
Linux2.6实现的运行队列有所不同。为了实现在固定的时间内选出“最佳”的可运行程序,内核将可运行进程的优先级划分为0-139,并为此建立了140个可运行进程链表,用以组织处于TASK_RUNNING状态的进程,每个进程优先权对应一个不同的链表。此外,在多处理器系统中,每个CPU都有它自己的运行队列。
Linux2.6实现的运行队列结构如下:
进程描述符的结构都包含一个list_head类型的tasks字段,这个类型的prev和next字段分别指向前面和后面的task_struct元素,实现双向链表。
Linux2.6实现的运行队列有所不同。为了实现在固定的时间内选出“最佳”的可运行程序,内核将可运行进程的优先级划分为0-139,并为此建立了140个可运行进程链表,用以组织处于TASK_RUNNING状态的进程,每个进程优先权对应一个不同的链表。此外,在多处理器系统中,每个CPU都有它自己的运行队列。
Linux2.6实现的运行队列结构如下:
类型 | 字段 | 描述 |
int | nr_active | 链表中进程描述符的数量 |
unsigned long[5] | bitmap | 优先权位图:当且仅当某个优先权的进程链表不为空时设置相应的位标志 |
struct list_head[140] | queue | 140个优先权队列的头结点 |
相关文章推荐
- Linux中TASK_RUNNING状态的进程链表
- task_running状态下的进程链表
- TASK_KILLABLE:Linux 中的新进程状态
- TASK_KILLABLE:Linux 中的新进程状态
- TASK_KILLABLE:Linux 中的新进程状态【转】
- Linux的进程,线程以及调度(fork与僵尸,内存泄漏,task结构体,停止状态与作业控制)
- Linux系统状态检测及进程控制--1
- 进程的状态与task_struct结构体
- Linux进程状态与实时操作系统进程状态区别
- linux进程状态浅析
- linux进程的几种状态
- Linux进程状态(ps stat)之R、S、D、T、Z、X
- linux下查询端口,进程的状态以及netstat的参数意义
- linux上进程状态查询
- Linux 查看进程IO状态
- linux进程状态
- Linux 进程状态 说明
- Linux进程状态解析之R、S、D
- linux进程task_struct结构体中的state域
- linux 进程状态