Re: [閒聊] 多處理與單處理器程式設計的差別??

看板Soft_Job作者 (axer)時間15年前 (2009/07/17 01:57), 編輯推噓5(5015)
留言20則, 9人參與, 最新討論串1/1
※ 引述《hkahka ()》之銘言: : 請問有人是專門設計多處理器用的程式軟體嗎?? : 跟一般設計單處理器使用的有什麼不同啊?? 小弟學淺,以下為不才看法: 現在作業系統很聰明,基本上一個程式都會有多個processors 在處理。 如果程式要用到的計算沒辦法拆開(有相依性),系統會用單一CPU處理。 如果要讓程式適合多處理器,務必要: 一、多執行緒的寫法,單一執行緒的程式,os只會用單一CPU計算。 執行緒的個數應為CPU 的threading的倍數會有最高效率。(我研究所的研究題目) 二、網路及IO或其他可平行處理的程序,一定要寫成「非用步」運算。 os會自動用不同的processor處理。 例如,程式要網路傳送封包後等回應,不應該讓程式hold在那,而是另開threading。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.99.232

07/17 02:23, , 1F
很有趣的題目,不過你實驗很難做吧?就算你知道你的程式有多
07/17 02:23, 1F

07/17 02:24, , 2F
少thread,整個系統可能還有很多不同的thread,變數很多,
07/17 02:24, 2F

07/17 02:25, , 3F
scheduler運作方式也有很大影響吧.
07/17 02:25, 3F

07/17 10:09, , 4F
Asynchronous ?? 非用步 <==應該是非同步吧??
07/17 10:09, 4F

07/17 10:36, , 5F
非同步那段錯很大,真的是這樣單CPU的AIO根本就沒差...
07/17 10:36, 5F

07/17 11:19, , 6F
如果是寫運作在VM上的程式(例如Java或.Net)
07/17 11:19, 6F

07/17 11:19, , 7F
老實說這應該就是VM在負責的問題嚕
07/17 11:19, 7F

07/17 13:23, , 8F
嗯,請介紹一個會是自動幫你平行處理的VM系統謝謝...
07/17 13:23, 8F

07/17 15:46, , 9F
樓上真酸 目前當然沒這東西 我只是在表達我的想法而已
07/17 15:46, 9F

07/17 15:46, , 10F
希望是我會錯意了
07/17 15:46, 10F

07/18 06:21, , 11F
請問這個領域在業界用得上嗎?
07/18 06:21, 11F

07/18 12:47, , 12F
可以提高效率一定用得上呀
07/18 12:47, 12F

07/18 14:33, , 13F
說到concurrent 記得試試 Erlang 非常有趣的語言
07/18 14:33, 13F

07/18 23:31, , 14F
IO bound的程序, 其實通常只要單個程序便已足夠..會有須
07/18 23:31, 14F

07/18 23:33, , 15F
要另開thread..通常是比較好寫,而不是真的開thread就能加
07/18 23:33, 15F

07/18 23:35, , 16F
高效率..以網路來說, 網路晶片只有一個, 考慮dma和
07/18 23:35, 16F

07/18 23:36, , 17F
interrupt..就可知道..dma做完再通知程序即可...根本不須
07/18 23:36, 17F

07/18 23:38, , 18F
等在那..當然這個跟OS如何提供這種CPU和IO並行的機制有關
07/18 23:38, 18F

07/23 01:27, , 19F
可以提高效率當然用的上 請參閱Linux Kernel 2.6.30
07/23 01:27, 19F

07/23 01:28, , 20F
的Change Log, 會waitting的API都盡量改成async
07/23 01:28, 20F
文章代碼(AID): #1ANse4iQ (Soft_Job)