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

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

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

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

Суперхит: “Изучаем DDD – предметно-ориентированное проектирование”

Изучаем DDD – предметно-ориентированное проектирование

Книга посвящена методологии DDD (предметно-ориентированному проектированию), что особенно актуально в условиях дробления предметных областей и усложнения бизнес-взаимодействий. Рассказано, как оценить масштаб и сложность предметной области, измерить темпы её развития, учесть необходимые зависимости, применять событийно-ориентированную архитектуру и структурировать создаваемое ПО, эффективно вписывая его в сеть данных (Data Mesh). Материал будет особенно интересен при развитии стартапа и разработке наукоёмких отраслевых систем.

 Для архитекторов ПО, бизнес-аналитиков и разработчиков корпоративного программного обеспечения  

Сегодня создавать  программное обеспечение стало сложно как никогда. Приходится не только учитывать постоянно меняющиеся технологические тренды, но и понимать ту предметную область (бизнес), для которой оно создаётся.

В этой практичной книге приведён ключевой набор паттернов, принципов и практик для анализа предметной области, понимания стратегий бизнеса и, что самое важное, соотнесение процесса разработки с меняющимися потребностями заказчика.

Автор показывает, как при помощи этих практик надёжно реализовать бизнес-логику, а также обеспечить прочность программной архитектуры на годы вперёд. Вы исследуете, как предметно-ориентированное проектирование (DDD – domain-driven design) соотносится с другими методологиями, и гарантируете, что принимаемые архитектурные решения соответствуют предъявляемым бизнес-требованиям. В книге подробно разобрано внедрение DDD в рамках стартапа.

Вы узнаете, как

  • Проанализировать предметную область, в которой работает компания, и определить, как создаваемая система вписывается в эту область и обеспечивает конкурентное преимущество
  • Пользоваться стратегическими и тактическими средствами DDD для выстраивания эффективных программных решений, удовлетворяющих потребности заказчика
  • Приходить к общему пониманию любой предметной области, с которой приходится иметь дело
  • Разбивать систему на ограниченные контексты
  • Координировать работу сразу нескольких команд
  • Постепенно вводить DDD в реорганизуемые проекты

Владик Хононов – уникальный мыслитель, много лет занимающийся внедрением DDD для решения задач в самых разных предметных областях. Его идеи – постоянный источник вдохновения, подпитывающий всё сообщество DDD, а эта книга станет незаменимым ресурсом для всех, кто только начинает практиковать DDD.
 Ник Тьюн, технологический консультант в компании Empathy Software, автор книги «Modernizing Architecture»

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

Предисловие редакторской группы……………………………………………………….. 15

Предисловие…………………………………………………………………………………………… 19

Введение………………………………………………………………………………………………… 21

Зачем я написал эту книгу………………………………………………………………………………………………………… 22

Кому следует прочитать эту книгу………………………………………………………………………………………….. 22

Навигация по книге……………………………………………………………………………………………………………………. 23

Пример предметной области: WolfDesk………………………………………………………………………………….. 24

Соглашения, используемые в этой книге…………………………………………………………………………………. 25

Порядок использования примеров кода…………………………………………………………………………………… 26

Благодарности…………………………………………………………………………………………………………………………… 27

Вступление…………………………………………………………………………………………….. 29

Часть I. Стратегическое проектирование……………………………. 31

Глава 1. Анализ предметной области……………………………………………………… 33

Так что же такое предметная область?……………………………………………………………………………………. 33

Что такое поддомен (subdomain)?……………………………………………………………………………………………. 34

Типы поддоменов……………………………………………………………………………………………………………. 34

Основные поддомены (core subdomains)………………………………………………………………. 34

Универсальные поддомены (generic subdomains)………………………………………………… 36

Вспомогательные поддомены (supporting subdomains)………………………………………. 36

Сравнение поддоменов………………………………………………………………………………………………….. 37

Конкурентное преимущество………………………………………………………………………………… 37

Сложность………………………………………………………………………………………………………………. 38

Изменчивость………………………………………………………………………………………………………….. 39

Стратегия решения (solution)…………………………………………………………………………………. 40

Определение границ поддоменов………………………………………………………………………………….. 41

Выделение поддоменов (Distilling subdomains)……………………………………………………. 42

Поддомены с позиции согласующихся сценариев использования……………………. 42

Сосредоточьтесь на главном………………………………………………………………………………… 44

Примеры анализа предметной области…………………………………………………………………………………… 44

Gigmaster………………………………………………………………………………………………………………………….. 44

Предметная область (домен) и поддомены………………………………………………………….. 45

Архитектурные решения……………………………………………………………………………………….. 45

BusVNext…………………………………………………………………………………………………………………………. 46

Предметная область (домен) и поддомены………………………………………………………….. 46

Архитектурные решения……………………………………………………………………………………….. 47

Кто такие специалисты в предметной области?…………………………………………………………………….. 47

Выводы……………………………………………………………………………………………………………………………………….. 48

Упражнения………………………………………………………………………………………………………………………………… 49

Глава 2. Экспертные знания о предметной области……………………………….. 50

Задачи бизнеса (business problems)………………………………………………………………………………………….. 50

Выявление экспертных знаний…………………………………………………………………………………………………. 51

Общение……………………………………………………………………………………………………………………………………… 51

Что такое единый язык?…………………………………………………………………………………………………………….. 53

Язык бизнеса………………………………………………………………………………………………………………………………. 54

Сценарии…………………………………………………………………………………………………………………………. 54

Согласованность…………………………………………………………………………………………………………….. 55

Неоднозначные понятия………………………………………………………………………………………… 55

Понятия-синонимы…………………………………………………………………………………………………. 55

Модель предметной области……………………………………………………………………………………………………. 56

Что такое модель?…………………………………………………………………………………………………………… 56

Эффективное моделирование………………………………………………………………………………………… 56

Моделирование предметной области…………………………………………………………………………… 57

