这是进程和线程的正确类比吗?

时间:2011-05-27 19:07:22

标签: multithreading process operating-system

我正试图掌握Process,Threads,MultiCore等...... 所以这是我所学习的类比。

社会就像电脑。

建筑就像一块芯片。

特定建筑物的地板是该芯片上的核心。

所以建筑物可以是一层(单芯片上的单核),

一栋多层建筑(单芯片多核),

许多建筑物,每层多层(多核处理器)

特定楼层的单位是一个过程。

住在特定公寓的房间里的人是一个线索。

生活在特定公寓中的人们拥有相同的空间。即进程中的每个线程共享相同的地址空间。

每个人在房间里分享一些常见的东西,如厨房,淋浴区等,即进程中的每个线程共享代码,数据,文件

特定公寓的淋浴房需要居住在公寓内的人(线)之间的同步。因为一次只能使用一个。

每个人都有自己的个人物品,他不与他人分享,例如他的内衣;)(一个线程有自己的堆栈,注册)

一个人可以给他的公寓打电话给新朋友。即一个线程可能会为他的愿望产生新的线程(可能线程很无聊)

建筑物的所有者可以关闭任何房间,创建新房间,或分配新租户或将其丢弃。内核可以分配新进程,也可以创建销毁线程。

...

如果我把这个比喻说得对,伙计们让我知道。如果还有什么我可以添加,以使其更清楚或使其正确。

我看到的唯一问题是当一个进程有很多线程在不同的核心上运行时...任何想法如何将其包含在类比中......?

让我知道。非常感谢。 :)

参考 - https://www.his.se/PageFiles/4854/2010/threads_6slides.pdf?epslanguage=sv

1 个答案:

答案 0 :(得分:2)

在您的示例中,Shower可能是一种有限的资源,可能是内存资源或设备,这就是必须共享的原因。你没有给出同等的东西。

一个线程没有它自己的寄存器,除非你的意思是其中一个CPU的一个内核中的寄存器。线程共享核心,因此它们实际上是在时间拼接下运行的。我会比较一个公寓房间,让住户进出,但随后你的淋浴理念崩溃了。在这一点上,我会说它是必须共享的存储柜,但一次只能有一个租户可以使用特定的存储柜。

进程在核心的边界内执行,但它在核心上并不存在,但我认为对于这种情况,隐喻足够清楚。

如果您担心线程在不同核心上运行,您可以将它与监狱淋浴室进行比较。即使他们属于不同的帮派(进程),他们(线程)进出不同的阵雨(核心),他们必须像以前一样分享一套储物柜。

无论你的类比如何,都很难解释时间拼接以及核心上不同进程/线程的快速进入和退出。

而且,我遇到的真正问题是,线程不会感到无聊:)