如何在不深入设备驱动程序的情况下编写操作系统

how can I write operating system without going deep into device drivers

我正在为教育目的编写操作系统ose 并且作为未来可能的生产系统,我想从头开始(我已经这样做了)并且我真的很不高兴使用硬件,编写简单的 VGA 文本模式驱动程序真是一场噩梦。 问题是使用硬件很难调试,并且 most 硬件是 closed 源,我正在单独工作(太多无法单独处理所有可用硬件)我的操作系统运行x86 和未来可能 x86_64 架构所以我想问是否有方法可以帮助避免直接使用硬件,比如 HAL 但目标独立,提供与广泛可用硬件通信的接口 如果这样的东西可用它应该在 C 或汇编(但不是 C++)中,因为我希望我的 os 是用纯 C 和汇编编写的(为了性能)

来自维基百科,

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs.

OS 的全部意义在于提供硬件接口,所以不,如果您正在编写 OS.[=11,您就无法逃避与硬件打交道。 =]

我的第一反应是 "what is left do then?",而且从评论来看(不仅仅是我的)。但事实并非如此。

除了某种硬件抽象到设备驱动程序之外,还有其他领域,引用 Wikipedia article 中的一些项目:

  • 流程管理
  • 中断处理
  • 内存管理
  • 文件系统
  • 网络
  • 安全
  • 其他I/O
  • 用户界面

问题是这些需要与设备驱动程序密切交互。你需要一个合作伙伴来处理它们,或者尝试使用现有的东西。

例如如果您采用 NetBSD 发行版并主要保留其设备驱动程序,保留引导系统并将内核削减到最低限度,我认为您最终仍会得到类似 UNIX 的东西。

同样有趣的是从嵌入式世界中类似地削减一些免费操作系统,例如像 FreeRTOS.

您还应该看看 Plan 9,这可以看作是对 UNIX 的适度偏离。但请注意:

Other factors that contributed to low adoption of Plan 9 include the lack of commercial backup, the low number of end-user applications, and the lack of device drivers.

这是世界上十几位 class 计算机科学家的努力。

当且仅当其他人参与这部分时,您可以这样做,即他们为您的 OS 做这件事,如果您的 OS 提出了一个绝妙的想法或以任何方式吸引开发人员或公司,驱动不是你的问题,如果你的OS不吸引人,驱动就是死问题。