• 5

"多工"的定義到底是什麼?

j808010 wrote:
如果說人類一次只能做一項工作
那用單核心不就足夠了嗎?
幹麻核心數一直增加


增加核心數是很無奈的, 因為單核心的速度提昇已經碰到瓶頸. 這是硬體的限制.

軟體上, 學術界現在正努力研究新的程式語言, 希望能更容易使用多核心,
目前的熱門選擇是像 APL 這種處理陣列的語言,
或是 functional programm 家族的語言.
在軟體改良前, 高時脈低核心數的效能通常會比低時脈高核心數好.
多工在作業平台上作二件以上事情
跟核心多寡無關吧
核心多好處就是
反正就是鳴人的實體影分身
一件事多人分擔處理最後完成
單核轉檔要60分
4核可縮短轉時間
即便就是你只跑一個程式,其他完全乾淨的關掉,多執行緒還是有機會比單執行緒快,有開發過軟體的就知道,新的程式設計可以寫出多執行緒來跑,例如firefox上網,一個執行緒還跑文字,一個來跑圖片,一個跑flash,所以可以比單執行緒的快
meredith wrote:
解釋的很棒
不曉得我這樣理解對不對
如果軟體不支援多核心,即使你開再多的程式仍然只有單一核心在處理
這種情況下就跟使用單核心沒有差別


以雙核心(兩個工人)來解釋:
假設目前有兩個工作,且兩個工作都不支援多執行緒~
第一個工作開始時,工作會分配到 A 工人手上~
第二個工作開始時,因為 A 工人手上有工作,所以電腦便把工作分配給 B 工人~

但要是把雙核心換成四核心,工作一樣只有兩個,就可能發生有兩個核心閒置的狀況~
這時候使用多核心完成工作的時間與單核心差異不大~
這是在單執行緒的狀況下,多核心 CPU 的使用方式~


除非你有使用到支援多核心的軟體,否則多核心的功能可以直接忽略
所以正常的情況是,大部分的軟體都沒有支援多核心
通常很少有機會使用到多核心的功能

而大部分人所認知的多核心,卻以為同時執行多個程式就可以讓多個核心同時處理
卻不知道如果軟體沒有支援,永遠只有使用到單一核心的功能,跟你買單核心處理器沒有兩樣。


目前常用軟體支援多執行緒的數量還算少數,大部份還是以單執行緒為主~
但如果是執行支援多執行緒的程式,一樣以雙核心(兩個工人)來解釋:
第一個工作開始時,工作被分成兩部份,一部份給 A 工人,另一部份給 B 工人~
「理想狀況下」,因為兩個工人同時做一份工作,完成時間只需要一個工人單獨工作的一半~
這時候多核心確實縮短了作業的時間~
這是在多執行緒的狀況下,多核心 CPU 的使用方式~

總之,軟體不支援時就是加強多工的能力,軟體支援時就是加強工作的效率~
好可年的小豆芽 wrote:
如同色情業也走向多工...
1對4,手口並用才是最實在的(恕刪)


大大你舉的例子實在是太……貼切了
如果還能一邊看報紙又織毛衣那這個“多工”就太強了
但是也太不敬業了

一般大部分的情況下
雙核而且時脈又不低的CPU其實夠用了

當然如果預算夠,一次攻頂
用起來一定更爽
雖然不見得感受得到“多功”的好處
我怎麼突然想到
還有單人多工...多人多工...多人單工...
這有點像在講CPU排程的東西...
平常我的I7 920超到220/2000 4.6G在用

1顆跑魔獸世界

1顆跑單機遊戲

1顆跑網頁和BT

1顆跑雜七雜八的背景

4顆跑轉檔~

CPU一直維持在90幾趴

真是不夠用~

電腦多工

只開一台電腦的情況下

一個程式開農場養動物

一個程式跑轉檔

一個程式音樂播放軟體

一個程式執行online Game

這樣應該就是多工了吧

只不過 小弟的配備就算裝到8G RAM + 64位元作業系統
跑起來還是頓到不行, 通常只會同時執行兩個程式...@"@

(OS...六核心啥時才要上市啊??)
我記得處理器再快也只能處理一個資料...指是以非常快速的速度做切換...所以只是"看起來"多工

也依稀記得在多核的情況下如果運算的程式不大卻被細分給太多核心處理最後還要做組合的動作
結果會比單核效率差....

雖然四核很棒..不果沒幾套軟體或是遊戲敢拍胸說 ...我的遊戲可以支援4核心...
所以找一個適合自己的處理器,而不是一直卡在多核迷思

ahwen219 wrote:
電腦多工只開一台電腦...(恕刪)


ahwen219大大...請問您的轉檔是.....影片嗎....
要不要買張硬體壓所卡...這樣或許才是解決之道....

我的
E8400
8G RMA
64bit Vista

跑3~4個Vmware還是很順....CPU處理影像轉檔是很累的.....
看了諸多大大的回覆,有的回答的很好,有的真的是蠻「搞笑」,連我都笑了.....

多工的定義真的是太廣了,其實真正賦予電腦多工的「神力」其實有90%來自於作業系統的提供,就算你今天只單純上上網,開一個瀏覽器瀏覽網路,你就沒用到多工嗎?其實是有的,別忘了,作業系統本身就是一個超級複雜的程式,同時有非常多的行程開啟,同時在做事,例如task 排程,記憶體管理,I/O管理...你執行的程式對作業系統來說,通通都只是子行程,全部的子行程都被作業系統記錄並且排程中,所謂「排程」,其實就是利用分時多工的方式,安排每一個行程能夠使用多少 CPU time,使用時數到了就換下一個子行程,一直週而復始,講到這裡,廣義多工的定義,其實跟 multi-processor (多重處理器)或是 multi-core 其實並無直接關係,單顆處理器或是單核處理器,在作業系統加持下,一樣具有多工(multi-tasking)的特性。

接下來如果你要講到比較進一步的多工(ex. multi-threading多執行緒),這就更複雜了。在之前不支援 multi-threading 的作業系統,一個行程(process) 就是被當成一個 task ,這個 task 是不能再細分成多個 threading,所以就算使用多重處理器(或是多核),一個行程就只能被排程到一個處理器,如果你有四個處理器,就只能同時執行四個行程才能「佔滿」全部的處理器,現今的 Windows NT 之後到現在的 Windows Vista/7,就是一個支援 multi-threading 的作業系統,不過撰寫 multi-threading 的程式並不是一件簡單的事,簡單的說每一個子執行緒(threading)都要是independ with other 子執行緒(threading),之後每個子執行緒就能被分配到不同的處理去去執行。

先說到這裡,有問題再討論囉。
  • 5
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?