Непрерывная работа……………………………………………………………………………………………………… 57

Инструменты…………………………………………………………………………………………………………………… 58

Сложности………………………………………………………………………………………………………………………. 59

Вывод………………………………………………………………………………………………………………………………………….. 60

Упражнения………………………………………………………………………………………………………………………………… 61

Глава 3. Как осмыслить сложность предметной области……………………….. 62

Противоречивые модели…………………………………………………………………………………………………………… 62

Что такое ограниченный контекст?………………………………………………………………………………………….. 64

Границы модели……………………………………………………………………………………………………………… 65

Уточнение термина «единый язык»………………………………………………………………………………. 65

Область применения ограниченного контекста…………………………………………………………… 66

Сравнение ограниченных контекстов и поддоменов……………………………………………………………… 67

Поддомены………………………………………………………………………………………………………………………. 67

Ограниченные контексты………………………………………………………………………………………………. 68

Взаимодействие поддоменов и ограниченных контекстов…………………………………………. 68

Границы……………………………………………………………………………………………………………………………………… 70

Физические границы………………………………………………………………………………………………………. 70

Границы владения………………………………………………………………………………………………………….. 70

Ограниченные контексты в реальной жизни…………………………………………………………………………… 71

Семантические области…………………………………………………………………………………………………. 71

Наука……………………………………………………………………………………………………………………………….. 72

Покупка холодильника………………………………………………………………………………………………….. 73

Вывод………………………………………………………………………………………………………………………………………….. 75

Упражнения………………………………………………………………………………………………………………………………… 75

Глава 4. Интеграция ограниченных контекстов…………………………………….. 77

Сотрудничество (Cooperation)………………………………………………………………………………………………….. 77

Партнерство (Partnership)………………………………………………………………………………………………. 78

Общее ядро (shared kernel)……………………………………………………………………………………………… 78

Общие рамки (Shared scope)………………………………………………………………………………….. 79

Реализация………………………………………………………………………………………………………………. 79

Когда следует воспользоваться общим ядром…………………………………………………….. 80

Потребитель-Поставщик (Customer-supplier)…………………………………………………………………………… 81

Конформист (Conformist)……………………………………………………………………………………………….. 81

Предохранительный слой (Anticorruption layer)………………………………………………………….. 82

Сервис с открытым протоколом (Open-Host Service)…………………………………………………… 83

Разные пути (Separate Ways)…………………………………………………………………………………………………….. 84

Проблемы общения………………………………………………………………………………………………………… 84

Универсальный поддомен (Generic Subdomain)…………………………………………………………… 84

Различия в моделях………………………………………………………………………………………………………… 85

Карта контекстов (Context Map)………………………………………………………………………………………………. 85

Поддержка в актуальном состоянии…………………………………………………………………………….. 86

Ограничения……………………………………………………………………………………………………………………. 86

Вывод………………………………………………………………………………………………………………………………………….. 87

Упражнения………………………………………………………………………………………………………………………………… 87

Часть II. Тактический замысел………………………………………………… 89

Глава 5. Реализация простой бизнес-логики………………………………………….. 90

Транзакционный сценарий……………………………………………………………………………………………………….. 90

Реализация………………………………………………………………………………………………………………………. 91

Это не так-то просто!……………………………………………………………………………………………………… 91

Отсутствие транзакционного поведения……………………………………………………………… 91

Распределенные транзакции…………………………………………………………………………………. 93

Неявные распределенные транзакции…………………………………………………………………. 94

Когда следует применять транзакционный сценарий………………………………………………… 96

Активная запись…………………………………………………………………………………………………………………………. 97

Реализация………………………………………………………………………………………………………………………. 97

Когда следует применять активную запись…………………………………………………………………. 98

Придерживайтесь прагматичного подхода…………………………………………………………………………….. 99

Вывод………………………………………………………………………………………………………………………………………….. 99

Упражнения……………………………………………………………………………………………………………………………… 100

Глава 6. Проработка сложной бизнес-логики……………………………………….. 102

Предыстория…………………………………………………………………………………………………………………………….. 102

Модель предметной области (доменная модель)…………………………………………………………………. 102

Реализация…………………………………………………………………………………………………………………….. 103

Сложность…………………………………………………………………………………………………………….. 104

Единый язык………………………………………………………………………………………………………….. 104

Строительные блоки…………………………………………………………………………………………………….. 104

Объект-значение…………………………………………………………………………………………………… 104

Сущности………………………………………………………………………………………………………………. 110

Агрегаты……………………………………………………………………………………………………………….. 111

Доменные сервисы (domain service)……………………………………………………………………. 119

Управление сложностью……………………………………………………………………………………………… 121

Вывод………………………………………………………………………………………………………………………………………… 122

Упражнения……………………………………………………………………………………………………………………………… 123

Глава 7. Моделирование фактора времени…………………………………………… 125

События как источник данных (Event Sourcing)……………………………………………………………………. 125

Поиск……………………………………………………………………………………………………………………………… 130

Анализ……………………………………………………………………………………………………………………………. 132

Источник истины………………………………………………………………………………………………………….. 133

Хранилище событий…………………………………………………………………………………………………….. 133

Модель предметной области, основанная на событиях………………………………………………………. 134

Преимущества………………………………………………………………………………………………………………. 137

Недостатки……………………………………………………………………………………………………………………. 138

Часто задаваемые вопросы…………………………………………………………………………………………………….. 139

Производительность…………………………………………………………………………………………………….. 139

Удаление данных…………………………………………………………………………………………………………. 141

А почему просто нельзя ………………………………………………………………………………………………. 141

Вывод………………………………………………………………………………………………………………………………………… 142

Упражнения……………………………………………………………………………………………………………………………… 142

Глава 8. Архитектурные паттерны……………………………………………………….. 144

Сопоставление бизнес-логики и архитектурных паттернов……………………………………………….. 144

