瀏覽單個文章
syntech
*停權中*
 

加入日期: Jan 2003
文章: 494
要完整了解恐怕要先了解
multi-process 及 multi-thread 的差別.

就 cpu 而言,
的確是 "同一個時間內只執行一個工作",
但是 os 把會切割工作,
分配每一個process 一個固定的執行期間,
正常情況下,應該時間到了就要把執行權交出來,
可是有些process的程式寫法緣故,
時間到了也交不出來,
就是單cpu很容易發生失去回應的原因.

多cpu 因為有額外的cpu資源可以執行其他process,
所以某一個cpu被某個process佔住了,
還有其他cpu可以處理,
就會感覺執行比較"順".(不是比較"快")

雖然程式並不支援多核心多cpu,
但是還是可以由多核心多cpu獲得執行上的優點.

一個process要能充分利用到多核心多cpu的優點,
則必須把程式由 single-thread 的傳統設計方式改成 multi-thread的方式,
理論上,multi-thread的每個thread會獨立交由各個cpu執行,
一個cpu執行加法100次,兩個cpu一起做就各作50次,四個cpu一起就各25次,
所以執行時間會大幅減少,
但實際上又因為種種因素不能這樣設計,
所以multi-thread 的設計很困難.

對os 而言,
多cpu與多核心是一樣的,
cpu怎麼封裝,os 不會知道.

--
以上所述可能不完全正確,
敬請有能力的網友補充
     
      
舊 2007-05-12, 06:00 PM #11
回應時引用此文章
syntech離線中