Немного о ядре Linux

Что такое ядро операционной системы вообще

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

Так что же такое ядро ОС и что оно делает? Как известно компьютер – это не только система аппаратного обеспечения (железа), но и набор программного обеспечения. Чтобы второе могло эффективно работать на первом нужна специальная программа, хитро скрывающая сложности работы с железом и предоставляющая обычным программам и пользователям удобный для них интерфейс. Железо говорит на языке сигналов, регистров, секторов, переводов головок. Программам все это не надо. Они говорят на языке "записать, прочитать, сложить и вычесть ...". Специальной программой, обеспечивающей другим программам простой и понятный интерфейс для работы на имеющемся аппаратном обеспечении, является ядро операционной системы. Однако создание такой виртуальной машины не является единственной функцией ядра.

Представим себе, что ядра нет. И каждая пользовательская программа, запущенная на компьютере, сама умеет манипулировать железом. Вроде бы ничего страшного. Но на компьютере какбы одновременно работают множество программ. Как они будут договариваться между собой, о том как использовать общее аппаратное обеспечение? Конечно они могут встать в очередь, и сначала одна программа сделает все свои дела, затем другая... Но тогда говорить об эффективной работе на компьютере не придется. Подумайте сами, почему (причин много). Поэтому на ядро операционной системы также возложена функция по оптимальному распределению аппаратных ресурсов между всеми нуждающимися. Оно организует как бы параллельную работу множества программ.

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

И это еще не все функции ядра.

Теперь посмотрим, что такое ядро по своей сути. Как ни удивительно, это всего лишь программа, написанная на том или ином языке программирования людьми и потом скомпилированная в исполняемый файл. Однако, в отличии от других программ, ядро всегда загружается первым и потом постоянно сидит в определенной области памяти. Конечно, ведь ей за всеми нужно следить. (Это описание больше подходит для монолитного ядра). P.s: не забываем, все что не в оперативной памяти как бы спит и не работает.

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

Выделяют операционные системы на монолитном ядре и микроядре, а также некие промежуточные варианты. Монолитное ядро проще и быстрее работает, т. к. в памяти находятся всегда почти весь код. Микроядро меньше, сложнее, работает медленнее, однако почему-то считается (или считалось) более передовым из-за легкости «подключения» новых частей кода. Микроядро, находясь в памяти, организует взаимодействие между другими частями кода операционной системы, которые являются самостоятельными программами (см. пример выше про загрузку драйверов).

Особенности ядер Unix-подобных операционных систем

Unix круче Windows, хотя бы потому, что ее ядро являлось первой практической реализацией идей и открытий в области создания операционных систем.

Unix имеет простое монолитное ядро, в ней почти все представляется в виде файлов. она написана на языке C и это делает ее переносимой с одной аппаратной платформы на другую. В Unix были впервые реализованы так называемые многозадачность и многопоточность, виртуальная память и видимо что-то еще.

В 80-х годах в силу ряда причин Unix-системы начали множится и видоизменяться. Некоторые умы вовремя спохватились и создали специальные стандарты, обеспечивающие совместимость систем (т.е. программа, написанная для одной Unix-подобной системы, должна работать и в другой). Стандарты назвали POSIX.

Ядро Linux

Обычно конечные пользователи имеют дело с дистрибутивами Linux, имеющими собственные имена. Говоря просто «Linux» чаще всего имеют ввиду именно ядро, т.е «Linux» == «Ядро Linux».

Ядро Linux было написано в 1991 г. Линусом Торвальдсом. В дальнейшем оно развивалось и совершенствовалось многими людьми. Оно делает это и сейчас. Выпускается под лицензией GNU GPL.

Ядро Linux unix-подобно, т. к. заимствовало идеи заложенные в Unix; соответствует стандартам POSIX; а также по большей части написано на языке С. И это наверно все, что можно сказать о их взаимосвязи. Весь код ядра Linux был написан самостоятельно, а не стащен из Unix.

Одной из особенностей Linux является то, что это совместный проект, выполняющийся через Интернет. Теоретически присоединиться к нему может каждый. Вся работа курируется на сайте http://kernel.org. Главный там по прежнему Линус Торвальдс.

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

У Linux монолитное ядро. Однако некоторые идеи микроядерной архитектуры тут также используются. Так драйверы устройств могут быть представлены в виде модулей и загружаться по требованию, а не при загрузки всего ядра. (Хотя могут этого и не делать.)

Ядро выпускается в виде стабильных и разрабатываемых версий. В стабильных обычно исправлены многие ошибки, которые были допущены в более ранних версиях, добавлены новые драйверы устройств. Четное число в названии ядра, говорит, что оно стабильно. Нечетное число обозначает разрабатываемую версию и сулит много нового и неожиданного.

Серия ядра — это две первые цифры в его названии. Например, linux-2.4... или linux-2.6.... Изменение серии ядра — очень редкое событие. Уже более пяти лет активно используют ветку 2.6. Далее нумеруются так называемые редакции ядра, которые подвержены более частым изменениям. И заканчивается имя файла с исходными кодами следующими загадочными буквами: tar.bz2. Это просто оно сжато в виде архива определенного типа.

Часто пользователи дистрибутивов Linux сами скачивают и устанавливают себе новое ядро. Для этого они сначала распаковывают исходные коды, затем выполняют конфигурацию, потом компилируют, размещают в нужном каталоге и изменяют настройки загрузчика.

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

Создано