C是最像机器代码的语言,同时仍然保持了不同体系结构之间的可移植性。
以下是C语言的一些特性,这些特性在许多其他语言中是不存在的,这些特性使它适合于OS开发:
- 直接内存访问。内存管理留给程序员,因此在OS开发中是一个优势,在OS开发中,几乎所有有用的事情都涉及到直接操作RAM的区域。例子包括内存映射IO,DMA控制器,页表等。如果这些东西不能直接用C结构表示,至少可以用C指针来访问。
- 没有运行时依赖。与C++、Java、C#和其他语言不同,C语言完全没有运行时依赖关系。它不需要内存管理器,也不需要进程管理,它唯一的运行时依赖项就是调用main()函数。这意味着您可以编写直接在硬件上运行的C程序,而不需要某种内存管理器或输入或输出层。这当然意味着你必须实现你自己的,但与其他语言不同的是,这是可能的。许多标准库不需要操作系统(例如字符串.h),而那些需要操作系统的部分可以由程序员在OS development.
- Efficient字节级操作中最低限度地实现。C非常适合有效的字节级操作。也就是说,将数据复制到不同的区域,翻转比特,并处理少量的数据。虽然这对程序员来说比较繁琐,但它在内存的使用和处理时间方面都要高效得多,这在操作系统中是必不可少的。
- All C代码直接1对1翻译成易于理解的机器码。因此,C没有内置像树或哈希表这样的复杂数据结构。这必须由程序员实现,这背后的前提是程序员应该能够看到任何C代码,并确切地知道它在硬件中做了什么。这在其他语言中是不会发生的,比如Python,它有像"Dictionary“这样的数据类型,它的后端实现不一定是程序员知道的。C(和UNIX)的哲学是程序员比语言更了解,这使得它非常适合于操作系统和系统开发中的微调细节,但明显的缺点是没有内置方便的结构。