当前位置: 技术问答>linux和unix
每个进程都有一个内核栈吗
来源: 互联网 发布时间:2017-05-04
本文导语: 如题。 那这个内核栈里存放着什么呢? 这个进程调用的函数分配的数据? 书上说内核栈的底部存放有thread_info这个结构体,然后又说这个栈是向下增长的,还给了个图,我不是很明白这点。 难道说在创建这个内核栈...
如题。
那这个内核栈里存放着什么呢?
这个进程调用的函数分配的数据?
书上说内核栈的底部存放有thread_info这个结构体,然后又说这个栈是向下增长的,还给了个图,我不是很明白这点。
难道说在创建这个内核栈之后,会在栈底创建thread_info结构体,然后esp指向栈顶,并开始使用这个栈?
那这个内核栈里存放着什么呢?
这个进程调用的函数分配的数据?
书上说内核栈的底部存放有thread_info这个结构体,然后又说这个栈是向下增长的,还给了个图,我不是很明白这点。
难道说在创建这个内核栈之后,会在栈底创建thread_info结构体,然后esp指向栈顶,并开始使用这个栈?
|
请问是不是像我说的那样一开始是在栈底部放了thread_info结构体,然后从顶部开始使用?
是的没错。
那是不是有一种检查机制看看是否越界?
没有,在内核中如果内核栈溢出,后果自负,因此一般不会在内核态下使用大的局部变量。
感觉最后一个问题怪怪的。。无论是用户态还是内核态,局部变量都存在栈中,因此应该是B把。
是的没错。
那是不是有一种检查机制看看是否越界?
没有,在内核中如果内核栈溢出,后果自负,因此一般不会在内核态下使用大的局部变量。
感觉最后一个问题怪怪的。。无论是用户态还是内核态,局部变量都存在栈中,因此应该是B把。