Подлинное проектирование и реализацию ядра Linux (оригинальная книга 3 -е издание) Разработка операционной системы компьютерной сети Linux La Fu Chen Lijun Kanghua 978711138291 Machinery Industry
Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
- Информация о товаре
- Фотографии
Проектирование и реализация ядра Linux (оригинальная книга 3 -е издание) | ||
Ценообразование | 69.00 | |
Издатель | Machinery Industry Press | |
Версия | 1 | |
Опубликованная дата | Июнь 2011 | |
формат | 16 | |
автор | Робертлов | |
Украсить | Оплата в мягкой обложке | |
Количество страниц | 332 | |
Число слов | | |
Кодирование ISBN | 9787111338291 |
Название: Проектирование и реализация ядра Linux (Оригинальная книга 3 -е издание)
Автор: (MEI) La Fu, Chen Lijun, перевод Kanghua
Пресса: Machinery Industry Press
Время публикации: 2011-6
Издание: 1
Время печати: 2017-1
Раздел: 12
Страница: 332
Открыто: 16
Рамка
ISBN: 9787111338291
Цена: 69,00
Новая версия лучшей книги, переведенная версия и фотокопия, одновременно перечисляя;
«Дизайн и реализация ядра Linux (оригинальная книга 3 -е издание)» подробно описывает дизайн и реализацию ядра Linux.Авторы, разработчики и разработчики программ кода ядра могут выиграть от чтения «Проектирование и реализацию ядра Linux (оригинальная книга 3)».
«Дизайн и реализация ядра Linux (оригинальная книга 3 -е издание)» подробно описал основные подсистемы и характеристики ядра Linux, включая проектирование, реализацию и интерфейс ядра Linux.От теоретического до практики охватывает все аспекты ядра Linux, которые могут удовлетворить различные интересы и потребности читателей.
Автор Роберт Лав - основной разработчик ядра Linux. Интерфейс вызова, адресация памяти, управление памятью и кэш страниц, VFS, синхронизация ядра, проблемы с трансплантацией и технология отладки.В то же время «Проектирование и реализация ядра Linux (оригинальная книга 3 -е издание)» также охватывает характерный контент в ядре Linux2.6, включая программы планирования CFS, изъятие ядер, слои ввода/вывода ввода -вывода и программы планирования ввода/вывода. Полем
Робертлов - старший эксперт по сообществу с открытым исходным кодом, который начал использовать Linux очень рано.В настоящее время он является старшим инженером -программированием в Google и членом ядра развития ядра мобильной платформы Android; Ximain.Проекты ядра, которые он участвовал, включают в себя захват ядра, процесс планирования, слой события ядра, механизм уведомлений, улучшение виртуальной машины и драйвер оборудования.Он является редактором журнала "LinuxJournal".У него также есть «Программирование системы Linux» и «Linux в Anutshell».
Чен Лиджун, профессор Xi'an Post и Telecommunications, стремится продвигать развитие Linux в Китае более десяти лет. Он в течение многих лет занимался обучением и исследованиями ядра Linux и активно отслеживает. тенденция развития ядра Linux. Понять.В трансляционных работах включается «Принципы и приложения операционной системы Linux», «Анализ ядра операционной системы Linux», «В -Depth Analysis of the Linux -исходного кода», «В -Depth Infact ядра Linux» и «Программирование ядра Linux».
Переводчик
Предисловие
Предисловие
об авторе
Глава 1 Введение в ядро Linux 1
1.1 История Unix 1
1.2 Найти Linus Footprint: Введение в Linux 2
1.3 Введение в операционную систему и ядро 3
1.4 Сравнение ядра Linux и традиционного ядра Unix 5
1.5 Linux ядра версии 7
1.6 Сообщество разработчиков ядра Linux 8
1.7 Резюме 8
ГЛАВА 2 ОТПРАВЛЕНИЕ ИЗ ЯРНЕЛА 10
2.1 Получите источник ядра 10
2.1.1 Используйте GIT10
2.1.1 Установите исходный код ядра 10
2.1.3 Патч 11
2.2 Дерево источника ядра 11
2.3 Compile ядра 12
2.3.1 Настройте ядро 12
2.3.2 Уменьшите скомпилированный спам 14
2.3.3 Вывод нескольких компиляций домашнее задание 14
2.3.4 Установите новое ядро 14
2.4 Особенности разработки ядра 15
2.4.1 Нет библиотеки LIBC или стандартный файл заголовка 15
2.4.2 GNU C16
2.4.3 Нет механизма защиты памяти 18
2.4.4 Не легко используйте плавучие точки в ядре 18
2.4.5 Маленький и фиксированный стек 18
2.4.6 Синхронизация и одновременная 18
2.4.7 Важность переносимости 19
2.5 Резюме 19
Глава 3 Управление процессами 20
3.1 Процесс 20
3.2 Дескриптор процесса и структура задачи 21
3.2.1?
3.2.2 Хранение дескриптора процесса 23
3.2.3 Статус процесса 23
3.2.4 Установите текущее состояние процесса 25
3.2.5 Контекст процесса 25
3.2.6 Процесс семейного древа 25
3.3 Процесс создать 26
3.3.1 Копия 27
3.3.2 fork()27
3.3.3 vfork()28
3.4 Реализация потоков в Linux 28
3.4.1 Создание потока 29
3.4.2 Нить ядра 30
3.5 Конец процесса 31
3.5.1 Удалить дескриптор процесса 32
3.5.2. Подерление и отступление сирот 32
3.6 Резюме 34
Глава 4 Расписание процесса 35
4.1 Многочисленные задачи 35
4.2 Процесс Linux?
4.3 Стратегия 36
4.3.1. Процесс потребления потребителя и процессора.
4.3.2 Приоритет процесса 37
4.3.3 Time Film 38
4.3.4 Действия по стратегии планирования 38
4.4 Алгоритм планирования Linux 39
4.4.1 Планировщик класс 39
4.4.2 Планирование процессов в системе UNIX 40
4.4.3 Справедливое планирование 41
4.5 Реализация планирования Linux 42
4.5.1 Time Book 42
4.5.2 Выбор процесса 44
4.5.3 Планировщик вход 48
4.5.4 Сон и пробуждение 49
4.6 Переключение и переключатель контекста 51
4.6.1 Пользователи захватывают 53
4.6.2 Ядро захват 53
4.7 стратегия планирования реального времени 54
4.8?
4.8.1 Системные вызовы, связанные со стратегиями планирования и приоритетом 55
4.8.2 Системные вызовы, связанные с привязкой процессора 55
4.8.3 Отдайте время процессора 56
4.9 Резюме 56
Глава 5 Система звонка 57
5.1 и общение ядра 57
5.2 API, POSIX и C Библиотека 57
5.3 Системный звонок 58
5.3.1 Системный звонок номер 59
5.3.2 Производительность системы вызов 59
5.4 Программа обработки системных вызовов 60
5.4.1 Укажите соответствующий системный вызов 60
5.4.2 Передача параметров 60
5.5 Реализация системного вызова 61
5.5.1. Реализация системы 61
5.5.2 Проверка параметров 62
5.6 Контекст системного вызова 64
5.6.1 Привязывание последнего этапа системы вызов 65
5.6.2 Вызов из системы доступа к пространству пользователя 67
5.6.3 Почему бы не достичь через системный звонок 68
5.7 Резюме 68
Глава 6 Структура данных ядра 69
6.1 Ссылки 69
6.1.1 Один -прочный список и два -часовый список 69
6.1.2 Кольцевой список 70
6.1.3 Двигайтесь по связанному списку 71
6.1.4 Реализация в ядре Linux 71
6.1.5 Операционные ссылки 73
6.1.6 Связанный список 75 раз 75
6.2 очередь 78
6.2.1 kfifo79
6.2.2 очередь создания 79
6.2.3. Втодите данные в очередь 79
6.2.4 Сбор данных очереди 80
6.2.5 Получите очередь 80
6.2.6 Сбросить и отменить очередь 80
6.2.7 Пример использования крана 81
6.3 Карта 81
6.3.1 Инициализация IDR82
6.3.2 Выделите новый UID82
6.3.3 Найдите UID83
6.3.4 Удалить UID84
6.3.5 Отменить IDR84
6.4 Бинарное дерево 84
6.4.1 Дерево бинарного поиска 84
6.4.2 Самоалбалентное двоичное дерево поиска 85
6.5 Структура данных и выберите 87
6.6 Сложность алгоритма 88
6.6.1 Алгоритм 88
6.6.2 Great O Символ 88
6.6.3&Тета; символ 89
6.6.4 Временная сложность 89
6.7 Резюме 90
Глава 7 прерывание и прерывание лечения 91
7.1?
7.2 Программа обработки прерываний 92
7.3 Сравнение между верхней половиной и нижней половиной 93
7.4 Процесс прерывания регистрации 93
7.4.1 Логотип программы переработки прерывания 94
7.4.2 Пример прерывания 95
7.4.3 Выпустите Программу лечения прерываний 95
7.5 Процедура написания прерываний 96
7.5.1 Процедура обработки прерываний 97
7.5.2 Пример процедуры лечения прерыванием 97 Пример 97
7.6 Контекст прерывания 99
7.7 Реализация механизма обработки прерываний 100
7.8 /proc/interrupts102
7.9 Управление прерыванием 103
7.9.1 Запретное и активированное прерывание 103
7.9.2 запрещено указать строку прерываний 105
7.9.3 Статус системы прерываний 105
7.10 Резюме 106 106
Глава 8 Работа второй половины и пост -исполнение 107
8.1 Нижняя половина 107
8.1.1 Зачем использовать нижнюю половину 108
8.1.2 Окружающая среда в нижней половине 108
8.2 Мягкое прерывание 110
8.2.1 Реализация мягкого прерывания 111
8.2.2 Используйте мягкое прерывание 113
8.3 tasklet114
8.3.1 Реализация Tasklet 114
8.3.2 Используйте Tasklet116
8.3.3 Старый механизм BH 119
8.4 Рабочая очередь 120
8.4.1 Реализация очереди работы 121
8.4.2 Используйте рабочую очередь 124
8.4.3 Механизм очереди старой задачи 126
8.5 Выбор нижней половины механизма 127
8.6 Замок между нижней половиной 128
8.7 Под запретом?
8.8 Резюме 129
Глава 9 Синхронизация ядра Введение 131
9.1 Критическая область и условия конкуренции 131
9.1.1 Зачем нам нужно защитить 132
9.1.2 Единственная переменная 133
9.2 Замок 134
9.2.1 Причина одновременного исполнения 135
9.2.2 Узнайте, что защитить 136
9.3 Dead Lock 137
9.4 борьба и масштабируемость 138
9.5 Резюме 140
Глава 10 Метод синхронизации ядра 141
10.1 Атомная операция 141
10.1.1 Атомная целочисленная операция 142
10.1.2 64 -bit Атомная операция 144
10.1.3 Операция по атомной позиции 145
10.2 Self -Spin Lock 147
10.2.1 Метод самоподвижения 148
10.2.2 Другие операции для спиновых замков 149
10.2.3 Self -Spin Lock и нижняя половина 150
10.3 Читайте-записать самоуверенность 150
10.4 Симптом 152
10.4.1 Подсчет семафора и двух -стоимости семафора 153
10.4.2 Создать и инициализировать семафор 154
10.4.3 Используйте количество сигнала 154
10.5 Сигнал написания чтения 155
10.6 взаимное тело 156
10.6.1 Симптомы и взаимное исключительное тело 158
10.6.2 Self -Spin Lock и взаимоисключающее тело 158
10.7 Полная переменная 158
10,8 BLK: большой замок ядра 159
10,9 блокировки последовательности 160
10.10 запрещено захватить 161
10.11 Заказ и барьер 162
10.12 Резюме 165
Глава 11 Таймер и Управление временем 166
11.1 Концепция времени в ядре 166
11,2 Скорость удара: HZ167
11.2.1 Идеальное значение Гц 168
11.2.2 Преимущества высокого HZ 169
11.2.3 Недостаток высокого HZ 169
11.3 jiffies170
11.3.1 Внутреннее представление Jiffies 171
11.3.2 jiffies возвращается 172
11.3.3 Пользовательский пространство и HZ173
11.4 Жесткие часы и таймер 174
11.4.1 Часы в реальном времени 174
11.4.2 Системный таймер 174
11.5 Процесс обработки часовых прерываний 174
11,6 Фактическое время 176
11,7 Таймер 178
11.7.1 Используйте таймер 178
11.7.2 Условия конкурса таймера 180
11.7.3 Реализуйте таймер 180
11.8 Задержка исполнения 181
11.8.1 занят ожиданием 181
11.8.2 Короткая задержка 182
11.8.3 schedule_timeout()183
11.9 Резюме 185
Глава 12 Управление памятью 186
12.1 Стр. 186
12.2 Зона 187
12.3 Получить страницу 189
12.3.1 Получите страницу с 0 страниц 190
12.3.2 Страница 191
12.4 kmalloc()191
12.4.1 GFP_MASK LOGO 192
12.4.2 kfree()195
12.5 vmalloc()196
12,6 Слоя плиты 197
12.6.1 Дизайн слоя плиты 198
12.6.2 Интерфейс распределителя Slab 200
12.7 Статическое распределение на стеке 203
12.7.1 Одиночный стек ядра 203
12.7.2 Работа над стопкой света и земли 203
12.8 Карта памяти с высоким уровнем 204
12.8.1 Постоянное картирование 204
12.8.2 Временное картирование 204
12.9 распределение каждого процессора 205
12.10 Новый каждый интерфейс процессора 206
12.10.1 Каждое данные ЦП во время компиляции 206
12.10.2 Каждый процессор Data 207 во время выполнения 207
12.11 Причины использования каждого процессора 208
12.12 Выбор функции распределения 209
12.13 Резюме 209
Глава 13 Виртуальная файловая система 210
13.1 Общий интерфейс файловой системы 210
13.2 Слои абстракции файловой системы 2111
13.3 файловая система Unix 212
13.4 Объект VFS и его структура данных 213
13.5 Super Block Object 214
13.6 Super Block Operation 215
13.7 Индексный узел объект 217
13.8
13.9 объект каталога объект 222
13.9.1 Статус элемента каталога 222
13.9.2 Каталог Кэш 223
13.10 Операция пункта каталога 224
13.11 объект файла 225
13.12 Операция файла 226
13.13 Структура данных, связанная с файловой системой 230
13.14 Структура данных, связанная с процессом 232
13.15 Резюме 233
Глава 14 Блок ввода/вывода 234
14.1 Анализ части устройства 234
14.2 Caps and Cushion Terminal 235
14.3 Био -структура 237
14.3.1 Вектор ввода/вывода 238
14.3.2 Сравнение старых методов 239
14.4 очередь запроса 240
14.5 Программа планирования ввода/вывода 240
14.5.1 Работа по программе планирования ввода/вывода 241
14.5.2 Linus Elevator 241
14.5.3 Программа планирования ввода/вывода последнего периода 242
14.5.4 Прогноз программы планирования ввода/вывода 244
14.5.5 Заполнить и справедливую программу планирования ввода/вывода в очереди 244
14.5.6 Программа планирования ввода/вывода воздушной операции 245
14.5.7 Выбор программы планирования ввода/вывода 245
14.6 Резюме 246
ГЛАВА 15 ПРОЦЕССА АДРЕСКОЕ СПОСПОЛОЖЕНИЕ 247
15.1 Адресное пространство 247
15.2 Дескриптор памяти 248
15.2.1 Ассигнование дескрипторов памяти 249
15.2.2 Отмена дескриптора 250
15.2.3 MM_STRUCT и CERNEL THIDE 250
15.3 Область виртуальной памяти 251
15.3.1 логотип VMA 251
15.3.2 Операция VMA 253
15.3.3 Ссылки дерева структуры и области памяти области памяти 254
15.3.4 Область памяти в фактическом использовании 254
15.4 Область памяти 255
15.4.1 find_vma()256
15.4.2 find_vma_prev()257
15.4.3 find_vma_intersection()257
15,5 Mmap () и do_mmap (): создать интервал адреса 258
15.6 mummap () и do_mummap (): удалить интервал адреса 259
Страница 15.7 Таблица 260
15.8 Резюме 261
Глава 16 Страница высокого кеша и возврата страницы 262
16.1 кэш означает 262
16.1.1 Кэш записи 262
16.1.2 Восстановление кэша 263
16.2 Linux Page High -Speed Cache 264
16.2.1 ADDRED_SPACE OBJEST 264
16.2.2 address_space операция 266
16.2.3 Базовое дерево 267
16.2.4 Список Санды 268
16.3 Cushion High -Speed Cache 268
16.4 ТЕРЕЧА 268
16.4.1 КОМПЬЮТЕРНАЯ МОДА 270
16.4.2 Bdflush, Kupdated и Pdflush270 в истории
16.4.3 Как избежать перегрузки: используйте мультичт 271
16.5 Резюме 271
Глава 17 Оборудование и модуль 273
17.1 набор?
17.2 Модуль 274
17.2.1 Привет, World274
17.2.2 Строительный модуль 275
17.2.3 Модуль установки 277
17.2.4 Сгенерировать зависимость 277 модуля 277
17.2.5 Модуль загрузки 278
17.2.6 Вариант конфигурации управления 279
17.2.7 Параметры модуля 280
17.2.8 Символ экспорта Таблица 282
17.3 Модель устройства 283
17.3.1 kobject283
17.3.2 ktype284
17.3.3 kset285
17.3.4 Kobject, Ktype и отношения KSET 285
17.3.5 Управление и эксплуатация Kobject286
17.3.6 Справочный счет 287
17.4 sysfs288
17.4.1 Добавить и удалить Kobject 290 в SYSFS
17.4.2 Добавить файлы 291 в SYSFS 291
17.4.3 Уровень события ядра 293
17.5 Резюме 294
Глава 18 отладка 295
18.1 Подготовка начинается 295
18.2 Bug296 в ядре
18.3 Отладка 296 по печати
18.3.1 Knone 296
18.3.2. Уровень журнала 297
18.3.3 Запись буфера 298
18.3.4 Syslogd и Klogd298
18.3.5 Преобразование из printf () в Propk () 298
18.4 oops298
18.4.1 ksymoops300
18.4.2 kallsyms300
18.5 Опция конфигурации отладки ядра 301
18.6 Информация о ошибке и печати 301
18.7?
18.8 Legend of the Duct Duct Device 303
18.8.1 gdb303
18.8.2 kgdb304
18.9 Система обнаружения 304
18.9.1 uid как условие выбора 304
18.9.2 Использование условия переменная 305
18.9.3 Используйте статистику 305
18.9.4 Ограничение частоты 305
18.10 Используйте два метода поиска точки, чтобы найти изменение, которое вызывает SIN 306 306
18.11 Используйте GIT для проведения двух точечных поисков 307
18.12 Когда все усилия потерпят неудачу: сообщество 308
18.13 Резюме 308
Глава 19 пересаживаемой 309
19.1 Трансплантационная операционная система 309
19.2 История трансплантации Linux 310
19,3 слова длиной и тип данных 311
19.3.1 непрозрачный тип 313
19.3.2 Укажите тип данных 314
19.3.3 Тип с чистой длиной 314
19.3.4.
19.4 Выравнивание данных 315
19.4.1 Избегайте проблем, вызванных выравниванием 316
19.4.2 НЕ -СТАНДАРТЫ ТИПЫ ПРИКЛЮЧЕНИЯ 316
19.4.3.
19,5 байтового приказа 318
19,6 Время 319
19,7 длина страницы 320
19.8 Процессор Сорт 320
19,9 SMP, занятие ядра, High -End Memory 321
19.10 Резюме 321
Глава 20 Патч, развитие и сообщество 322
20.1 Сообщество 322
20.2 Стиль кодирования Linux 322
20.2.1 гостиница 323
20.2.2 оператор переключения 323
20.2.3 Пространство 324
20.2.4 Сложщики 325
20.2.5 Длина каждого кода строки 326
20.2.6 Спецификация именования 326
20.2.7 Функция 326
20.2.8 Примечание 326
20.2.9 typedef327
20.2.10 Много -использование готовых вещей 328
20.2.11 уменьшает использование IFDEF328 в исходном коде.
20.2.12 Инициализация структуры 328
20.2.13 Пересмотр кода 329 после 329
20.3 Система управления 329
20.4 Отправить отчет об ошибках 329
20,5 Патч 330
20.5.1 Создать патч 330
20.5.2 Создать патч 331 с git
20.5.3 Отправить патч 331
20.6 Резюме 332
Справочные материалы 333