Chinaunix首页 | 论坛 | 博客
  • 博客访问: 658503
  • 博文数量: 185
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2107
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(185)

文章存档

2024年(1)

2023年(3)

2020年(1)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2016-09-02 20:26:58

内核资料收集
    
    1. 进程链表
      进程链表把所有进程的描述符链接起来。每个task_struct结构都包含有一个list_head类型的tasks字段,这个类型的
    的prev和next字段分别指向前面和后面的task_struct元素。
            进程链表的头是init_task描述符,它是0进程(或称swapper进程)的进程描述符。init_task的tasks.prev指向链表中的
    最后插入的进程描述符的tasks字段。
            宏for_each_process()扫描整个进程链表

    2. TASK_RUNNING状态的进程链表
            linux2.6实现的运行队列,可以在固定时间内选出“最佳”可运行进程,而与队列中可运行进程的数量无关。
            linux2.6内核建立多个可运行进程链表,每个进程优先级对应一个不同的链表。进程描述符task_struct包含一个list_head
        类型的字段run_list。运行队列链表分成140个不同的队列。如果进程的优先权为k(取值范围是0到139),run_list字段会
        把该进程链入优先仅为k的可运行进程链表中。
            多处理器系统中,每个CPU都有它自己的的运行队列,即自己的进程链表集。
            组成运行队列的进程描述符链表,都由一个单独的prio_array_t数据结构实现。
            enqueue_task(p, array)和dequeue_task(p, array)函数,向队列中插入/从运行队列中删除进程描述符。
阅读(1068) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~