На каких языках написаны Windows, Mac OS X и Linux? - PullRequest
246 голосов
/ 24 февраля 2009

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

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

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

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

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

Ответы [ 13 ]

239 голосов
/ 24 февраля 2009
  • Windows: C ++, ядро ​​в C
  • Mac: Цель C, ядро ​​в C (подсистема IO PnP - Embedded C ++)
  • Linux: большинство вещей на C, многие пользовательские приложения на Python, KDE - это C ++

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

86 голосов
/ 26 сентября 2011

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

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

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

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

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

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

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

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

13 голосов
/ 27 февраля 2009

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

9 голосов
/ 29 декабря 2012

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

8 голосов
/ 11 января 2016
  • Windows: C ++
  • Linux: C
  • mac: Цель C
  • андроид: JAVA, C, C ++
  • Solaris: C, C ++
  • iOS 7: Objective-C, Swift, C, C ++
8 голосов
/ 24 февраля 2009

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

6 голосов
/ 24 февраля 2009

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

Windows C ++

Linux C

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

5 голосов
/ 25 февраля 2009

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

4 голосов
/ 24 февраля 2009

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

3 голосов
/ 16 августа 2018

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

Для тех, кому небезразличны такие вещи: многие спрашивают, написана ли Windows на C или C ++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство ОС, Windows почти полностью написана на «C». Зачем? C ++ вводит стоимость с точки зрения объема памяти и накладных расходов на выполнение кода. Даже сегодня скрытые затраты на код, написанный на C ++, могут удивлять, но в конце 1990-х годов, когда стоимость памяти составляла ~ 60 долларов США / МБ (да… 60 долларов США за MEGABYTE! ), стоимость скрытой памяти vtables и т.д. было значительным. Кроме того, стоимость косвенного обращения к виртуальному методу и разыменования объекта может привести к очень значительным потерям производительности и масштабирования для кода C ++ в то время. Несмотря на то, что нужно все же быть осторожным, накладные расходы на производительность современного C ++ на современных компьютерах представляют собой гораздо меньшую проблему и часто являются приемлемым компромиссом, учитывая его преимущества в плане безопасности, удобочитаемости и удобства обслуживания ... вот почему мы постоянное обновление кода консоли до современного C ++.

...