代码之家  ›  专栏  ›  技术社区  ›  wrapperm

为什么RTOS仅用c编码?

  •  4
  • wrapperm  · 技术社区  · 16 年前

    16 回复  |  直到 16 年前
        1
  •  16
  •   TheManWithNoName    16 年前

        2
  •  9
  •   notnoop    16 年前

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

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

        3
  •  9
  •   Özgür    16 年前

    因为RTOS开发人员很可能不太熟悉C++。

    C++ in Embedded Systems: Myth and Reality

    以及以某种方式实现它的成本 不适合嵌入式系统 编程,它缺乏控制 C的简洁性,或者说,当它 在应用中,它永远不会取代C 作为嵌入式系统的首选语言 系统。

    编译器和其他工具是 C作为 更多的表达机会, 允许大小和速度的改进

    >那么,为什么会有这些看法呢 关于C比C++更多。 一些代码,并能胜任使用 了解下正在发生的事情 一个是在拆卸过程中可视化拆卸 输入源代码,甚至在

    Guidelines for using C++ as an alternative to C in embedded designs

    嵌入式软件应用程序最常用C语言编写。多年来,C++已经 被视为自然的继承人,并已被更多人接受,但 它的使用速度比预期的慢得多。

    保守且更喜欢使用经验证而非新颖的解决方案 没有坏,不要修理它”。

    嵌入式应用程序和应用程序失败。这种失败有时可归因于 开发工具的缺点,但最常见的是不恰当地使用 语言“将嵌入式系统视为台式计算机”是罪魁祸首。

    C语言的局限性 虽然C被广泛使用,但它也有局限性,因为它不是为嵌入式系统设计的

    功能-这对嵌入式系统很有用,但也代表了嵌入式系统的许多缺陷

    2) 程序员需要非常有条理和有纪律

    3) 程序员需要了解程序在低级别和高级别(大型)的行为 因此,项目很难维护)

    4) 程序员需要应用程序的专家知识

    解决C语言的局限性:

    1) 它将非专家的高专业知识领域封装并隐藏为“对象”(A.

    2) 非专家可以直观地使用对象来实现概念设计

        4
  •  8
  •   kgiannakakis    16 年前

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

        5
  •  6
  •   DigitalRoss    16 年前

    不是“必要的”,但要实际得多

    但一些附带案件和示威活动确实更为重要 .

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

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

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

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

        6
  •  6
  •   jilles de wit    16 年前
    • 为RTOS操作系统通常运行的所有硬件提供高度优化的c编译器。
    • 你可以相对轻松地 包括非常低级的优化 用c代码。
    • 有用的底层系统工具
        7
  •  5
  •   Clifford    16 年前

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

    在…上 RTOS,而不是在其实现中使用。

    通常使用C的另一个原因是,C(通常是C/C++)编译器通常是第一种,也是唯一一种可用于新体系结构的语言(汇编程序除外)(目前通常以GNU编译器实现的形式)。因此,如果您希望能够将RTO移植到最广泛的平台,那么使用最普遍的语言是有意义的。

        8
  •  3
  •   Andreas Brinck    16 年前

    我认为java在这方面的最大问题是自动垃圾收集。这里有一个 link 在java中创建实时系统。

        9
  •  3
  •   mouviciel    16 年前

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

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

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

        10
  •  2
  •   rmn    16 年前

    Java有实时性,但它需要操作系统的支持。 http://java.sun.com/javase/technologies/realtime/index.jsp

        11
  •  2
  •   vitaly.v.ch    16 年前

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

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

        12
  •  1
  •   Thorbjørn Ravn Andersen    16 年前

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

        13
  •  1
  •   David Thornley    16 年前

    如果有的话,那是因为指针。在Java中,除了基本数据类型之外的所有内容都在堆上分配,任何变量都与 int

    因此,C是构建RTOS内核的非常好的工具,而Java则不是。这并不意味着你不能用Java来做,但这会更难,而且可能不会那么成功。

        14
  •  1
  •   Paul Anton Umolac    10 年前

        15
  •  -2
  •   Anon.    16 年前

    像Java这样的垃圾收集语言非常有用 用于实时编程。原因应该是显而易见的。

        16
  •  -3
  •   Jörg W Mittag    16 年前

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

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

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

    你凭什么认为它不能?

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

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

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

    推荐文章