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




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

Проект книги

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

редакция 3.159

23.04.2012г.

Оглавление

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

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

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

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

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

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

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

Расширенные возможности 247

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

Заключение 312

Приложения 313

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



Содержание

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

Введение 7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обсуждение 23

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

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

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

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

Выполнение системного вызова 31

Альтернативные реализации 33

Отслеживание системного вызова в процессе 34

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

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

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

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

Коды ошибок 41

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

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

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

Конфигурационные параметры ядра 47

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

Обсуждение 50

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

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

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

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

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

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

Нотация AT&T 57

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

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

В деталях о сборке 61

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

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

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

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

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

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

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

Нужна ли новая сборка ядра? 67

Обсуждение 71

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

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

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

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

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

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

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

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

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

Значения в /proc и /sys 101

Использование /proc 102

Специфический механизм procfs 103

Варианты реализации чтения 108

Запись данных 112

Общий механизм файловых операций 112

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

Сеть 123

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

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

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

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

Приём: традиционный подход 131

Приём: высокоскоростной интерфейс 132

Передача пакетов 134

Статистики интерфейса 134

Виртуальный сетевой интерфейс 136

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

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

Обсуждение 143

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

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

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

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

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

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

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

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

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

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

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

Обсуждение 160

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

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

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

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

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

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

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

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

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

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

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

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

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

Потоки ядра 182

Создание потока ядра 182

Свойства потока 184

Новый интерфейс потоков 185

Синхронизация завершения 188

Синхронизации в коде 189

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

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

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

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

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

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

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

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

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

Блокировки 195

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

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

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

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

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

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

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

Уровень блокирования 203

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

Аннотация ветвлений 207

Барьеры 208

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

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

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

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

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

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

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

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

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

Тасклеты 218

Демон ksoftirqd 219

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

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

Обсуждение 225

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

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

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

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

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

DMA 237

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

Расширенные возможности 247

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

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

Сигналы UNIX 253

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

Вокруг экспорта символов ядра 260

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

Использование не экспортируемых символов 266

Подмена системных вызовов 269

Добавление новых системных вызовов 274

Скрытый обработчик системного вызова 279

Динамическая загрузка 286

... из процесса пользователя 287

... из модуля ядра 291

Подключаемые плагины 293

Обсуждение 300

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

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

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

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

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

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

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

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

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

Пишите в файлы протоколов... 311

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

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

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

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

Заключение 312

Приложения 313

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

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

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

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

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

Компиляция 319

Установка 320

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

Обсуждение 321

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

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

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

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

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

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

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

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

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

Похожие:

Программирование модулей ядра 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
Главная страница