作者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