原文链接:https://www.zhihu.com/question/22175660/answer/27278490

1.Firmware与Driver的区别

以下摘自驱动与固件的区别是什么 答主 时国怀

驱动和固件(firmware)都是代码,前者为软件服务,后者为硬件服务

在操作系统概念还不明确的时代,二者是没有明显区别的。

但是随着计算机体系结构的发展,硬件的种类开始变多,操作系统的种类也变多了。

这个时候,因为各种技术的、商业的原因,硬件厂商希望自己的硬件能被更多的软件厂商使用,所以就需要在硬件之上做一些封装,让自己的硬件操纵起来更容易,这个时候就要有firmware这种东西了,它简化了软件与硬件的交互。

但是为什么不把fimware做的很完美,做的不需要驱动支持呢?因为有不同的操作系统。我不知道你对操作系统的理解是到什么程度?只知道Windows?还是还仅仅知道Linux?还是清楚Unix和FreeBSD是不同的系统?知道有RTOS?知道有上百种不同的内核?

不同的操作系统,对于操作硬件的方式完全不同,在Windows里应用态是无法直接写IO端口的,而在嵌入式系统里,一般都不限制直接操作IO端口。所以,硬件厂商一方面为了自己的硬件能被软件更简单的使用,就需要写firmware,而另一方面为了兼容各种操作系统,又不能把firmware写的太死,必须预留足够的余地让软件自由发挥——软件的自由发挥就是驱动。

不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的,有的操作系统是单线程的,有些操作系统不允许动态申请内存,所以不同的操作系统要操作硬件,就要根据自身的特性编写对应的操作代码,这就是驱动存在的意义——适应系统需要。
以下摘自:驱动与固件的区别是什么?答主-in nek

而Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,生成目标系统的时候,通常拷贝在/lib/firmware目录下。当driver对device进行初始化的时候,通过request_firmware()等接口,在一个用户态helper程序的帮助下,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。

所以,总的来说,其实driver和firmware没有什么直接的关系,但firmware通常由驱动去加载。我们讨论的那个OS,一般不需要理解firmware是什么,只是把它当做数据。firmware是什么,只有使用这些数据的那个设备才知道。

2.Firmware和OS的区别

2.1.总结起来就是OS是一种高级的Firmware

2.2.BIOS也是一种PC的Firmware

固件是为控制硬件设备而设计的。在计算机中,我们称之为BIOS(基本输入/输出系统)或UEFI(统一可扩展固件接口)。BIOS是计算机上电后第一个启动的。它可以与硬件交互,并检查它是否有任何错误。BIOS调用另一个名为bootloader的程序,它负责唤醒沉睡在硬盘驱动器内的操作系统,并将其放入随机存取存储器中。

2.3. Firmware固化在各种ROM或Flash中

Firmware固化在ROM或flash中,通过驱动程序读取到DDR或者各设备的RAM中去。

以下摘自驱动与固件的区别是什么?知乎答主 86M

首先要对操作系统有个概念,从低级系统(前后台系统)到高级系统(进程式系统)的发展是模块化的过程。系统的不同功能由不同模块来实现。

驱动:它是实现高级应用和底层硬件操作的中间模块。
在高级系统(如Windows)很明显,可以用安装包来安装。而在低级系统里可能它只是一个函数,嵌入式开发里常见。

固件:可以认为就是操作系统,或者是操作系统+必要的应用程序。
最平常的就是把android和ios都叫做固件(刷固件,升级固件)。
人们把嵌入式系统的安装叫做刷固件,把pc和pc以上的硬件叫安装系统。
为什么会有这样的叫法,我觉得
1,嵌入式很多系统很低级,有些甚至不超过百行代码,在操作系统归类中,有些都不认为它是操作系统。
2,嵌入式系统安装后基本不会再进行软件层面的修改,是稳固的。

ps:电脑可以认为是一个高级系统和多个低级系统携手操作硬件的机器。像网卡、声卡、usb等的主控制器都有操作系统(固件)来控制完成其所需要完成的工作

