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