2013年9月20日 星期五

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) 現像, 最後甚麼事都不能做或做得相當慢.

沒有留言:

張貼留言