Re: [問題] 程式在多核心架構下執行

看板Programming作者 (Terry)時間18年前 (2007/09/07 02:21), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/6 (看更多)
※ 引述《freesamael (燒賣)》之銘言: : ※ 引述《bookmarket (bookmarket)》之銘言: : : 請問一下,現在應用程式或者系統程式怎麼跑在多核心架構下呢 : : 譬如說,現在有A、B兩個cpu, : : 現在有兩個程式要執行分別是game和一個應用程式如word : : 那麼這兩個程式是怎麼執行呢 : : 是由A cpu執行game,b cpu跑word嗎 : : 還是說另一種情況 : : game的程式中,有某一段程式碼(code area S)可以獨立出來執行 : : 那這樣game就分成兩邊跑 : : A cpu跑word,而B cpu跑 code area S嗎 : : 還是說上述說的情況都不是呢? : : 麻煩各位指點一下 : : 謝謝 : 這是由作業系統的排程器決定的。不同作業系統的設計目標不同,所以排程器的設計 : 也會有差別,可能是以公平性為優先,也可能以回應時間為優先做設計。實際執行的 : 情況和當時的執行緒數量、執行緒優先權都有關係。 : 我手邊這本作業系統的書上說 Windows 2000 的多處理器排程方式是有 N 個處理器 : 的時候,擁有最高等級優先權的 N-1 個執行緒會使用 N-1 個處理器,剩下那些相對 : 低優先權的執行緒共享 1 個處理器。 : 對程式設計師而言,要有效利用多處理器/多核心處理器的方式就是將程式寫成 Multi- : threading/Multiprocessing。在 Unix/Linux 上標準的作法就是透過 pthread(Multi- : threading) 或是 fork(multiprocessing)。不過 fork 比較消耗資源,因為它會複製 : 整隻程式,相對於 pthread 付出代價大很多。 : 最近這幾年還有一個看起來滿有前景的 OpenMP API 可以用來做 parallel programming。 : OpenMP 因為能使用在 Unix/Linux 也能用在 WindowsNT,而且使用上比較簡單,因此 : 漸漸受到歡迎。Intel C/C++ Compiler 已經支援 OpenMP 很長一段時間,VC++ 2005 : 也支援 OpenMP 2.0,GCC 則是從 4.2.1 開始支援 OpenMP 2.5。 不是用了OpenMP 就代表你就可以增加效能, 多核CPU 就使用比較多. 能不能使用OpenMP 還是以問題為主, 另外當然是你對問題的拆解及資料結構的 拆解, 不然你要是整天Lock 來Lock 去, 也就是白搭了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.157.179

09/07 02:28, , 1F
大家都地震都還上ptt認真回文呢XD
09/07 02:28, 1F
文章代碼(AID): #16u4L2IL (Programming)
文章代碼(AID): #16u4L2IL (Programming)