Re: thread (執行緒) definition??

看板CSSE (電腦科學及軟體工程)作者 (有中出無懦夫)時間19年前 (2006/01/23 12:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/20 (看更多)
※ 引述《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)
文章代碼(AID): #13r5w0a1 (CSSE)
討論串 (同標題文章)
文章代碼(AID): #13r5w0a1 (CSSE)