作者a2350 (axer)
看板Soft_Job
標題Re: [閒聊] 多處理與單處理器程式設計的差別??
時間Fri Jul 17 01:57:23 2009
※ 引述《hkahka ()》之銘言:
: 請問有人是專門設計多處理器用的程式軟體嗎??
: 跟一般設計單處理器使用的有什麼不同啊??
小弟學淺,以下為不才看法:
現在作業系統很聰明,基本上一個程式都會有多個processors 在處理。
如果程式要用到的計算沒辦法拆開(有相依性),系統會用單一CPU處理。
如果要讓程式適合多處理器,務必要:
一、多執行緒的寫法,單一執行緒的程式,os只會用單一CPU計算。
執行緒的個數應為CPU 的threading的倍數會有最高效率。(我研究所的研究題目)
二、網路及IO或其他可平行處理的程序,一定要寫成「非用步」運算。
os會自動用不同的processor處理。
例如,程式要網路傳送封包後等回應,不應該讓程式hold在那,而是另開threading。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.99.232
1F:推 khalid:很有趣的題目,不過你實驗很難做吧?就算你知道你的程式有多 07/17 02:23
2F:→ khalid:少thread,整個系統可能還有很多不同的thread,變數很多, 07/17 02:24
3F:→ khalid:scheduler運作方式也有很大影響吧. 07/17 02:25
4F:推 imagefish:Asynchronous ?? 非用步 <==應該是非同步吧?? 07/17 10:09
5F:→ iincho:非同步那段錯很大,真的是這樣單CPU的AIO根本就沒差... 07/17 10:36
6F:→ remmurds:如果是寫運作在VM上的程式(例如Java或.Net) 07/17 11:19
7F:→ remmurds:老實說這應該就是VM在負責的問題嚕 07/17 11:19
8F:→ iincho:嗯,請介紹一個會是自動幫你平行處理的VM系統謝謝... 07/17 13:23
9F:→ remmurds:樓上真酸 目前當然沒這東西 我只是在表達我的想法而已 07/17 15:46
10F:→ remmurds:希望是我會錯意了 07/17 15:46
11F:推 zzwwzz:請問這個領域在業界用得上嗎? 07/18 06:21
12F:推 ledia:可以提高效率一定用得上呀 07/18 12:47
13F:→ airzone:說到concurrent 記得試試 Erlang 非常有趣的語言 07/18 14:33
14F:→ nagual07:IO bound的程序, 其實通常只要單個程序便已足夠..會有須 07/18 23:31
15F:→ nagual07:要另開thread..通常是比較好寫,而不是真的開thread就能加 07/18 23:33
16F:→ nagual07:高效率..以網路來說, 網路晶片只有一個, 考慮dma和 07/18 23:35
17F:→ nagual07:interrupt..就可知道..dma做完再通知程序即可...根本不須 07/18 23:36
18F:→ nagual07:等在那..當然這個跟OS如何提供這種CPU和IO並行的機制有關 07/18 23:38
19F:推 lpoijk:可以提高效率當然用的上 請參閱Linux Kernel 2.6.30 07/23 01:27
20F:→ lpoijk:的Change Log, 會waitting的API都盡量改成async 07/23 01:28