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