1 00:00:15,353 --> 00:00:17,238 还记得你是什么时候第一次发现 2 00:00:17,238 --> 00:00:18,659 你的计算机不仅仅 3 00:00:18,659 --> 00:00:20,742 只是一个显示器和键盘的? 4 00:00:20,742 --> 00:00:23,325 从鼠标的点击到视频播放, 5 00:00:23,325 --> 00:00:25,598 这之间有什么东西捕捉到了你的意图, 6 00:00:25,598 --> 00:00:26,428 理解了它, 7 00:00:26,428 --> 00:00:27,880 并将其变为现实? 8 00:00:28,650 --> 00:00:30,270 这个东西到底是什么? 9 00:00:30,270 --> 00:00:32,007 难道是小妖精? 10 00:00:32,007 --> 00:00:33,665 让我们假想一下自己可以缩小 11 00:00:33,665 --> 00:00:35,141 到和一个电子那么大 12 00:00:35,141 --> 00:00:37,894 并把自己注入到鼠标的一次点击中去。 13 00:00:37,894 --> 00:00:39,531 如果你把鼠标拆解了, 14 00:00:39,531 --> 00:00:42,193 你会看到其实它是一个非常简单的机械设备。 15 00:00:42,193 --> 00:00:43,444 它有一对按键 16 00:00:43,444 --> 00:00:46,747 和一个用于检测动作和距离的系统 17 00:00:46,747 --> 00:00:48,163 你用的可能是光电鼠标 18 00:00:48,163 --> 00:00:50,868 它借助光以及传感器来完成这些检测, 19 00:00:50,868 --> 00:00:52,958 但老款鼠标通过一个硬橡胶球 20 00:00:52,958 --> 00:00:54,576 和几个塑料轮子来完成。 21 00:00:54,576 --> 00:00:56,325 同样的原理。 22 00:00:56,325 --> 00:00:57,914 当你点击鼠标上的按键时, 23 00:00:57,914 --> 00:00:59,716 它会发向电脑发出一个 24 00:00:59,716 --> 00:01:01,825 包含其位置信息的消息。 25 00:01:01,825 --> 00:01:03,491 当你的鼠标点击消息被收到, 26 00:01:03,491 --> 00:01:06,880 它会被基本输入/输出子系统来处理。 27 00:01:06,880 --> 00:01:09,444 这个子系统的作用就像是计算机的眼睛,耳朵, 28 00:01:09,444 --> 00:01:12,053 嘴和手一样。 29 00:01:12,053 --> 00:01:13,958 它主要给计算机提供了一个与 30 00:01:13,958 --> 00:01:16,443 其外界环境交互的途径。 31 00:01:16,443 --> 00:01:18,090 但它也同时起到了缓冲的作用 32 00:01:18,090 --> 00:01:21,501 以保证中央处理器不至于被干扰信息所淹没。 33 00:01:21,501 --> 00:01:23,811 这里,输入输出子系统决定 34 00:01:23,811 --> 00:01:25,942 你的鼠标点击信息非常重要 35 00:01:25,942 --> 00:01:28,939 所以它生成了一个打断信号并发给了中央处理器。 36 00:01:28,939 --> 00:01:31,075 “嘿,中央处理器!这儿有一个点击信息。” 37 00:01:31,952 --> 00:01:34,327 CPU,全称是中央处理器, 38 00:01:34,327 --> 00:01:36,522 是整个计算机的大脑。 39 00:01:36,522 --> 00:01:39,072 就像你的大脑不会占据你的整个身体一样, 40 00:01:39,072 --> 00:01:41,577 中央处理器也不会占据整个计算机, 41 00:01:41,577 --> 00:01:44,262 但尽管如此,它还是操控着整个计算机。 42 00:01:44,262 --> 00:01:46,506 中央处理器的任务,也是它的全部任务, 43 00:01:46,506 --> 00:01:48,444 就是从内存里获取指令 44 00:01:48,444 --> 00:01:50,451 并执行计算。 45 00:01:50,451 --> 00:01:52,380 所以,当你在不断地敲击键盘, 46 00:01:52,380 --> 00:01:53,610 速度可能真的很快, 47 00:01:53,610 --> 00:01:55,088 比如一分钟60个字, 48 00:01:55,088 --> 00:01:57,090 中央处理器也在获取和执行 49 00:01:57,090 --> 00:01:59,137 每秒数以亿计的的指令。 50 00:01:59,137 --> 00:02:02,176 是的,每秒数以十亿计: 51 00:02:02,176 --> 00:02:04,982 这些指令包括你在屏幕上挪动鼠标, 52 00:02:04,982 --> 00:02:07,145 在桌面上运行一个时钟组件, 53 00:02:07,145 --> 00:02:08,892 运行网络收音机, 54 00:02:08,892 --> 00:02:11,145 管理你在硬盘上编辑的文件, 55 00:02:11,145 --> 00:02:12,900 如此等等。 56 00:02:12,900 --> 00:02:16,160 你计算机的中央处理器是个真正的处理多任务的能手! 57 00:02:16,743 --> 00:02:17,613 “但我的天啊 58 00:02:17,613 --> 00:02:18,909 现在有一个非常重要的鼠标点击信息 59 00:02:18,909 --> 00:02:20,030 正传进来! 60 00:02:20,030 --> 00:02:22,560 让我们先把其他的事情放一放来处理它!“ 61 00:02:23,207 --> 00:02:24,604 中央处理器处理每个任务 62 00:02:24,604 --> 00:02:26,336 都有其对应的程序。 63 00:02:26,336 --> 00:02:28,058 一个专门的鼠标程序, 64 00:02:28,058 --> 00:02:29,092 专门的时钟组件的程序, 65 00:02:29,092 --> 00:02:30,303 专门的网络收音机的程序, 66 00:02:30,303 --> 00:02:33,136 和专门的用于处理键盘打出的字母的程序。 67 00:02:33,136 --> 00:02:35,688 每个程序最开始都是人们 68 00:02:35,688 --> 00:02:37,906 用人类可读的编程语言来编写的, 69 00:02:37,906 --> 00:02:38,765 像Java语言, 70 00:02:38,765 --> 00:02:39,798 C++语言, 71 00:02:39,798 --> 00:02:41,219 或者Python语言。 72 00:02:41,219 --> 00:02:43,741 但人工程序会占据很大的空间 73 00:02:43,741 --> 00:02:47,450 而且包含很多的对计算机来说不必要的信息, 74 00:02:47,450 --> 00:02:49,191 所以它们会通过编译被缩小 75 00:02:49,191 --> 00:02:52,653 并记录在许多由0和1二进制位组成的信息里存入内存。 76 00:02:52,653 --> 00:02:55,410 中央处理器发现他需要指令 77 00:02:55,410 --> 00:02:57,411 来明白如何去处理这次鼠标点击, 78 00:02:57,411 --> 00:02:59,380 所以他去查询鼠标程序的地址 79 00:02:59,380 --> 00:03:01,755 并向内存子系统发出一个请求 80 00:03:01,755 --> 00:03:04,179 来获取存储在相应位置的指令。 81 00:03:05,287 --> 00:03:07,216 每个在鼠标设备驱动器里的指令 82 00:03:07,216 --> 00:03:09,742 都会被及时的获取并加以执行。 83 00:03:09,742 --> 00:03:12,113 可这还远远没有结束! 84 00:03:12,113 --> 00:03:14,654 因为中央处理器得知鼠标在被点击的时候 85 00:03:14,654 --> 00:03:16,216 光标是在显示器屏幕里 86 00:03:16,216 --> 00:03:18,177 的一个按钮图片上的。 87 00:03:18,177 --> 00:03:21,248 所以,中央处理器会从内存里获取显示程序 88 00:03:21,248 --> 00:03:23,353 来弄清这个按钮是什么。 89 00:03:23,353 --> 00:03:25,601 接着,中央处理器会从内存中 90 00:03:25,601 --> 00:03:27,437 获取这个按钮的程序, 91 00:03:27,437 --> 00:03:28,948 这意味着中央处理器需要再次调用 92 00:03:28,948 --> 00:03:30,688 显示程序 93 00:03:30,688 --> 00:03:32,860 来显示与这个按钮相关联的视频, 94 00:03:32,860 --> 00:03:34,742 这样视频才能得以播放。 95 00:03:34,742 --> 00:03:37,487 可以说,甚至在你点击 96 00:03:37,487 --> 00:03:39,472 屏幕上的这个按钮使其高亮之前 97 00:03:39,472 --> 00:03:41,379 已经有很多的相关程序被调用了。 98 00:03:41,379 --> 00:03:43,848 所以,仅仅一个简单的点击鼠标的任务 99 00:03:43,848 --> 00:03:46,216 意味着要访问你计算机架构里 100 00:03:46,216 --> 00:03:48,196 所有的重要组成部分: 101 00:03:48,196 --> 00:03:49,238 外设, 102 00:03:49,238 --> 00:03:51,047 基本输入-输出系统, 103 00:03:51,047 --> 00:03:52,379 中央处理器 104 00:03:52,379 --> 00:03:53,154 程序, 105 00:03:53,154 --> 00:03:54,140 和内存, 106 00:03:54,140 --> 00:03:56,133 和小妖精一点儿关系没有。