精華區beta CSSE 關於我們 聯絡資訊
※ 引述《ashkenazy (有中出無懦夫)》之銘言: : ※ 引述《supc (kitty的爹地)》之銘言: : : 我剛查了一下有 thread_struct 也有kernel_thread : : 我有看過國外也有人這樣說 但我不覺得是這樣就是了 : : 回答原po的話 : : thread跟process最大的不同是 : : thread間可以Share address space, files, sockets, etc. : : 如果是為了考試的話 那就照ashkenazy講的去寫吧 : 誰說linux的process不能分享定址空間跟其他資源? 其實Linux上thread的實做非常的古怪 Linux仍然把process當作最基本的abstraction 也就是說scheduling, context switch等的基本元素還是process 而thread/LWP只是和別人分享定址空間和資源的process罷了 所以用clone()產生的thread 本質上都還是process 可以說 Linux kernel中所定義的"thread" 只做到了資源共享 而不構成執行工作的最基本單位 所以嚴格說來 Linux只實做了一半的thread 但是這樣並不是壞事 因為大多數的應用並不會使用thread 而且簡化thread實做的結果使得process的管理變得更有效率 副作用是產生出來的"thread"比其它作業系統的實做更heavyweight 可以說Linux犧牲thread的效率以換取process的效率 所以 以abstraction的角度來看 Linux並不支援thread 然而 以programming model來看 Linux的確是有thread可以用的 只不過所能得到的效能並不會在像Windows或Solaris這些實做完整的OS上來的好 Linux process和thread的效能和其他作業系統的客觀數據比較 可以參照"An Overview of the Singularity Project" 第31頁 ftp://ftp.research.microsoft.com/pub/tr/TR-2005-135.pdf (Microsoft Research) 附帶一提 Singularity OS我覺得是個不可小覷的東西 個人認為它比Vista創新多了 只是Microsoft的高層向來不重視他們Research部門的研究 畢竟他們仍然是以商機而非技術為最高考量的 不知道Singularity終究是否能夠順利推出市場? -- 以上,有錯請不吝指正 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.231.51 ※ 編輯: MuadDib 來自: 140.112.231.51 (01/23 23:32)
ashkenazy:推 01/24 22:08
kalamucho:我也推 ! 這篇分析的很簡明清楚。 :) 02/10 18:27