WEBVTT 00:00:15.353 --> 00:00:17.238 你還記得你首先領悟到 00:00:17.238 --> 00:00:18.659 的電腦不只是 00:00:18.659 --> 00:00:20.742 螢幕加鍵盤而已嗎? 00:00:20.742 --> 00:00:23.325 滑鼠點兩下,影片就開始播放 00:00:23.325 --> 00:00:25.598 在這之間有樣東西,得知你的意圖 00:00:25.598 --> 00:00:26.428 予以解讀 00:00:26.428 --> 00:00:27.880 並讓它實現 00:00:28.650 --> 00:00:30.270 這東西是什麼? 00:00:30.270 --> 00:00:32.007 是小妖精嗎? 00:00:32.007 --> 00:00:33.665 想像一下,我們縮小到 00:00:33.665 --> 00:00:35.141 和電子一樣的大小 00:00:35.141 --> 00:00:37.894 接著把自己注射到滑鼠鍵裡 00:00:37.894 --> 00:00:39.531 如果你把滑鼠拆開 00:00:39.531 --> 00:00:42.193 你會發現這是很簡單的機器 00:00:42.193 --> 00:00:43.444 滑鼠有兩個按鍵 00:00:43.444 --> 00:00:46.747 一個偵測動向及距離的系統 00:00:46.747 --> 00:00:48.163 你可能用的是光學滑鼠 00:00:48.163 --> 00:00:50.868 透過光及感應器來完成這些計算 00:00:50.868 --> 00:00:52.958 舊一點的滑鼠有一顆硬硬的橡膠球 00:00:52.958 --> 00:00:54.576 還有塑膠環 00:00:54.576 --> 00:00:56.325 兩者概念相同 00:00:56.325 --> 00:00:57.914 當你按下滑鼠按鍵的時候 00:00:57.914 --> 00:00:59.716 滑鼠就發送訊息到電腦 00:00:59.716 --> 00:01:01.825 關於滑鼠位置的資訊 00:01:01.825 --> 00:01:03.491 電腦接收滑鼠資訊後 00:01:03.491 --> 00:01:06.880 則由輸出入的子系統來負責 00:01:06.880 --> 00:01:09.444 這個子系統就像是電腦的眼睛 00:01:09.444 --> 00:01:12.053 耳朵、嘴巴,以及雙手 00:01:12.053 --> 00:01:13.958 基本上,這個系統提供電腦一個方法 00:01:13.958 --> 00:01:16.443 去和電腦環境互動 00:01:16.443 --> 00:01:18.090 它的作用也有點像緩衝器 00:01:18.090 --> 00:01:21.501 避免CPU被不相干的程式淹沒 00:01:21.501 --> 00:01:23.811 就這例子來看,輸出入子系統 00:01:23.811 --> 00:01:25.942 判定滑鼠點選的項目很重要 00:01:25.942 --> 00:01:28.939 所以發送一個插播信號給CPU 00:01:28.939 --> 00:01:31.075 「嘿,CPU!這東西被點選了。」 00:01:31.952 --> 00:01:34.327 CPU,也就是中央處理器 00:01:34.327 --> 00:01:36.522 是整台電腦的大腦 00:01:36.522 --> 00:01:39.072 就像你的大腦不會占據你全身 00:01:39.072 --> 00:01:41.577 CPU也不會占據整台電腦 00:01:41.577 --> 00:01:44.262 但是他會一直執行同樣的事情 00:01:44.262 --> 00:01:46.506 CPU的主要工作 00:01:46.506 --> 00:01:48.444 就是從記憶體拿取指示 00:01:48.444 --> 00:01:50.451 然後執行 00:01:50.451 --> 00:01:52.380 所以當你不斷打字 00:01:52.380 --> 00:01:53.610 也許打得很快 00:01:53.610 --> 00:01:55.088 一分鐘六十個字吧 00:01:55.088 --> 00:01:57.090 CPU一直拿取然後執行 00:01:57.090 --> 00:01:59.137 一秒鐘執行數十億個指示 00:01:59.137 --> 00:02:02.176 對,每秒鐘幾十億個 00:02:02.176 --> 00:02:04.982 你在螢幕上移動滑鼠的指示 00:02:04.982 --> 00:02:07.145 執行桌面的時鐘附件 00:02:07.145 --> 00:02:08.892 播放網路電台 00:02:08.892 --> 00:02:11.145 處理在硬碟中,你在編輯的檔案 00:02:11.145 --> 00:02:12.900 還有很多很多 00:02:12.900 --> 00:02:16.160 CPU就是個超神的多重任務處理王 00:02:16.743 --> 00:02:17.613 「但是我的天呀 00:02:17.613 --> 00:02:18.909 滑鼠點了一下 00:02:18.909 --> 00:02:20.030 資訊現在要傳來了! 00:02:20.030 --> 00:02:22.560 先停止所有任務,然後處理那個!」 00:02:23.207 --> 00:02:24.604 CPU處理的每樣事物 00:02:24.604 --> 00:02:26.336 都有一個程式 00:02:26.336 --> 00:02:28.058 滑鼠有個專門的程式 00:02:28.058 --> 00:02:29.092 時鐘附件也有 00:02:29.092 --> 00:02:30.303 網路電台也有 00:02:30.303 --> 00:02:33.136 處理鍵盤傳送的文字也有 00:02:33.136 --> 00:02:35.688 每個程式一開始都是人類寫的 00:02:35.688 --> 00:02:37.906 用人類看得懂的程式語言 00:02:37.906 --> 00:02:38.765 像是Java 00:02:38.765 --> 00:02:39.798 C++ 00:02:39.798 --> 00:02:41.219 或是Python 00:02:41.219 --> 00:02:43.741 但是人類的程式占據了很多空間 00:02:43.741 --> 00:02:47.450 也包含很多電腦不需要的程式 00:02:47.450 --> 00:02:49.191 這些程式因而被整合,縮小 00:02:49.191 --> 00:02:52.653 以1和0的方式儲存在記憶體中 00:02:52.653 --> 00:02:55.410 CPU知道自己需要指示 00:02:55.410 --> 00:02:57.411 去處理滑鼠點的那一下 00:02:57.411 --> 00:02:59.380 所以CPU就查詢滑鼠的程式 00:02:59.380 --> 00:03:01.755 並發送請求給記憶體的子系統 00:03:01.755 --> 00:03:04.179 讀取儲存在那的指示 00:03:05.287 --> 00:03:07.216 滑鼠驅動程式的每一個指示 00:03:07.216 --> 00:03:09.742 都能充分拿取並執行 00:03:09.742 --> 00:03:12.113 還不僅僅如此! 00:03:12.113 --> 00:03:14.654 因為CPU知道滑鼠被按了一下 00:03:14.654 --> 00:03:16.216 游標經過某張圖片 00:03:16.216 --> 00:03:18.177 在顯示器某個按鈕的時候 00:03:18.177 --> 00:03:21.248 CPU會要求記憶體提供顯示器的程式 00:03:21.248 --> 00:03:23.353 找出滑鼠是按了哪裡 00:03:23.353 --> 00:03:25.601 然後CPU得要求記憶體 00:03:25.601 --> 00:03:27.437 提供按鍵的程式 00:03:27.437 --> 00:03:28.948 也就是說,CPU還需要 00:03:28.948 --> 00:03:30.688 顯示器的程式 00:03:30.688 --> 00:03:32.860 顯示出影片與按鍵的關聯性 00:03:32.860 --> 00:03:34.742 影片就開始播放 00:03:34.742 --> 00:03:37.487 我們假設過程中包含很多程式 00:03:37.487 --> 00:03:39.472 甚至在看到幕上的點選物 00:03:39.472 --> 00:03:41.379 亮起來之前 00:03:41.379 --> 00:03:43.848 所以,單純按下滑鼠這個動作 00:03:43.848 --> 00:03:46.216 代表你已經使用電腦結構中 00:03:46.216 --> 00:03:48.196 許多重要的元素 00:03:48.196 --> 00:03:49.238 像是週邊設備 00:03:49.238 --> 00:03:51.047 基本的輸出入系統 00:03:51.047 --> 00:03:52.379 CPU 00:03:52.379 --> 00:03:53.154 程式 00:03:53.154 --> 00:03:54.140 還有記憶體 00:03:54.140 --> 00:03:56.133 而不是小妖精