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

摘要:
内部安装了许多软件、驱动程序和固件。固件、驱动程序和软件之间的根本区别在于它们的设计意图。固件是为设备硬件提供生命的程序驱动程序。它是介于操作系统和硬件组件之间的中间人软件,可以间接操作硬件。1.固件是写入ROM(只读存储器)的程序。当计算机程序请求与硬件设备交互时,设备驱动程序充当硬件设备和使用它的程序之间的转换器。操作系统不支持机器上的所有硬件。

大家好,我是良许。

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

我在朋友圈做了个小调查,发现居然很多人不清楚他们的关系,因此写下此文来给大家做个简单的科普。

图解固件、驱动、软件的区别第1张

文字描述太抽象了,我们直接来看漫画吧。

图解固件、驱动、软件的区别第2张

图解固件、驱动、软件的区别第3张

图解固件、驱动、软件的区别第4张

图解固件、驱动、软件的区别第5张

图解固件、驱动、软件的区别第6张

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

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

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

1. 固件

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

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

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

2. 驱动

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

操作系统并不支持机器上的所有硬件,所以一般来讲硬件厂商都要为自己的硬件编写驱动程序。

每个驱动程序都旨在为特定或一组设备工作。在计算机上,驱动程序使用各种总线接口来联系设备。此外,驱动程序一般不直接与用户交互,所以很多用户完全不知道它们的存在。

驱动程序的开发需要非常小心,因为它直接与硬件打交道,同时也与操作系统打交道。如果设备驱动程序出现问题,可能会导致系统崩溃,这就是为什么需要专业人员或团队来为设备编写驱动程序的原因。

但是为什么不把 Firmware 做的很完美,做的不需要驱动支持呢?因为有不同的操作系统,而这些操作系统对于操作硬件的方式完全不同。所以不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的。

3. 软件

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

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

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

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

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

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

免责声明:文章转载自《图解固件、驱动、软件的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux通过nginx反向代理net core项目项目部署到Tomcat服务器上面,jS文件乱码问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

走向“持续部署”

作者: 乔梁  发布时间: 2013-02-18 17:42  阅读: 1846 次  推荐: 2   原文链接   [收藏]     目前IT行业中,似乎“要不要做持续集成?”已经不再是讨论的焦点,取而代之的是“如何进行持续集成?”。在前一篇文章中,我介绍了Cruise团队持续集成的演进过程。在最后,还曾提及Cruise团队的持续部署。本文将结合团队...

Monkey学习笔记(一)

(一)adb相关命令语句: 1、 查看连接设备信息:adb devices                                  2、安装app到手机上:adb install [-r]  [apk文件存在地址].apk                    3、将文件放入设备/模拟器:adb push [本地文件路径]            ...

技术学习网站

这里主要用于分享一些实用的技术网站,方便查阅 _ 一、学习提升 1. 综合学习网站 MDN学习 Web 开发的最佳实践 web.devGoogle 出品的 Web 开发资源教程 LeetCode全球极客挚爱的技术成长平台小浩算法 freeCodeCamp通过成千上万个编程关卡来帮助提升你的编程技能 网道互联网开发文档 慕课网程序员的...

iOS: Crash文件解析(一)

iOS Crash文件的解析(一)   开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断。联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问题,就换一台,如果10台后挂了他就不做手机了。好了不闲扯了,今天就跟大...

微服务架构

 微服务(Microservice)1.1 为什么需要微服务架构   随着互联网技术的发展,传统的应用架构已满足不了实际需求,微服务架构就随之产生。1.1.1 传统单体应用架构的问题   通常我们所使用的传统单体应用架构都是模块化的设计逻辑,程序在编写完成后会被打包并部署为一个具体的应用,而应用的格式则依赖于相应的应用语言和框架。  例如,在网上商城系统...

Flask的response返回形式

from flask import Flask, send_file, jsonify # 导入Flask类 from flask import render_template app = Flask(__name__) #创建flask应用对象,app=application # 第一中返回,返回一个响应 @app.route("/index")...