是否总是需要使用C语言编写RTOS?为什么不能用Java或其他技术编写呢?这是因为Java中没有指针概念吗?
C语言是为编写操作系统而设计的,因此常被称为“可移植汇编语言”,因此可以预期它将用于此目的。
如果您想要实时Java,则Sun提供了一种商业解决方案。
如果有什么原因的话,那就是指针。在Java中,除了基本数据类型,其他所有东西都在堆上分配内存,而且除了像int
这样的变量以外,其他变量都是指针。这并不是编写操作系统的好方式,因为它给大多数操作增加了一层间接性,在操作系统编写中,这一层可能会让你付出代价。
操作系统内核需要优化和高性能,因为你不知道它将运行什么。这对于实时操作系统尤其如此,其中半毫秒的延迟可能至关重要。这需要与CPU和其他硬件密切合作,并且具备编写高度微优化代码的能力,以便以极高的可预测性执行特定任务。
因此,使用C语言构建实时操作系统内核是一个非常好的选择,而Java则不是。这并不意味着你不能用Java做到,但它会更困难,而且可能不那么成功。
我很好奇你为什么问这个问题。如果你正在使用实时操作系统,那么它是用什么语言编写的并不重要。如果你想要破解一个RTOS,那么它是用什么语言编写的就很重要了,但是OS的概念和实现本身就足够难以理解,学习一门新语言也是微不足道的。此外,如果你学习操作系统设计和实现,几乎可以确定你所使用的资源将使用C作为教学语言。
RTOS并不总是用C语言编写的。通常情况下是这样,但我相信在ThreadX中他们使用汇编语言。
在编写RTOS时,是否总是需要使用C语言?
不是的。例如,有些RTOS是用Lisp或Smalltalk编写的。
为什么不能用Java或其他技术来编码呢?
你认为为什么不能呢?
这是因为有一个误解,即操作系统只能用C语言编写。这个误解可以轻松地被证明是错误的,但它仍然不肯消失。
这个误解非常普遍,以至于想要编写新操作系统的人,只敢尝试使用C语言。