Составители:
Рубрика:
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); они соответствуют отдельным виртуализованным объектам
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »