Re: thread (執行緒) definition??
※ 引述《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)
討論串 (同標題文章)
CSSE 近期熱門文章
PTT數位生活區 即時熱門文章