2011年3月2日 星期三

甚麼是 Context Switch


上一篇文章, 講了很多次的 Context Switch, 但到底甚麼是 Context Switch 呢? 我大概解釋一下.

電腦最核心的就是所謂中央處理器, Central Procesor Unit (CPU), 基本上就是接受指令, 輸入資料, 計算, 輸出資料做這樣的動作, 而事實上早期的電腦, 大多只有一個 CPU, 但要處理很多 Job 工作, 而最簡單的想法就是一個工作做完做下一個工作, 但這樣感覺後面的工作就一直在等待, 因此有人想說把工作切成很多很多部份, 而 CPU 每次就處理這些工作的一部份, 這樣感覺就是同時在處理很多工作, 稱為多工 Multi-Processing.

但事實上一個 CPU 一瞬間只能處理一筆資料執行一個程式, 一個工作須要成千上萬次的執行, 所以也不至於每執行一個指另就換下一個工作, 因為資料通常放在記憶體或暫存器 (Register, 就當作較快的記憶體), 而要把資料放在 CPU 能夠執行的記憶體才能執行, 這資料叫做 Context (文本), 但如此往往上百個工作事實上也無法把所有文本 Content 放在記憶體, 通常也要放進硬碟之類的地方, 等到要執行時再把要執行的資料讀進來, 再把部份資料移出去, 這動作叫 Context Switch.

很不幸的, 這個 Context Switch 的動作本身須要由 CPU 去做, 因此若是這個 Context Switch 發生的次數太多, 所花的時間也變多, 每個工作能夠分派的 CPU 在一段時間內能處理的次數也會變少, 甚至原本大家乖乖排隊可以在下次新工作分派之前執行完的情形, 反而因為 Context Switch 變多資源耗費很多便得無法執行完的話, 就會發生超越臨界值 (Threshold) 現像, 最後甚麼事都不能做或做得相當慢.

前面講完電腦的狀況, 但我們真正要討論的是人腦的狀況...

當然人腦到底有沒有這種 Context Switch 的現像呢? 當然我們都知道人可以一心多用, 甚至某些事情真的可以進到背景 (Background) 去執行, 只是人的思緒的確是有可能被打亂, 而在被打擾後, 想要回到原本的思緒的確要一段時間甚至回不來, 因此我一直在想, 我們工作的確會有這狀況, 而學習或唸書是否也會這樣子呢?

若真的會這樣的話, 人的學習應該是每一小時換一門科目或每兩小時換門科目呢? 而是修改成每兩天或每兩週再來換個類別 (例如數理一個類別, 文史一個類別), 事實上真正會須要換的原因是這些分門別類的科目, 在還沒有真的融會貫通之前, 做到 Knowledge is the One, 知識本一家之前, 我們是不是該在同一個時間內花更多的時間在一個科目或類別, 而不是一直換呢?

或許在某方面, 這樣一直換也不見得是壞事, 讓人的思緒更靈活, 但相對的也要付出還沒有深入學習就抽離的代價阿...

寫到這邊, 我 Google 到相關的定義:
1. Context Switch Wiki
2. Context Switch Deifinition
大家可以去參考看看...

(原圖取自 http://www.pedantique.org/)

沒有留言:

張貼留言

熱門文章