Программирование модулей ядра Linux




НазваниеПрограммирование модулей ядра Linux
страница1/51
Дата публикации21.03.2013
Размер3.61 Mb.
ТипРеферат
odtdocs.ru > Информатика > Реферат
  1   2   3   4   5   6   7   8   9   ...   51
Программирование модулей ядра Linux

Проект книги

Олег Цилюрик,

редакция 3.111

15.12.2011г.

Оглавление

Предисловие от автора 6

Беглый взгляд на программирование модуля 13

Архитектура и вокруг... 24

Окружение и инструменты 42

Внешние интерфейсы модуля 60

Внутренние механизмы ядра 109

Обслуживание периферийных устройств 182

Более экзотические возможности 199

Отладка в ядре 218

Заключение 228

Приложения 229

Источники информации 252



Содержание

Предисловие от автора 6

Введение 6

Кому адресована эта книга 7

Структура книги 7

Соглашения принятые в тексте 9

Код примеров и замеченные опечатки 10

Замечания о версии ядра 11

Источники информации 11

Беглый взгляд на программирование модуля 13

Наш первый модуль ядра 14

Сборка модуля 14

Загрузка и исполнение 15

Точки входа и завершения 16

Внутренняя структура модуля 17

Вывод диагностики модуля 18

Уровни диагностики в /proc 20

Основные ошибки модуля 21

Обсуждение 22

Архитектура и вокруг... 24

Ядро: монолитное и микроядро 24

Траектория системного вызова 25

Библиотечный и системный вызов из процесса 26

Возможен ли системный вызов из модуля? 30

Отличия программ пространств ядра и пользователя 32

Интерфейсы модуля 33

Взаимодействие модуля с ядром 33

Коды ошибок 34

Взаимодействие модуля с уровнем пользователя 35

Загрузка модулей 36

Параметры загрузки модуля 37

Подсчёт ссылок использования 40

Обсуждение 41

Окружение и инструменты 42

Основные команды 42

Системные файлы 43

Подсистема X11, терминал и текстовая консоль 44

Компилятор GCC 46

Ассемблер в Linux 47

Нотация AT&T 48

Инлайновый ассемблер GCC 49

Пример использования ассемблерного кода 50

О сборке модулей детальнее 51

Параметры компиляции 51

Как собрать одновременно несколько модулей? 52

Как собрать модуль и использующие программы к нему? 52

Пользовательские библиотеки 53

Как собрать модуль из нескольких объектных файлов? 54

Рекурсивная сборка 56

Инсталляция модуля 57

Нужно ли перекомпилировать ядро? 57

Обсуждение 59

Внешние интерфейсы модуля 60

Драйверы: интерфейс устройства 60

Примеры реализации 63

Управляющие операции устройства 67

Множественное открытие устройства 70

Счётчик ссылок использования модуля 75

Неблокирующий ввод-вывод и мультиплексирование 77

Блочные устройства 84

Интерфейс /proc 85

Интерфейс /sys 92

Сеть 96

Инструменты наблюдения 97

Структуры данных 98

Драйверы: сетевой интерфейс 99

Путь пакета сквозь стек протоколов 103

Протокол сетевого уровня 104

Протокол транспортного уровня 106

Статистики 107

Внутренние механизмы ядра 109

Механизмы управление памятью 109

Динамическое выделение участка 109

Распределители памяти 111

Слабовый распределитель 112

Страничное выделение 117

Выделение больших буферов 118

Динамические структуры и управление памятью 118

Циклический двусвязный список 118

Модуль использующий динамические структуры 121

Сложно структурированные данные 122

Обсуждение 122

Время: измерение и задержки 122

Информация о времени в ядре 123

Источник прерываний системного таймера 123

Дополнительные источники информации о времени 124

Три класса задач во временной области. 125

Измерения временных интервалов 125

Абсолютное время 130

Временные задержки 131

Таймеры ядра 135

Таймеры высокого разрешения 136

Часы реального времени (RTC) 139

Время и диспетчирование в ядре 142

Параллелизм и синхронизация 142

Потоки ядра 144

Синхронизации 147

Критические секции кода и защищаемые области данных 147

Механизмы синхронизации 147

Условные переменные и ожидание завершения 148

Атомарные переменные и операции 149

Битовые атомарные операции 149

Арифметические атомарные операции 150

Локальные переменные процессора 151

Предыдущая модель 151

