Можете ли вы писать только операционные системы в C?

Я понимаю, что C и его супер-наборы позволяют вам иметь доступ на низком уровне, но вы можете использовать другой язык. Например, Visual Basic, С# или даже Java? Мне было просто любопытно, потому что кажется, что что-то лучше должно было появиться с самого начала C.

Ответы

Ответ 1

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

Например, JNode - это ОС на основе Java (с небольшим количеством ассемблера).

Ответ 2

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

Google Scholar показывает хорошие отправные точки для исследований: http://scholar.google.com/scholar?q=java+operating+system&hl=en&btnG=Search&as_sdt=1,5&as_sdtp=on

Ответ 4

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

Вы можете получить много информации в OSDev wiki и forum.

Есть один проект, в котором они даже создали компилятор С#, который компилируется непосредственно на машинный код, поэтому, вероятно, не так много, если в нем есть C или другой код. Некоторая сборка в значительной степени является требованием для любого ядра.

Ответ 5

Я уверен, что вы можете, но, как вы говорите, C используется, поскольку он позволяет вам иметь доступ на низком уровне, однако, Visual Basic, Java и С#, где они предназначены для работы в рамках Framework

Ответ 6

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

Ответ 7

ASSEMBLER ist ответ! Только C не может создать хороший загрузочный сектор, потому что у вас нет подходящих выходных форматов. Но большинство ОС считают C хорошим языком для большинства его частей.

Ответ 9

Существует несколько языков, которые вы можете использовать "из коробки" для написания ОС, таких как С++, D, сборка.

Если вы хотите использовать такой язык, как С#, Java или VB, вам потребуется среда выполнения (включая JIT-компилятор в некоторых из этих случаев). Это означает, что вам придется ЗАПИСАТЬ те времена, и вы не сможете сделать это на языке Java. Вам нужно будет написать свой код времени исполнения на языке C/С++/Assembly, тогда ваша среда выполнения может загрузить ваш код Java/VB.

Альтернативой является создание нового компилятора для С#/Java/VB, который будет скомпилирован для машинного кода или сборки. Это будет работать, но у вас будет много проблем с использованием таких языков, как VB или Java на уровне OS/Executive, поскольку они не позволяют вам делать доступ к памяти, например, C/С++. Не позволяет напрямую запускать инструкции CPU.

Ответ 10

Похоже, что из всех ответов, которые да, вы можете, но это будет не так просто или просто, как создание одного написанного на C. Скорее всего, это потребует либо аппаратной поддержки, либо, как минимум, c или "cue" кода С++,