Опубликовано

3-е издание: “Внутреннее устройство Linux”

Внутреннее устройство Linux, 3 изд.

Эта книга — введение во внутреннее устройство ОС Linux. Рассмотрены основные подсистемы ядра и их сущности, механизмы контроля доступа и привилегии, принципы и механизмы контейнеризации. Уделено внимание компонентам, подсистемам Linux и их функционированию как единой системы. Подробно описано пользовательское окружение, интерфейс командной строки CLI, язык командного интерпретатора и его использование для автоматизации актуальных задач. Все положения наглядно проиллюстрированы  примерами,  разработанными автором и проверенными им на практике.

В 3-м издании описаны механизмы принудительного разграничения доступа и контроля целостности, уникальные для российского защищенного дистрибутива Astra Linux и операционных систем в целом.  Учтены последние изменения в компонентах ОС и обновлены листинги примеров. Расширена глава про сетевую подсистему, добавлена глава по современным средствам трассировки, измерения нагрузки и мониторинга производительности.

 Для студентов, пользователей, программистов и системных администраторов Linux

Книга, которую вы держите в руках, адресована студентам, начинающим пользователям, программистам и системным администраторам операционной системы Linux. Она представляет собой введение во внутреннее устройство Linux — от ядра до сетевых служб и от утилит командной строки до графического интерфейса.
Все части операционной системы рассматриваются в контексте типичных задач, решаемых на практике, и поясняются при помощи соответствующего инструментария пользователя, администратора и разработчика.
Все положения наглядно проиллюстрированы примерами, разработанными и проверенными автором с целью привить читателю навыки самостоятельного исследования постоянно эволюционирующей операционной системы Linux.

Совет для начинающих

И напоследок, самый важный совет для начинающих — начните!
Цитата из книги

  • Импортозамещение и российский Linux: все, что вы хотели знать
  • Пользовательское окружение и интерфейс командной строки CLI
  • Файлы, каталоги и файловые системы
  • Процессы и нити, каналы, сокеты и разделяемая память
  • Дискреционное и мандатное разграничение доступа, мандатный контроль целостности и привилегии процессов
  • Сетевая подсистема и службы
  • Графический интерфейс GUI: оконные системы X Window и Wayland
  • Программирование на языке командного интерпретатора
  • Контейнеры и виртуализация
  • От отдельных компонент — к системе: Linux своими руками
  • Нагрузка, производительность, мониторинг и трассировка

Книгу “Внутреннее устройство Linux, 3 изд.” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие. 9

Импортозамещение и российский Linux: все, что вы хотели знать,
но боялись спросить. 9

Сертифицированные операционные системы.. 10

Другие операционные системы.. 11

Введение. 12

О чем эта книга?. 12

Кому адресована книга. 13

Принятые соглашения и обозначения. 14

Методические рекомендации.. 15

Что должен знать читатель. 16

Совет для начинающих. 19

Глава 1. Архитектура ОС Linux. 20

1.1. Обзор внутреннего устройства. 20

1.2. Внеядерные компоненты: программы и библиотеки.. 22

1.3. Ядерные компоненты: подсистемы управления процессами, памятью, вводом-выводом, файлами   22

1.4. Трассировка системных и библиотечных вызовов. 23

1.5. Интерфейсы прикладного программирования. 25

1.6. В заключение. 26

Глава 2. Пользовательское окружение ОС Linux. 27

2.1. Командный интерфейс. 27

2.2. Виртуальные терминалы.. 29

2.2.1. Псевдотерминалы.. 31

2.3. Управляющие символы.. 33

2.4. Управляющие последовательности.. 40

2.5. Основной синтаксис командной строки.. 43

2.5.1. Опции командной строки.. 45

2.6. Справочные системы.. 46

2.6.1. Система страниц руководства. 46

2.6.2. Справочная система GNU.. 50

2.6.3. Встроенная справка командного интерпретатора. 50

2.7. Пользователи и группы.. 51

2.7.1. Передача полномочий.. 53

2.7.2. Хранилища учетных записей.. 54

2.8. Переменные окружения и конфигурационные dot-файлы.. 55

2.9. В заключение. 62

Глава 3. Подсистема управления файлами и вводом-выводом.. 63

