Re: thread (執行緒) definition??

看板CSSE (電腦科學及軟體工程)作者 (敬請期待 :P)時間19年前 (2006/01/24 00:48), 編輯推噓9(9010)
留言19則, 8人參與, 最新討論串17/20 (看更多)
※ 引述《cipherman (雨云無日晴)》之銘言: : ※ 引述《tcmbug (bug)》之銘言: : : 初次接觸到 multithread 的paper,但是對於裡面提到的thread : : 不是很了解,之前得到一位學長的答案是:"一個process正在被處理的一段code" : : 想請問有沒有更明確的定義,比如說,一個程式如何區分出thread?? : Thread和Process的差別可以用個具體的譬喻來說... : 就是像pcman和firefox那樣...每個分頁都是一個thread... : 若是要開一個新頁就要另外開一個新的視窗就是新開一個process... : 所以說,thread和process主要的差別在要執行的動作一樣... : thread則不再另外allocate一個space放要執行的code.... 這樣子的說法其實會有爭議, 因為 copy on write的技術 (我猜應該許多作業系統都有做了) , 一個 process進行 fork(2)的時候, 當下 code (以及其他大部份的東西) 並不會被弄成兩份, 而 code space 在大部份的情況下又是 read only的, 所以理論上不管你 fork 幾次都還是會只有一份. 我倒比較好奇的是, 如果我故意跑兩隻一樣的程式, 而不是先跑一隻起來再讓他 fork, 醬子在記憶體中, code會變兩份嗎? 或是只有一份? 個人猜測應該是前者比較合理, 後者的話似乎有點實作上的困難 @@ 要怎麼知道新跑起來的這個程式是不是和其中一個已經在跑的程式一樣呢? :Q -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.90.74

01/24 01:29, , 1F
open file table + shared page 應該可以。猜的 XD
01/24 01:29, 1F

01/24 02:16, , 2F
如果在 Windows 上,透過 file mapping 應該是一份吧
01/24 02:16, 2F

01/24 02:17, , 3F
就像 DLL 一樣
01/24 02:17, 3F

01/24 02:17, , 4F
而一般 process 的 code space 內容也是把 EXE 檔內容利
01/24 02:17, 4F

01/24 02:19, , 5F
用 file mapping 方式對應到 process address space 中
01/24 02:19, 5F

01/24 02:19, , 6F
所以應該是共用的狀態
01/24 02:19, 6F

01/24 02:20, , 7F
反正改了還是有 copy on write 不會影響到其他 process
01/24 02:20, 7F

01/24 07:58, , 8F
Windows 上是一份
01/24 07:58, 8F

01/24 07:58, , 9F
Win32 code 是一份 data 則是很多份 (我猜應該也有 COW)
01/24 07:58, 9F

01/24 19:39, , 10F
其實我猜想是"早期"才有這些分別吧....
01/24 19:39, 10F

01/24 19:39, , 11F
就是thread的概念剛提出時,為和傳統process做區別
01/24 19:39, 11F

01/24 19:40, , 12F
而現在可能就沒有很大的區別了...
01/24 19:40, 12F

01/24 22:16, , 13F
如果不同 user 跑同一個程式也是一份嗎?
01/24 22:16, 13F

01/24 22:27, , 14F
最簡單的分法, thread 之間共享 memory context...
01/24 22:27, 14F

01/24 22:29, , 15F
process 之間則是獨立空間, 因此必須利用 share memory
01/24 22:29, 15F

01/24 22:30, , 16F
才能分享資料... (不知道這樣的定義是不是已經過時了 @,@?
01/24 22:30, 16F

01/25 02:24, , 17F
memory context? Address space會不會比較好一點.
01/25 02:24, 17F

01/25 12:11, , 18F
address space 沒有涵蓋到 protection 之類的概念吧
01/25 12:11, 18F

01/25 12:40, , 19F
沒有protection就沒辦法區分thread和process的差別嗎?
01/25 12:40, 19F
文章代碼(AID): #13rGZiwL (CSSE)
討論串 (同標題文章)
文章代碼(AID): #13rGZiwL (CSSE)