Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 61 стр.

UptoLike

61
взаимодействия с ядром приложения используют, главным образом, интерфейс стандартной
библиотеки glibc (GNU C Library). С его использованием большинство операций, требующих
обращения к ядру ОС становятся значительно проще. Так, например, выделение памяти может быть
выполнено при помощи простого вызова функции malloc, открытие файлапри помощи вызова
fopen.
6.2.1. История создания ядра ОС Linux
Разработка операционной системы Linux была начата студентом Хельсинского университета
Линусом Торвальдсом в апреле 1991. Прототипом для будущего ядра стала операционная система
MINIX: совместимая с UNIX операционная система для персональных компьютеров, которая
загружалась с дискет и умещалась в очень ограниченной в те времена памяти персонального
компьютера. MINIX был создан Эндрю Таненбаумом в качестве учебной операционной системы,
демонстрирующей архитектуру и возможности UNIX, но непригодной для полноценной работы.
Ядро Linux разрабатывалось на С, изначальнодля популярной архитектуры Intel 80386.
Первый релиз Linux был сделан в сентября 1991 года. Программа состояла всего из 10239 строк кода.
Разработка ядра Linux началась как просто хобби одного человека, но вскоре стало ясно, что
необходимость в ядре, интергрированным с инструментами проекта GNU, велика. И дальнейшее
развитие операционной системы проходит весьма бурно.
Текущая версия Linux – версия 2.6.36, которая насчитывает уже более 13 миллионов строк кода и
поддерживает свыше 20 архитектур. Начиная с версии 0.99 ядро распространяется под лицензией
GPL.
6.2.2. Процесс разработки ядра
Несмотря на то что только 2% кода операционной системы Linux написано Линусом Торвальдсом,
его участие в разработке нельзя назвать условным. Он полностью контролирует процесс разработки и
принимает все стратегические решения. Он же одобряет патчи, которые войдут в текущий релиз.
Для разработки ОС Linux используется система версионного контроля git. Основным
интерфейсом общения разработчиков является почтовая рассылка
(http://www.kernel.org/pub/linux/docs/lkml/
). Сюда выкладываются все предлагаемые изменения и
написанные патчи, которые рецензируются руководителями, а затем, возможно, включаются в
следующий релиз ядра. Необходимо заметить, что значительная часть патчей носит сугубо
экспериментальный характер и, быть может, никогда не будут включены в основную ветку.
6.2.3. Строение ядра Linux
Основные структурные компоненты ядра Linux отображены на Рис.6.2.2.
Интерфейс системных вызовов
SCI – это тонкий уровень, предоставляющий средства для вызова функций ядра из пространства
пользователя. Этот интерфейс может быть архитектурно зависимым, даже в пределах одного
процессорного семейства. SCI фактически представляет собой службу мультиплексирования и
демультиплексирования вызова функций. Реализация SCI находится в ./linux/kernel, а архитектурно-
зависимая часть - в ./linux/arch.
Управление процессами
Как показано на Рис. 6.2.2 ядро по сути представляет собой диспетчер ресурсов. Независимо
оттого, что представляет собой управляемый ресурс - процесс, память или аппаратное устройство, -
ядро организует и упорядочивает доступ к ресурсу множества конкурирующих пользователей (как в
пространстве ядра, так и в пространстве пользователя).
Управление процессами сконцентрировано на исполнении процессов. В ядре эти процессы
называются потоками (threads); они соответствуют отдельным виртуализованным объектам