3.1. Файлы и дерево каталогов. 63

3.1.1. Путевые имена файлов. 64

3.2. Типы файлов. 65

3.2.1. Обычные файлы.. 66

3.2.2. Каталоги.. 67

3.2.3. Имена, данные, метаданные и индексные дескрипторы.. 68

3.2.4. Ссылки.. 69

3.2.5. Специальные файлы устройств. 73

3.2.6. Именованные каналы и файловые сокеты.. 76

3.3. Файловые дескрипторы.. 77

3.4. Файловые системы.. 80

3.4.1. Файловые системы и процедура монтирования. 80

3.4.2. Дисковые файловые системы.. 82

3.4.3. Сетевые файловые системы.. 83

3.4.4. Специальные файловые системы.. 85

3.4.5. Внеядерные файловые системы.. 86

3.5. Дискреционное разграничение доступа. 90

3.5.1. Владельцы и режим доступа к файлам.. 91

3.5.2. Базовые права доступа и дополнительные атрибуты.. 92

Режим доступа новых файлов. 94

Семантика режима доступа разных типов файлов. 95

Дополнительные атрибуты.. 97

3.5.3. Списки контроля доступа POSIX. 101

Групповая маска. 103

Права по умолчанию.. 104

3.6. Мандатное (принудительное) разграничение доступа. 105

3.6.1. Модуль принудительного разграничения доступа AppArmor. 107

3.6.2. Модуль принудительного разграничения доступа SELinux. 109

3.6.3. Модуль принудительного разграничения доступа Astra Linux. 114

3.7. Дополнительные свойства файлов. 125

3.7.1. Расширенные атрибуты файлов. 125

3.7.2. Флаги файлов. 127

3.8. В заключение. 128

Глава 4. Управление процессами и памятью.. 129

4.1. Программы и библиотеки.. 129

4.1.1. Ядро Linux. 132

4.2. Процессы и нити.. 135

4.3. Порождение процессов и нитей, запуск программ.. 139

4.3.1. Параллельные многопроцессные программы.. 143

4.3.2. Параллельные многонитевые программы.. 144

4.3.3. Двойственность процессов и нитей Linux. 148

4.4. Дерево процессов. 150

4.5. Атрибуты процесса. 152

4.5.1. Маркеры доступа. 153

4.5.2. Привилегии.. 156

4.5.3. Другие атрибуты.. 160

4.6. Классы и приоритеты процессов. 160

4.6.1. Распределение процессора между процессами.. 160

4.6.2. Распределение устройств ввода-вывода между процессами.. 167

4.7. Память процесса. 176

4.7.1. Виртуальная память. 177

4.7.2. Отображение файлов в память. 179

4.7.3. Потребление памяти.. 183

4.8. Механизм сигналов. 187

4.8.1. Сеансы и группы процессов: управление заданиями.. 192

4.9. Межпроцессное взаимодействие. 195

4.9.1. Неименованные каналы.. 196

4.9.2. Именованные каналы.. 197

4.9.3. Неименованные локальные сокеты.. 198

4.9.4. Именованные локальные сокеты.. 200

4.9.5. Разделяемая память, семафоры и очереди сообщений.. 202

Разделяемая память. 202

Семафоры и очереди сообщений.. 206

4.10. В заключение. 207

Глава 5. Программирование на языке командного интерпретатора. 209

5.1. Интерпретаторы и их сценарии.. 209

5.2. Встроенные и внешние команды.. 211

5.3. Перенаправление потоков ввода-вывода. 212

5.4. Подстановки командного интерпретатора. 218

5.4.1. Подстановки имен файлов. 218

5.4.2. Подстановки параметров. 220

Переменные — именованные параметры.. 220

Позиционные параметры.. 223

Специальные параметры.. 224

5.4.3. Подстановки вывода команд. 225

5.4.4. Подстановки арифметических выражений.. 227

5.5. Экранирование. 230

5.6. Списки команд. 233

5.6.1. Условные списки.. 234

5.6.2. Составные списки: ветвление. 236

5.6.3. Составные списки: циклы.. 241

5.6.4. Функции.. 246

5.7. Сценарии на языке командного интерпретатора. 249

5.8. Инструментальные средства обработки текста. 252

