Можно ли использовать язык Ruby для создания операционных систем? - PullRequest
5 голосов
/ 28 июня 2011

Можно ли использовать язык Ruby для создания новой мобильной операционной системы или операционной системы для настольных компьютеров, т. Е. Можно ли ее использовать в системном программировании?

Ответы [ 5 ]

8 голосов
/ 28 июня 2011

Ну, есть несколько операционных систем, которые сейчас используют языки более высокого уровня, чем C. По сути, сам интерпретатор ruby ​​должен был бы быть написан на каком-то низкоуровневом уровне, и должен был бы быть некоторый код загрузочной загрузки.это загрузило полностью функциональный интерпретатор ruby ​​в память как автономное ядро.Как только интерпретатор ruby ​​будет загружен и запущен в режиме ядра (или одном из внутренних колец ), ничто не помешает вам построить целую ОС поверх него.

К сожалениюСкорее всего, это будет очень медленно.Сборка мусора для каждой функции ОС, вероятно, будет весьма заметна.Интерпретатор ruby ​​будет отвечать за базовые вещи, такие как планирование задач и сетевой стек, что с помощью инфраструктуры для сбора мусора значительно замедлит работу.Чтобы обойти это, вероятно, что «критически важные для производительности» части все еще будут написаны на C.

Так что, технически это возможно.Но никто в здравом уме не попробовал бы это (очередь сумасшедшего в 3 ... 2 ...)

5 голосов
/ 28 июня 2011

Для всех практических целей: №

Хотя сам язык не подходит для такой задачи, вполне возможно (в какой-то другой вселенной ;-), что Ruby run-time разработан с такой целью в виду.

Единственный «высокий уровень» - да, кавычки есть по причине, я не считаю C очень «высоким уровнем» в наши дни - язык, на котором я знаю, предназначенный для системного программирования, - BitC . (Что совсем не похоже на Ruby.)

Удачного кодирования.


Редактировать: Вот список "ОС на базе Lisp" . Хотя не Ruby, динамически типизированный / сборщик мусора (многих) реализаций Lisp делает выгодное сравнение: если эти сумасшедшие Lispers могут сделать / попытаться сделать это, то некоторые Ruby-фанатики могут ... или по крайней мере они могут 1020 * желаю этого ;-) В списке есть даже ссылка на ОС OCaml ...

4 голосов
/ 28 июня 2011

Нет, не напрямую

Так же, как Rails построен поверх Ruby, Ruby построен поверх сервисов, которые нижние уровни ... реальная ОС .. предоставляют.

Полагаю, можно было бы выделить Ruby, пока он не станет функционально похожим на C, а затем построить из этого ОС, но это того не стоит.Конечно, у него был бы хороший if .. end, но синтаксис C отлично подходит, и у нас уже есть системы на языке C.Кроме того, операционные системы не очень хорошо обрабатывают символьные данные, поэтому все возможности Ruby для манипулирования ими не будут столь ценными в ядре.

Если бы мы сегодня начинали с нуля, мы могли бы на самом деле попробовать (как и в различных экспериментальных проектах) использовать выделение памяти для сборки мусора в ядре, но у нас уже есть ядра ОС.

Люди делают инвестиции на более высоких уровнях, а не переделывают уже выполненную работу.В конце концов, когда все программное обеспечение верхнего уровня будет работать в наше время, новому ядру потребуется представить совместимый интерфейс, и тогда будет задан вопрос «почему бы просто не запустить хорошие ядра, которые у нас уже есть?».

Теперь API-интерфейс приложения для мобильной ОС действительно может быть создан для Ruby.Итак, так же, как приложения для Android написаны на Java, приложения на RubyPhone могут быть написаны на Ruby.Но Ruby не может быть лучшей отправной точкой для богатой платформы приложений.Его разработка до сих пор была ориентирована на проблемы на стороне сервера.Существуют различные гемы графического интерфейса, но я не думаю, что они широко используются.

1 голос
/ 27 июля 2012

Хотя сборка целой ОС с нуля в Ruby выглядит как многомиллиардный проект (подумайте обо всех драйверах), модуль ядра Linux, который запускает простые сценарии ruby, действительно имеет смысл для меня - даже это было только для создания прототипа нового linuxдрайвера.

1 голос
/ 27 октября 2011

в основном да, но с большим дисклеймером ... что в основном является ответом Криса, но отличается от него.Так как для производительности ядра было бы отстойно использовать ruby, вы, вероятно, захотите собрать ядро ​​linux-ish и просто не загружать остальную часть операционной системы.Это в основном то, что делает Android: ядро ​​является форком от Linux (и поддерживается близко к linux), консоль - это экран webkit, а интерпретатор - Java с некоторыми специфическими для Android библиотеками.То есть, Android - это Java, маскирующийся под ОС, ... вы можете сделать то же самое с Ruby вместо Java, и только незначительный удар по производительности от java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...