Тема
Как работает компьютер
Материал проходит ревью.
Границы темы
Эта статья — первая точка входа. Для неё не нужны знания программирования.
Разбираем: из каких основных частей состоит компьютер и что происходит между запуском программы и появлением результата.
Пока не разбираем: электрические схемы, устройство конкретных процессоров, компиляторов и ядра ОС. К этим темам можно перейти после основной модели.
Результаты обучения
После статьи читатель сможет:
- объяснить роли процессора, памяти, хранилища, устройств и ОС;
- проследить простой путь выполнения программы;
- отличить запущенную программу от файла с программой;
- объяснить, почему ожидание сети отличается от вычисления.
Основная модель
Компьютер получает данные, выполняет над ними команды и выдаёт результат.
Диаграмма
У каждой части своя работа:
| Часть | Простое объяснение | Пример |
|---|---|---|
| Процессор, CPU | Выполняет команды программы | Складывает числа |
| Оперативная память, RAM | Хранит то, что нужно прямо сейчас | Код и переменные программы |
| Накопитель | Хранит данные после выключения | SSD с файлами |
| Устройство ввода | Передаёт данные компьютеру | Клавиатура, сетевая карта |
| Устройство вывода | Получает результат | Экран, сетевая карта |
| Операционная система, ОС | Управляет программами и ресурсами | Linux, Windows, macOS |
Основные термины
Программа — набор команд и данных, сохранённый в файле.
Процесс — запущенный экземпляр программы. Если открыть приложение два раза, ОС обычно создаст два процесса.
Данные — информация, с которой работает программа: числа, текст, изображение, запрос из сети.
Ввод-вывод, или I/O, — обмен данными с диском, сетью, клавиатурой и другими устройствами.
Бит — значение 0 или 1. Байт — небольшая группа битов. Код программы, текст, изображения и сетевые сообщения в компьютере представлены байтами.
End-to-end сценарий
Представим простую программу-калькулятор:
text
20 + 22 → 42Что происходит:
- Пользователь запускает файл программы.
- ОС создаёт процесс и выделяет ему память.
- Код программы и нужные данные оказываются в оперативной памяти.
- Процессор получает команду сложить два числа.
- Процессор сохраняет результат
42в памяти. - Программа просит ОС показать результат.
- ОС передаёт данные устройству вывода.
Диаграмма
Это упрощение, но оно даёт правильный первый ориентир: программа не выполняется сама по себе. Ей нужны ресурсы компьютера, которыми управляет ОС.
Что происходит под капотом
Процессор выполняет маленькие команды
Строка 20 + 22 понятна человеку. Процессор получает более простые машинные команды: загрузить значение, сложить значения, сохранить результат.
Исходный код переводится в такую форму заранее или во время работы программы. Этим занимается компилятор, интерпретатор или среда выполнения. Пока достаточно помнить: в конце цепочки процессор выполняет машинные команды.
Память хранит текущее состояние
В памяти находятся:
- команды программы;
- входные данные;
- промежуточные значения;
- результат;
- служебная информация, необходимая процессу.
RAM быстрее накопителя, но не предназначена для постоянного хранения. Чтобы результат сохранился после выключения, программа записывает его в файл или другое хранилище.
Операционная система управляет ресурсами
ОС решает:
- какой программе дать время процессора;
- какую область памяти выделить процессу;
- разрешён ли доступ к файлу;
- как получить данные от сети;
- куда отправить вывод.
Обычная программа не управляет диском или сетевой картой напрямую. Она просит ОС выполнить операцию.
Программа может считать или ждать
Если программа архивирует большой файл, процессор много вычисляет. Если программа ждёт ответ сервера, она может почти не использовать CPU.
Диаграмма
Это различие важно для backend: медленный запрос не всегда означает медленный процессор. Возможно, приложение ждёт базу данных или сеть.
Минимальный воспроизводимый пример
Node.js выполнит простой код:
bash
node -e 'const first = 20; const second = 22; console.log(first + second)'Ожидаемый результат
text
42В этом примере:
- текст после
-e— исходный код; firstиsecond— данные в памяти процесса;- процессор выполняет команды среды Node.js;
console.logпросит ОС вывести результат в терминал.
Как диагностировать ошибку
node: command not found— Node.js не установлен или не найден вPATH;- вместо
42появилась другая сумма — проверьте входные значения; - нет вывода — убедитесь, что команда содержит
console.log.
Ограничения и trade-offs
Когда программа работает медленно, сначала спросите: что она делает?
| Наблюдение | Возможная причина | Что проверить |
|---|---|---|
| CPU занят | Много вычислений | Профиль программы |
| Память заканчивается | Слишком много данных в RAM | Использование памяти |
| CPU свободен, ответ долгий | Ожидание диска, сети или БД | Время внешних операций |
| Программа не запускается | Ошибка файла, прав или среды | Сообщение ОС |
Одна метрика не доказывает причину. Таблица помогает выбрать первую гипотезу.
Failure modes и типичные ошибки
- Программа и процесс — одно и то же. Программа хранится в файле, процесс появляется после запуска.
- RAM и SSD — одно и то же. RAM хранит текущую работу, SSD — долговременные файлы.
- Компьютер понимает исходный код как человек. Код проходит через переводчик или среду выполнения.
- Если программа медленная, нужен более быстрый CPU. Она может ждать сеть, диск или другой сервис.
- ОС только показывает окна. Она также управляет процессами, памятью, файлами и устройствами.
Практическое задание
Задача: выберите знакомую программу — браузер, редактор или терминал — и опишите её запуск по основной модели.
Критерии готовности:
- назван файл программы и созданный процесс;
- указано, что хранится в RAM;
- приведён пример ввода и вывода;
- объяснена роль ОС;
- указан хотя бы один момент вычисления и один момент ожидания.
Подсказка
Для браузера вводом может быть адрес сайта, вычислением — разбор страницы, ожиданием — загрузка данных из сети, а выводом — изображение на экране.
Проверка знаний
ИНТЕРАКТИВНАЯ ПРОВЕРКА
Основные части компьютера
0 / 4
01Где находятся рабочие данные программы, пока она выполняется?
02Какие задачи выполняет операционная система?
03Восстановите упрощённый путь программы.
- Появляется результат
- ОС загружает программу в память
- Процессор выполняет команды
- Пользователь запускает программу
04Если программа ждёт ответ из сети, процессор обязан всё это время активно считать.
Самопроверка
- Чем RAM отличается от накопителя?
- Чем программа отличается от процесса?
- Зачем нужна операционная система?
- Почему ожидание сети не равно вычислению?
Ответы и критерии
- RAM хранит текущую работу и теряет её после выключения; накопитель хранит файлы долговременно.
- Программа — сохранённый набор команд, процесс — её запущенный экземпляр.
- ОС распределяет процессор и память, запускает процессы и управляет доступом к устройствам.
- Во время ожидания программа может не выполнять полезных команд на CPU; ОС отдаёт процессор другой работе.
Краткое резюме
- Процессор выполняет команды.
- RAM хранит код и рабочие данные.
- Накопитель хранит файлы долговременно.
- ОС запускает процессы и управляет ресурсами.
- Программа может вычислять или ждать ввод-вывод.
Следующие шаги
Следующая статья — «Архитектура фон Неймана». Она показывает, как процессор читает команды программы из памяти. После неё можно перейти к статье «CPU».
Источники
- RISC-V Unprivileged ISA Specification — первичное описание того, какие команды и состояние видит программа.
- Arm: Introducing the Arm architecture — официальное введение в роли архитектуры процессора и компонентов системы.
- The Open Group Base Specifications: System Interfaces — стандартные интерфейсы, через которые программа просит ОС выполнить операции.