Слоеная архитектура (Layered Architecture)…………………………………………………………………………. 145

Слой представления (Presentation layer)…………………………………………………………………….. 145

Слой бизнес-логики (Business logic layer)……………………………………………………………………. 146

Слой доступа к данным (Data access layer)………………………………………………………………… 146

Связь между слоями……………………………………………………………………………………………………… 147

Вариация……………………………………………………………………………………………………………………….. 148

Сервисный слой (Service layer)……………………………………………………………………………. 148

Терминология……………………………………………………………………………………………………….. 151

Когда предпочтительнее использовать слоеную архитектуру……………………………….. 151

Дополнительно: сравнение слоев и уровней……………………………………………………… 152

Порты и адаптеры (Ports and adapters)………………………………………………………………………………….. 152

Терминология……………………………………………………………………………………………………………….. 152

Принцип инверсии зависимостей (Dependency inversion principle)…………………………… 153

Интеграция инфраструктурных компонентов……………………………………………………………. 154

Варианты………………………………………………………………………………………………………………………. 155

Когда предпочтительнее использовать порты и адаптеры……………………………………… 155

Разделение ответственности команд и запросов (Command-Query Responsibility Segregation) 155

Мультипарадигменное моделирование (Polyglot modelling)…………………………………….. 156

Реализация…………………………………………………………………………………………………………………….. 156

Модель выполнения команд……………………………………………………………………………….. 157

Модели чтения (проекции)………………………………………………………………………………….. 157

Проецирование моделей чтения………………………………………………………………………………….. 157

Синхронные проекции…………………………………………………………………………………………. 158

Асинхронные проекции……………………………………………………………………………………….. 159

Сложности…………………………………………………………………………………………………………………….. 160

Разделение моделей……………………………………………………………………………………………………… 160

Когда предпочтительнее использовать CQRS…………………………………………………………… 160

Область применения………………………………………………………………………………………………………………… 161

Вывод………………………………………………………………………………………………………………………………………… 162

Упражнения……………………………………………………………………………………………………………………………… 163

Глава 9. Паттерны взаимодействия……………………………………………………… 164

Преобразование моделей………………………………………………………………………………………………………… 164

Преобразование моделей без сохранения состояния……………………………………………….. 165

Синхронный режим……………………………………………………………………………………………… 165

Асинхронный режим……………………………………………………………………………………………. 167

Преобразование моделей с отслеживанием состояния…………………………………………….. 168

Агрегирование входящих данных………………………………………………………………………. 168

Объединение нескольких источников………………………………………………………………… 169

Интеграция агрегатов……………………………………………………………………………………………………………… 170

Паттерн исходящих сообщений (Outbox)…………………………………………………………………… 172

Извлечение неопубликованных событий…………………………………………………………… 173

Сага……………………………………………………………………………………………………………………………….. 174

Согласованность………………………………………………………………………………………………….. 177

Диспетчер процессов……………………………………………………………………………………………………. 177

Вывод………………………………………………………………………………………………………………………………………… 180

Упражнения……………………………………………………………………………………………………………………………… 181

Часть III. Применение предметно-ориентированного проектирования на практике………………………………………………………………………………………….. 183

Глава 10. Эвристика проектирования………………………………………………….. 184

Эвристика…………………………………………………………………………………………………………………………………. 184

Ограниченные контексты………………………………………………………………………………………………………… 184

Паттерны реализации бизнес-логики…………………………………………………………………………………….. 186

Архитектурные паттерны……………………………………………………………………………………………………….. 188

Стратегия тестирования………………………………………………………………………………………………………….. 189

Пирамида тестирования………………………………………………………………………………………………. 190

Ромб тестирования……………………………………………………………………………………………………….. 190

Перевернутая пирамида тестирования………………………………………………………………………. 190

Дерево тактических проектных решений………………………………………………………………………………. 191

Вывод………………………………………………………………………………………………………………………………………… 192

Упражнения……………………………………………………………………………………………………………………………… 192

Глава 11. Эволюция проектных решений…………………………………………….. 194

Изменения в предметных областях………………………………………………………………………………………… 194

Из основного в универсальный……………………………………………………………………………………. 195

Из универсального в основной……………………………………………………………………………………. 195

Из вспомогательного в универсальный………………………………………………………………………. 196

Из вспомогательного в основной………………………………………………………………………………… 196

Из основного во вспомогательный……………………………………………………………………………… 196

Из универсального во вспомогательный……………………………………………………………………. 196

Стратегические аспекты проектирования…………………………………………………………………………….. 197

Тактические аспекты проектирования…………………………………………………………………………………… 198

Преобразование транзакционного сценария в активную запись…………………………….. 198

Преобразование активной записи в модель предметной области…………………………… 199

Преобразование модели предметной области в модель предметной области, основанную на событиях           200

Генерация прошлых переходов состояния………………………………………………………………… 201

Моделирование событий миграции……………………………………………………………………………. 202

Организационные изменения………………………………………………………………………………………………….. 202

Переход от партнерства к отношениям потребитель-поставщик……………………………. 203

Переход от отношений потребитель-поставщик к модели разных путей……………….. 204

Знания предметной области…………………………………………………………………………………………………… 204

Рост проекта…………………………………………………………………………………………………………………………….. 205

Поддомены……………………………………………………………………………………………………………………. 205

Ограниченные контексты…………………………………………………………………………………………….. 206

Агрегаты………………………………………………………………………………………………………………………… 207

Вывод………………………………………………………………………………………………………………………………………… 207

Упражнения……………………………………………………………………………………………………………………………… 208

Глава 12. EventStorming……………………………………………………………………….. 210

Что такое EventStorming?………………………………………………………………………………………………………… 210

Кто принимает участие в EventStorming?……………………………………………………………………………… 210

Что нужно для проведения EventStorming?…………………………………………………………………………… 211

Процесс проведения EventStorming……………………………………………………………………………………….. 212

