Java 为什么RTOS仅用c编码?

Java 为什么RTOS仅用c编码?,java,c,rtos,Java,C,Rtos,有必要总是用C语言编写RTOS吗?为什么不能用java或其他技术编码呢。。??这是因为java中没有指针概念吗?我认为java在这方面最大的问题是自动垃圾收集。下面是一篇关于用java创建实时系统的文章。实时系统也可以用其他语言编程。Java有一个例子 与其他答案相反,实时垃圾收集的工作量是合理的。然而,这些并没有被捆绑在典型的发行版中 令人担忧的是,其他语言通常具有难以实现确定性和可靠性的特性,例如传统的垃圾收集、JIT、运行时优化等。垃圾收集是Java不具备实时性的主要原因。JIT是另一种,

有必要总是用C语言编写RTOS吗?为什么不能用java或其他技术编码呢。。??这是因为java中没有指针概念吗?

我认为java在这方面最大的问题是自动垃圾收集。下面是一篇关于用java创建实时系统的文章。

实时系统也可以用其他语言编程。Java有一个例子

与其他答案相反,实时垃圾收集的工作量是合理的。然而,这些并没有被捆绑在典型的发行版中


令人担忧的是,其他语言通常具有难以实现确定性和可靠性的特性,例如传统的垃圾收集、JIT、运行时优化等。

垃圾收集是Java不具备实时性的主要原因。JIT是另一种,但它是可以克服的


不过,一般来说,C作为一种有效的可移植程序集,可以提供非常可预测的运行时性能,这对于可靠的实时执行至关重要

像Java这样的垃圾收集语言非常不适合实时编程。这样做的原因应该是显而易见的。

首先,RTO不仅仅是用C编写的。它们也可以用其他语言编写。然而,用于RTOS的语言需要提供确定性行为。这意味着特定操作的延迟必须始终低于特定的时间量。这排除了垃圾收集,在大多数实现中,垃圾收集会在一段不确定的时间内停止所有线程的执行。

Java中有实时性,但它需要操作系统的支持。 请参阅:

  • 为RTOS操作系统通常运行的所有硬件提供高度优化的c编译器
  • 你可以相对轻松地 包括非常低级的优化 用c代码
  • c代码在许多应用程序中的可用性 有用的底层系统工具 因此,可以很容易地合并

    • 因为基于C的RTO是众所周知的,并且已经使用了几十年。在许多特定情况下,它们的行为是可预测的,您可以找到许多使用这些系统进行开发的专家

      我知道没有一个基于Java的RTO达到了这样的水平,即一个生产安全关键实时应用程序的公司会采用它

      从技术上讲,没有人反对基于Java的RTOS,但这方面的研究、工程和产品还不成熟

      有必要总是用C语言编写RTOS吗

      不可以。您也可以在汇编语言、Ada和其他语言中编写RTOS

      为什么不能用java或其他技术编码呢。。??这是因为java中没有指针概念吗


      不是。代码执行的时间不可预测。

      C是为编写操作系统而设计的,因此常用的措辞是“便携式汇编程序”,因此可以预期它将用于此目的

      如果你想拥有实时Java,Sun有一个商业产品

      有必要总是用C语言编写RTOS吗

      没有。例如,有些RTO是用Lisp或Smalltalk编写的

      为什么不能用java或其他技术编码呢

      你凭什么认为它不能

      这是因为java中没有指针概念吗

      不,这是因为有一个神话,操作系统只能用C编写。这个神话可以被证明是错误的,但仍然拒绝死亡


      这个神话是如此的普遍,以至于想要编写一个新的操作系统的人害怕尝试C以外的任何东西。

      根据定义,RTO必须支持确定性的调度和执行。通常,低中断延迟和直接硬件访问也是一个可取的因素。Java中使用的垃圾收集、JIT编译和字节码执行等技术使这些目标难以实现

      Java可以在实时系统中使用,但通常在RTOS上运行,而不是在其实现中使用

      尽管如此,认为RTO总是用C实现的说法同样是不正确的。任何系统级语言都适合,包括汇编语言。在大多数情况下,至少内核的某些部分在汇编程序中。C++是一种合适的语言(很明显,因为它本质上是C超集),许多商业RTOSs在任何情况下都有C++包装器;我习惯开发用于RTOS的C++抽象层来支持可移植性。 通常使用C的另一个原因是,C(通常是C/C++)编译器通常是第一种,也是唯一一种可用于新体系结构的语言(汇编程序除外)(目前通常以GNU编译器实现的形式)。因此,如果您希望能够将RTO移植到最广泛的平台,使用最普遍的语言是有意义的。

      不是“必要的”,而是更实用的 作为一种可以使用Java的语言,实际上有各种各样的奇怪情况发生

      但一些附带案件和示威活动实际上更像是“证明规则的例外”

      一般来说,Java是一个大型复杂系统,用于业务逻辑,而不是操作系统内核

      如果我们还没有C语言,Java可能会朝着不同的方向发展,或者朝着多个方向发展

      但是我们有C语言,这对于操作系统内核来说几乎是完美的,对于业务逻辑来说也是一个挑战


      对于内核来说,Java和C一样好的论点与对于应用程序来说,C和Java一样好的论点一样现实。经验,减去一些附带的例子,压倒性地证明了每种语言的优点。

      如果有什么不同的话,那是因为指针。在Java中,除了基本数据类型之外的所有内容都在堆上分配,任何不像
      int
      的变量都是指针。这不是编写操作系统的好方法,因为它强加了一层i