Firmware/驱动/OS(操作系统的区别)

原文链接: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等的主控制器都有操作系统(固件)来控制完成其所需要完成的工作

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值