如何将堆栈空间(在相同的地址空间中)分配给Linux或任何其他操作系统中的进程的每个线程?
答案 0 :(得分:0)
这取决于线程库的类型,像pthreads这样的用户空间库会分配内存并将其划分为线程堆栈。在操作系统方面,每个线程都会获得内核堆栈。
答案 1 :(得分:0)
在创建新线程时,操作系统在当前线程(父)的堆栈段中保留空间,其中父节点的未来自动变量和函数调用数据将存在。然后,它分配一个保护页面(这是为了防止父冲突进入子堆栈,但这可能因不同的操作系统而异)。完成此操作后,将创建子线程的堆栈帧(通常为一两页)。
如果父级产生多个线程,则重复此过程。所有这些堆栈帧都存在于进程的地址空间的堆栈段中,所有这些线程都是其中的一部分。