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

时间:2015-09-30 16:34:48

标签: c operating-system kernel driver device

我正在编写用于教育目的的操作系统,并且作为未来可能很高效的系统,我想从头开始(我已经做过)并且我真的很难用硬件工作,编写简单的VGA文本模式驱动程序真的恶梦。 问题是使用硬件很难调试,而且大多数硬件都是封闭源代码而我单独工作(太多而无法单独处理所有可用的硬件)我的操作系统将在x86上运行,未来可能运行x86_64架构,所以我要问如果有方法可以帮助避免直接使用硬件,HAL之类的东西,但目标独立,提供与广泛的可用硬件通信的接口 如果这样的东西可用它应该是在C或汇编(但不是C ++),因为我希望我的操作系统是用纯C和汇编编写的(为了性能优势)

3 个答案:

答案 0 :(得分:2)

我的第一反应,从评论中判断,不仅仅是我的,是#34;那剩下的是什么呢?"。但事实并非如此。

除了某些设备驱动程序的硬件抽象外,还有其他方面可以引用Wikipedia article中的一些项目:

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

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

E.g。如果您要使用NetBSD发行版并主要保留其设备驱动程序,请保留引导系统并将内核减少到最低限度,我认为您最终仍会得到类似UNIX的内容。

同样有趣的是,从嵌入式世界中删除一些免费操作系统,例如:比如FreeRTOS

您还应该看看Plan 9,这可以被视为与UNIX的适度偏离。但请注意:

  

导致计划9采用率低的其他因素包括:   缺乏商业备份,最终用户应用程序数量少,   而且缺乏设备驱动程序。

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

答案 1 :(得分:1)

来自维基百科,

  

操作系统(OS)是管理计算机硬件和软件资源并为计算机程序提供公共服务的系统软件。

操作系统的重点是为硬件提供一个接口,所以不,如果您正在编写操作系统,就无法逃避处理硬件。

答案 2 :(得分:0)

当且仅当对方采取这一部分,即他们为您的操作系统执行此操作时,您可以执行此操作,如果您的操作系统提出了一个绝妙的想法或对开发人员或公司有吸引力的任何方式,驱动程序不是您的问题,并且如果您的操作系统没有吸引力,那么驱动程序就是死机。