Этап 1: Проведение неструктурированного исследования……………………………………… 212

Этап 2: Выстраивание в хронологическом порядке…………………………………………………. 213

Этап 3: Проблемные места (pain points)…………………………………………………………………….. 213

Этап 4: Выявление ключевых событий (pivotal events)…………………………………………….. 214

Этап 5: Выявление команд (commands)…………………………………………………………………….. 215

Этап 6: Выявление правил (policies)……………………………………………………………………………. 216

Этап 7: Выявление моделей чтения (read model)………………………………………………………. 217

Этап 8: Выявление внешних систем (external systems)……………………………………………… 217

Этап 9: Выявление агрегатов………………………………………………………………………………………. 218

Этап 10: Выявление ограниченных контекстов………………………………………………………… 218

Варианты………………………………………………………………………………………………………………………………….. 219

Когда следует проводить EventStorming……………………………………………………………………………….. 220

Советы по проведению……………………………………………………………………………………………………………. 221

Отслеживание динамики проведения семинара………………………………………………………… 221

Проведение EventStorming с удаленными участниками…………………………………………… 222

Вывод………………………………………………………………………………………………………………………………………… 222

Упражнения……………………………………………………………………………………………………………………………… 222

Глава 13. Предметно-ориентированное проектирование на практике….. 224

Стратегический анализ…………………………………………………………………………………………………………… 225

Осмысление предметной области……………………………………………………………………………….. 225

Основные поддомены (core subdomains)……………………………………………………………. 225

Универсальные поддомены…………………………………………………………………………………. 226

Вспомогательные поддомены (supporting subdomains)…………………………………….. 226

Изучение текущего проекта…………………………………………………………………………………………. 226

Оценка тактического замысла…………………………………………………………………………….. 227

Оценка стратегического замысла……………………………………………………………………….. 227

Определение стратегии модернизации………………………………………………………………………………….. 228

Стратегическая модернизация……………………………………………………………………………………. 228

Тактическая модернизация………………………………………………………………………………………….. 230

Развитие единого языка……………………………………………………………………………………………….. 230

Паттерн «Душитель» (Strangler)………………………………………………………………………….. 231

Рефакторинг тактических проектных решений…………………………………………………. 233

Прагматичное предметно-ориентированное проектирование……………………………………………. 234

Как «продать» предметно-ориентированное проектирование?………………………………………….. 234

Законспирированное предметно-ориентированное проектирование……………………… 235

Единый язык………………………………………………………………………………………………………….. 235

Ограниченные контексты…………………………………………………………………………………….. 236

Тактические проектные решения………………………………………………………………………… 236

Модель предметной области, основанная на событиях…………………………………… 237

Вывод………………………………………………………………………………………………………………………………………… 237

Упражнения……………………………………………………………………………………………………………………………… 238

Часть IV. Взаимоотношения с другими методологиями и паттернами     239

Глава 14. Микросервисы……………………………………………………………………… 240

Что такое сервис?…………………………………………………………………………………………………………………….. 240

Что такое микросервис?………………………………………………………………………………………………………….. 241

Метод как Сервис (Method as a Service): путь к созданию идеальных микросервисов? 242

Цель проектирования…………………………………………………………………………………………………… 243

Сложность системы……………………………………………………………………………………………………… 244

Микросервисы как «глубокие» сервисы (deep services)…………………………………………….. 245

Микросервисы как глубокие модули………………………………………………………………………….. 246

Предметно-ориентированное проектирование и границы микросервисов………………………… 248

Ограниченные контексты…………………………………………………………………………………………….. 248

Агрегаты……………………………………………………………………………………………………………….. 250

Поддомены……………………………………………………………………………………………………………………. 251

Сокращение публичных интерфейсов микросервисов…………………………………………………………. 252

Сервис с открытым протоколом………………………………………………………………………………….. 252

Предохранительный слой (anticorruption layer, ACL)……………………………………………….. 253

Вывод………………………………………………………………………………………………………………………………………… 254

Упражнения……………………………………………………………………………………………………………………………… 254

Глава 15. Событийно-ориентированная архитектура…………………………… 256

Событийно-ориентированная архитектура………………………………………………………………………….. 256

События……………………………………………………………………………………………………………………………………. 257

События, команды и сообщения…………………………………………………………………………………. 257

Структура……………………………………………………………………………………………………………………… 258

Типы событий……………………………………………………………………………………………………………….. 258

Уведомление…………………………………………………………………………………………………………. 258

Передача состояния с помощью события………………………………………………………….. 260

События предметной области (domain event)…………………………………………………… 262

Сравнение событий предметной области и уведомлений………………………………… 262

Сравнение событий предметной области с ECST-сообщениями…………………….. 262

Типы событий: Пример………………………………………………………………………………………… 263

Проектирование событийно-ориентированной интеграции……………………………………………….. 264

Распределенный большой ком грязи…………………………………………………………………………… 264

Временнáя связанность (связанность по времени)…………………………………………………….. 265

Функциональная связанность……………………………………………………………………………………… 266

Связанность на уровне реализации……………………………………………………………………………. 266

Реорганизация событийно-ориентированной интеграции……………………………………….. 266

Творческий подход к событийно-ориентированному проектированию…………………. 267

Предполагайте худшее………………………………………………………………………………………… 267

Используйте публичный интерфейс и приватные события……………………………… 268

Оценивайте требования к согласованности………………………………………………………. 268

Вывод………………………………………………………………………………………………………………………………………… 269

Упражнения……………………………………………………………………………………………………………………………… 269

Глава 16. Сеть данных (Data Mesh)………………………………………………………. 271

Сравнение аналитической модели данных (OLAP) с моделью транзакционных данных (OLTP)        271

Таблица фактов…………………………………………………………………………………………………………….. 272

Таблица измерений………………………………………………………………………………………………………. 274

Аналитические модели………………………………………………………………………………………………… 274

Платформы управления аналитическими данными…………………………………………………………….. 276

Хранилище данных — Data Warehouse……………………………………………………………………… 276

Озеро данных — Data Lake…………………………………………………………………………………………. 279

Проблемы архитектур хранилища данных и озера данных……………………………………. 280

Сеть данных (Data mesh)………………………………………………………………………………………………………… 281

Разбиение данных по предметным областям…………………………………………………………….. 281

Данные как продукт……………………………………………………………………………………………………… 283

Обеспечение автономии………………………………………………………………………………………………. 284

Построение экосистемы……………………………………………………………………………………………….. 284

Совмещение сети данных (data mesh) и предметно-ориентированного проектирования          285

Вывод………………………………………………………………………………………………………………………………………… 287

Упражнения……………………………………………………………………………………………………………………………… 287

Заключение………………………………………………………………………………………….. 289

Задача………………………………………………………………………………………………………………………………………. 289

Решение…………………………………………………………………………………………………………………………………….. 290

Реализация……………………………………………………………………………………………………………………………….. 291

Рекомендуемая литература…………………………………………………………………………………………………….. 291

Дополнительные сведения о предметно-ориентированном проектировании………… 291

Архитектурные и интеграционные шаблоны…………………………………………………………….. 292

Модернизация устаревших систем…………………………………………………………………………….. 292

EventStorming………………………………………………………………………………………………………………… 293

Вывод………………………………………………………………………………………………………………………………………… 294

Приложение 1. Применение DDD: пример из практики………………………… 295

Пять ограниченных контекстов………………………………………………………………………………………………. 295

Предметная область…………………………………………………………………………………………………….. 295

Ограниченный контекст № 1: Маркетинг…………………………………………………………………… 297

Своеобразная магия…………………………………………………………………………………………….. 297

Наши ранние взгляды на предметно-ориентированное проектирование………. 297

Ограниченный контекст № 2: CRM…………………………………………………………………………….. 297

Еще больше «агрегатов»!…………………………………………………………………………………….. 298

Разработка решения: Дубль два…………………………………………………………………………. 299

Вавилонская башня 2.0……………………………………………………………………………………….. 299

Более широкий взгляд на предметно-ориентированное проектирование………. 300

Ограниченный контекст № 3: Обработчики событий……………………………………………….. 301

Ограниченный контекст № 4: Бонусы………………………………………………………………………… 302

Проектирование: Дубль два………………………………………………………………………………… 303

Единый язык………………………………………………………………………………………………………….. 303

Классическое понимание предметно-ориентированного проектирования……. 303

Ограниченный контекст № 5: Центр маркетинга………………………………………………………. 304

Микро — что?………………………………………………………………………………………………………. 304

Реальная проблема………………………………………………………………………………………………. 305

Обсуждение………………………………………………………………………………………………………………………………. 305

Единый язык………………………………………………………………………………………………………………….. 305

Поддомены……………………………………………………………………………………………………………………. 306

Сопоставление проектных решений с поддоменами………………………………………… 307

Не игнорируйте боль……………………………………………………………………………………………. 308

Границы ограниченных контекстов……………………………………………………………………………. 308

Вывод………………………………………………………………………………………………………………………………………… 309

Приложение 2. Ответы на вопросы упражнений………………………………….. 310

Глава 1……………………………………………………………………………………………………………………………………… 310

Глава 2……………………………………………………………………………………………………………………………………… 311

Глава 3……………………………………………………………………………………………………………………………………… 311

Глава 4……………………………………………………………………………………………………………………………………… 312

Глава 5……………………………………………………………………………………………………………………………………… 312

Глава 6……………………………………………………………………………………………………………………………………… 313

Глава 7……………………………………………………………………………………………………………………………………… 313

Глава 8……………………………………………………………………………………………………………………………………… 313

Глава 9……………………………………………………………………………………………………………………………………… 314

Глава 10……………………………………………………………………………………………………………………………………. 314

Глава 11……………………………………………………………………………………………………………………………………. 314

Глава 12……………………………………………………………………………………………………………………………………. 315

Глава 13……………………………………………………………………………………………………………………………………. 315

Глава 14……………………………………………………………………………………………………………………………………. 315

Глава 15……………………………………………………………………………………………………………………………………. 315

Глава 16……………………………………………………………………………………………………………………………………. 316

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

Об авторе       320

Влад Хононов

Влад Хононов — инженер-программист, более 20 лет занимающийся промышленной разработкой. Успел поработать во множестве больших и малых компаний на разных позициях – от вебмастера до главного архитектора. Активно выступает на конференциях, пишет статьи в блоге, консультирует по темам, связанным с предметно-ориентированным проектированием, микросервисами, а также с программной архитектурой и унаследованным кодом.

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

Долгожданная книга: “Современная архитектура и устройство компьютеров. 2-е издание”

Современная архитектура и устройство компьютеров

Книга посвящена архитектуре и принципам работы современных цифровых устройств: компьютеров, смартфонов, облачных серверов. Подробно рассмотрены архитектуры процессоров и наборы инструкций x86, x64, ARM и RISC-V. Описано внутреннее устройство процессора, логические вентили, триггеры, регистры, конвейеры, показаны режимы адресации, обработка прерываний, представлены основы машинной логики, методы повышения вычислительной производительности процессоров. Приведен пример разработки процессора RISC-V на базе недорогой платы FPGA (ПЛИС). Описаны принципы виртуализации и технологии, лежащие в основе виртуальных машин, рассмотрены архитектурные решения для обеспечения кибербезопасности и конфиденциальности вычислений. Уделено внимание специализированным компьютерным архитектурам: облачным серверам, мобильным устройствам, процессорам для нейронных сетей и машинного обучения, блокчейна и майнинга, беспилотного транспорта. На практическом примере показаны квантовые вычисления, рассмотрены другие перспективные направления в вычислительных архитектурах.

 

