【问题标题】:What is the difference between process and a process with multiple threads?进程和具有多个线程的进程有什么区别?
【发布时间】:2020-10-26 18:28:44
【问题描述】:

我们可以看到一个进程,其中包含堆栈、堆、数据和文本部分。作为我从书籍和许多其他资源中得到的明确解释。一切都清楚了。

当我转移到具有多线程的进程时,这些部分发生了巨大变化。为什么?

在这里你可以看到,堆栈,数据,和上图中也提到的一样。 但我们看到其他部分也在其中。比如,文件?代码? 文件和代码是什么意思?无论如何,如果我们考虑 1.files 2.code 并阅读定义并接受它。那为什么作者在上面的流程图中没有提到呢?

简单就是流程就是流程,为什么和上图不一样。甚至两个图都与事物(过程)相同。为什么零件不同?我从一本书中获取了这两个图表。两张图都显示了一个过程。即使我们看到一个进程只有一个线程,那也和上面的进程图不同?

谁能解释一个进程和一个单线程进程之间的区别? 两张图应该有相同的部分。

【问题讨论】:

    标签: multithreading process operating-system


    【解决方案1】:

    单线程进程的上图:

    high  stack
          free-address-space
          heap
          data
    low   text
    

    在多线程进程中,您会在地址空间的顶部获得多个堆栈,中间有一些空闲地址空间:

    high  stack thread 1
          free-address-space
          stack thread 2
          free-address-space
          ...
          stack thread N
          free-address-space
          heap
          data
    low   text
    

    每个线程的最大堆栈大小是固定的(请参阅ulimit -a,Linux 上默认为 8MB),以便操作系统可以从地址空间的顶部到底部不断为新线程创建新堆栈。

    【讨论】:

      猜你喜欢
      • 2010-09-17
      • 2012-11-16
      • 2012-05-16
      • 2010-12-29
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多