作者ggg12345 (ggg)
站内Programming
标题Re: [请益] 那些语言或程式用上 多核心 CPU
时间Tue May 15 02:26:32 2007
※ 引述《interpreter (点点加油)》之铭言:
: : 现在的 Windows , Linux OS 不是多处理机又是多工的吗 ? 那麽多核心为甚麽
: : 不能像多处理机那样跑 ?
: 多工,是单核心,做得很快让你觉得是同时在做,达到mutiprocess的效果
: __A__
: ___B__
: __C__
多工也是可以用多处理机吧 ! 多核虽然装在同一个 CPU Chip 但是
Program Counter 数是配多核的, 多核应该能逼近多处理机那样跑.
: ...
: : OS 也是用程式语言写出来的, 现在的程式语言写不出有多工的程式吗 ?
: 多工的程式?嗯…用词不太对 建议您可以认真的了解一下多工的定义
: 那些看似同时可做两件事的其实都是很快的context switch 也就是multiprogramming
: : 那麽使用 thread lib 写的程式不算多工 ?
: 同前面 多工是以kernel执行的架构来决定 若同一process下的不同thread可在不同CPU
: 上执行 那它可能就像是你想的thread lib做出来的 若这样那就叫parallel了
: : 写 OS 的程式语言跟写一般程式的程式语言没有不同吧 ?
: : 既然 OS 是多工的, 程式就是透过 OS 平台在其上跑的, 那多个片段程式
: : 一起跑不就是多工 ? 再把多个片段程式合在一起, 让多核心对每段同时
: ^^^^^^^^^^^^^^^^^ 是! 可是这不叫「程式多工」,是OS达成「多工」
: : 跑, 那不就是多核心一起跑 ? 如果说不可以, 那又差在那里 ?
: 不可以 parallel的系统需要communication 也就是当你形容的多个CPU平行执行
: 多个程式时,它是需要沟通的,这些沟通的overhead使得parallel非常难做 也
: 就是为什麽intel要搞这麽久
没有前後次序相关的片段都是可以平行的, 等前面做完後面才能接着做的, 才需
要前面的来通知, 何时该通知, 由写程式的来安排就不难, 现在的程式语言如果
没有通知与启动功能, 还是可以透过 lib 来做到吧 !
: 还有 多核心(CPU)的电脑执行效率并非1+1=2 事实上1+1约等於1.2左右(有错请鞭)
: 不过这个是可以克服的 也是目前努力的方向
: : 那就要问 avi 兄台这段话的意思:
: : " 记得看过一篇文章是说当时INTEL为了开发双核心的技术
: : 光compiler就搞了好几年,因为当换算到machine time的时候要决定哪段code
: : 要让哪个CPU跑,还要解决同步不同步问题"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.6.234
1F:→ interpreter:是的 没错 多工也可以在多核上做 218.162.100.42 05/15 03:00
2F:推 ephesians:大家都知道的事就别再讲了218.160.114.130 05/15 11:27
3F:→ ephesians:讨论多工通常排除硬体的差异218.160.114.130 05/15 11:27