• 0 Items - 0.00лв.
    • Количката е празна
-20%

22.36лв.

Модифициране и управление на Linux ядрото

978-619-266-032-1 , , , ,
Share

Книгата е предназначена за програмисти, които искат да научат как се правят промени в кода на Linux ядрото. Особено ще е полезна и на онези, които искат да разберат как работи ядрото и по този начин да пишат по-ефективен код.
В книгата ще намерите практическа информация за:
• Избор на подходяща версия на ядрото. Получаване на изходния код, конфигуриране, компилиране и инсталирате на ядрото на произволна Linux система.
• Управление на физическата и виртуалната памет.
• Описание на начина по който ядрото управлява процесите и обработва прекъсванията.
• Принцип на работа на таймерите и проследяване на времето.
• Механизми за кеширане и запис на данни.
• Настройка на зареждащите механизми и системата за инициализация.
• Структура и работа с файлови системи, псевдофайлови системи.
И не на последно място – ще научите как да пишете и добавяте собствени модули и драйвери към ядрото.

Година

2024

Формат

162х235

Страници

286

Корици

Меки

Преводач

Надежда Борисова

Редактор

Ивелин Михайлов

Съдържание

Глава 1. Кратка история на операционната система и ядро Linux…7
1.1. Началото. 1950-1990 г….7
1.2. От Minix до Linux. Етап на ядрото…10
1.3. Етап на дистрибуция…12

Глава 2. Основи на ядрото…15
2.1. Какво представлява ядрото…15
2.2. Характеристики на Linux ядрото…18
2.3. Версия на Linux ядрото …21
2.4. Избор на ядро при зареждане…22
2.5. Съобщения при зареждане на ядрото…23
2.6. Предаване на параметри на ядрото…25

Глава 3. Продължаваме запознанството си с ядрото. Компилиране на ядрото…29
3.1. Получаване на изходния код на ядрото…29
3.2. Разопаковане на архива с изходния код…31
3.3. Използване на пачове…32
3.4. Съдържание на директорията с изходен код…32
3.5. Изграждане на ядрото…33
3.6. Компилиране на модули…37
3.7. Инсталиране на ядрото…38
3.8. Практически пример: инсталиране на ядро 6.0 на Ubuntu 22.04…39

Глава 4. Стартиране на системата…43
4.1. Зареждащи механизми на Linux…43
4.2. Настройка на зареждащия механизъм…43
    4.2.1. GRUB2 конфигурационни файлове…43
    4.2.2. Избор на етикет по подразбиране…51
    4.2.3. Стартиране на Windows…51
    4.2.4. Парола за зареждане на GRUB2…52
    4.2.5. Инсталиране на зареждащия механизъм…54
4.3. Система за инициализация…54
    4.3.1. Задача на системата за инициализация…54
    4.3.2. Принцип на действие…55
    4.3.3. Конфигурационни файлове systemd…58
    4.3.4. Цели…60
    4.3.5. Управление на сървиси при използване на systemd…61

Глава 5. Как ядрото управлява процесите…63
5.1. Какво е процес…63
5.2. Структури, свързани с процеса…64
    5.2.1. Списък със задачи и структура на процеса…64
    5.2.2. Състояния на процеса…68
    5.2.3. Дескриптор на процеса…71
5.3. Контекст на процеса…74
5.4. Създаване на нов процес и прекратяването му…75
5.5. Нишки…79
5.6. Планировчик…84
5.7. Управление на процеса от конзолата…85
    5.7.1. Команди ps, nice и kill…85
    5.7.2. Команда top…92
    5.7.3. Информация за използването на паметта и дисковото пространство…95
    5.7.4. Команда fuser…97

Глава 6. Обработка на прекъсвания…98
6.1. Какво представляват прекъсванията…98
6.2. Манипулатори на прекъсвания…99
    6.2.1. Какво е манипулатор на прекъсвания?…99
    6.2.2. Регистриране на манипулатор на прекъсвания…100
6.3. Писане на собствен манипулатор на прекъсвания…104
6.4. API на драйвери от високо ниво…106
6.5. Контекст на прекъсване…107
6.6. Функция do_IRQ()…109
6.7. Интерфейс /proc/interrupts…112

Глава 7. Таймери и проследяване на времето…116
7.1. Проследяване на времето в ядрото…116
7.2. Таймери на ядрото…118
7.3. API за таймер…120
7.4. Внедряване на таймери на ядрото…123

