进程和具有多个线程的进程有什么区别?

时间:2020-10-26 18:28:44

标签: multithreading process operating-system

enter image description here

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

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

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

简单的是过程就是过程,为什么它与上图不同。甚至两个图都与事物(过程)相同。为什么零件不同?我从书中拿了两个图表。这两个图都显示了一个过程。即使我们看到一个具有单个线程的进程,这也与上面的进程图不同吗?

谁能解释一个进程或一个单线程进程之间的区别? 这两个图应该包含相同的部分。

1 个答案:

答案 0 :(得分:0)

单线程进程的上图:

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),因此OS可以从地址空间的顶部到底部继续为新线程创建新的堆栈。 / p>

相关问题