大家好,我是良许。
不管我们使用什么操作系统,无论是 Windows、macOS 还是 Linux ,里面都安装了许多软件、驱动程序和固件。但是,这三者概念有区别呢?
我在朋友圈做了个小调查,发现居然很多人不清楚他们的关系,因此写下此文来给大家做个简单的科普。
文字描述太抽象了,我们直接来看漫画吧。
好了,看完漫画,我们再来看正规的解释是怎样的。
简单来讲,固件、驱动程序和软件之间的根本区别在于它们的设计目的。
固件(Firmware)就是写入 ROM (只读存储器)中的程序,固件担任着一个系统最基础最底层工作,直接控制硬件,比如计算机上电后第一个启动的程序 BIOS ,它可以与硬件交互,并检查它是否有任何错误。
BIOS 调用另一个称为引导加载程序的程序,该程序执行唤醒在硬盘驱动器内休眠的操作系统并将其放入随机存取存储器 (RAM) 的工作。
我们可以在许多设备上看到固件,包括计算机、手机、遥控器、游戏机、智能手表、USB 驱动器和各种嵌入式系统。即使是电视遥控器也有一个预装的固件,可以实现你按下按钮的时候电视换台操作。
驱动(Drive):驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。当计算机程序请求与某个硬件设备交互时,设备驱动程序充当硬件设备与使用它的程序之间指令的转换器。
操作系统并不支持机器上的所有硬件,所以一般来讲硬件厂商都要为自己的硬件编写驱动程序。
每个驱动程序都旨在为特定或一组设备工作。在计算机上,驱动程序使用各种总线接口来联系设备。此外,驱动程序一般不直接与用户交互,所以很多用户完全不知道它们的存在。
驱动程序的开发需要非常小心,因为它直接与硬件打交道,同时也与操作系统打交道。如果设备驱动程序出现问题,可能会导致系统崩溃,这就是为什么需要专业人员或团队来为设备编写驱动程序的原因。
但是为什么不把 Firmware 做的很完美,做的不需要驱动支持呢?因为有不同的操作系统,而这些操作系统对于操作硬件的方式完全不同。所以不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的。
与硬件不同,软件是运行在电脑里,看不见摸不着。
操作系统也是一个软件,并且为安装在操作系统上的其他软件提供了工作空间。前面提到的设备驱动程序其实也是一种软件,不过它有个更细分的种类,称为系统软件。
如果用户编写了一个软件,想要操作硬件(比如光驱、U盘等),他必须通过操作系统提供的接口来实现,而无法直接与硬件交互。
值得注意的一点是,软件是一个广义的术语。我们在日常使用中所说的「软件」一般是指应用软件,比如:微信,QQ,浏览器等等。
还有什么不明白的,欢迎评论区交流哦~
原创不易,欢迎点赞、转发朋友圈,感谢!
最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!
免费送给大家,只求大家金指给我点个赞!
电子书 | Linux开发学习路线图
也希望有小伙伴能加入我,把这份电子书做得更完美!
推荐阅读:
欢迎关注我的博客:良许Linux教程网,满满都是干货!