Вы — разработчик программного обеспечения, системный архитектор или студент, изучающий устройство компьютеров?

Вы ищете издание, которое подробно познакомит вас с внутренней архитектурой и принципами работы цифровых устройств?

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

Из этой книги вы

  • узнаете об основах современных компьютерных систем;
  • подробно изучите устройство процессоров, включая логические вентили, триггеры, регистры, последовательную логику, обработку прерываний и конвейеры управления;
  • исследуете процессорные архитектуры и наборы инструкций, включая x86, x64, ARM и RISC-V;
  • узнаете, как реализовать процессор RISC-V на недорогой плате FPGA (ПЛИС);
  • напишете  программу для квантовых вычислений и запустите ее на реальном квантовом компьютере.

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

Книгу “Современная архитектура и устройство компьютеров. 2-е издание” можно купить со скидкой в интернет-магазине издательства “БХВ“.

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

Составители.. 21

Об авторе. 21

О рецензентах. 21

Вступление.. 23

Для кого эта книга. 24

Как организована эта книга. 24

Как получить максимальную отдачу от этой книги. 28

Загрузите файлы с примерами кода. 28

Загрузите цветные изображения. 28

Условные обозначения и соглашения. 28

Свяжитесь с нами. 29

Поделитесь своими мыслями. 30

Глава 1. Введение в архитектуру компьютеров.. 31

Технические требования. 32

Эволюция автоматических вычислительных устройств. 32

Аналитическая машина Чарльза Бэббиджа. 32

ENIAC.. 35

IBM PC.. 36

iPhone. 40

Закон Мура. 41

Архитектура компьютеров. 44

Представление чисел уровнями напряжения. 44

Двоичные и шестнадцатеричные числа. 45

Микропроцессор 6502. 49

Набор инструкций микропроцессора 6502. 52

Резюме. 55

Упражнения. 56

Глава 2. Цифровая логика.. 58

Технические требования. 59

Электрические схемы.. 59

Транзистор. 60

Логические вентили. 61

Защелки. 66

Триггеры.. 69

Регистры.. 71

Сумматоры.. 73

Задержка распространения. 74

Синхронизация. 76

Последовательностная логика. 77

Языки описания аппаратных средств. 78

VHDL. 78

Резюме. 83

Упражнения. 83

Глава 3. Элементы процессора.. 85

Технические требования. 86

Простой процессор. 86

Устройство управления. 87

Арифметико-логическое устройство. 90

Регистры.. 95

Набор инструкций процессора. 97

Режимы адресации. 98

Режим непосредственной адресации. 98

Режим абсолютной адресации. 99

Режим абсолютной индексной адресации. 100

Режим косвенной индексной адресации. 102

Категории инструкций. 103

Инструкции загрузки и сохранения. 104

Инструкции передачи данных из регистра в регистр. 104

Инструкции стека. 104

Арифметические инструкции. 105

Логические инструкции. 106

Инструкции ветвления. 106

Инструкции вызова подпрограммы и возврата из подпрограммы.. 107

Инструкции для работы с флагами процессора. 107

Инструкции для работы с прерываниями. 107

Инструкция отсутствия операций. 108

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

Обработка ……. 108

Обработка …….. 110

Обработка инструкции BRK.. 111

Операции ввода-вывода. 112

Программируемый ввод-вывод. 114

Ввод-вывод с управлением по прерываниям.. 114

Прямой доступ к памяти. 116

Резюме. 116

Упражнения. 117

Глава 4. Компоненты компьютерной системы… 119

Технические требования. 120

Подсистема памяти. 120

Знакомство с полевыми МОП-транзисторами. 121

Построение схем динамической памяти с помощью полевых
МОП-транзисторов. 124

Конденсатор. 124

Битовая ячейка динамической памяти. 126

SDRAM DDR5. 128

DDR для графики. 131

Предварительная выборка. 131

Подсистема ввода-вывода. 132

Параллельные и последовательные шины данных. 133

PCI Express. 135

SATA.. 137

M.2. 138

USB.. 138

Thunderbolt 139

Графические дисплеи. 140

VGA.. 141

DVI 141

HDMI 142

DisplayPort 142

Сетевой интерфейс. 143

Ethernet 143

Wi-Fi 144

Клавиатура и мышь. 146

Клавиатура. 146

Мышь. 147

Технические характеристики современной компьютерной системы.. 148

Резюме. 149

Упражнения. 150

Глава 5. Аппаратно-программный интерфейс.. 151

Технические требования. 152

Драйверы устройств. 152

Параллельный порт. 153

Драйверы устройств PCIe. 155

Структура драйверов устройств. 156

Базовая система ввода-вывода (BIOS) 158

Единый расширяемый интерфейс встроенного ПО (UEFI) 160

Процесс загрузки операционной системы.. 162

Загрузка при использовании BIOS. 163

Загрузка при использовании UEFI 163

Доверенная загрузка. 164

Мобильные устройства. 165

Операционные системы.. 166

Процессы и потоки. 168

Алгоритмы планирования и приоритет процесса. 171

Многопроцессорность. 175

Резюме. 177

Упражнения. 177

Глава 6. Специализированные вычисления.. 179

Технические требования. 180

Вычисления в реальном времени. 180

Операционные системы реального времени. 182

Цифровая обработка сигналов. 186

АЦП и ЦАП.. 186

Особенности аппаратных средств DSP. 189

Алгоритмы обработки сигналов. 192

Обработка данных в графических процессорах. 197

Графические процессоры как процессоры обработки данных. 198

Примеры специализированных архитектур. 202

Резюме. 204

Упражнения. 204

Глава 7. Архитектура процессора и памяти.. 207

Технические требования. 207

Фон-неймановская, гарвардская и модифицированная гарвардская
архитектуры.. 208

Фон-неймановская архитектура. 208

Гарвардская архитектура. 210

Модифицированная гарвардская архитектура. 211

Физическая и виртуальная память. 212

