代码之家  ›  专栏  ›  技术社区  ›  Summer_More_More_Tea

线程堆栈和进程堆栈的区别是什么

  •  5
  • Summer_More_More_Tea  · 技术社区  · 16 年前

    线程和进程都有独立的堆栈吗?如果答案是肯定的,它们之间有什么区别? 提前谢谢!

    2 回复  |  直到 16 年前
        1
  •  7
  •   Brian Rasmussen    16 年前

    进程没有堆栈。线程可以。进程通常是一个地址空间、一些资源和一个或多个线程。线程运行进程的实际代码,因此每个线程都有自己的堆栈。

    http://en.wikipedia.org/wiki/Call_stack

        2
  •  -1
  •   S.E.K.    12 年前

    据我所知(如果我错了,请纠正我),每个进程都有自己的内存空间,其中包含3个部分:文本段(即程序)、数据段(据我所知,数据段用于全局变量和静态变量)、堆栈段,堆栈段包含许多内容,如局部变量、函数参数、,函数应返回到的地址。

    每个进程可能有一个或多个线程。进程的线程共享进程的内存空间,它们不“拥有”自己的内存,这使它们易于创建和终止。

    让我们重述一下: 进程有自己的堆栈,线程没有自己的堆栈。

    实际上,Tanenbaum先生的书《操作系统》涵盖了这个问题。