Re: [請益] 那些語言或程式用上 多核心 CPU

看板Programming作者 (ggg)時間17年前 (2007/05/15 02:26), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串9/30 (看更多)
※ 引述《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

05/15 03:00, , 1F
是的 沒錯 多工也可以在多核上做
05/15 03:00, 1F

05/15 11:27, , 2F
大家都知道的事就別再講了
05/15 11:27, 2F

05/15 11:27, , 3F
討論多工通常排除硬體的差異
05/15 11:27, 3F
文章代碼(AID): #16IAdPai (Programming)
討論串 (同標題文章)
文章代碼(AID): #16IAdPai (Programming)