Новая модель 152

Блокировки 153

Семафоры (мьютексы) 153

Спин-блокировки 155

Блокировки чтения-записи 156

Сериальные (последовательные) блокировки 158

Мьютексы реального времени 159

Инверсия и наследование приоритетов 160

Множественное блокирование 161

Предписания порядка выполнения 161

Обработка прерываний 162

Общая модель обработки прерывания 163

Регистрация обработчика прерывания 164

Отображение прерываний в /proc 165

Обработчик прерываний, верхняя половина 167

Управление линиями прерывания 167

Пример обработчика прерываний 168

Отложенная обработка, нижняя половина 169

Отложенные прерывания (softirq) 170

Тасклеты 172

Демон ksoftirqd 173

Очереди отложенных действий (workqueue) 174

Сравнение и примеры 176

Обсуждение 179

Обслуживание периферийных устройств 182

Анализ оборудования 182

Устройства на шине PCI 183

Подключение к линии прерывания 189

Отображение памяти 190

DMA 190

Устройства USB 194

Более экзотические возможности 199

Операции с файлами данных 199

Запуск новых процессов из ядра 201

Сигналы UNIX 202

Операции I/O пространства пользователя 207

Модификация системных вызовов 209

Экспорт символов ядра 210

Не экспортируемые символы ядра 212

Обсуждение 216

Отладка в ядре 218

Отладочная печать 218

Интерактивные отладчики 219

Отладка в виртуальной машине 220

Отдельные отладочные приёмы и трюки 220

Модуль исполняемый как разовая задача 220

Тестирующий модуль 221

Интерфейсы пространства пользователя к модулю 222

Комплементарный отладочный модуль 224

Некоторые мелкие советы в завершение 227

Чаще перезагружайте систему! 227

Используйте естественные POSIX тестеры 227

Тестируйте чтение сериями 227

Заключение 228

Приложения 229

Приложение А : сборка и установка ядра 229

Откуда берётся код ядра? 229

Официальное ядро 230

Ядро из репозитария дистрибутива 230

Конфигурация 233

Компиляция 235

Установка 236

Как ускорить сборку ядра 237

Обсуждение 237

Приложение Б: Краткая справка по утилите make 239

Как ускорить сборку make 240

Приложение В: Пример - открытые VoIP PBX: Asterisk, FreeSwitch, и другие 243

Интерфейс устройств zaptel/DAHDI 243

Приложение Г: Тесты распределителя памяти 245

Источники информации 252

^ Памяти моих родителей, которые научили меня, что одним из немногих достойных занятий, которыми занимаются люди, есть написание книг.

  1   2   3   4   5   6   7   8   9   ...   51

Добавить документ в свой блог или на сайт

Похожие:

Программирование модулей ядра Linux

Kedr предназначена для runtime-анализа драйверов режима ядра ос linux kedr 
Система kedr предназначена для runtime-анализа драйверов режима ядра ос linux (kedr = KErnel-mode Drivers in Runtime)

Доклад является фантазийным вариантом развития событий в случае появления...

Современные операционные системы персональных компьютеров
Сформировать знания учащихся о современных операционных системах, изучить их состав, достоинства и недостатки. Определить собственное...

Протокол загрузки ядра Linux через uart
«boot ok» с завершающим нулем, информирующей об успешном выполнении загрузки. При успешной загрузке ubl открывается файл с ядром....

Лабораторная работа №4 “Обобщенное программирование”
Обобщённое программирование — это парадигма программирования, заключающаяся в написании алгоритмов, которые можно применять к различным...

Методические материалы, подготовленные в рамках школьного проекта...
Операционная система Linux: Курс лекций. Учебное пособие / Г. В. Курячий, К. А. Маслинский — М.: Alt linux; Издательство дмк пресс,...

Эмуляторы. 5 CygWin. 5 Ядро Linux как служба Windows. 8 Виртуальные...
Так же в подавляющем большинстве школ учитель информатики является и администратором сети. А способы настройки систем Windows и Linux...

Линукс Юниор Заявка на участие в апробации Линукса linux armd ru/ru/anketa/...
При переустановки Windows нужно будет переустановить и Linux. Если ос windows (fat32) вышла из строя, то можно зайдя в Linux сохранить...

Linux Install Fest 2010
Для начала скажу, что Linux-системы изначально разрабатывались именно для работы в сетях

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница