【问题标题】:Which programming languages can be used to make an operating system? [closed]哪些编程语言可用于制作操作系统? [关闭]
【发布时间】:2020-07-25 09:28:57
【问题描述】:

我无聊地四处寻找可以做的事情,然后偶然发现了一份关于制作自己的简单 C 和汇编命令行操作系统的指南。 我只是想知道,它只是使用 C 之类的主要操作系统还是可以用其他语言创建操作系统,例如 android 和 java。

【问题讨论】:

  • Android 基于 Linux。其中大部分是用 C 和汇编语言编写的。
  • 它必须是编译成机器码的语言,而不是虚拟机或解释器。
  • @Barmar 考虑一下。
  • cpu 从内存可寻址位置读取操作码并执行操作码。您可以从您喜欢的任何语言开始,只要最终您了解 cpu 可以读取和执行的操作码。根据您希望操作系统执行的操作,您可以从所需的任何级别开始。您甚至可以在另一个操作系统中运行一个操作系统。听起来你想从一个相当低的层次开始,看看如何从那里引导自己。
  • Android 在用户空间运行 Java,作为由其 Linux 内核管理的进程。内核本身不是 Java。如果您用 Java 编写操作系统,那么它将是由 JVM 管理的 虚拟 机器的操作系统,而不是任何真实硬件的操作系统。它可能只能运行 Java 代码,除非它也是某个 CPU 的模拟器。 (例如像 qemu-user)

标签: c assembly operating-system


【解决方案1】:

操作系统的最低层是内核,它运行在 CPU 上,所以使用的语言不能依赖于虚拟机或解释器。编译器从该语言创建机器代码,并且通常将输出打包成具有明确定义格式的模块。这些模块可用于创建库、应用程序或操作系统内核。您需要一种语言,可以让您通过相当多的控制来指定模块内容,像 C 这样的语言相当容易,像 C++ 这样的语言使它变得更加困难,因此不用于低级别的操作系统。

在最低级别,您需要完全控制输出,因为它必须匹配硬件,而不是模块格式,因此您使用汇编语言。

在内核之上,有很多使用高级接口的东西,所以不需要是特定的二进制模块,可以使用解释器或虚拟机。这些级别可以像 Android 一样在 Java 中。

最初的 MacOS 是用 Pascal 版本编写的。一些 IBM 大型机操作系统使用 PL/1。这些不再流行,但都像 C 一样编译成模块。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 2017-12-25
    • 2015-07-24
    • 2011-10-31
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多