作者MuadDib (Muaddib)
看板CSSE
标题Re: thread (执行绪) definition??
时间Mon Jan 23 23:28:16 2006
※ 引述《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)
1F:推 ashkenazy:推 01/24 22:08
2F:推 kalamucho:我也推 ! 这篇分析的很简明清楚。 :) 02/10 18:27