Firmware/驱动/OS(操作系统的区别)相关推荐

  1. 【转】Windows Linux MacOS操作系统的区别

    首先,不管是Windows操作系统.Linux操作系统还是MacOS操作系统,甚至包括操作系统的鼻祖UNIX操作系统,最早都是用C语言编写的. 实际上UNIX操作系统和C语言都是由贝尔实验室的汤普森( ...

  2. 打印机驱动程序中GDI、ps、pcl5和pcl6驱动的特点区别

    打印机驱动程序中GDI.ps.pcl5和pcl6驱动的特点区别 首先GDI驱动就是我们常说的基于主机的驱动,目前市场多数打印机已经不在使用次驱动程序,但少数机器仍在销售,比如HP laserjet 1 ...

  3. linux与各操作系统的区别

    Linux和Windows的区别  和Linux一样,Windows系列是完全的多任务操作系统.它们支持同样的用户接口.网络和安全性.但是,Linux和Windows的真正区别在于,Linux事实上是 ...

  4. Unix、Linux、Windows操作系统的区别

    1.操作区别 linux区分大小写,windows在dos界面命令下不区分大小写: linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联: wind ...

  5. TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)

    TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...

  6. golang 创建文件目录 os.Mkdir、os.MkdirAll 区别

    本文主要讲述os.Mkdir.os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧. os.Mkdir("abc", os.ModePerm) //创建目录 os.Mk ...

  7. 电视机鸿蒙os卡,开卖40天,搭载鸿蒙OS操作系统的华为电视就差评如潮?用户:亏了...

    原标题:开卖40天,搭载鸿蒙OS操作系统的华为电视就差评如潮?用户:亏了 华为是国内的通信领域巨头,在5G通信技术和手机业务方面也是全球第一.今年华为在遭遇实体清单事件之后,华为手机和电脑上的操作系统 ...

  8. 阿里云服务器如何初始化云盘(跟换系统)?初始化云盘和跟换操作系统的区别?

    若在Linux系统(服务器)上,环境安装出错,可通过云服务器上初始化云盘,回归硬盘初始化状态,进行重新安装. 一.前言 作为小白的我们,第一次在服务器中下载安装软件,并部署环境,难免万般出错,然而想要 ...

  9. os.rename和os.renames区别

    os.rename和os.renames区别 1.os.rename(old_file_path, new_file_path), 只能对相应的文件进行重命名, 不能重命名文件的上级目录名. 2.os ...

最新文章

  1. C++ STL: lower_bound 和 upper_bound
  2. U-Mail邮件系统带您体验微信收发邮件
  3. redis内部数据结构深入浅出
  4. 1.7-27编程基础之字符串 单词翻转
  5. NSURLSession的应用
  6. 什么是机器学习?有哪些分类?到底有什么用?终于有人讲明白了
  7. linux 内核 网卡驱动 移植,Linux内核移植步骤_添加DM9000网卡驱动(设备树).docx
  8. 华为高管“泄密”,华为P40 Pro外观定了!
  9. 2021年中国成人商店市场趋势报告、技术动态创新及2027年市场预测
  10. unity学习之NGUI做NPC对话
  11. 传统直线检测算法与基于深度学习的直线检测算法
  12. 服务器系统有哪些,各有什么特点?
  13. 使用Echarts制作散点图
  14. HDU - 1573 X问题
  15. python基础知识-12-模块的了解
  16. c语言学习记录|输入三角形三边的长度,计算三角形周长和面积。
  17. Linux系统 ·虚拟机安装· SecureCRT远程连接器
  18. 快速扫描3D建模技术,仅仅只需要这三个步骤
  19. JS原生:XMLHttpRequest发送GETPOST请求
  20. gmssl国密sm2(生成密钥对-私钥签字-证书验签)

热门文章

  1. 用友NC65 Rest接口开发及调试(一)
  2. 手机浏览器下载哪个好用
  3. [原创]利用橡皮条技术画图
  4. 苏州农业职业技术学院携手华为,打造校企合作新典范
  5. 某宝页面登陆滑块验证 selenium + chromedriver (亲测)
  6. SMSC 2021 Day13Day14 部分题解
  7. PS调节图片:拉伸、变形
  8. matlab怎么对三组数据做相关性分析,如何用matlab做相关性分析
  9. vue2-verify-弱弱的前端验证
  10. 「ZJOI2018」树