【问题标题】:Can one create an OS using JS or PHP [closed]可以使用 JS 或 PHP 创建一个操作系统 [关闭]
【发布时间】:2021-05-27 04:58:30
【问题描述】:

这是一个有趣的问题,有许多解释语言可用于创建操作系统,可以使用 PHP 或 JS 创建操作系统吗?

它不必是成熟的操作系统,至少是打印Hello World的操作系统。

问候

【问题讨论】:

  • 您似乎对口译员的工作方式有一些基本的误解。解释语言不会“解释为 C++”(或用于创建解释器的任何语言)。相反,解释器是一个单独的程序,它将另一个程序加载到内存中,并尝试读取内存以执行其中可能的指令。是的,可以使用解释语言创建操作系统。想想使用 Dalvik Virtual Machine 的 Android。
  • 话虽如此,实际上比这要复杂一点,因为许多现代解释语言实际上是编译为本机代码,根本没有解释。这是由 Dalvik VM(前面提到的)以及大多数 Javascript“解释器”完成的。此外,还有 C 和 C++ 的实际解释器,它们不能编译为本机代码。
  • 最后关于“操作系统”这个术语本身......这是一个非常宽泛的术语,可以应用于许多不同的级别。有些人认为直接硬件内核是 操作系统。其他人只考虑操作系统的面向用户的部分。还有一些人认为操作系统是两者的混合体。您还必须记住,并非所有语言都公开或具有直接与硬件通信的接口,这是较低级别的操作系统所必需的。
  • 开发操作系统的主要障碍(无论如何我理解操作系统角色的方式)是您需要一些代码来与外围设备交互,这些外围设备(在一天结束时)需要是机器代码,因为这是系统在启动时唯一能理解的。解释器和更高级别的东西需要从某个地方读取,而某个地方需要读取代码。据我所知,PHP 或 JS 不容易编译为机器代码,所以除非你(至少)将 PHP 或 JS 编写到 ASM 编译器,否则你真的不走运

标签: javascript php operating-system


【解决方案1】:

这三种语言都是图灵完备的,因此它们可以模拟任何其他图灵完备的语言。假设提供对底层硬件的足够访问权限,用一种(或几种)图灵完备语言编写的操作系统也可以用另一种语言编写。

这样的东西是否可以以任何合理的速度运行完全是另一回事。

您可以在编程中做的事情的数量几乎是无限的,但其中许多事情需要付出很多努力。

【讨论】:

  • 除非操作系统需要控制硬件,而 PHP 没有任何方法可以做到这一点。它调用操作系统函数来为它做这件事。
  • 但我想它可以运行模拟硬件的操作系统,而不是“真正的”操作系统。
【解决方案2】:

操作系统的主要目的是在应用程序和计算机硬件之间提供一个接口,通常会抽象出细节。为此,操作系统代码必须能够直接(或几乎直接,例如通过调用 BIOS 函数)访问硬件。

像 PHP 和 JavaScript 这样的高级语言没有任何机制可以做到这一点。它们依赖于操作系统来提供对高级硬件的访问:文件、网络套接字等。

这些语言确实允许您在扩展库中进行链接,这为它们提供了额外的功能。但是,您实际上并没有用这些语言编写操作系统,而是用编写扩展程序的语言编写它。

如果您只坚持语言的可移植特性,我认为即使 C 也不能用于编写操作系统。用 C 语言编写的操作系统依赖于实现相关的特性,例如将整数转换为指针,它们使用像 asm() 这样的扩展,或者它们偶尔与用汇编编写的子例程链接,以便直接控制硬件。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2018-10-19
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多