2010-07-23 2 views
1

Какой язык используется для написания операционных систем (Windows) или загрузочного компакт-диска?Какой язык используется для написания операционных систем (Windows)?

+2

Что означает «ОС (Mirosoft)»? Окна? –

+0

Извините, я имею в виду Windows lol – Snoob

+0

Что именно вы хотите сделать? – ChrisBD

ответ

6

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

+0

Является ли он родным C? – Snoob

+0

Что вы называете «native C»? – Macmade

+0

Есть ли такая вещь, как не-родной C? –

5

Возможно, вы хотите изучить проект Singularity.

От Microsoft Reseach, о том, как сегодня можно построить ОС.

Там вы найдете много документов по концепциям построения ОС.

Singularity

+1

Особенность отличная, но она сильно отличается от Windows. –

1

Ну, вопрос также "Что такое операционная система?" (включил ли счетчик Internet Explorer?), но в остальном я считаю, что Windows в основном C и C++.

+0

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

2

Я уверен, что самые ранние версии Windows были написаны в основном на Паскале. Вот почему вы все еще можете найти ссылки на условные обозначения pascal в старых документах и ​​заголовочных файлах, хотя AFAIK эти соглашения применяются только к 16-битным Windows.

[EDIT - Теперь я уверен, что мне говорили, что это неправильно. У Microsoft были причины использовать соглашения о вызовах Pascal, которые я не помню, но не использовал Pascal для кодирования Windows (или большей части этого или чего-то еще)].

В наши дни Windows, вероятно, написана в виде смеси языков, хотя с акцентом сильно на C и C++. Например, некоторые части .NET, вероятно, написаны на C#, и в эти дни легко рассчитывается как компонент O/S.

Аналогичным образом, я готов поспорить, что в современных версиях Mac O/S есть по крайней мере несколько компонентов Objective C.

Существует много языков, которые в некоторой степени подходят для написания операционных систем. В нишевых областях, я уверен, вы найдете Ada, Modula 2 и более.

Императивные языки без сбора мусора, вероятно, наиболее распространены из-за относительной простоты взаимодействия с оборудованием и кода ассемблера. Однако большинство функциональных языков нечисто. Есть низкоуровневые версии Lisp, если вы выглядите достаточно тяжело. И языки семейства ML и Haskell, вероятно, использовались в операционных системах, по крайней мере для исследовательских/академических целей.

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

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

+0

Не является ли ОС самой программой? В этом случае, кто скажет, что вы не можете написать какой-нибудь asm, чтобы создать основу, которую вы можете использовать, чтобы установить и запустить ОС python, если хотите? –

+0

В эпоху Windows 3.1 (происхождение соглашения о вызове pascal) Windows действительно была действительно приложением, работающим на минимальной операционной системе, однако, поскольку она предоставляла свои собственные не упреждающие многозадачные службы и даже некоторое аппаратное обеспечение 16-разрядного реального -mode virtualization (для окна dos), он также содержал вещи, которые были явно «операционной системой». –

+0

* Приложение * немного неверно - многие компоненты O/S являются самими приложениями. Но в принципе, вы правы - просто помните, что стандартный Python загружается в C, поэтому даже после того, как у вас есть базовые подсистемы ядра и ввода/вывода, вам придется написать полную версию Python в чистом ассемблере - * определенно * не то, что я хотел бы сделать. Компьютеры не имеют динамического набора текста, сборки мусора и т. Д., Встроенных в аппаратное обеспечение - вам придется писать все это и многое другое в чистом ассемблере. – Steve314

4

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

  • Singularity написана на Sing #, который является подмножеством SpeC#, который, в свою очередь, является надстройкой C#
  • Дом написан в Haskell
  • все из Лиспа ОС написано на Лиспе
  • есть несколько Smalltalk OSs написано в Smalltalk
  • многих embeddded OSs написаны в Forth
  • SharpOS и Космос написаны на C#
  • NewOS и JNode написаны на Java
  • Ununumium используется для записи в основном в Python, но теперь они сосредоточили свое внимание, она написана в основном в сборке
  • Вы можете возразить, JS/UX является ли операционная система или нет, но она написана на JavaScript
  • Modula-2 был явно изобретен с целью написания ОС
  • Оберона также был явно изобретенным для развития OS
  • оригинальной MacOS была написана на языке Паскаль
  • оригинального OS/400 было написано в Модуле-2 и PL/MI
  • Элеонора McHugh имеет некоторые предварительные идеи для написания ОС в Рубине
  • ядро ​​Windows NT написано в основном в C, однако чем дальше вы получаете от ядра, может быть некоторые C++ или даже C# там
Смежные вопросы