На каком языке написан linux

Обновлено: 07.07.2024

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

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

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

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

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

  • 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. (источник)

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

В качестве решения вопроса с операционной системой компанией AT&T была создана операционная система Unix, которая дала старт возникновению открытого программного обеспечения и созданию Linux. Но давайте по порядку.

История возникновения Unix


Первоначально Unix использовалась в основном в университетах и крупных финансовых корпорациях. К 1978 году насчитывалось около 600 машин с установленной на них системой Unix.

Появление проекта GNU

В восьмидесятые годы 20 века многие компании, в числе которых IBM и HP, начали создавать свои собственные (в том числе и коммерческие) версии системы Unix. Это привело к путанице дистрибутивов Unix. И к тому же фирмы, продающие свои дистрибутивы, прямо запрещали распространять их исходные коды. Из-за этого другие программисты не могли применять уже внедренные к тому моменту новые компоненты системы, и им приходилось писать их заново.

В 1982 году программист из Массачусетского технологического института (MIT) Ричард Столлман сталкивается с проблемой того, что существующая на тот момент коммерческая лицензия программного обеспечения, с которым он вынужден работать, ограничивает свободу своего использования и не позволяет Столлману обмениваться исходными кодами ПО даже в стенах института.


В рамках проекта GNU создаются необходимые для разработки ядра системы компоненты: текстовый редактор Emacs, набор компиляторов gcc, интерпретатор bash, архиватор gzip, утилиты sed, gawk, Autoconf и многие другие. Помимо этого, в 1988 году с целью юридически закрепить за пользователями права на копирование, модифицирование и распространение программ и исходных кодов проекта GNU, Столлманом публикуется лицензия GNU GPL (сокр. от «GNU General Public License» = «Универсальная общественная лицензия GNU»). Однако, несмотря на все его успехи, даже спустя 8 лет после старта проекта, не хватало самого важного компонента операционной системы — её ядра…

История создания Linux

В январе 1991 года, финский студент Линус Торвальдc, находясь под впечатлением от купленной им книги «Проектирование и реализация операционных систем» автора Эндрю С. Таненбаума, с целью детального изучения концепций и строения ОС Unix, решает купить новый компьютер на базе процессора Intel 80386, на который ставит разработанную Таненбаумом учебную ОС Minix.

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

И тогда в августе 1991 года Торвальдс объявляет в сети Usenet о том, что создает свою собственную (свободную) операционную систему с открытыми исходными кодами — Linux. Стоит отметить, что в тот момент речь еще не шла о полноценной системе, скорее это был её прообраз в виде ядра.

17 сентября того же 1991 года, без каких-либо особо публичных объявлений, выходит Linux версии 0.01.

А уже 16 апреля 1994, когда, по мнению Линуса, система стала полностью работоспособной, вышел первый, после более чем двух лет развития, мажорный релиз системы — Linux 1.0.

Открытие исходных кодов операционной системы сыграло решающую роль в дальнейшем развитии Linux. Но необходимо все-таки помнить, что технически Linux — это только лишь ядро, без сопутствующих прикладных программ. Полноценной ОС его делает сопутствующее программное обеспечение. Пока роль такого программного обеспечения играли компоненты учебной системы Таненбаума.


Таким образом, миру явилась полноценная работающая операционная система под названием «GNU/Linux», которую мы привыкли называть просто «Linux», состоящая из ядра Linux, написанного Торвальдсом, и окружающего программного обеспечения, созданного в рамках проекта Столлмана, GNU.

Что такое Linux?

Linux — это семейство Unix-подобных операционных систем, использующих ядро Linux, которое разработал финно-американский программист Линус Торвальдс. ОС, использующие ядро Linux, называются дистрибутивами Linux, и они являются такими же операционными системами как Microsoft Windows или Apple macOS, но с одной очень важной особенностью, а именно — их исходные коды являются открытыми, так как они распространяются под лицензией GNU GPL, которая подразумевает создание свободного и открытого программного обеспечения (open source software). Это означает, что у любого пользователя есть право изучать и изменять исходный код.

Примечание: Стоит отметить, что есть также и платные дистрибутивы Linux, например, Red Hat Enterprise Linux, Astra Linux Special Edition и др.


Пингвин Tux — талисман Linux

GNU/Linux или Linux?

В сообществе программистов существует спор об именовании операционных систем, использующих ядро Linux и программное обеспечение, разработанное под лицензией GNU GPL. Поскольку ядро Linux само по себе не является работающей операционной системой, то многие предпочитают использовать термин «GNU/Linux».

Архитектура Linux-систем

На следующем рисунке показана архитектура Linux-систем:


Ядро — является основным компонентом операционной системы, взаимодействует непосредственно с аппаратным обеспечением, играя роль посредника между низкоуровневым «железом» и компонентами верхнего уровня.

Утилиты (vi, cat, sed, date, компиляторы и др.) — служебные программы, которые предоставляют пользователю большую часть функциональных возможностей операционной системы.

Ядро Linux

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

Как правило, большинство ядер делятся на три типа:

