8 (905) 200-03-37 Владивосток
с 09:00 до 19:00
CHN - 1.14 руб. Сайт - 17.98 руб.

Подлинное проектирование и реализацию ядра Linux (оригинальная книга 3 -е издание) Разработка операционной системы компьютерной сети Linux La Fu Chen Lijun Kanghua 978711138291 Machinery Industry

Цена: 980руб.    (¥54.5)
Артикул: 546979544442

Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.

Этот товар на Таобао Описание товара
Продавец:华心图书专营店
Адрес:Шанхай
Рейтинг:
Всего отзывов:0
Положительных:0
Добавить в корзину
Другие товары этого продавца
¥63.91 149руб.
¥60.91 095руб.
¥94.91 707руб.
¥ 178 1081 942руб.

Проектирование и реализация ядра Linux (оригинальная книга 3 -е издание)
Ценообразование69.00
ИздательMachinery Industry Press
Версия1
Опубликованная датаИюнь 2011
формат16
авторРобертлов
УкраситьОплата в мягкой обложке
Количество страниц332
Число слов  
Кодирование ISBN9787111338291

Название: Проектирование и реализация ядра 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