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

简介: 图解固件、驱动、软件的区别

大家好,我是良许。不管我们使用什么操作系统,无论是 Windows、macOS 还是 Linux ,里面都安装了许多软件、驱动程序和固件。但是,这三者概念有区别呢?我在朋友圈做了个小调查,发现居然很多人不清楚他们的关系,因此写下此文来给大家做个简单的科普。微信图片_20220419170355.png文字描述太抽象了,我们直接来看漫画吧。微信图片_20220419170359.png微信图片_20220419170402.png微信图片_20220419170405.png微信图片_20220419170408.png微信图片_20220419170412.png

好了,看完漫画,我们再来看正规的解释是怎样的。简单来讲,固件、驱动程序和软件之间的根本区别在于它们的设计目的。

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

1. 固件

固件(Firmware)就是写入 ROM (只读存储器)中的程序,固件担任着一个系统最基础最底层工作,直接控制硬件,比如计算机上电后第一个启动的程序 BIOS ,它可以与硬件交互,并检查它是否有任何错误。BIOS 调用另一个称为引导加载程序的程序,该程序执行唤醒在硬盘驱动器内休眠的操作系统并将其放入随机存取存储器 (RAM) 的工作。我们可以在许多设备上看到固件,包括计算机、手机、遥控器、游戏机、智能手表、USB 驱动器和各种嵌入式系统。即使是电视遥控器也有一个预装的固件,可以实现你按下按钮的时候电视换台操作。

2. 驱动

驱动(Drive):驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。当计算机程序请求与某个硬件设备交互时,设备驱动程序充当硬件设备与使用它的程序之间指令的转换器。操作系统并不支持机器上的所有硬件,所以一般来讲硬件厂商都要为自己的硬件编写驱动程序。每个驱动程序都旨在为特定或一组设备工作。在计算机上,驱动程序使用各种总线接口来联系设备。此外,驱动程序一般不直接与用户交互,所以很多用户完全不知道它们的存在。驱动程序的开发需要非常小心,因为它直接与硬件打交道,同时也与操作系统打交道。如果设备驱动程序出现问题,可能会导致系统崩溃,这就是为什么需要专业人员或团队来为设备编写驱动程序的原因。但是为什么不把 Firmware 做的很完美,做的不需要驱动支持呢?因为有不同的操作系统,而这些操作系统对于操作硬件的方式完全不同。所以不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的。

3. 软件

与硬件不同,软件是运行在电脑里,看不见摸不着。操作系统也是一个软件,并且为安装在操作系统上的其他软件提供了工作空间。前面提到的设备驱动程序其实也是一种软件,不过它有个更细分的种类,称为系统软件。如果用户编写了一个软件,想要操作硬件(比如光驱、U盘等),他必须通过操作系统提供的接口来实现,而无法直接与硬件交互。值得注意的一点是,软件是一个广义的术语。我们在日常使用中所说的「软件」一般是指应用软件,比如:微信,QQ,浏览器等等。还有什么不明白的,欢迎评论区交流哦~

目录
相关文章
|
Linux Docker 容器
到底什么是镜像(概念)
镜像到底是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。 1.UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
21350 0
|
2月前
|
XML 人工智能 数据格式
如何写好提示词Prompt?
本文由产品专家三桥君撰写,主要探讨如何写出高质量的Prompt,助力AI模型输出优质内容。文章从三个核心方面展开:理解大语言模型(LLM)、积累行业Know-how、提升逻辑表达清晰性。作者结合自身实践经验,强调在AI技术快速发展的背景下,提升Prompt能力的关键在于夯实基础,深入行业,精准表达。通过本文,读者将获得实用的Prompt优化思路,提升AI应用效率。
129 0
|
8月前
|
人工智能 数据可视化 IDE
AI编程:cursor使用教程
这是小卷对AI编程工具学习的首篇文章,以Cursor为例,介绍其安装与基本功能。Cursor分为狭义和广义两类,前者辅助程序员高效编程,后者让无基础用户也能创建应用。文章详细讲解了Cursor的安装、快捷键、代码生成、修改、补全及项目理解等功能,并展示了如何通过提示词实现需求,帮助小白轻松上手编程。
1792 77
|
10月前
|
存储 缓存 前端开发
PWA 如何实现离线功能
PWA(渐进式Web应用)通过Service Worker技术实现离线功能。Service Worker作为浏览器和网络之间的代理,可以缓存网页资源,在用户离线时提供缓存内容,确保应用正常运行。
|
10月前
|
Java Python
gc模块的set_threshold函数
gc模块的set_threshold函数
280 1
|
算法 搜索推荐 Java
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
298 3
|
安全 前端开发 Java
学习从Struts迁移到Spring的策略概述
从Struts框架迁移到Spring框架是一个常见的升级路径,主要是为了利用Spring框架提供的更多功能、更好的模块化支持以及更广泛的社区资源。
245 3
|
弹性计算 智能网卡 网络安全
一文带你了解阿里云云网络的十年演进之路
伴随着大型和超大型企业陆续上云,更丰富行业场景和更多样的服务运行在阿里云上,对云网络的规模、性能、弹性提出了更极致的要求,驱使着云网络不断持续优化,从经典网络到专有网络,控制面从1.0到3.0,数据面从内部服务去网关,边界网关硬件化,全面拥抱智能网卡,再到业务网元虚拟化,走上一条“螺旋”上升的路线。
|
前端开发
React项目的打包步骤
React项目的打包步骤
660 0