Целая операционная система может быть записана, не используя даже одну строку кода C/C++?

Вы должны добавить DRF MultiPartParser к вашим представлениям 'parser_classes

13
задан Erick Robertson 4 January 2012 в 13:13
поделиться

10 ответов

Да и нет.

, В первую очередь, важно помнить, что безотносительно Вашего языка выбора, в конце скомпилированный продукт находится в ассемблере (или более точно, машинный код). Даже интерпретаторы (такие как cpython интерпретатор) в конечном счете переводят Ваши сценарии в машинный код.

, Но это, вероятно, является чрезмерно техническим и пропускает основу Вашего вопроса:

"Я могу записать операционную систему на высокоуровневом языке?"

ответы на это являются и персональными и техническими.

Первый, персональная сторона: если уже не знают, как записать операционную систему в соединении ассемблера и C тогда, у Вас нет абсолютно никакого бизнеса, пробующего Ваши силы в дизайне ОС.

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

Поэтому, если в Вашей глубине души это - то, что Вы после, остановитесь теперь. Остановитесь, остановитесь, остановитесь. Становление хорошим в чем-то является тяжелой работой. Нет никаких ярлыков. Будьте готовы закатать рукава и заболеть некоторым синдромом канала запястья.

, Который не устраняет после пути к возможному дизайну ОС! Если это - Ваша страсть, то запустите наверху и проложите себе путь вниз. Получите книги по сетевым протоколам, управлению памятью, поточной обработке, и т.д., займитесь каждой главной подсистемой и узнайте ее хорошо. Вы не можете записать новый, если Вы не можете использовать старый!

Тогда чтение заказывает на разработке и реализации операционной системы, пока Вам не снятся методологии управления процессами.

Просто принимают во внимание, сумма необходимого знания (не только компьютерных операций, но и социальных конструкций как API) огромная. Это - долгое путешествие и полезное. Если Вы искренне любите это ремесло как, я делаю, Вы будете радоваться, что не торопились, даже если Вы никогда на самом деле пишете ОС.

Теперь, технический ответ. Вы испытываете необходимость в загрузчике, и это должно быть записано в ассемблере. В конце концов, Ваш процессор не знает C#. Мимо фазы загрузчика можно написать код ОС на любом языке, который Вы хотите, и это будет работать, предполагая, что Ваш язык может скомпилировать в двоичные файлы машинного кода (и не байт-код!)

Однако даже в нашем текущем "избытке циклов" вычислительная среда, ОС должна быть наклоном и эффективный, и этого почти невозможно достигнуть на высокоуровневом языке, еще больше на интерпретируемом языке.

Возможности, необходимо будет записать собственный компилятор/интерпретатор того данного языка как базовый компонент ОС. Тот базовый компилятор, вероятно, позволил бы только ограниченное подмножество языка (и Вы загрузитесь путем записи более устойчивого компилятора в ограниченном подъязыке). Иначе производительность будет плачевна.

, Но все это ужасно сложно, и реальное обсуждение проблем требует глубины знания, в котором Вы, вероятно, в настоящее время испытываете недостаток. Но если бы у Вас есть диск сделать так, можно легко изменить это, и затем я счастливо весь день обсуждал бы подходы!

, Если это заставляет Вас чувствовать немного лучше, я действительно знаю достаточно для записи операционной системы, и тем не менее я сижу без дела, мечтая, пытаясь выяснить, сколько из ОС могло мне сходить с рук запись в Python.;)

51
ответ дан 1 December 2019 в 17:10
поделиться

Да. Используйте ассемблер. Я использовал бы Forth. Родами была OS, сделанная символикой ** кодированный в Lisp. C главным образом используется, потому что ему доверяют, мы знаем, как он работает. И там существуйте компиляторы C для каждого ЦП во вселенной. Компиляторы для c просты создать.

** Symbolics зарегистрировала первый домен в Интернете. (интересный факт)

16
ответ дан 1 December 2019 в 17:10
поделиться

Уверенный. Вы могли использовать чистый ассемблер или выбрать другой высокоуровневый язык.

, Но Вы обычно не хотите. Поскольку объем ассемблерного кода, необходимого в современной операционной системе, является довольно низким. Большей части кода в ОС не нужен в том низко уровень.

C дает хороший промежуточный уровень абстракции, которая все еще позволяет писать код довольно низкого уровня, не имея необходимость иметь дело с весь детали, с которыми должны иметь дело ассемблерные разработчики.

Редактирование: как только Вы удаляете блок из уравнения, это становится намного более сложным. Установка достойной операционной системы требует выполнения нескольких команд машинного кода, которые просто не представлены на высокоуровневых языках (потому что они очень, очень определенные для машины). Вы могли теоретически произвести чистый машинный код в двоичном блобе и переходе к тому местоположению с высокоуровневого языка, но я полагаю, что обман, поскольку необходимо было бы придумать тот двоичный блоб во-первых.

14
ответ дан 1 December 2019 в 17:10
поделиться

Да, MenuetOS является примером операционной системы, записанной использующий только ассемблер.

, Поскольку Вы, кажется, не интересуетесь ассемблером, см. также JNode, операционная система, записанная в Java, и Особенность , операционная система, записанная в C#.

10
ответ дан 1 December 2019 в 17:10
поделиться

Существуют многочисленные попытки создать аппаратную реализацию JVM. Конечно, ОС для таких аппаратных средств была бы записана в Java. Посмотрите, например: http://www.jopdesign.com/

Также S40 Nokia, кажется, разрабатывается преимущественно в Java.

8
ответ дан 1 December 2019 в 17:10
поделиться

Уверенный. Код C/C++ компилируется в код ASM, но существует много других языков, которые Вы могли использовать таким же образом.

Вы не могли бы быть в состоянии использовать Java или C#, так как они полагаются на Виртуальную машину, и это могло быть записано в C.

На самом деле я полагаю, что был проект создать ОС на основе LISP, но это перестало работать.

4
ответ дан 1 December 2019 в 17:10
поделиться

Уверенный. Пока существует компилятор, доступный, который может произвести соответствующий машинный код, любой язык сделает.

3
ответ дан 1 December 2019 в 17:10
поделиться

Выезд http://common-lisp.net/project/movitz/ . Это - ОС, полностью записанная в Lisp. Я думаю, что это имеет свой собственный Assmebler, например, Lisp к переводчику машинного кода.

я люблю идею ОС без C/C++ и особенно основанного на Lisp.

2
ответ дан 1 December 2019 в 17:10
поделиться

Да. Очевидно, что-либо возможно в блоке, но часто не практично. Было несколько попыток создания операционных систем в управляемом коде (.NET, Java) с различными уровнями успеха.

1
ответ дан 1 December 2019 в 17:10
поделиться

вы могли бы написать это в машинном коде ? бу это просто двоичный файл. вы можете написать его на ассемблере, но он имеет сложную структуру. вам, вероятно, следует написать его на C, потому что он транслируется непосредственно в машинный код при компиляции, поэтому он быстрее, чем C # / C ++, и проще, чем сборка

0
ответ дан 1 December 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: