Chinaunix
标题:
where to locate kernel stack per task .
[打印本页]
作者:
nuclearxin
时间:
2016-12-08 18:33
标题:
where to locate kernel stack per task .
好多文档都说 每个task有自己的 kernel stack 2个page 大小 在用户空间的时候是 空的除了thread_info
但是完全不知道这个 8k 存在哪里?
task struct 里面有这个的地址吗? kernel的 address space 里面吧
每创建一个task 就回用2g page 的内存消耗吗??????
作者:
nuclearxin
时间:
2016-12-09 09:34
https://www.quora.com/What-is-a- ... ing-the-thread_info
感觉是自己撸的节奏呢。。。。。。
奉上 非官方答案
期待更好的
作者:
mournjust
时间:
2016-12-29 11:32
回复
1#
nuclearxin
我只能从ARM linux的角度来理解。
每个task都有2个page(8K)的空间。虽然你感觉8K很大,但是即使是1000个进程也才8M而已。
这2 page除了放每个进程的thread_info之外,还用作内核的的栈。
至于task中是否有这个地址,我没有仔细查看,我猜没有。因为不需要。内核总是通过SP来获得这个地址的
static inline struct thread_info *current_thread_info(void)
{
return (struct thread_info *)
(current_stack_pointer & ~(THREAD_SIZE - 1));
}
1482982215(1).png
(4.28 KB, 下载次数: 54)
下载附件
2016-12-29 11:30 上传
作者:
Tinnal
时间:
2016-12-29 23:19
回复
1#
nuclearxin
thread_info就是这个8K的非常底,如果你想通过task_struct取得这栈的地址,可以释通过task_struct的
stack成员取得。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2