Re: [請益] 那些語言或程式用上 多核心 CPU
: 現在的 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
→
05/15 08:09, , 1F
05/15 08:09, 1F
推
05/15 09:09, , 2F
05/15 09:09, 2F
推
05/15 09:36, , 3F
05/15 09:36, 3F
推
05/15 21:55, , 4F
05/15 21:55, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 30 篇):