在阅读 Robert Love 的《Linux 内核开发》时,我经历了以下几行:
内核将进程列表存储在称为任务列表的循环双向链表中。
我想知道这个任务列表的大小是多少。
答案1
任务列表存储在循环双向链表中;每个节点是一个struct task_struct
。列表结构是专门在该tasks
字段中的。内存中没有单独的对象来表示列表:每个节点都包含指向上一个和下一个节点(some_task->tasks.prev
和some_task->tasks.next
)的指针。
该数据结构没有固有的最大大小。就任务数量而言,限制因素要么是任务结构的可用内存和任务消耗的其他资源,要么是进程(更准确地说,任务组)标识符的数量,这些标识符被限制为 15 位默认。
阅读第 5 章Linux内核开发, 或者第11章的Linux 设备驱动程序 ,了解有关 Linux 内核中此数据结构的更多信息。