Multithreading 进程和具有多个线程的进程之间有什么区别?
正如我们所看到的,一个进程包含堆栈、堆、数据和文本部分。作为一个清晰的解释,我从书籍和许多其他资源中得到。一切都清楚了 当我转到一个具有多线程的进程时,这些部分发生了巨大的变化。为什么? 在这里您可以看到,堆栈、数据与上图中提到的相同。 但我们看到其他部分也在其中。比如,文件?密码? 文件和代码是什么意思?无论如何,如果我们考虑文件2.2代码并阅读定义并接受它。那么为什么作者没有在上面的流程图中提到它们呢 很简单,流程就是流程,为什么它与上面的图表不同。甚至两个图都是同一个事物(过程)。为什么零件不同?我从一本书中摘取了这两张图表。两个图表都显示了一个过程。即使我们看到一个进程只有一个线程,这也与上面的进程图不同吗 有人能解释进程和单线程进程之间的区别吗?Multithreading 进程和具有多个线程的进程之间有什么区别?,multithreading,process,operating-system,Multithreading,Process,Operating System,正如我们所看到的,一个进程包含堆栈、堆、数据和文本部分。作为一个清晰的解释,我从书籍和许多其他资源中得到。一切都清楚了 当我转到一个具有多线程的进程时,这些部分发生了巨大的变化。为什么? 在这里您可以看到,堆栈、数据与上图中提到的相同。 但我们看到其他部分也在其中。比如,文件?密码? 文件和代码是什么意思?无论如何,如果我们考虑文件2.2代码并阅读定义并接受它。那么为什么作者没有在上面的流程图中提到它们呢 很简单,流程就是流程,为什么它与上面的图表不同。甚至两个图都是同一个事物(过程)。为什么
两个图中应该有相同的部分。单线程过程的上图:
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),因此操作系统可以从地址空间的顶部到底部不断为新线程创建新堆栈