УДК 004.382.7
ББК 32.971.3
Д40
Мэттью Джастис
Д40 Как на самом деле работают компьютеры / науч. ред. Ю. В. Ревич; пер. с англ.
С. Л. Плехановой. – М.: ДМК Пресс, 2022. – 428 с.: ил.
ISBN 978-5-97060-973-6
В этом руководстве в доступной форме излагаются основы вычислительной
техники. Рассматриваются принципы электронных вычислений и использование
двоичных чисел; в общих чертах показано, как функционирует
аппаратное обеспечение компьютера, для чего нужна операционная система
и как передаются данные по интернету. Читатель получит базовое представление
о языках программирования, изучая примеры кода на С и Python.
Каждая глава содержит упражнения и практические задания (проекты),
позволяющие на практике применить полученные знания.
Книга будет полезна всем, кто хочет разобраться, как работает компьютер.
УДК 004.382.7
ББК 32.971.3
Title of English-language original: How Computers Really Work: A Hands-On Guide to
the Inner Workings of the Machine, ISBN 9781718500662, published by No Starch Press
Inc. 245 8th Street, San Francisco, California United States 94103. The Russian-Language
1st edition Copyright © 2022 by DMK Press Publishing under license by No Starch Press
Inc. All rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
ISBN 978-1-71850-066-2 (англ.)
ISBN 978-5-97060-973-6 (рус.)
© 2021 by Matthew Justice
© Оформление, издание, перевод,
ДМК Пресс, 2022
Стр.5
СОДЕРЖАНИЕ
Об авторе ...................................................................................................................... 6
О технических рецензентах....................................................................................... 6
Благодарности ............................................................................................................ 16
Введение ...................................................................................................................... 17
1
Принципы компьютерных вычислений ...............................23
Определение компьютера ........................................................................................ 24
Аналоговый и цифровой .......................................................................................... 24
Аналоговый подход ............................................................................................... 24
Переход на цифровые технологии .................................................................... 26
Системы счисления ................................................................................................... 27
Десятичные числа ................................................................................................. 28
Двоичные числа ..................................................................................................... 29
Биты и байты .............................................................................................................. 31
Префиксы ................................................................................................................... 32
Шестнадцатеричная система ................................................................................... 35
Выводы ........................................................................................................................ 39
2
Двоичный код в действии ......................................................40
Представление данных в цифровом виде .............................................................. 40
Цифровой текст .................................................................................................... 41
ASCII ........................................................................................................................ 42
Цвета и изображения в цифровом формате ..................................................... 44
Подходы к представлению цветов и изображений ......................................... 46
Интерпретация двоичных данных ..................................................................... 48
Двоичная логика ........................................................................................................ 49
Выводы ........................................................................................................................ 55
3
Электрические цепи ...............................................................56
Определение электрических терминов ................................................................. 57
Электрический заряд ............................................................................................ 57
Электрический ток ................................................................................................ 58
8 СОДЕРЖАНИЕ
Стр.9
Напряжение ........................................................................................................... 58
Сопротивление ...................................................................................................... 59
Аналогия с водой ................................................................................................... 59
Закон Ома.................................................................................................................... 60
Схемы электрических цепей ................................................................................... 61
Закон напряжения Кирхгофа .................................................................................. 64
Электрические цепи в реальном мире ................................................................... 66
Светоизлучающие диоды .......................................................................................... 69
Выводы ........................................................................................................................ 71
ПРОЕКТ № 1: Построение электрической цепи и измерения в ней .........72
ПРОЕКТ № 2: Построение простой схемы со светодиодом .......................78
4
Цифровые схемы ....................................................................81
Что такое цифровая схема? ...................................................................................... 81
Логика с помощью механических выключателей ................................................ 82
Удивительный транзистор ....................................................................................... 85
Логические вентили .................................................................................................. 88
Проектирование с помощью
логических вентилей ................................................................................................ 91
Интегральные схемы ................................................................................................ 92
Выводы ........................................................................................................................ 95
ПРОЕКТ № 3: Построение логических операторов
(И, ИЛИ) с помощью транзисторов ..............................................................96
ПРОЕКТ № 4: Построение схемы с логическими вентилями ....................98
5
Математика в цифровых схемах ...................................... 104
Двоичное сложение ................................................................................................. 105
Полусумматоры ........................................................................................................ 107
Полные сумматоры ..................................................................................................109
Четырехразрядный сумматор ................................................................................ 111
Знаковые числа ........................................................................................................ 112
Беззнаковые числа ................................................................................................... 117
Выводы ......................................................................................................................119
ПРОЕКТ № 5: Построение полусумматора ................................................120
6
Память и синхросигналы .................................................... 122
Последовательные логические схемы и память ................................................. 122
СОДЕРЖАНИЕ 9
Стр.10
SR-защелка ................................................................................................................. 123
Использование SR-защелки в схеме ...................................................................... 127
Синхросигналы ........................................................................................................ 130
JK-триггеры ............................................................................................................... 132
Т-триггеры ................................................................................................................ 133
Использование синхросигнала в трехбитном счетчике ................................... 134
Выводы ......................................................................................................................136
ПРОЕКТ № 6: Построение SR-защелки
с использованием вентилей НЕ-ИЛИ .........................................................137
ПРОЕКТ № 7: Построение базовой схемы торгового автомата ..............139
ПРОЕКТ № 8: Добавление отложенного сброса
в схему торгового автомата ..........................................................................140
ПРОЕКТ № 9: Использование защелки
в качестве ручного синхросигнала ..............................................................143
ПРОЕКТ № 10: Тестирование JK-триггера .................................................146
ПРОЕКТ № 11: Построение трехбитного счетчика ..................................148
7
Аппаратное обеспечение компьютера ............................ 151
Обзор аппаратного обеспечения компьютера ................................................... 151
Оперативная память ............................................................................................... 153
Центральный процессор (CPU) ............................................................................ 157
Архитектура набора команд .............................................................................. 158
Внутреннее устройство процессора .................................................................161
Синхросигнал, ядра и кеш .................................................................................162
За пределами памяти и процессора ......................................................................166
Вторичное хранилище .......................................................................................166
Устройства ввода/вывода ..................................................................................168
Связь по шине .......................................................................................................... 171
Выводы ...................................................................................................................... 172
8
Машинный код и язык ассемблера .................................. 173
Определение программных терминов ................................................................. 173
Пример машинной инструкции ............................................................................ 175
Вычисление факториала в машинном коде......................................................... 177
Выводы ...................................................................................................................... 180
ПРОЕКТ № 12: Факториал на ассемблере ..................................................181
ПРОЕКТ № 13: Исследование машинного кода ........................................194
10 СОДЕРЖАНИЕ
Стр.11
9
Программирование высокого уровня .............................. 199
Обзор программирования высокого уровня .......................................................199
Введение в C и Python ............................................................................................. 201
Комментарии ............................................................................................................ 202
Переменные ............................................................................................................. 202
Переменные в C ................................................................................................... 203
Переменные в Python ......................................................................................... 204
Стек и куча ................................................................................................................ 205
Стек ........................................................................................................................ 205
Куча ........................................................................................................................ 207
Математика ............................................................................................................... 208
Логика ........................................................................................................................ 211
Побитовые операторы ....................................................................................... 212
Булевы операторы ............................................................................................... 213
Порядок выполнения программы......................................................................... 214
Операторы if ........................................................................................................ 215
Циклы ....................................................................................................................216
Функции .................................................................................................................... 217
Определение функций ....................................................................................... 218
Вызов функций .................................................................................................... 220
Использование библиотек ................................................................................. 221
Объектно-ориентированное программирование .............................................. 222
Компилируемый или интерпретируемый ........................................................... 223
Вычисление факториала в C .................................................................................. 225
Выводы ...................................................................................................................... 228
ПРОЕКТ № 14: Изучение переменных .......................................................229
ПРОЕКТ № 15: Изменение типа значения,
на которое ссылается переменная в PYTHON ...........................................232
ПРОЕКТ № 16: Стек или куча ......................................................................233
ПРОЕКТ № 17: Напишите игру-угадайку ...................................................236
ПРОЕКТ № 18: Использование класса банковского счета в PYTHON .... 237
ПРОЕКТ № 19: Факториал на С ...................................................................239
10
Операционные системы ..................................................... 242
Программирование без операционной системы ............................................... 242
Обзор операционных систем ................................................................................ 244
Семейства операционных систем .........................................................................246
Режим ядра и режим пользователя .......................................................................249
СОДЕРЖАНИЕ 11
Стр.12
Процессы .................................................................................................................. 251
Потоки ....................................................................................................................... 253
Виртуальная память .................................................................................................256
Интерфейс прикладного программирования (API) ..........................................259
Пользовательский режим и системные вызовы .................................................262
API и системные вызовы ........................................................................................264
Программные библиотеки операционной системы ..........................................265
Двоичный интерфейс приложений .....................................................................268
Драйверы устройств ................................................................................................268
Файловые системы ..................................................................................................269
Службы и демоны ..................................................................................................... 270
Безопасность ............................................................................................................ 271
Выводы ...................................................................................................................... 272
ПРОЕКТ № 20: Исследование
запущенных процессов .................................................................................272
ПРОЕКТ № 21: Создание потока выполнения и наблюдение за ним ......275
ПРОЕКТ № 22: Исследование виртуальной памяти .................................277
ПРОЕКТ № 23: Исследование API операционной системы .....................280
ПРОЕКТ № 24: Наблюдение за системными вызовами ............................283
ПРОЕКТ № 25: Использование GLIBC .......................................................284
ПРОЕКТ № 26: Просмотр загруженных модулей ядра .............................287
ПРОЕКТ № 27: Исследование устройств хранения данных
и файловых систем .......................................................................................288
ПРОЕКТ № 28: Просмотр служб .................................................................289
11
Интернет .............................................................................. 290
Определение сетевых терминов ...........................................................................290
Набор интернет-протоколов .................................................................................292
Канальный уровень .............................................................................................295
Межсетевой уровень ...........................................................................................297
Транспортный уровень ....................................................................................... 301
Прикладной уровень ........................................................................................... 303
Путешествие по интернету .................................................................................... 304
Основополагающие возможности интернета.....................................................306
Протокол динамической настройки узла (DHCP) ......................................... 306
Частные IP-адреса и преобразование сетевых адресов ................................ 307
Система доменных имен .................................................................................... 308
Сеть – это вычисления ............................................................................................ 312
Выводы ...................................................................................................................... 312
12 СОДЕРЖАНИЕ
Стр.13
ПРОЕКТ № 29: Изучение канального уровня ............................................313
ПРОЕКТ № 30: Изучение межсетевого уровня .........................................315
ПРОЕКТ № 31: Изучение использования портов .....................................316
ПРОЕКТ № 32: Прослеживание маршрута до хоста в интернете ............318
ПРОЕКТ № 33: Узнайте свой арендованный IP-адрес ...............................319
ПРОЕКТ № 34: Является ли IP вашего устройства публичным
или частным? .................................................................................................320
ПРОЕКТ № 35: Поиск информации в DNS .................................................321
12
Всемирная паутина ............................................................. 323
Обзор Всемирной паутины .................................................................................... 323
Распределенная паутина .................................................................................... 324
Адресуемая паутина ............................................................................................. 324
Связанная паутина ............................................................................................... 327
Веб-протоколы .................................................................................................... 327
Поиск в паутине ................................................................................................... 330
Языки Всемирной паутины .................................................................................... 331
Структурирование веб с помощью HTML ....................................................... 331
Стилизация веб-страниц с помощью CSS ........................................................ 334
Создание скриптов с помощью JavaScript ....................................................... 337
Структурирование данных в веб с помощью JSON и XML ........................... 339
Веб-браузеры ............................................................................................................. 342
Визуализация страницы ..................................................................................... 342
Строка агента пользователя (User Agent String ) ........................................... 344
Веб-серверы .............................................................................................................. 345
Выводы ...................................................................................................................... 348
ПРОЕКТ № 36: Исследование трафика HTTP ...........................................349
ПРОЕКТ № 37: Запуск собственного веб-сервера .....................................351
ПРОЕКТ № 38: Возврат HTML с вашего веб-сервера ...............................353
ПРОЕКТ № 39: добавление CSS на ваш сайт ..............................................355
ПРОЕКТ № 40: Добавьте JavaScript на свой сайт .......................................356
13
Современные вычислительные технологии ..................... 358
Приложения ............................................................................................................. 358
Нативные приложения.......................................................................................360
Веб-приложения ..................................................................................................362
Виртуализация и эмуляция ..................................................................................... 363
Виртуализация ..................................................................................................... 363
Эмуляция ...............................................................................................................365
СОДЕРЖАНИЕ 13
Стр.14
Облачные вычисления ............................................................................................366
История удаленных вычислений ......................................................................366
Категории облачных вычислений ....................................................................367
Невидимый веб и темный веб ............................................................................... 370
Биткоин ..................................................................................................................... 371
Основы биткоина ................................................................................................ 372
Биткоин-кошельки .............................................................................................. 372
Биткоин-транзакции ........................................................................................... 373
Майнинг биткоинов ............................................................................................ 374
Виртуальная и дополненная реальность ..............................................................376
Интернет вещей ....................................................................................................... 378
Выводы ...................................................................................................................... 380
ПРОЕКТ № 41: Использование PYTHON для управления
схемой торгового автомата ..........................................................................381
Приложение А
Ответы на упражнения ....................................................... 391
1-2: Двоичное в десятичное ...............................................................................391
1-3: Десятичное в двоичное ...............................................................................391
1-4: Из двоичной системы в шестнадцатеричную .......................................... 392
1-5: Из шестнадцатеричной в двоичную ..........................................................392
2-1: Создайте собственную систему представления текста ........................... 392
2-2: Кодировка и декодировка ASCII ................................................................ 393
2-3: Создание собственной системы представления градации серого ....... 393
2-4: Создание собственного подхода к представлению простых
изображений ........................................................................................................394
2-5: Составление таблицы истинности для логической функции ...............396
3-1: Применение закона Ома .............................................................................396
3-2: Определите падение напряжения .............................................................397
4-1: Реализация логического ИЛИ (OR) с транзисторами ........................... 397
4-2: Проектирование схемы с логическими вентилями ................................ 398
5-1: Практика двоичного сложения ..................................................................398
5-2: Найдите дополнительный код ...................................................................399
5-3: Сложите два двоичных числа и их интерпретируйте
их как знаковые и беззнаковые .........................................................................399
7-1: Вычислите необходимое количество битов ............................................399
8-1: Используйте свой мозг в качестве процессора ........................................ 400
9-1: Побитовые операторы ................................................................................ 402
9-2: Выполните программу на С в уме ............................................................... 403
11-1: Какие IP находятся в одной подсети? ..................................................... 404
11-2: Исследование распространенных портов.............................................. 404
12-1: Определение частей URL-адреса ............................................................. 405
14 СОДЕРЖАНИЕ
Стр.15
Приложение В
Технические средства ......................................................... 406
Покупка электронных компонентов для проектов ............................................406
Названия микросхем серии 7400 ...................................................................... 407
Покупка .................................................................................................................409
Питание цифровых схем ........................................................................................ 410
Зарядное устройство USB .................................................................................. 410
Питание для макетной платы ............................................................................ 411
Питание от Raspberry Pi ..................................................................................... 412
Батарейки AA ....................................................................................................... 413
Поиск и устранение неисправностей в электронных схемах .......................... 414
Raspberry Pi ...............................................................................................................416
Почему Raspberry Pi? ...........................................................................................416
Необходимые детали .......................................................................................... 417
Настройка Raspberry Pi ...................................................................................... 418
Использование Raspberry Pi OS ........................................................................419
Работа с файлами и папками ............................................................................. 421
Стр.16