是否可以以这样的方式构建设备和硬件,即不需要为操作系统编写驱动程序?
为什么需要驱动程序来操作硬件?他们不能在硬件内部实现“驱动程序”吗?
当你打车的时候,司机会开着车过来,你只要说去哪里就行了!为什么硬件设计不一样呢?
答案1
在过去(40 年代至 70 年代),您从一家公司购买计算机,该公司制造或外包自己的硬件,编写所有操作系统软件和大部分应用软件。操作系统只能在卖家的平台上运行,使用他们在首次购买时出售的硬件。应用程序是用汇编语言编写的,只能在该平台上运行,并且必须针对每个 CPU 重写,并且通常针对每个操作系统版本重写。对于硬件的每一个细微差异,都需要构建和维护新版本的操作系统。简而言之,硬件、操作系统和应用程序都是不可携带。
随着计算开始商品化,可移植性在 60 年代成为一大问题。Unix 和 C 编程语言一直被誉为开启可移植性新时代的两项关键技术。Unix 内核主要用 C 编写,只有极少量的 CPU 特定汇编代码,因此任何具有 C 编译器的平台都可以运行为其他平台(包括操作系统内核)开发的 C 应用程序。由于我们现在拥有可以在多个硬件平台上运行的操作系统,因此我们需要一种方法来支持所有这些硬件,而无需将其放在操作系统的核心中。这就是驱动程序的作用所在。Unix 可以在一千个平台上运行,但不需要知道如何访问这些平台上可能出现的每种硬件。它所需要的只是一个设计用于与硬件配合使用并插入 unix 内核的驱动程序。
所以总而言之,司机并不是一个需要解决的问题,而是一个大问题的答案,整个行业花了 50 年的时间才解决。
答案2
司机肯定是随出租车而来的,但他并不是出租车的预装组件。
在您的示例中,出租车是硬件,您是操作系统,而司机应该是第三个实体。
更精确的例子可能是租车。实际上,你(操作系统)租了一辆租车(硬件),并凭借你的驾驶能力使用它。但如果你使用的是 Windows 而不是 Linux,那么基本上你不知道如何驾驶,那么你必须学习(编写/下载和安装)它。