На каких языках написаны Windows, Mac OS X и Linux?

Мне просто интересно, кто знает, какие языки программирования Windows, Mac OS X и Linux состоят из и какие языки используются для каждой части ОС (т. е.: ядро, подключаемая архитектура, компоненты GUI и т. д.).

Я предполагаю, что для каждого есть несколько языков, и, очевидно, я знаю, что ядро Linux написано на C.

Я полностью предполагаю, что Mac OS X содержит много кода Objective-C, поскольку это язык Apple, полученный из следующий.

Windows, я слышал, содержит сборку C, C++ и Intel. Содержит ли Linux или Mac OS какой-либо код сборки?

кроме того, существуют ли языки сценариев, такие как Ruby, Python и т. д., используемые разработчиками ОС для написания сценариев частей ОС? Какие части ОС будут написаны на каждом языке?

13 ответов


  • Windows: c++, ядро находится в C
  • Mac: Objective C, ядро находится в C (подсистема ввода-вывода PnP встроена в C++)
  • Linux: большинство вещей находятся в C, многие приложения userland находятся в Python, KDE-это все c++

все ядра также будут использовать некоторый код сборки.


Linux: C. Некоторые детали в сборке.

[...] Это в основном в C, но большинство людей не назвали бы то, что я пишу C. Он использует все мыслимые функции 386, которые я мог найти, как это было проект, чтобы научить меня о 386. Как уже упоминалось, это использует MMU, как для подкачки (еще не на диск), так и для сегментации. Это сегментация, которая делает его действительно зависимым от 386 (каждая задача имеет Сегмент 64Mb для кода и данных-максимум 64 задачи в 4Gb. Кто должен более 64 Мб / задача - жесткие куки). [...] Некоторые из моих "C"-файлов (специально мм. с) почти столько же ассемблер как C. [...] В отличие от minix, мне также нравятся прерывания, поэтому прерывания обрабатываются не пытаясь скрыть причину. (источник)

Mac OS X: Cocoa в основном в Objective-C. ядро написано на C, некоторые части в сборке.

Mac OS X, на уровне ядра, в основном является старой, свободной операционной системой под названием BSD (в частности, это Дарвин, своего рода гибрид BSD, Mach и некоторых других вещей)... почти полностью C, с небольшим количеством ассемблера. (источник)

большая часть Cocoa реализована в Objective-C, объектно-ориентированном языке, который компилируется для работы с невероятной скоростью, но использует действительно динамическую среду выполнения, что делает ее уникально гибкой. Поскольку Objective-C является надмножеством C, легко смешивать C и даже C++ в ваших приложениях Cocoa. (источник)

Windows: C, C++, C#. Некоторые части в ассемблере.

мы используем почти полностью C, c++ и C# для Windows. Некоторые области кода-ручная настройка / ручная сборка. (источник)

в Unix: C. Некоторые детали в сборке. (источник)


Mac OS X использует большое количество C++ внутри некоторых библиотек, но он не подвергается, поскольку они боятся взлома ABI.


Windows: в основном C и c++, некоторые C#


Я понимаю, что это старый пост, но Windows определенно не написана на C++. В нем много C++, но то, что мы определяем как операционную систему, не находится в C++. Windows API, ядро Windows (оба из них, по сути, то, что операционная система) написаны в C. Несколько лет назад мне дали некоторый просочившийся код для Windows 2000 и Windows XP. Код не был достаточно полным для компиляции ядра или API, но мы смогли скомпилировать отдельные программы и сервисы. Например, нам удалось успешно скомпилировать Блокнот.проблемы, проблемы.exe и spoolsv.exe сервис (диспетчер очереди печати). Все написано на C. Я не смотрел снова, но я уверен, что просочившийся код все еще выживает как торрент-файлы, которые все еще могут быть доступны.


  • windows: C++
  • linux: C
  • mac: цель C
  • android: JAVA, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C,Swift,C, C++

вы правы, MacOSX имеет Objective-C в ядре.

Windows C++

Linux C

о языках сценариев, нет, они довольно высокого уровня.


Я читал или слышал, что Mac OS X написана в основном в Objective-C с некоторыми частями нижнего уровня, такими как ядро и драйверы аппаратных устройств, написанные в C. Я считаю, что Apple "ест(ы) свою собственную собачью еду", что означает, что они пишут Mac OS X, используя свои собственные Инструменты Разработчика Xcode. The GCC (коллекция компиляторов GNU) compiler-linker-это инструмент командной строки unix, который xCode использовал для большей части компиляции и / или связывания исполняемых файлов. Среди прочего возможные языки, я знаю, что GCC компилирует исходный код из языков C, Objective-C, C++ и Objective-C++.


ядро Linux в основном написано на C (и немного на ассемблере, я бы предположил), но некоторые из важных утилит (программ) пользовательского пространства-это скрипты оболочки, написанные на языке сценариев Bash. Кроме того, трудно определить "Linux", так как вы в основном строите систему Linux, выбирая нужные фрагменты и складывая их вместе, и в зависимости от того, что хочет отдельный пользователь Linux, вы можете использовать практически любой язык. (Как сказал Павел, Python и C++ играть важные роли)


как дополнение о ядре Mac OS X, Finder не был написан в Objective-C до Snow Leopard. В Snow Leopard это было написано в какао, Objective-C


смотрите под заголовком Одна Операционная Система, Работающая На Нескольких Платформах где говорится:

Most of the source code for Windows NT is written in C or C++.

Windows, очевидно, не написана на C# (!)

просто посмотрите исходный код Windows, и вы увидите...


Вау!!! 9 лет вопроса, но я только что наткнулся на ряд внутренних статьи в истории командной строки Windows, и я думаю, что какая-то часть этого может быть актуальной для Windows стороной вопроса:

для тех, кто заботится о таких вещах: многие спрашивали, написана ли Windows на C или c++. Ответ заключается в том, что, несмотря на объектный дизайн NT, как и большинство ОС, Windows почти полностью написана на "C". Почему? C++ вводит стоимость с точки зрения памяти footprint и накладные расходы на выполнение кода. Даже сегодня скрытые затраты на код, написанный на C++, могут быть удивительными, но еще в конце 1990-х годов, когда память стоила ~ $ 60 / MB (да ... $60 за мегабайт!), скрытая стоимость памяти vtables и т. д. это было важно. Кроме того, стоимость косвенного вызова виртуального метода и разыменования объектов может привести к очень значительным штрафам за производительность и масштабирование кода C++ в то время. Хотя все еще нужно быть осторожным, накладные расходы на производительность современный C++ на современных компьютерах вызывает гораздо меньше беспокойства и часто является приемлемым компромиссом, учитывая его преимущества безопасности, читаемости и ремонтопригодности ... именно поэтому мы постоянно обновляем код консоли до современного C++.