Микроядро — это ядро, состоящее из нескольких подгружаемых в память по мере надобности независимых модулей, выполняющихся в отдельных адресных пространствах. По сути, в таком варианте исполнения оно не сильно отличается от обычных прикладных программ. К достоинствам данного ядра можно отнести теоретически большую надежность в сравнении с другими архитектурами (в действительности же не всё так радужно и гладко) и его модульность (легкость в подключении дополнительных частей ядра). К минусам микроядерной архитектуры относится то, что ядро, построенное по такой схеме, получается очень медленным (ведь ему нужно постоянно переключаться между отдельными частями).

Монолитное ядро — это полная противоположность микроядра, т.к. в памяти компьютера всегда находится весь (или почти весь) код ядра, вследствие чего скорость его работы выше в сравнении с микроядром.

Гибридное ядро — это ядро, сочетающее в себе элементы как монолитной, так и микроядерной архитектур.

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

Заключение

Linux поддерживает целый ряд аппаратных устройств от телефонов и до суперкомпьютеров. Каждая операционная система на базе ядра Linux имеет ядро Linux и набор ПО для управления аппаратными ресурсами компьютера.

На следующих уроках мы детально рассмотрим тему лицензии GNU GPL, сравним Linux и Windows, выполним обзор дистрибутивов Linux и продолжим наше погружение в изучение Linux.

Мне было просто интересно, кто знает, из чего состоят языки программирования 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 и т. Д., Используемые разработчиками ОС для сценариев частей ОС? Какие части ОС будут написаны на каждом языке?

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

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

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

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

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

- Можно ли под ядро писать модули на Си и на С++, или только на каком-то одном языке?




> - На чём написано ядро Линукс, на Си или C++?

> - Можно ли под ядро писать модули на Си и на С++

Можно - но заколебешься.

На самом деле, тот кто задает такие вопросы мягко говоря не готов для того, чтобы писать модули, да еще и на C++ :-)

>- На чём написано ядро Линукс, на Си или C++?

>- Можно ли под ядро писать модули на Си и на С++, или только на каком-то одном языке?

Модули можно писать на чем-угодно, если только компилятор создает корректный с точки зрения ядра код. Даже компилятор С теоретически можно создавать неприемлемый для ядра код.


Для каких целей используется в ядре ASM?


Т.е. для kernel programmera необходимо знание Си и ассемблера или только Си? С++ нужен?

В сети можно какую нить литературку по программированию ядра можно найти?


в моём больном сознании не совмещаются начинания по "программированию ядра" и не желание посмотреть для начала _самому_ сорцы этого самого ядра: определить язык по сорцам не так уж и сложно ;)

ЗЫ. не надо рассказывать про дороговизну интернета


>не надо рассказывать про дороговизну интернета

Последняя з/п уже истрачена на пиво и до конца февраля не имею возможности скачать :)))


>з/п уже истрачена на пиво

да-да, зарпалту грех не пропить


>Как-то странно человек, не разу не ставивший linux, хочет писать под него модули?

Успокойтесь уважаемый, ставивший и не раз, и есть дистры без сорцов ядра. В данный момент жду из линуксцентра Suse 10.2, а пока не имею возможности ни скачать сорцы, ни в дистре посмотреть.

> и есть дистры без сорцов ядра.

AltLinux Home -- вроде так назыввался
Вообще и без сорцев и средств разработки :)

>AltLinux Home -- вроде так назыввался Вообще и без сорцев и средств разработки :)

Это с трудом можно назвать дистрибутив. Ты бы еще Damm Small привел в пример.



> В сети можно какую нить литературку по программированию ядра можно найти?

плюсы в ядре нафиг не нужны
не место им в ядре
если вы хотите заточить свое знание ооп ,идите куда подальше от ядра :-)
ядро-это код,где в течение 15 лет отшлифовывается буквально каждая машинная команда для того,чтобы ядро было максимально минимизировано по размеру и максимально оптимизировано по скорости и надежности


2. Ооп там и так есть, просто костыльный. Ни что не мешает на C++ писать вменяемый код. По скорости разница будет максимум проценты.

По слухам из глубокой древности, древний гуру и джедай Торвалд-сан начал писать ядро Матрицы нового поколения на голом С и асме. Но с течением времени из-за притока неофитов, для предотвращения искажения Истины подлинные и непроявленные сорцы ядра превратились в сакральный текст на brainfuck. И задачу трансляции в понятный для Гуру вид и обратно выполняет когорта девелоперов, организованных в сектоподобный конгломерат, результатой деятельности которых являются зловещие заклинания под названием "патчи", преобразующие реальность и счётчик в версии ядре.

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


я тебя обрадую -- ооп в ядре есть, хоть и на Си :)


А может и правда - пофлеймим?

> если вы хотите заточить свое знание ооп ,идите куда подальше от ядра :-)

Ядро широко использует ООП (правда, в угребищном Си-варианте)

> ядро-это код,где в течение 15 лет отшлифовывается буквально каждая машинная команда

Аха, ядро включает в себя специальный компилятор, который спрашивает у хакера, какие именно команды выдавать :)

>>ха, ядро включает в себя специальный компилятор, который спрашивает у хакера, какие именно команды выдавать

аха
компилятор в таких случаях вообще не спрашивают
инлайн в таких случаях пользуют

Читайте также: