百科问答小站 logo
百科问答小站 font logo



操作系统能不能继续分两部分:硬件相关和硬件无关?并且让驱动只依赖硬件相关部分而不依赖操作系统? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

其实这就是一个非技术问题

先拆分成两种情况:

一种是同一种操作系统升级的情况:比如从WIN2000升级到WINXP,升级到WIN7,升级到WIN10.

任何一个设计的比较好的操作系统,都会有一个硬件抽象层(HAL),驱动几乎都不会直接操作硬件,所以如果HAL的变化不大,那么从WIN2000升级到WIN7,有一些驱动是可以正常工作的。

WIN10被人骂的比较多,一个原因是WIN10的HAL层变化太大,很多驱动都要重写,我写的一个东西,在WIN10 2004版本上工作的比较好,在WIN10 20H2上就有一些问题。


另外一种情况是期望不同操作系统使用同样代码的情况:比如希望Linux和Windows使用同一套二进制驱动。

技术方面的原因很简单,就是两个操作系统的HAL层完全不同(暂时不谈二进制文件格式的问题)。

那能不能设计成相同的?答案是不能,原因有很多:

1. 不同操作系统发展路线不一样,Linux是从学习UNIX的设计发展而来,Windows则是另外一个独立的设计(并且WIN2K和WIN9x也不是同一个发展路线),这就意味着他们的原始设计差异非常大。写代码的人都知道,对于一个庞大的架构来说,修改某一个模块很容易,但整个架构推倒重来,基本不可能,厂商没有那么多人力去做这件事(但也有人做了,后面会说)。

Linux里,一切皆文件的思路贯穿于内核设计,但Windows的核心设计不是文件,就这一个区别,会让驱动设计有巨大的差异。

2. 有一些设计,是存在专利保护的,换句话说,你想让两个不同的操作系统完全一样,对不起,这是违法的。Linux有很长一段时间不能光明正大的支持NTFS/exFAT,说到底还是这方面的风险。

既然费力又不讨好,那么厂商这么做的意义在哪?


当然,题主既然想到了,肯定有别人也能想到,而且也有人这么做了。

比如WSL1,这个就是微软搞出来的,兼容Linux的,但又不是Linux的内核,刚出来的时候一片叫好,结果呢,微软发现这玩意收益不到,到WSL2的时候,微软就不再独立开发兼容Linux的内核了,直接搞虚拟机多好,厂商也要考虑成本的。

在一些小众领域(嵌入式),这种情况特别普遍,VxWorks一直以来是嵌入式(工控、自动化、军工、航空航天)领域里使用率比较高的操作系统,这方面国内也有很多公司在做国产化,国产化的一个很重要指标就是:兼容VxWorks API甚至是二进制。

看到了吧,能做,有人做了,收益不高,负担太大。

所以,不是技术问题




  

相关话题

  如何评价鸿蒙OS运行游戏时被检测为模拟器登陆? 
  更新鸿蒙系统不久烧了主板,真实情况如何? 
  linux创建的硬链接为什么不占用磁盘空间? 
  Linux 发行版中哪个包管理器更强? 
  Android 刷机过程中 fastboot 和 Recovery 的作用是什么? 
  我在Win11上运行虚拟机上的Linux出现这样的问题应该如何解决。? 
  鸿蒙的前景如何?有可能成为第三大移动操作系统吗? 
  操作系统是不是也是加载到内存中再执行的? 
  如何评价国外媒体Ars Technica认为鸿蒙OS就是安卓? 
  我听说以前的系统没有图形界面,那他们是用 C# 等语言直接敲代码吗? 

前一个讨论
关于malloc返回值的问题?
下一个讨论
为什么Linux下要把创建进程分为fork()和exec()(一系列函数)两个函数来处理?





© 2024-11-05 - tinynew.org. All Rights Reserved.
© 2024-11-05 - tinynew.org. 保留所有权利