我已经查看了几个地方,例如这里,但没有一个详细解释用于实现堆栈本身的结构(“任务”(进程/线程)存储其嵌套调用信息等的地方)。它是一个链表,还是一个数组,还是别的什么?我似乎找不到此信息,但从图表上看,它们总是将其显示为一个大内存块(虚拟内存),其中开头是堆,结尾是堆栈。但这是我们正在处理的虚拟内存,它周围有各种数据结构,例如分页。所以问题是在这一切之上堆栈的实现到底是什么?我不禁认为它一定是一个链表。
原因是,如果你有多个进程,每个进程都有自己的堆栈,这是如何实现的?
在这里,我们似乎到达了某个地方:
每个进程在内核中运行时都有自己的堆栈供使用;在当前内核中,该堆栈的大小为 8KB 或(在 64 位系统上)16KB 内存。堆栈位于直接映射的内核内存中,因此它必须在物理上是连续的。