我们可以看到其中包含堆栈,堆,数据和文本部分的进程。作为明确的解释,我从书本和许多其他资源中获得了帮助。一切都清楚。
当我转到具有多线程的进程时,这些部分将发生巨大变化。为什么?
在这里您可以看到,堆栈,数据与上图中也提到的相同。 但我们也看到其他部分。喜欢文件?码? 文件和代码是什么意思?无论如何,如果我们考虑1.files 2.code并阅读定义并接受它。那为什么作者没有在上面的过程图中提到它们呢?
简单的是过程就是过程,为什么它与上图不同。甚至两个图都与事物(过程)相同。为什么零件不同?我从书中拿了两个图表。这两个图都显示了一个过程。即使我们看到一个具有单个线程的进程,这也与上面的进程图不同吗?
谁能解释一个进程或一个单线程进程之间的区别? 这两个图应该包含相同的部分。
答案 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>