Linux内核堆栈

The*_*ker 2 linux linux-device-driver linux-kernel

什么样的数据存储在进程的内核模式堆栈中?流程"用户模式"调用链是否存储在内核堆栈中?

谢谢,vIjay

Dig*_*oss 5

你的内核调用链,"不"


linux内核本身就是一个线程程序,它通过切换堆栈来工作.

所以,让我们说你做read(0, space, 100);,或者也许只是c = getchar();,最终会变成一个read().

当linux获得控制权时,它将开始进行函数调用,自然地使用内核堆栈.它将使内核中的调用越来越低,直到它最终到达tty或网络层.

但你还没有输入任何东西!

所以它只是切换到另一个进程,一个真正可运行的进程,它将所有这些函数调用激活帧留在堆栈上.最后你输入了一些内核并且内核确定你的进程现在可以运行,当它切换回来时,再次切换堆栈,所有这些实现你的函数调用read(2)现在可以解除并最终返回到用户模式.