2011-05-27 31 views
0

我試圖讓進程掛起,線程,多核等.. 因此,這裏是我的比喻從我學到..這是一個正確的類比過程和線程?

一個社會就像一臺計算機。

建築就像一個芯片。

特定建築物的地板是該芯片上的核心。

因此建築可以是一個地板(單芯片單核),

一個建築物的多個樓層(在單一芯片上的多核),

許多建築,許多樓層的每個(多處理器與多核)

特定樓層的單位是一個過程。

居住在特定公寓的房間裏的人是一條線索。

居住在一個特定的單位,共享相同的空間的人。即進程中的每個線程共享相同的地址空間。

每個人股數常見的東西在房間裏像一個廚房,淋浴區等,即在一個進程共享代碼的每個線程,數據,文件

淋浴房的人(線程)之間的特定平需要同步的生活在那個單位。一次只能使用一個。

每個人都有自己的個人的一套東西,他不與他人,他的例如內褲共享;)(線程都有自己的堆棧,寄存器)

一個人可以叫新朋友,他的單位。即A線可以爲他的願望產生新的線程(也許線程是無聊的哈哈)

建築物的所有者可以關閉任何房間,創建新房間,或分配新租戶或將他們擠出。內核可以分配新的進程,也可以創建銷燬線程。

......

讓我知道我是否有類比的權利。如果有其他事情可以添加,以使其更清楚或使其正確。

我看到的唯一問題是當一個進程有很多線程運行在不同的核心上......任何想法如何在類比中包含它?

讓我知道。非常感謝。 :)

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

+2

這是一個有點難以客觀地稱之爲「正確」或「不正確」。畢竟,這僅僅是一個比喻 - 但是在我們稱之爲假的之前,類比與字面真相有多遠? – bdonlan 2011-05-27 19:11:49

+0

一段時間以來,遇到這個線程的用戶有一個很好的類比過程vs線程http://www.qnx.com/developers/docs/6.4.0/neutrino/getting_started/s1_procs.html – Ifthikhan 2013-09-14 20:23:11

回答

2

在你的榜樣,淋浴是一種有限的資源可能是內存資源或設備,這就是爲什麼它必須是共享的。你沒有給出相同的東西。

一個線程沒有它自己的寄存器,除非你的意思是其中一個CPU的某個內核中的寄存器以外的東西。線程共享內核,所以它們實際上是在時間接合下運行的。我會比較它更多的公寓房間有居住者進出,但然後你的淋浴想法崩潰。在這一點上,我會說它是他們必須共享的存儲儲物櫃,但是一次只有一個租戶可以使用特定的儲物櫃。

一個進程在一個內核的邊界內執行,但它在內核上並不存在,但我認爲在這種情況下,這個比喻足夠清晰。

如果您擔心在不同內核上運行的線程,可以將其與監獄淋浴間進行比較。即使傢伙(線程)屬於不同的幫派(進程),傢伙(線程)也會移入和移出不同的陣雨(核心),他們必須像以前一樣共享一組儲物櫃。

無論你怎麼比喻,都很難解釋核心上不同進程/線程的時間拼接和快速進入和退出。

而且,真正的問題我有這個,線程不覺得無聊:)

+0

謝謝。我知道它存在許多缺陷,實際上很難用一個類比來把這麼多想法放在一起,特別是如你所說的關於時間切片,我忽略了它,因爲它太複雜了......我只是想要一些東西,所以我可以把它存在我的腦海裏吧......淋浴作爲內存資源或設備是個好主意。感謝您的幫助...... :)哦,線程有自己的堆棧我的意思是,他們有自己的堆棧值副本... – firesofmay 2011-05-27 19:42:58