Глава 8. Управление на паметта…126
8.1. Какво представлява паметта?…126
    8.1.1. Физическа и виртуална памет…126
    8.1.2. Файлова и анонимна памет…129
    8.1.3. Изместваща и неизместваща памет…130
    8.1.4. Различни типове адреси…132
8.2. Методи за управление на подсистемата на паметта…135
    8.2.1. Размяна и неизместваща памет…135
    8.2.2. Системно извикване mlock() …136
    8.2.3. OOM killer…136
    8.2.4. cgroups…137
    8.2.5. NUMA…138
8.3. Механизъм за разпределение на LRU…138
8.4. Допълнителна информация за управлението на паметта в Linux…140
    8.4.1. Повече за виртуалната памет…141
    8.4.2. Големи страници…142
    8.4.3. Зони…143
    8.4.4. Възли…143
    8.4.5. Кеш на страницата…144
    8.4.6. Анонимна памет…144
    8.4.7. Освобождаване…144
    8.4.8. Уплътнение (компресия)…146
8.5. Големи страници. В детайли…146
    8.5.1. Обща информация…146
    8.5.2. Взаимодействие на политиката за памет на задачите с разпределение/освобождаване на големи страници…153
    8.5.3. Атрибути на големи страници за всеки възел…154
    8.5.4. Използване на големи страници…155
8.6. Практическа информация за администратори…157
    8.6.1. Полезни shell команди …157
    8.6.2. Интерфейс CMA…161
    8.6.3. Добавяне на суап файл…162

Глава 9. Файлова система…164
9.1. Виртуална файлова система на Linux…164
9.2. Регистриране и монтиране на файлова система…166
9.3. Суперблок-обект…169
    9.3.1. Структура на struct super_operations…169
    9.3.2. Структура struct xattr_handlers…171
9.3. Обект на инод…172
9.4. Обект на адресното пространство…176
    9.4.1. Обща информация…176
    9.4.2. Обработка на грешки по време на обратно записване…178
    9.4.3. Структура sutruct address_space_operations…179
9.5. Обект File …184
9.6. Кеш за запис на директория (dcache)…188
9.6.1. Структура dentry_operations…188
9.6.2. API на кеша за запис на директория…190

Глава 10. Псевдофайлови системи…192
10.1. Предназначение…192
10.2. Псевдофайлова система sysfs…192
10.3. Псевдофайлова система proc…194
10.4. Специални настройки на ядрото за предотвратяване на DDoS атаки…200

Глава 11. Блоков вход/изход…203
11.1. Блокови устройства…203
11.2. Структура на блоковото устройство…204
11.3. Буфери…205
11.4. Вход/изход планировчици …208
    11.4.1. Алгоритъм deadline…209
    11.4.2. Алгоритъм CFQ…210
    11.4.3. Алгоритъм NOOP…210
    11.4.4. Конфигуриране на планировчици…211
11.5. Конфигуриране на общи параметри на блоков вход/изход…214
11.6. Управление на хранилища…215
    11.6.1. Свързване на нов твърд диск и разделянето му…215
    11.6.2. Мениджър на логически обеми…223

Глава 12. Механизми за кеширане на четене и запис на Linux ядрото …232
12.1. Дисков кеш и обратен запис…232
12.2. Методи за кеширане…233
12.3. Кеширането на практика…237

Глава 13. Устройства и модули…242
13.1. Типове устройства…242
13.2. Модули на ядрото…243
    13.2.1. Писане на прост модул…243
    13.2.2. Сглобяване на модула в дървото на изходния код на ядрото…246
    13.2.3. Инсталиране на модули…248
    13.2.4. Зареждане на модули…248
13.3. Разработка на сложни модули…249
    13.3.1. Компилиране на модули от няколко файла с изходен код…249
    13.3.2. Зависимости между модулите…249
    13.3.3. Зареждане на модули със зависимости…250

Глава 14. Разработване на драйвер на устройство…252
14.1. Типове устройства scull…252
14.2. Номера на устройствата…254
14.3. Използвани структури данни…261
    14.3.1. Структура file_operations…261
    14.3.2. Структура file…268
   14.3.3. Структура inode…270
14.4. Регистриране на символни устройства…271
14.5. Методи open() и release()…274
14.6. Методи read() и write()…277
14.7. Проверка на нашето устройство…285