这个问题需要深入到技术原理层面回答,为避免艰涩难懂,我尽量用类比的方法,有回答不准确的地方,请在评论区留言,但请勿无脑喷。
先来说电脑内部各软硬件的关系。
如果把电脑类比为一座处理信息的高科技工厂,CPU就是老板,内存就是秘书,显卡是设计师,声卡是唱歌的,鼠标、键盘相当于传达室搞收发的。
但电脑的世界和现实的工厂还是有很大的不同。
现实世界中,老板想的话,可以和任何一个员工联系、对话。但在电脑的世界里,老板(CPU)没法和收发人员(鼠标、键盘)直接联系,原因很简单:鼠标和键盘属于机电设备,CPU属于电子设备,道不同,语言不同,CPU只能看懂二进制代码,机电设备的动作语言,CPU是真的不懂。
这时候,就需要驱动程序上场了。
CPU在工厂总管操作系统的协调下,在驱动程序的支持下,知道收发人员是鼠标键盘显示器,收发快递(外部信息)就是它们了,设计师是显卡,画三角形啥的就找显卡,如此等等。
换句话说,驱动程序解决了硬件设备的“我是谁”、“我能干什么”等问题。
需要强调一点,在鼠标/键盘和CPU连接关系上,不是我们以为的插上就能用那么简单。键盘/鼠标等输入输出设备通过一个特定的控制器(控制器又称接口,常见的有HDMI、USB、雷电等),与连接CPU和内存的总线相连。
鼠标/键盘/显示器之所以不能与CPU和内存通过总线直接相连,除了不是同类设备外,主要原因是,这些外接设备的速度非常慢,必须要通过控制器(各种接口)来处理这种速度差异,否则会严重拖慢电脑运行速度。好比CPU和内存在高速公路奔跑,你直接让拖拉机(外接设备)上高速,结果不是翻车就是堵。
鼠标/键盘等外部设备通过控制器(接口)解决了和CPU、内存的连接问题,但并不意味着它们之间就可以传输信息了,别忘了,点击鼠标或敲击键盘,产生的并不是0和1这样的二进制信号,所以CPU这个老板看不懂!
怎么办?驱动程序撸起袖子上。
比如我想输入“魔铁的世界”这5个字。用键盘输入“魔铁的世界”(这里忽略输入法),键盘中的处理器把点击/敲击的符号,转换成CPU可以识别的0和1这样的二进制信息,然后键盘驱动程序报告到操作系统系统那里。
在操作系统的协调指挥下,信息被传输到控制器(接口),操作系统再通知CPU,CPU从控制器读取信息,解码、执行,并指挥显卡:“显示字符‘魔铁的世界’。”显卡运行驱动程序,将命令传递给显示器,显示器运行显示器驱动程序,点亮相关像素,显示字符“魔铁的世界”。
键盘电路示意图。每一个外设,无论键盘、鼠标,还是打印机、显示器,都有独立的微处理器,用来处理输入输出信号。
可以看出,在上述过程中,凡是涉及到执行指令的硬件,都必须在操作系统的协调和指挥下,运行相关驱动程序,硬件才能正常工作。正因为如此,驱动程序才被称为“硬件的灵魂”。
重点来了,鼠标、键盘、显卡、声卡等是硬件,离不开驱动程序,CPU、内存也是硬件,为什么就没有驱动程序呢?
实际上,严格来说,CPU、内存也有驱动程序,不过不是保存在硬盘中,而是保存在主板上,它有个耳熟能详的名称BIOS。实际上,在PC流行DIY的时代,有一段时间曾流行通过升级BIOS提升电脑性能的方法,包括支持新CPU(省下主板钱)、提升总线频率(CPU超频、内存超频)、开启CPU新的功能(包括英特尔CPU被屏蔽的超线程技术)等。
所以,CPU、内存也是有驱动程序的,不过形式有点特殊。
驱动程序是硬件的灵魂,没有它,电脑就是傻子,什么也做不了;
严格来说,电脑上所有硬件都有驱动程序,否则操作系统找不到这个硬件,也就无法协调和指挥它执行CPU的指令;
操作系统一般带有绝大部分硬件的驱动程序,但只能让硬件发挥基础功能,要发挥特色功能,就需要安装硬件厂家提供的驱动程序;
操作系统更新的一项重要内容,就是驱动程序的更新。