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

时间:2011-06-28 17:26:42

标签: ruby build operating-system

可以使用Ruby语言创建一个全新的移动操作系统或桌面操作系统,即它可以用于系统编程吗?

5 个答案:

答案 0 :(得分:8)

现在有一些操作系统使用比C更高级的语言。基本上,ruby解释器本身需要用低级编写,并且需要一些启动加载代码将一个功能齐全的ruby解释器作为独立内核加载到内存中。一旦ruby解释器被引导并以内核模式(或inner rings之一)运行,就没有什么能阻止你在它上面构建一个完整的操作系统。

不幸的是,它可能会很慢。每个操作系统功能的垃圾收集可能会相当明显。 ruby解释器将负责基本的事情,如任务调度和网络堆栈,使用垃圾收集框架会大大减慢速度。要解决这个问题,“性能至关重要”的部分仍然可以用C语言编写。

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

答案 1 :(得分:5)

对于所有实用目的:否。

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

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

快乐的编码。


编辑:以下是"Lisp-based OSes"的列表。虽然不是Ruby,但是(很多)Lisp实现的动态类型/垃圾收集性质有利于比较:如果那些疯狂的Lispers可以做/尝试它,那么一些Ruby狂热者......或者至少他们可以{ {3}} ;-)甚至还有一个链接到列表上的OCaml OS ...

答案 2 :(得分:4)

不,不是直接

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

我想有人可以将Ruby子集化,直到它在功能上与C类似,然后构建一个操作系统,但它不值得。当然,它会有一个很好的if .. end,但C语法是完全可用的,我们已经有了C语言系统。此外,操作系统不会非常处理字符数据,因此操作它的所有Ruby功能在内核中都不会有用。

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

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

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

答案 3 :(得分:1)

基本上是的,但有一个大的disclamer ..这基本上是克里斯的答案,但它的不同旋转。因为对于内核性能来说,使用ruby会很糟糕,你可能想要构建一个linux-ish内核,而不是加载任何其他的操作系统。这基本上就是Android所做的:内核是来自Linux的分支(并且保持接近linux),控制台是webkit屏幕,解释器是带有一些Android特定库的Java。 IE,Android是伪装成操作系统的Java,...你可以用Ruby而不是Java做同样的事情,而对java的性能只有很小的打击

答案 4 :(得分:1)

虽然在Ruby中从头开始构建整个操作系统似乎是 一个数十亿的项目(想想所有的驱动因素),a 运行简单ruby脚本的linux内核模块 对我有意义 - 即使只是为了原型 新的Linux驱动程序。