Re: thread (執行緒) definition??
※ 引述《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)
推
01/24 22:08, , 1F
01/24 22:08, 1F
推
02/10 18:27, , 2F
02/10 18:27, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 16 之 20 篇):
CSSE 近期熱門文章
PTT數位生活區 即時熱門文章