【问题标题】:OS (kernel) programmed in Java or in C [closed]用 Java 或 C 编程的操作系统(内核)[关闭]
【发布时间】:2011-06-23 16:54:15
【问题描述】:

我将开始构建操作系统,但我不知道为内核选择哪种编程语言。我最喜欢的语言是Java,但我知道所有主要的操作系统(Windows、Linux、Mac OS)都是用C编程的,而且Java需要虚拟机。编程会比Java-based OS 比C-based OS 难吗?这些语言各自的优缺点是什么?

【问题讨论】:

  • 没有冒犯,但如果你不知道为什么像 Java 这样的基于 VM 的语言不能用于构建操作系统,我认为你不会走得太远.
  • 有一个使用 Freebasic 的选项,但这比普通的旧 ASM/C 要困难得多。您将需要一个 ASM 部分,它可能非常小,您可以在 C/Pascal/FreeBasic 中编写大部分其余部分。
  • 如果你用 Java 编写,那么你将无法在原始硬件上运行它,你还需要编写一个机器模拟器。

标签: java c operating-system kernel


【解决方案1】:

似乎已经有几种基于 Java 的操作系统。我对操作系统编程知之甚少,但似乎有相当广泛的文献(尽管其中有很多是德语)关于一个名为 JX 的基于 Java 的操作系统,来自埃尔兰根大学:http://www4.informatik.uni-erlangen.de/Projects/JX/publications.html
也许有什么可以帮助的。

不过,编写一个基于 C 的操作系统应该是最简单的,因为关于它的信息太多了。

【讨论】:

    【解决方案2】:

    JVM 提供了大量类似于 OS 的功能,但它不能用 Java 编写——所以无论哪种方式,你最终都会用 C(或类似的东西)编写大量代码可以生成不需要虚拟机的代码)。

    【讨论】:

    • Weeeeeelll 你可以用 Java 编写一个 JVM……它只是没用的,因为你需要一个 JVM 来运行它。或者您可以将 Java 编译为机器代码,但您仍然需要一堆运行时垃圾(垃圾收集将是一个大垃圾),而 Java 使得编写没有机器代码的代码真的很难,所以很难做。
    【解决方案3】:

    http://wiki.osdev.org 在这方面是一个非常有用的网站。它告诉您如何构建工具链、可用的语言选项以及一些很棒的示例代码。

    伊万

    【讨论】:

      【解决方案4】:

      除非您可以访问将 Java 编译为机器语言的编译器,否则您将无法使用 Java 编写操作系统内核。 Java 需要一个虚拟机来解释字节码并执行本地指令(依赖于内核)。您必须能够直接与硬件交互才能对操作系统进行编程,而这是您用 Java 根本无法做到的。实际上,您唯一的选择是将 C 与汇编混合。

      【讨论】:

      • gcj 是这样做的...我对此不太了解,但上次我检查它时遇到了一些问题
      【解决方案5】:

      我会谦虚地建议您在尝试构建操作系统之前真正学习一门编程语言,之后您会意识到您可以或不可以使用哪些语言编写内核。

      Java 等编程语言根本不提供创建操作系统所需的低级例程。您可以在 c 或 c++ 中实现您的操作系统。除非您掌握引导代码(阅读汇编程序)诸如 c 之类的编程语言,否则最好重新考虑一个可能更简单的任务。

      但是,您可以模拟一个操作系统,方法是在另一个操作系统中将其作为程序运行,在这种情况下,您可以尝试使用您选择的任何语言。

      【讨论】:

        【解决方案6】:

        编程会比基于 Java 的操作系统比基于 C 的操作系统更难吗?

        您将如何编写硬件级编程来处理 Java 中的中断?

        【讨论】:

        • +1 -- 使用一种不管理内存的语言编写内存管理器真是讽刺。
        • 很明显, VM 会有 [特殊] 指令执行此操作 ;-) 除非 VM 由 VM 运行,否则 VM 由...运行。
        • @pst: 是海龟,一直往下看。
        猜你喜欢
        • 2019-09-04
        • 2011-10-31
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 2016-02-20
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        相关资源
        最近更新 更多