作者micklin (mick doohan)
看板CSSE
標題Re: [問題] 執行緒
時間Wed Mar 24 17:17:04 2010
※ 引述《snoopy0907 (超強氣)》之銘言:
: 不好意思
: 請問各位前輩們
: 能否能解釋一下
: process 和 thread的差別
: 小弟我看書後還是對這兩個觀念很模糊
: 好像process有時等於thread
: 有時又不一樣
: 請前輩們能指點一下嗎?
: 謝謝~
thread 是 light weight process
一個process包含很多資訊, 像是程式、資料、堆疊等等.
thread是一群thread共享同樣的程式與資料, 但是有自己的暫存器狀態與堆疊.
在執行緒之間切換時, 所需要的成本比較小.
不像process的context switch要存的東西比較多, 所以時間也要花比較多.
要比較特性的話, 書上就有了.
觀念上無法理解的話, 就先把thread想像成process裡面的process好了....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.177.198
1F:推 Arim:最近剛上到OS 也有碰到這問題@@ 03/25 23:38
2F:→ Arim:所以意思是說 一個process 是一個正在跑程式,而thread則是裡 03/25 23:39
3F:→ Arim:面正在執行的程式碼區塊? 03/25 23:39
4F:→ Arim:只是不是很懂 為什麼有些書上說process可以有一個以上thread 03/25 23:40
5F:→ Arim:也就是可以只有一個thread,不知道這樣是什麼情形? 03/25 23:40
6F:推 sunneo:差別在於clone context之後,會不會給予不同的pagetable/ 03/26 02:34
7F:→ sunneo:file(包括socket) 03/26 02:35
8F:→ sunneo:如果給了新的pagetable並且protect為read, signal handler 03/26 02:36
9F:→ sunneo:為clone page with new attr,那就達成copy on write 03/26 02:36
10F:→ sunneo: ^ 應該說分享pagetable 03/26 02:37
11F:→ hilorrk:copy on write和thread是不同的概念吧@@? 03/28 00:08
12F:推 sunneo:對啊 只是thread底層是用clone達成 03/30 02:21