在谈论 Linux 内核时,“stack hog”是什么意思?
我在一些 Linux 内核书籍(Wolfgang Mauerer 的 Professional Linux Kernel Architecture)上读到了这个概念,但是“stack hog”到底是什么意思?谢谢。
最佳答案
“Stack hog”是一个非正式名称,用于描述使用大量自动存储(也称为“堆栈”)的函数。究竟什么算作“占用”因执行环境而异:通常,内核级函数对堆栈空间有更严格的限制——只有几千字节,因此在内核模式下被认为是“堆栈占用”的函数可能会变成“好的”公民”在用户模式下。
函数成为堆栈占用者的一个常见原因是在自动内存中分配缓冲区或其他数组。这更方便,因为您不需要记住释放内存和检查分配结果。您还可以在分配本身上节省一些 CPU 周期。缺点是可能会溢出堆栈,从而导致内核级程序出现 panic 。这就是为什么“堆栈占用”的常见补救措施是将您的一些缓冲区移动到动态内存中。
关于linux - 什么是 "stack hog",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538412/