还记得你是什么时候第一次发现
你的计算机不仅仅
只是一个显示器和键盘的？
从鼠标的点击到视频播放，
这之间有什么东西捕捉到了你的意图，
理解了它，
并将其变为现实？
这个东西到底是什么？
难道是小妖精？
让我们假想一下自己可以缩小
到和一个电子那么大
并把自己注入到鼠标的一次点击中去。
如果你把鼠标拆解了，
你会看到其实它是一个非常简单的机械设备。
它有一对按键
和一个用于检测动作和距离的系统
你用的可能是光电鼠标
它借助光以及传感器来完成这些检测，
但老款鼠标通过一个硬橡胶球
和几个塑料轮子来完成。
同样的原理。
当你点击鼠标上的按键时，
它会发向电脑发出一个
包含其位置信息的消息。
当你的鼠标点击消息被收到，
它会被基本输入/输出子系统来处理。
这个子系统的作用就像是计算机的眼睛，耳朵，
嘴和手一样。
它主要给计算机提供了一个与
其外界环境交互的途径。
但它也同时起到了缓冲的作用
以保证中央处理器不至于被干扰信息所淹没。
这里，输入输出子系统决定
你的鼠标点击信息非常重要
所以它生成了一个打断信号并发给了中央处理器。
“嘿，中央处理器！这儿有一个点击信息。”
CPU，全称是中央处理器，
是整个计算机的大脑。
就像你的大脑不会占据你的整个身体一样，
中央处理器也不会占据整个计算机，
但尽管如此，它还是操控着整个计算机。
中央处理器的任务，也是它的全部任务，
就是从内存里获取指令
并执行计算。
所以，当你在不断地敲击键盘，
速度可能真的很快，
比如一分钟60个字，
中央处理器也在获取和执行
每秒数以亿计的的指令。
是的，每秒数以十亿计：
这些指令包括你在屏幕上挪动鼠标，
在桌面上运行一个时钟组件，
运行网络收音机，
管理你在硬盘上编辑的文件，
如此等等。
你计算机的中央处理器是个真正的处理多任务的能手！
“但我的天啊
现在有一个非常重要的鼠标点击信息
正传进来！
让我们先把其他的事情放一放来处理它！“
中央处理器处理每个任务
都有其对应的程序。
一个专门的鼠标程序，
专门的时钟组件的程序，
专门的网络收音机的程序，
和专门的用于处理键盘打出的字母的程序。
每个程序最开始都是人们
用人类可读的编程语言来编写的，
像Java语言,
C++语言,
或者Python语言。
但人工程序会占据很大的空间
而且包含很多的对计算机来说不必要的信息，
所以它们会通过编译被缩小
并记录在许多由0和1二进制位组成的信息里存入内存。
中央处理器发现他需要指令
来明白如何去处理这次鼠标点击，
所以他去查询鼠标程序的地址
并向内存子系统发出一个请求
来获取存储在相应位置的指令。
每个在鼠标设备驱动器里的指令
都会被及时的获取并加以执行。
可这还远远没有结束！
因为中央处理器得知鼠标在被点击的时候
光标是在显示器屏幕里
的一个按钮图片上的。
所以，中央处理器会从内存里获取显示程序
来弄清这个按钮是什么。
接着，中央处理器会从内存中
获取这个按钮的程序，
这意味着中央处理器需要再次调用
显示程序
来显示与这个按钮相关联的视频，
这样视频才能得以播放。
可以说，甚至在你点击
屏幕上的这个按钮使其高亮之前
已经有很多的相关程序被调用了。
所以，仅仅一个简单的点击鼠标的任务
意味着要访问你计算机架构里
所有的重要组成部分：
外设，
基本输入-输出系统，
中央处理器
程序，
和内存，
和小妖精一点儿关系没有。