Re: 不相干的程式做multi-thread有幫助嗎?

看板Programming作者 (ggg)時間17年前 (2008/11/09 22:05), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串5/15 (看更多)
※ 引述《CharArray ( char[] )》之銘言: : ※ 引述《ggg12345 (ggg)》之銘言: : : 完全不相干的程式片段成為muti-thread時, 不管是輪流或多核 : : 交錯併行, 最大的優點就是可以避免 process 切換時帶來不必要的 : : context switching. 但單核只有單組 processor register set 時, : : 仍免不了要 user program 自行進行 register save/restore 動作, : : 因為 cpu 內部資源還是會有共用的地方, 只是需要處理的量可以少 : : 很多. : 請問一下,所謂少很多,可以明確的指出是少處理哪些事嗎? : 因為我想知道有什麼事是把multi-process轉成multi-thread後,在context-switch : 可以減少的工作量 process 切換時是透過 system call trap 或 time-slice interrupt 改變 執行次序, 首先是 prefech 與 cache 因次序改變可能失效, 其次由 OS kernel 的 scheduler/dispatcher 按標準運作做整個 processor register, memory mapping table 與 執行環境的 PCB save , 隨後再依狀況找出下一 個 process 的 PCB restore 重新讓新 process 執行. user space 的 multi-thread 基本上屬於同一個 process space 之內, 切換或用多核併行多緒時, 使用者(程式設計者)知道只共用那些 resource, 不受干擾的 register 或 data memory 就可不必做不必要的 save/restore. 執行時也比較能考量不大幅更動到 cache 與 prefetch pipeline. Multi-thread 要發揮效用, 程式設計者就要考慮到相當細節的部份, 同 步與切換的排程問題都得親自處理, 才能發揮出併行處理又無太多 overhead 的效用. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12

11/09 22:37, , 1F
請問user space thread有什麼例子嗎?
11/09 22:37, 1F

11/09 22:37, , 2F
聽說現在的Linux Windows都是以thread為
11/09 22:37, 2F

11/09 22:37, , 3F
scheduling的單位 不是process
11/09 22:37, 3F

11/09 22:38, , 4F
好像以前的Linux是以process為排程單位
11/09 22:38, 4F

11/10 00:44, , 5F
Win32API的Fiber以及linux的context都是
11/10 00:44, 5F
文章代碼(AID): #195kuZPS (Programming)
討論串 (同標題文章)
文章代碼(AID): #195kuZPS (Programming)