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

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

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

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

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

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

Ответов (14)

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

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

Винда явно написана не на C# (!)

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

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

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

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

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

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

Для тех, кто заботится о таких вещах: многие спрашивают, написана ли Windows на C или C++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство операционных систем, Windows почти полностью написана на языке C. Почему? C++ требует затрат с точки зрения занимаемой памяти и накладных расходов на выполнение кода. Даже сегодня скрытая стоимость кода, написанного на C++, может вызывать удивление, но в конце 1990-х годов, когда память стоила ~ 60 долларов за Мб (да… 60 долларов за МЕГАБАЙТ!) стоимость скрытой памяти для vtables и т. д. была значительной. Кроме того, стоимость косвенного обращения к виртуальным методам и разыменования объектов могла привести к очень значительным потерям производительности и масштабирования для кода C++ в то время. Хотя по-прежнему нужно быть осторожным, накладные расходы на производительность современного C++ на современных компьютерах вызывают гораздо меньшую озабоченность и часто являются приемлемым компромиссом, учитывая его преимущества в области безопасности, удобочитаемости и ремонтопригодности ... вот почему мы последовательное обновление кода Консоли до современного C++.

  • окна: C++
  • Linux: C
  • mac: Цель C
  • андроид: JAVA, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C, Swift, C, C++

Windows c c ++ 10% C# Perl Linux C MAC Obective c Android Java c ++ Solaris c c ++

Надеюсь, ты получишь ответ.

Windows: в основном C и C++, немного C#

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

Вы правы, MacOSX имеет в основе Objective-C.

Windows C++

Linux C

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

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

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

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

[...] Он в основном на C, но большинство людей не назовут то, что я пишу, C. Он использует все мыслимые особенности 386, которые я смог найти, так как это также был проект, чтобы научить меня 386. Как уже упоминалось , он использует MMU как для подкачки (еще не на диск), так и для сегментации. Это сегментация, которая делает его ДЕЙСТВИТЕЛЬНО 386 зависимым (каждая задача имеет сегмент 64 Мб для кода и данных - максимум 64 задачи в 4 Гб. Всем, кому нужно больше 64 Мб на задачу - жесткие куки). [...] Некоторые из моих "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. Некоторые детали в сборке. (Источник)