作者interpreter (点点加油)
看板Programming
标题Re: [请益] 那些语言或程式用上 多核心 CPU
时间Tue May 15 01:45:51 2007
: 现在的 Windows , Linux OS 不是多处理机又是多工的吗 ? 那麽多核心为甚麽
: 不能像多处理机那样跑 ?
多工,是单核心,做得很快让你觉得是同时在做,达到mutiprocess的效果
__A__
___B__
__C__
...
: OS 也是用程式语言写出来的, 现在的程式语言写不出有多工的程式吗 ?
多工的程式?嗯…用词不太对 建议您可以认真的了解一下多工的定义
那些看似同时可做两件事的其实都是很快的context switch 也就是multiprogramming
: 那麽使用 thread lib 写的程式不算多工 ?
同前面 多工是以kernel执行的架构来决定 若同一process下的不同thread可在不同CPU
上执行 那它可能就像是你想的thread lib做出来的 若这样那就叫parallel了
: : 你所谓的「好几个程式不也是可以同时下命令点选一起跑」是Win32
: : 实做Multi-processing的结果,只是多工技术的一种,你要不要先去找本书看看啊?
: : 感觉你对多工还是不了解。
: 写 OS 的程式语言跟写一般程式的程式语言没有不同吧 ?
: 既然 OS 是多工的, 程式就是透过 OS 平台在其上跑的, 那多个片段程式
: 一起跑不就是多工 ? 再把多个片段程式合在一起, 让多核心对每段同时
^^^^^^^^^^^^^^^^^ 是! 可是这不叫「程式多工」,是OS达成「多工」
: 跑, 那不就是多核心一起跑 ? 如果说不可以, 那又差在那里 ?
不可以 parallel的系统需要communication 也就是当你形容的多个CPU平行执行多个程式
时,它是需要沟通的,这些沟通的overhead使得parallel非常难做 也就是为什麽intel
要搞这麽久
还有 多核心(CPU)的电脑执行效率并非1+1=2 事实上1+1约等於1.2左右(有错请鞭)
不过这个是可以克服的 也是目前努力的方向
: : 这段非常怪,Compiler也许可以回答你每个指令要花多少周期做完,但无法回答你这程式
: : 要花多少时间才能跑完,事实上,只要是图灵机(Turing Machine,目前的机器皆是),
: : 是无法回答这个问题的,因为这是所谓的Halting Problem.
: 那就要问 avi 兄台这段话的意思:
: " 记得看过一篇文章是说当时INTEL为了开发双核心的技术
: 光compiler就搞了好几年,因为当换算到machine time的时候要决定哪段code
: 要让哪个CPU跑,还要解决同步不同步问题"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.162.100.42
1F:→ danielguo:不只1.2, 最佳情况下可以到1.8, 1.9以上 220.132.8.46 05/15 08:09
2F:推 eva19452002:不太可能只有1.2,太慢了140.136.149.183 05/15 09:09
3F:推 abcdefghi:1.2 差不多是 hyperthreading 的效率. 140.113.23.107 05/15 09:36
4F:推 interpreter:谢谢指教 因为那是好久以前的印象了3Q 218.162.100.42 05/15 21:55