图解固件、驱动、软件的区别

2021年11月24日 阅读数:18
这篇文章主要向大家介绍图解固件、驱动、软件的区别,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

你们好,我是良许。程序员

无论咱们使用什么操做系统,不管是 Windows、macOS 仍是 Linux ,里面都安装了许多软件、驱动程序和固件。可是,这三者概念有区别呢?面试

我在朋友圈作了个小调查,发现竟然不少人不清楚他们的关系,所以写下此文来给你们作个简单的科普。segmentfault

文字描述太抽象了,咱们直接来看漫画吧。浏览器

好了,看完漫画,咱们再来看正规的解释是怎样的。微信

简单来说,固件、驱动程序和软件之间的根本区别在于它们的设计目的。架构

  • 固件是赋予设备硬件生命的程序
  • 驱动程序是操做系统和硬件组件之间的中间人
  • 软件能够间接操做硬件

1. 固件

固件(Firmware)就是写入 ROM (只读存储器)中的程序,固件担任着一个系统最基础最底层工做,直接控制硬件,好比计算机上电后第一个启动的程序 BIOS ,它能够与硬件交互,并检查它是否有任何错误。学习

BIOS 调用另外一个称为引导加载程序的程序,该程序执行唤醒在硬盘驱动器内休眠的操做系统并将其放入随机存取存储器 (RAM) 的工做。ui

咱们能够在许多设备上看到固件,包括计算机、手机、遥控器、游戏机、智能手表、USB 驱动器和各类嵌入式系统。即便是电视遥控器也有一个预装的固件,能够实现你按下按钮的时候电视换台操做。spa

2. 驱动

驱动(Drive):驱动程序即添加到操做系统中的一小块代码,其中包含有关硬件设备的信息。当计算机程序请求与某个硬件设备交互时,设备驱动程序充当硬件设备与使用它的程序之间指令的转换器。操作系统

操做系统并不支持机器上的全部硬件,因此通常来说硬件厂商都要为本身的硬件编写驱动程序。

每一个驱动程序都旨在为特定或一组设备工做。在计算机上,驱动程序使用各类总线接口来联系设备。此外,驱动程序通常不直接与用户交互,因此不少用户彻底不知道它们的存在。

驱动程序的开发须要很是当心,由于它直接与硬件打交道,同时也与操做系统打交道。若是设备驱动程序出现问题,可能会致使系统崩溃,这就是为何须要专业人员或团队来为设备编写驱动程序的缘由。

可是为何不把 Firmware 作的很完美,作的不须要驱动支持呢?由于有不一样的操做系统,而这些操做系统对于操做硬件的方式彻底不一样。因此不一样操做系统的驱动是不能兼容的,缘由就是驱动是为操做系统服务的。

3. 软件

与硬件不一样,软件是运行在电脑里,看不见摸不着。

操做系统也是一个软件,而且为安装在操做系统上的其余软件提供了工做空间。前面提到的设备驱动程序其实也是一种软件,不过它有个更细分的种类,称为系统软件。

若是用户编写了一个软件,想要操做硬件(好比光驱、U盘等),他必须经过操做系统提供的接口来实现,而没法直接与硬件交互。

值得注意的一点是,软件是一个广义的术语。咱们在平常使用中所说的「软件」通常是指应用软件,好比:微信,QQ,浏览器等等。

还有什么不明白的,欢迎评论区交流哦~

原创不易,欢迎点赞、转发朋友圈,感谢!


最后,最近不少小伙伴找我要Linux学习路线图,因而我根据本身的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。不管你是面试仍是自我提高,相信都会对你有帮助!

免费送给你们,只求你们金指给我点个赞!

电子书 | Linux开发学习路线图

也但愿有小伙伴能加入我,把这份电子书作得更完美!

有收获?但愿老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

欢迎关注个人博客:良许Linux教程网,满满都是干货!