使用C ++进行低级系统编程

时间:2010-11-22 22:12:29

标签: c++ systems-programming

我已经使用C ++一段时间了,我开始对低级系统编程感兴趣,比如驱动程序和东西。甚至某种原始操作系统也可能是非常有趣的项目!

我不知道我可以从哪里开始。是否有任何不太具挑战性的事情我可以开始使用C ++我应该尽量避免像性能关键代码中的异常一样?

如果重要的话,我目前的操作系统是Windows 7。

7 个答案:

答案 0 :(得分:11)

使用C ++编写Windows设备驱动程序并非不可能,您可以使用很多CRT函数来解决问题。例如,新运算符不可用,您不必担心std :: bad_alloc。除非你替换它,否则会削减相当大的标准C ++库类。

但这并不是设备驱动程序的重点,重要的是让它尽可能小。编写复杂代码时,C ++会得到回报。您明确地 not 想要在设备驱动程序中编写复杂的代码。调试它是redrum。

Linus真的很喜欢内核中的C.这是有充分理由的。

答案 1 :(得分:1)

看一下osdev.org(在考虑开发自己的操作系统时会想到许多问题在这里得到解答)。

答案 2 :(得分:1)

C ++没有提供实际实现完整操作系统所需的全部工具。在c ++中有一些特定于机器的东西无法完成。这些都是处理和提升中断,控制MMU,控制对supervisor cpu指令的访问,以及一些其他小的可能性和结束。

幸运的是,这些东西很少,可以用从C ++访问的汇编语言编写。

答案 3 :(得分:0)

我强烈建议您首先攻击现有的开源设备驱动程序和内核,您实际上只能在Linux或* BSD中执行此操作。这段经历还可以让你很好地了解你是否已经完成了这种编程。

答案 4 :(得分:0)

我有heard最近开源的Symbian OS是用C和C ++编写的。不知道它的哪些部分是用C ++完成的,因为我还没有读过代码库。考虑一下。

Kerneltrap.org对于Linux内核在其代码库中没有C ++的原因进行了一些非常好的讨论。考虑一下阅读。

答案 5 :(得分:0)

Symbian OS是用C ++的变体编写的。当然,还有低级别事物的汇编代码,但这一切都已完成。你不能使用异常,对于实时驱动程序,你不能做正常的事情,比如动态内存分配,即使在C中也是如此。

答案 6 :(得分:-1)

我推荐 C编程语言和汇编程序。我不确定C ++是否有可能低级别。