0:00:15.353,0:00:17.238 还记得你是什么时候第一次发现 0:00:17.238,0:00:18.659 你的计算机不仅仅 0:00:18.659,0:00:20.742 只是一个显示器和键盘的? 0:00:20.742,0:00:23.325 从鼠标的点击到视频播放, 0:00:23.325,0:00:25.598 这之间有什么东西捕捉到了你的意图, 0:00:25.598,0:00:26.428 理解了它, 0:00:26.428,0:00:27.880 并将其变为现实? 0:00:28.650,0:00:30.270 这个东西到底是什么? 0:00:30.270,0:00:32.007 难道是小妖精? 0:00:32.007,0:00:33.665 让我们假想一下自己可以缩小 0:00:33.665,0:00:35.141 到和一个电子那么大 0:00:35.141,0:00:37.894 并把自己注入到鼠标的一次点击中去。 0:00:37.894,0:00:39.531 如果你把鼠标拆解了, 0:00:39.531,0:00:42.193 你会看到其实它是一个非常简单的机械设备。 0:00:42.193,0:00:43.444 它有一对按键 0:00:43.444,0:00:46.747 和一个用于检测动作和距离的系统 0:00:46.747,0:00:48.163 你用的可能是光电鼠标 0:00:48.163,0:00:50.868 它借助光以及传感器来完成这些检测, 0:00:50.868,0:00:52.958 但老款鼠标通过一个硬橡胶球 0:00:52.958,0:00:54.576 和几个塑料轮子来完成。 0:00:54.576,0:00:56.325 同样的原理。 0:00:56.325,0:00:57.914 当你点击鼠标上的按键时, 0:00:57.914,0:00:59.716 它会发向电脑发出一个 0:00:59.716,0:01:01.825 包含其位置信息的消息。 0:01:01.825,0:01:03.491 当你的鼠标点击消息被收到, 0:01:03.491,0:01:06.880 它会被基本输入/输出子系统来处理。 0:01:06.880,0:01:09.444 这个子系统的作用就像是计算机的眼睛,耳朵, 0:01:09.444,0:01:12.053 嘴和手一样。 0:01:12.053,0:01:13.958 它主要给计算机提供了一个与 0:01:13.958,0:01:16.443 其外界环境交互的途径。 0:01:16.443,0:01:18.090 但它也同时起到了缓冲的作用 0:01:18.090,0:01:21.501 以保证中央处理器不至于被干扰信息所淹没。 0:01:21.501,0:01:23.811 这里,输入输出子系统决定 0:01:23.811,0:01:25.942 你的鼠标点击信息非常重要 0:01:25.942,0:01:28.939 所以它生成了一个打断信号并发给了中央处理器。 0:01:28.939,0:01:31.075 “嘿,中央处理器!这儿有一个点击信息。” 0:01:31.952,0:01:34.327 CPU,全称是中央处理器, 0:01:34.327,0:01:36.522 是整个计算机的大脑。 0:01:36.522,0:01:39.072 就像你的大脑不会占据你的整个身体一样, 0:01:39.072,0:01:41.577 中央处理器也不会占据整个计算机, 0:01:41.577,0:01:44.262 但尽管如此,它还是操控着整个计算机。 0:01:44.262,0:01:46.506 中央处理器的任务,也是它的全部任务, 0:01:46.506,0:01:48.444 就是从内存里获取指令 0:01:48.444,0:01:50.451 并执行计算。 0:01:50.451,0:01:52.380 所以,当你在不断地敲击键盘, 0:01:52.380,0:01:53.610 速度可能真的很快, 0:01:53.610,0:01:55.088 比如一分钟60个字, 0:01:55.088,0:01:57.090 中央处理器也在获取和执行 0:01:57.090,0:01:59.137 每秒数以亿计的的指令。 0:01:59.137,0:02:02.176 是的,每秒数以十亿计: 0:02:02.176,0:02:04.982 这些指令包括你在屏幕上挪动鼠标, 0:02:04.982,0:02:07.145 在桌面上运行一个时钟组件, 0:02:07.145,0:02:08.892 运行网络收音机, 0:02:08.892,0:02:11.145 管理你在硬盘上编辑的文件, 0:02:11.145,0:02:12.900 如此等等。 0:02:12.900,0:02:16.160 你计算机的中央处理器是个真正的处理多任务的能手! 0:02:16.743,0:02:17.613 “但我的天啊 0:02:17.613,0:02:18.909 现在有一个非常重要的鼠标点击信息 0:02:18.909,0:02:20.030 正传进来! 0:02:20.030,0:02:22.560 让我们先把其他的事情放一放来处理它!“ 0:02:23.207,0:02:24.604 中央处理器处理每个任务 0:02:24.604,0:02:26.336 都有其对应的程序。 0:02:26.336,0:02:28.058 一个专门的鼠标程序, 0:02:28.058,0:02:29.092 专门的时钟组件的程序, 0:02:29.092,0:02:30.303 专门的网络收音机的程序, 0:02:30.303,0:02:33.136 和专门的用于处理键盘打出的字母的程序。 0:02:33.136,0:02:35.688 每个程序最开始都是人们 0:02:35.688,0:02:37.906 用人类可读的编程语言来编写的, 0:02:37.906,0:02:38.765 像Java语言, 0:02:38.765,0:02:39.798 C++语言, 0:02:39.798,0:02:41.219 或者Python语言。 0:02:41.219,0:02:43.741 但人工程序会占据很大的空间 0:02:43.741,0:02:47.450 而且包含很多的对计算机来说不必要的信息, 0:02:47.450,0:02:49.191 所以它们会通过编译被缩小 0:02:49.191,0:02:52.653 并记录在许多由0和1二进制位组成的信息里存入内存。 0:02:52.653,0:02:55.410 中央处理器发现他需要指令 0:02:55.410,0:02:57.411 来明白如何去处理这次鼠标点击, 0:02:57.411,0:02:59.380 所以他去查询鼠标程序的地址 0:02:59.380,0:03:01.755 并向内存子系统发出一个请求 0:03:01.755,0:03:04.179 来获取存储在相应位置的指令。 0:03:05.287,0:03:07.216 每个在鼠标设备驱动器里的指令 0:03:07.216,0:03:09.742 都会被及时的获取并加以执行。 0:03:09.742,0:03:12.113 可这还远远没有结束! 0:03:12.113,0:03:14.654 因为中央处理器得知鼠标在被点击的时候 0:03:14.654,0:03:16.216 光标是在显示器屏幕里 0:03:16.216,0:03:18.177 的一个按钮图片上的。 0:03:18.177,0:03:21.248 所以,中央处理器会从内存里获取显示程序 0:03:21.248,0:03:23.353 来弄清这个按钮是什么。 0:03:23.353,0:03:25.601 接着,中央处理器会从内存中 0:03:25.601,0:03:27.437 获取这个按钮的程序, 0:03:27.437,0:03:28.948 这意味着中央处理器需要再次调用 0:03:28.948,0:03:30.688 显示程序 0:03:30.688,0:03:32.860 来显示与这个按钮相关联的视频, 0:03:32.860,0:03:34.742 这样视频才能得以播放。 0:03:34.742,0:03:37.487 可以说,甚至在你点击 0:03:37.487,0:03:39.472 屏幕上的这个按钮使其高亮之前 0:03:39.472,0:03:41.379 已经有很多的相关程序被调用了。 0:03:41.379,0:03:43.848 所以,仅仅一个简单的点击鼠标的任务 0:03:43.848,0:03:46.216 意味着要访问你计算机架构里 0:03:46.216,0:03:48.196 所有的重要组成部分: 0:03:48.196,0:03:49.238 外设, 0:03:49.238,0:03:51.047 基本输入-输出系统, 0:03:51.047,0:03:52.379 中央处理器 0:03:52.379,0:03:53.154 程序, 0:03:53.154,0:03:54.140 和内存, 0:03:54.140,0:03:56.133 和小妖精一点儿关系没有。