Вы можете писать только операционные системы на C? - PullRequest
14 голосов
/ 11 января 2011

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

Ответы [ 11 ]

8 голосов
/ 11 января 2011

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

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

7 голосов
/ 11 января 2011

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

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

4 голосов
/ 11 января 2011
3 голосов
/ 11 января 2011

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

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

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

2 голосов
/ 11 января 2011

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

2 голосов
/ 11 января 2011

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

1 голос
/ 08 марта 2012

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

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

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

1 голос
/ 12 января 2011
1 голос
/ 11 января 2011

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

0 голосов
/ 23 января 2011

Cosmos - управляемая операционная система с открытым исходным кодом C #

http://www.codeproject.com/KB/system/CosmosIntro.aspx

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