5.8.1. Фильтр строк grep. 253

5.8.2. Фильтр символов и полей cut 255

5.8.3. Процессор текстовых таблиц awk. 256

5.8.4. Потоковый редактор текста sed. 257

5.9. В заключение. 261

Глава 6. Сетевая подсистема. 262

6.1. Сетевые интерфейсы, протоколы и сетевые сокеты.. 262

6.2. Конфигурирование сетевых интерфейсов и протоколов. 266

6.2.1. Ручное конфигурирование. 266

6.2.2. Автоматическое конфигурирование. 268

6.3. Служба имен и DNS/mDNS-резолверы.. 276

6.4. Сетевые службы.. 281

6.4.1. Служба SSH.. 281

6.4.2. Почтовые службы SMTP, POP/IMAP. 289

6.4.3. Служба WWW… 292

6.4.4. Служба FTP. 294

6.4.5. Служба NFS. 296

NFS-клиент. 296

NFS-сервер. 297

6.4.6. Служба SMB/CIFS. 298

Имена NetBIOS. 299

CIFS-клиенты.. 300

6.4.7. Служба каталогов LDAP. 302

Служба имен и пользовательские учетные записи.. 306

6.5. Средства сетевой диагностики.. 307

6.5.1. Анализаторы пакетов tcpdump и tshark. 307

6.5.2. Сетевой сканер nmap. 310

6.5.3. Мониторинг сетевых соединений процессов. 311

6.6. В заключение. 313

Глава 7. Графическая система X Window System… 315

7.1. X-сервер. 315

7.2. X-клиенты и X-протокол. 317

7.3. Оконные менеджеры.. 322

7.3.1. Декорирование на клиентской стороне. 325

7.4. Настольные пользовательские окружения. 327

7.5. Библиотеки интерфейсных элементов. 329

7.6. Расширения Х-протокола. 332

7.6.1. Расширение Composite и композитный менеджер. 334

7.6.2. GLX, DRI и 3D-графика. 336

7.7. Запуск X Window System… 338

7.7.1. Локальный запуск X-клиентов. 338

7.7.2. Дистанционный запуск X-клиентов. 338

7.7.3. Управление X-дисплеями: XDMCP-менеджер и протокол. 341

7.8. Программный интерфейс X Window System… 342

7.8.1. Трассировка X-библиотек и X-протокола. 342

7.8.2. 3D-графика и инфраструктура прямого рендеринга DRI 348

7.9. В заключение. 354

Глава 8. Графическая система Wayland. 356

8.1. Wayland-композитор. 358

8.2. Wayland-клиенты и Wayland-протокол. 359

8.3. Запуск графической среды на основе Wayland. 365

8.4. В заключение. 366

Глава 9. Контейнеры и виртуальные машины.. 367

9.1. Чрутизация. 368

9.2. Пространства имен.. 372

9.3. Контейнеризация: runc и docker. 377

9.4. Группы управления (cgroups). 381

9.5. В заключение. 385

Глава 10. От отдельных компонент — к системе. 386

10.1. Как Linux загружается. 386

10.2. Как обнаруживаются драйверы устройств. 390

10.3. Как запускаются системные службы.. 393

10.4. Linux своими руками.. 402

10.5. В заключение. 411

Глава 11. Нагрузка, производительность, мониторинг и трассировка. 412

11.1. Метрики и инструменты измерения нагрузки и производительности.. 412

11.1.1. Центральный процессор и память. 412

11.1.2. Устройства ввода-вывода. 420

11.2. Мониторинг и трассировка. 424

11.2.1. Трассировка и отладка программ.. 426

11.3. В заключение. 439

Заключение. 440

Список литературы.. 442

Для удовольствия. 442

Начинающим.. 442

Программистам.. 442

Бесстрашным.. 443

Предметный указатель. 444

Кетов Дмитрий Владимирович, ведущий преподаватель в области операционных систем и сетевых технологий Санкт-Петербургского политехнического университета (СПбПУ) с многолетним стажем, начальник отдела разработки программного обеспечения Санкт-Петербургского филиала АО “Концерн радиостроения «Вега»”. Профессионально занимается теорией построения и практикой разработки операционных систем и системного программного обеспечения.

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий