繁体   English   中英

Ruby语言可以用来搭建操作系统吗?

[英]Can the Ruby language be used to build operating systems?

Ruby语言能否用于创建全新的移动操作系统或桌面操作系统即可以用于系统编程?

现在有一些操作系统使用比 C 更高级的语言。 Basically the ruby interpreter itself would need to be written in something low-level, and there would need to be some boot-loading code that loaded a fully-functional ruby interpreter into memory as a standalone kernel. 一旦 ruby 解释器被引导并在内核模式(或内环之一)下运行,就没有什么能阻止你在它上面构建整个操作系统了。

不幸的是,它可能会非常缓慢。 每个操作系统 function 的垃圾收集可能会相当明显。 ruby 解释器将负责诸如任务调度和网络堆栈之类的基本工作,使用垃圾收集框架会大大减慢速度。 为了解决这个问题,很有可能“性能关键”部分仍将写入 C。

所以是的,从技术上讲,这是可能的。 但是没有一个头脑正常的人会尝试它(在 3...2...中排队疯狂的人)

出于所有实际目的:否。

虽然语言本身不适合这样的任务,但可以想象(在其他一些宇宙中;-)考虑到这样的目标开发了一个 Ruby运行时

唯一的“高级”——是的,引号是有原因的,我不认为 C 这些天非常“高级”——我所知道的为系统编程设计的语言是BitC (这与 Ruby 完全不同。)

快乐编码。


编辑:这是“基于 Lisp 的操作系统”的列表。 虽然不是 Ruby,但(许多)Lisp 实现的动态类型/垃圾收集性质提供了一个有利的比较:如果那些疯狂的 Lispers 可以做到/尝试它,那么一些 Ruby 狂热者也可以......或者至少他们可以希望为此;-) 列表中甚至还有一个指向 OCaml OS 的链接...

不,不直接

与 Rails 构建在 Ruby 之上的方式相同,Ruby 构建在较低层的服务之上......真正的操作系统......提供。

我想可以对 Ruby 进行子集化,直到它在功能上类似于 C,然后以此构建操作系统,但这不值得。 当然, if.. end会很好,但是 C 语法完全可用,而且我们已经有了 C 语言系统。 此外,操作系统不太能处理字符数据,因此所有 Ruby 操作它的功能在 kernel 中没有那么有价值。

如果我们今天从头开始,我们实际上可能会尝试(就像各种实验项目一样)在 kernel 中使用垃圾收集的 memory 分配,但我们已经有了操作系统内核。

人们在更高层次上进行投资,而不是重做已经完成的工作。 毕竟,现在所有上层软件都在运行,新的 kernel 需要提供兼容的接口,然后会问“为什么不只运行我们已经拥有的好内核?”。

现在,移动操作系统的应用程序 API 确实可以为 Ruby 完成。 因此,就像 Android 应用程序是用 Java 编写的一样,RubyPhone 应用程序也可以用 Ruby 编写。 但 Ruby 可能不是丰富应用平台的最佳起点。 到目前为止,它的开发一直面向服务器端问题。 存在各种图形界面宝石,但我不认为它们被广泛使用。

While building a whole OS from scratch in Ruby seems like a multi-billion project (think of all the drivers), a linux kernel module that runs simple ruby scripts does make sense for me - even it was only for prototyping new linux drivers.

基本上是的,但是有一个很大的免责声明……这基本上是克里斯的回答,但有不同的看法。 Since for kernel performance it would kinda suck to use ruby, you'd probably want to build around a linux-ish kernel and just not load any of the rest of the operating system. This is basically what Android does: the kernel is a fork from Linux (and is maintained close to linux), the console is a webkit screen, and the interpreter is Java with some Android specific libraries. IE, Android is Java masquerading as an OS, .. you could do about the same thing with Ruby instead of Java and only a smallish hit to performance from java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM