当前位置: 技术问答>linux和unix
2.6内核以前task_struct存储各自的内核栈的尾端,而2.6是slap分配器动态生成task_struct!那么task_struct现在存储在什么地方
来源: 互联网 发布时间:2017-03-28
本文导语: 由于slap分配器动态生成task_struct,所以只需在各自的内核栈的尾端创建新的结构struct thread_info,由struct thread_info指向task_struct! 那么尾端就不在存储task_struct了? 而只存储thread_info? 那么现在task_struct存储在什么地方呢? ...
由于slap分配器动态生成task_struct,所以只需在各自的内核栈的尾端创建新的结构struct thread_info,由struct thread_info指向task_struct!
那么尾端就不在存储task_struct了?
而只存储thread_info?
那么现在task_struct存储在什么地方呢?
|
task_struct就存在slab分配器分配出来的内存区中,就相当于heap一样的概念,thread_info有指针直接指向task_struct,所以找起来也方便
|
slab 分配器分配的内存主要为两种
1) 专用 内核中常用的数据结构如: inode, task struct等
2) 通用 以2的N次方字节大小的内存,如malloc()分配
1) 专用 内核中常用的数据结构如: inode, task struct等
2) 通用 以2的N次方字节大小的内存,如malloc()分配
|
slab层是事先分配了用来存task_struct的空间,内核用就来拿好了,怎么拿,就是找个指针指向slab层的一个task_struct结构