我在一本教科书中学习到,在进程变成僵尸进程后,Linux会保留进程描述符,直到未来的父进程验证退出状态。我了解到进程描述符包含两个结构体: 在slab中的
我正在阅读源代码的
我似乎找不到释放内核堆栈的部分?还是我没有理解内核堆栈的工作原理? 或者说
究竟是什么正在发生?
task_struct
和在内核堆栈中(忘了x86)的thread_info
。我正在阅读源代码的
do_exit()
部分,位于<kernel/exit.c>,但不太清楚内核堆栈在哪里被释放。我发现exit_notify()
将进程的状态更改为僵尸进程,其余的代码看起来主要是在清理锁等内容,直到schedule()
。我似乎找不到释放内核堆栈的部分?还是我没有理解内核堆栈的工作原理? 或者说
thread_info
根本就不被考虑保留,并且在变成僵尸进程之前已经与内核堆栈一起丢弃了?究竟是什么正在发生?