最佳答案
有很多用 C++ 实现的常用操作系统(或其中的一部分)的例子 - IOKit - MacOSX 和 IOS 的设备驱动子系统在 EC++ 中实现.然后是 eCOS RTOS - 内核用 C++ 实现,甚至使用模板。
操作系统传统上充斥着用 C 语言实现的 OO 概念示例。在 linux 设备模型中,kobject
实际上是驱动程序和设备对象的基类,并带有 DIY v-表格和一些在宏中实现的时髦排列,用于上下转换。
Windows NT 内核具有更根深蒂固的内核对象继承层次结构。对于所有提示内核代码中异常处理的适用性的邻居来说,正是提供了这样一种机制。
传统上,反对在内核代码中使用 C++ 的论点是:
- 可移植性:C++ 编译器适用于所有目标平台。这不再是一个真正的问题
- RTTI 和异常等 C++ 语言机制的成本。显然,如果要使用它们,标准实现是不合适的,需要使用特定于内核的变体。这通常是使用 EC++ 背后的驱动程序
- C++ API 的稳健性,尤其是 Fragile base-class problem
毫无疑问,使用异常和RAII范式将极大地提高内核代码质量 - 您只需查看 BSD 或 linux 的源代码即可查看替代方案 - 使用 goto
实现的大量错误处理代码。
关于c++ - 内核开发和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12385485/