Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634932)
Контекстум
Руконтекст антиплагиат система

Основы программирования в ядре операционной системы GNU/Linux (96,00 руб.)

0   0
Первый авторКрищенко В. А.
АвторыРязанова Н. Ю.
ИздательствоМ.: Изд-во МГТУ им. Н.Э. Баумана
Страниц36
ID287629
АннотацияВ пособии описаны основы создания программного кода, работающего в режиме ядра операционной системы GNU/Linux. Рассмотрены основы организации ядра Linux, создания подключаемых к ядру модулей, внесения изменений в исходный код ядра, его сборка и установка. Освещены вопросы синхронизации в ядре, выделения памяти и создания динамических структур данных, перехвата событий ядра, приемы отладки кода ядра, а также способы обмена данными между прикладными программами и ядром операционной системы.
Кем рекомендованоНаучно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебного пособия
Кому рекомендованоДля студентов 3-го курса,специализирующихся по кафедре «Программное обеспечение ЭВМ и информационные технологии» МГТУ им. Н.Э. Баумана.
ISBN---
УДК004.451(075.8)
ББК32.973.26-018
Крищенко, В.А. Основы программирования в ядре операционной системы GNU/Linux : учеб. пособие / Н.Ю. Рязанова; В.А. Крищенко .— Москва : Изд-во МГТУ им. Н.Э. Баумана, 2010 .— 36 с. — URL: https://rucont.ru/efd/287629 (дата обращения: 27.04.2024)

Предпросмотр (выдержки из произведения)

Крищенко, Н.Ю. Рязанова ОСНОВЫ ПРОГРАММИРОВАНИЯ В ЯДРЕ ОПЕРАЦИОННОЙ СИСТЕМЫ GNU/LINUX Рекомендовано Научно-методическим советом МГТУ им. <...> В пособии описаны основы создания программного кода, работающего в режиме ядра операционной системы GNU/Linux. <...> Рассмотрены основы организации ядра Linux, создания подключаемых к ядру модулей, внесения изменений в исходный код ядра, его сборка и установка. <...> Освещены вопросы синхронизации в ядре, выделения памяти и создания динамических структур данных, перехвата событий ядра, приемы отладки кода ядра, а также способы обмена данными между прикладными программами и ядром операционной системы. <...> Примеры программ, приведенные в пособии, работоспособны для версии ядра Linux 2.6.26 и версии дистрибутива Debian GNU/Linux 5.0. <...> Несмотря на разнообразие посвященной ядру Linux литературы, единственным заведомо актуальным источником информации о ядре являются исходные коды используемой версии ядра в силу постоянного изменения внутренних структур данных ядра и заголовков функций. <...> Ядро Linux состоит из следующих основных компонентов: планировщик процессов; менеджер памяти; подсистема ввода-вывода и драйверы устройств; сетевая подсистема; виртуальная файловая система; подcистема межпроцессного взаимодействия и др. <...> Отдельно следует упомянуть интерфейс системных вызовов ядра, обычно используемый прикладными программами через стандартную библиотеку языка Си, например GNU C Library. <...> Экспортируем переменные окружения и создадим рабочий каталог для работы с исходными кодом ядра: $ export SYSPROG=~/sysprog $ # Предполагается работа с ядром 2.6.26 $ export SRC=${SYSPROG}/linux-source-2.6.26 $ mkdir -p ${SYSPROG} Для работы с исходными кодами ядра и сборки ядра требуется около трех гигабайт свободного дискового пространства. <...> Для сборки ядра необходимы компилятор Си и средство сборки Make, которые устанавливаются через пакет build-essential. <...> Для работы с меню конфигурации ядра следует поставить пакет библиотеки ncurses5, а для разархивирования (распаковки <...>
_Основы_программирования_в_ядре_операционной_системы_GNULinux.pdf
УДК 681.326(075.8) ББК 22.18 K82 Рецензенты: Г.В. Зеленко, С.Б. Ткачев K82 Крищенко В. А. Основы программирования в ядре операционной системы GNU/Linux : учеб. пособие / В.А. Крищенко, Н.Ю. Рязанова. – М.: Изд-во МГТУ им. Н. Э. Баумана, 2010. – 34, [2] с. : ил. В пособии описаны основы создания программного кода, работающего в режиме ядра операционной системы GNU/Linux. Рассмотрены основы организации ядра Linux, создания подключаемых к ядру модулей, внесения изменений в исходный код ядра, его сборка и установка. Освещены вопросы синхронизации в ядре, выделения памяти и создания динамических структур данных, перехвата событий ядра, приемы отладки кода ядра, а также способы обмена данными между прикладными программами и ядром операционной системы. Для студентов 3-го курса, специализирующихся по кафедре «Программное обеспечение ЭВМ и информационные технологии» МГТУ им. Н.Э. Баумана. УДК 681.326(075.8) ББК 22.18 -МГТУ им. Н.Э. Баумана, 2010 c
Стр.2
ОГЛАВЛЕНИЕ Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Начало работы с исходным кодом ядра Linux . . . . . . . . . . . . . . . . 5 1.1. Краткие сведения о ядре . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Подготовка рабочего места программиста. . . . . . . . . . . . . . . . . . 5 1.3. Обзор исходных текстов ядра. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4. Сборка и установка ядра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2. Oсновы программирования для ядра Linux . . . . . . . . . . . . . . . . . . 12 2.1. Оформление исходного кода ядра. . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2. Внесение изменений в исходный код ядра . . . . . . . . . . . . . . . . . 14 2.3. Создание модулей ядра. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3. Программные интерфейсы ядра linux . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1. Служебные функции ядра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2. Выделение памяти и связанные списки . . . . . . . . . . . . . . . . . . . . 18 3.3. Системные вызовы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4. Обмен данными с прикладными программами . . . . . . . . . . . . . 22 4. Нити и синхронизация в ядре Linux . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1 Нити внутри ядра. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2. Механизм ожидания завершения . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.3. Cемафоры, мьютексы и спин-блокировки . . . . . . . . . . . . . . . . . . 25 4.4. Использование атомарных переменных . . . . . . . . . . . . . . . . . . . . 27 5. Отладка внутриядерного кода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6. Пример мониторинга системного вызова . . . . . . . . . . . . . . . . . . . . 29 6.1. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2. Перехват информации о событиях ядра . . . . . . . . . . . . . . . . . . . . 30 6.3. Создание модуля с основной логикой работы . . . . . . . . . . . . . . 31 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Стр.35