在Linux中堆栈进程的线程

时间:2014-05-03 20:05:35

标签: linux multithreading memory-management process operating-system

如何将堆栈空间(在相同的地址空间中)分配给Linux或任何其他操作系统中的进程的每个线程?

2 个答案:

答案 0 :(得分:0)

这取决于线程库的类型,像pthreads这样的用户空间库会分配内存并将其划分为线程堆栈。在操作系统方面,每个线程都会获得内核堆栈。

答案 1 :(得分:0)

在创建新线程时,操作系统在当前线程(父)的堆栈段中保留空间,其中父节点的未来自动变量和函数调用数据将存在。然后,它分配一个保护页面(这是为了防止父冲突进入子堆栈,但这可能因不同的操作系统而异)。完成此操作后,将创建子线程的堆栈帧(通常为一两页)。

如果父级产生多个线程,则重复此过程。所有这些堆栈帧都存在于进程的地址空间的堆栈段中,所有这些线程都是其中的一部分。