Виртуальная память со страничной организацией. 216

Биты состояния страницы.. 220

Пулы памяти. 222

Блок управления памятью.. 223

Резюме. 226

Упражнения. 227

Глава 8. Методы повышения производительности.. 229

Технические требования. 230

Кеш-память. 230

Многоуровневое кеширование в процессорах. 232

Статическая оперативная память. 233

Кеш первого уровня. 235

Кеш с прямым отображением.. 235

Наборно-ассоциативный кеш.. 239

Полностью ассоциативный кеш.. 241

Политики записи в кеш процессора. 242

Кеши процессора второго и третьего уровней. 243

Конвейерная обработка инструкций. 245

Суперконвейеризация. 248

Конфликты конвейеризации. 250

Микрооперации и переименование регистров. 252

Условное ветвление. 253

Одновременная многопоточность. 254

Модель обработки SIMD.. 256

Резюме. 258

Упражнения. 258

Глава 9. Специализированные расширения процессоров.. 260

Технические требования. 260

Привилегированные режимы процессора. 261

Обработка прерываний и исключений. 261

Кольца защиты.. 265

Режим супервизора и режим пользователя. 267

Системные вызовы.. 268

Арифметика с плавающей запятой. 269

Сопроцессор 8087 для вычислений с плавающей запятой. 272

Стандарт вычислений с плавающей запятой IEEE 754. 274

Управление питанием.. 275

Динамическое изменение напряжения и частоты.. 276

Управление безопасностью системы.. 277

Доверенный платформенный модуль. 280

Противодействие кибератакам.. 281

Резюме. 282

Упражнения. 283

Глава 10. Современные архитектуры и наборы инструкций
процессоров.. 285

Технические требования. 285

Архитектура и набор инструкций x86. 286

Набор регистров архитектуры x86. 288

Режимы адресации x86. 292

Категории инструкций x86. 295

Форматы инструкций x86. 300

Язык ассемблера x86. 301

Архитектура и набор инструкций x64. 304

Набор регистров архитектуры x64. 306

Категории и форматы инструкций x64. 307

Язык ассемблера x64. 307

Архитектура и набор инструкций 32-разрядных процессоров ARM.. 310

Набор регистров ARM.. 312

Режимы адресации ARM.. 313

Категории инструкций ARM.. 316

32-разрядный язык ассемблера ARM.. 319

Архитектура и набор инструкций 64-разрядных процессоров ARM.. 321

64-разрядный язык ассемблера ARM.. 323

Резюме. 325

Упражнения. 325

Глава 11. Архитектура и набор инструкций RISC-V.. 328

Технические требования. 329

Архитектура и приложения RISC-V.. 329

Базовый набор инструкций RISC-V.. 332

Вычислительные инструкции. 333

Инструкции потока управления. 334

Инструкции доступа к памяти. 334

Системные инструкции. 335

Псевдоинструкции. 336

Уровни привилегий. 338

Расширения RISC-V.. 340

Расширение M.. 340

Расширение A.. 341

Расширение C.. 342

Расширения F и D.. 342

Другие расширения. 343

Варианты RISC-V.. 344

64-разрядная архитектура RISC-V.. 345

Стандартные конфигурации RISC-V.. 346

Язык ассемблера RISC-V.. 347

Реализация концепции RISC-V в ПЛИС.. 348

Резюме. 352

Упражнения. 353

Глава 12. Виртуализация процессоров.. 355

Технические требования. 356

Введение в виртуализацию.. 356

Типы виртуализации. 356

Категории виртуализации процессоров. 360

Проблемы виртуализации. 365

Небезопасные инструкции. 366

Теневые таблицы страниц. 367

Безопасность. 367

Виртуализация современных процессоров. 368

Виртуализация процессоров x86. 368

Виртуализация процессоров ARM.. 370

Виртуализация процессоров RISC-V.. 371

Инструменты виртуализации. 372

VirtualBox. 372

VMware Workstation. 373

VMware ESXi 373

KVM.. 373

Xen. 374

QEMU.. 374

Виртуализация и облачные вычисления. 375

Потребление электроэнергии. 376

Резюме. 376

Упражнения. 377

Глава 13. Специализированные компьютерные архитектуры    378

Технические требования. 378

Проектирование архитектуры компьютерных систем на основе
уникальных требований. 379

Архитектура смартфона. 380

iPhone 13 Pro Max. 381

Архитектура персонального компьютера. 384

Игровой настольный компьютер Alienware Aurora Ryzen Edition R10. 384

Вычислительная архитектура масштаба центра обработки данных. 389

Аппаратные средства WSC.. 390

Стоечные серверы.. 392

Управление отказами аппаратных средств. 395

Потребление электроэнергии. 395

WSC как многоуровневый информационный кеш.. 396

Развертывание облачного приложения. 397

Архитектура процессоров для нейронных сетей и машинного обучения. 401

Нейропроцессор Intel Nervana. 401

Резюме. 405

Упражнения. 405

Глава 14. Архитектуры для обеспечения кибербезопасности и конфиденциальности вычислений.. 407

Технические требования. 408

Угрозы кибербезопасности. 408

Категории угроз кибербезопасности. 408

Методы кибератак. 410

Типы вредоносного программного обеспечения. 412

Действия после проникновения. 414

Особенности защищенного оборудования. 416

Определите, что нуждается в защите. 416

Рассматривайте все типы атак. 417

Особенности конструкции защищенных систем.. 419

Конфиденциальные вычисления. 422

Меры безопасности на уровне архитектуры.. 425

Избегайте защиты посредством сокрытия информации. 425

Комплексный подход к безопасному проектированию.. 427

Принцип наименьших привилегий. 427

Архитектура нулевого доверия. 428

Обеспечение безопасности системного и прикладного ПО.. 429

Общие слабые места программного обеспечения. 430

Проверка безопасности исходного кода. 433

Резюме. 433

Упражнения. 434

