作者ashkenazy (有中出无懦夫)
看板CSSE
标题Re: thread (执行绪) definition??
时间Mon Jan 23 12:47:54 2006
※ 引述《supc (kitty的爹地)》之铭言:
: ※ 引述《ashkenazy (有中出无懦夫)》之铭言:
: : pthread我没写过,不清楚
: : 请版上其他强者补充
: : 但我「推测」实际上系统的实作依然是产生另一个process/thread来完成
: : 在Linux中,以作业系统教科书的说法,process就是thread,thread就是process
: : 大部分的作业系统会很明确的区分出process与thread
: : 在Linux中,只有一个process\thread的table
: : 也就是task_struct
: 我刚查了一下有 thread_struct 也有kernel_thread
你确定这两个是干嘛用的?
thread_struct是task_struct的一个栏位
里面是做context switch时,暂存各个register值用的
也就是类似作业系统教科书中的PCB(process control block)
跟你说得thread一点关系都没有
至於kernel_thread这个function,我们来看看
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
int p;
p =
clone( 0, flags | CLONE_VM );
if ( p ) /* parent */
return p;
else { /* child */
fn(arg);
exit( );
}
}
很明显他只是个呼叫clone的函式
用来产生另一个process用的.......
: : 排程也是一个process\thread去进行排程
: 印象中也是有 thread 的scheduling
: (会比process的 scheduling更复杂 因为考虑到memory共用等问题)
这我也不清楚,不过版上应该有高手能回答
但我可以确定我没在linux的kernel source看过这种东西就是
: : 说「Linux并没有区分所谓的process或thread」应不为过吧
: 我有看过国外也有人这样说 但我不觉得是这样就是了
: 回答原po的话
: thread跟process最大的不同是
: thread间可以Share address space, files, sockets, etc.
: 如果是为了考试的话 那就照ashkenazy讲的去写吧
谁说linux的process不能分享定址空间跟其他资源?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.5.88
※ 编辑: ashkenazy 来自: 218.168.5.88 (01/23 12:48)