Глава 15. Архитектуры блокчейна и майнинга биткоинов.. 436

Технические требования. 437

Введение в блокчейн и биткоин. 437

Алгоритм хеширования SHA-256. 441

Вычисление хеша SHA-256. 443

Программное обеспечение Bitcoin Core. 444

Процесс майнинга биткоинов. 445

Пулы майнинга биткоинов. 447

Майнинг с помощью центрального процессора. 449

Майнинг с помощью графического процессора. 450

Компьютерные архитектуры для майнинга биткоинов. 451

Майнинг с помощью ПЛИС.. 453

Майнинг с помощью ASIC.. 455

Экономика майнинга биткоинов. 458

Альтернативные виды криптовалют. 459

Резюме. 460

Упражнения. 461

Глава 16. Архитектуры для самоуправляемых автомобилей   462

Технические требования. 463

Обзор самоуправляемых автомобилей. 463

Уровни автономности вождения. 464

Аспекты безопасности самоуправляемых автомобилей. 466

Требования к аппаратным средствам и программному обеспечению для самоуправляемых автомобилей  468

Наблюдение за состоянием транспортного средства и его окружением.. 469

Распознавание окружающей обстановки. 473

Принятие решений. 484

Вычислительная архитектура автономного транспортного средства. 486

Автопилот Tesla HW3. 487

Резюме. 489

Упражнения. 489

Глава 17. Квантовые вычисления и другие перспективные
направления в вычислительных архитектурах.. 491

Технические требования. 492

Текущее развитие компьютерных архитектур. 492

Экстраполяция современных тенденций в будущее. 494

Закон Мура — новый взгляд. 494

Третье измерение. 495

Распространение специализированных устройств. 496

Потенциально прорывные технологии. 497

Квантовая физика. 497

Спинтроника. 498

Квантовые вычисления. 500

Квантовый взлом кода. 501

Адиабатические квантовые вычисления. 502

Будущее квантовых вычислений. 503

Углеродные нанотрубки. 504

Формирование набора навыков с заделом на будущее. 506

Непрерывное обучение. 506

Высшее образование. 508

Конференции и литература. 509

Резюме. 510

Упражнения. 513

Приложение. Ответы к упражнениям… 515

Глава 1. Введение в архитектуру компьютеров. 515

Упражнение 1. 515

Упражнение 2. 517

Упражнение 3. 521

Упражнение 4. 525

Упражнение 5. 526

Упражнение 6. 528

Глава 2. Цифровая логика. 530

Упражнение 1. 530

Упражнение 2. 530

Упражнение 3. 531

Упражнение 4. 533

Упражнение 5. 534

Упражнение 6. 536

Глава 3. Элементы процессора. 539

Упражнение 1. 539

Упражнение 2. 540

Упражнение 3. 540

Упражнение 4. 541

Упражнение 5. 543

Упражнение 6. 545

Глава 4. Компоненты компьютерной системы.. 551

Упражнение 1. 551

Упражнение 2. 552

Глава 5. Аппаратно-программный интерфейс. 552

Упражнение 1. 552

Упражнение 2. 553

Глава 6. Специализированные вычисления. 554

Упражнение 1. 554

Упражнение 2. 555

Упражнение 3. 557

Глава 7. Архитектура процессоров и памяти. 558

Упражнение 1. 558

Упражнение 2. 558

Упражнение 3. 559

Глава 8. Методы повышения производительности. 561

Упражнение 1. 561

Упражнение 2. 562

Упражнение 3. 562

Глава 9. Специализированные расширения процессоров. 563

Упражнение 1. 563

Упражнение 2. 565

Упражнение 3. 569

Упражнение 4. 569

Упражнение 5. 570

Упражнение 6. 570

Упражнение 7. 570

Упражнение 8. 571

Глава 10. Современные архитектуры и наборы инструкций процессоров. 571

Упражнение 1. 571

Упражнение 2. 575

Упражнение 3. 580

Упражнение 4. 583

Упражнение 5. 588

Упражнение 6. 590

Упражнение 7. 595

Упражнение 8. 598

Глава 11. Архитектура и набор инструкций RISC-V.. 604

Упражнение 1. 604

Упражнение 2. 604

Упражнение 3. 606

Глава 12. Виртуализация процессоров. 609

Упражнение 1. 609

Упражнение 2. 611

Упражнение 3. 613

Глава 13. Специализированные компьютерные архитектуры.. 614

Упражнение 1. 614

Упражнение 2. 615

Глава 14. Архитектуры для обеспечения кибербезопасности и конфиденциальности вычислений  617

Упражнение 1. 617

Упражнение 2. 618

Упражнение 3. 618

Глава 15. Архитектуры блокчейна и майнинга биткоинов. 619

Упражнение 1. 619

Упражнение 2. 621

Глава 16. Архитектуры для самоуправляемых автомобилей. 622

Упражнение 1. 622

Упражнение 2. 623

Упражнение 3. 625

Упражнение 4. 629

Глава 17. Квантовые вычисления и другие перспективные направления
в вычислительных архитектурах. 633

Упражнение 1. 633

Упражнение 2. 634

Упражнение 3. 635

Упражнение 4. 637

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

Ледин Джим

Джим Ледин (Jim Ledin) — исполнительный директор компании Ledin Engineering, Inc. Джим является экспертом в области проектирования и тестирования встроенного программного обеспечения и аппаратных средств, а также экспертом в области оценки кибербезопасности систем и тестирования на проникновение. Джим имеет степень бакалавра в области аэрокосмической техники от Университета штата Айова и степень мастера в области электротехники и вычислительной техники от Технологического института Джорджии. Он является зарегистрированным профессиональным инженером-электриком в штате Калифорния, сертифицированным специалистом по безопасности информационных систем (Certified InformationSystem Security Professional, CISSP), сертифицированным этичным хакером (CertifiedEthical Hacker, CEH) и сертифицированным специалистом