Skip to content

Как работает компьютер

Материал проходит ревью.

НовичокФундамент ~22 мин

Границы темы

Эта статья — первая точка входа. Для неё не нужны знания программирования.

Разбираем: из каких основных частей состоит компьютер и что происходит между запуском программы и появлением результата.

Пока не разбираем: электрические схемы, устройство конкретных процессоров, компиляторов и ядра ОС. К этим темам можно перейти после основной модели.

Результаты обучения

После статьи читатель сможет:

  1. объяснить роли процессора, памяти, хранилища, устройств и ОС;
  2. проследить простой путь выполнения программы;
  3. отличить запущенную программу от файла с программой;
  4. объяснить, почему ожидание сети отличается от вычисления.

Основная модель

Компьютер получает данные, выполняет над ними команды и выдаёт результат.

Диаграмма

У каждой части своя работа:

ЧастьПростое объяснениеПример
Процессор, CPUВыполняет команды программыСкладывает числа
Оперативная память, RAMХранит то, что нужно прямо сейчасКод и переменные программы
НакопительХранит данные после выключенияSSD с файлами
Устройство вводаПередаёт данные компьютеруКлавиатура, сетевая карта
Устройство выводаПолучает результатЭкран, сетевая карта
Операционная система, ОСУправляет программами и ресурсамиLinux, Windows, macOS

Основные термины

Программа — набор команд и данных, сохранённый в файле.

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

Данные — информация, с которой работает программа: числа, текст, изображение, запрос из сети.

Ввод-вывод, или I/O, — обмен данными с диском, сетью, клавиатурой и другими устройствами.

Бит — значение 0 или 1. Байт — небольшая группа битов. Код программы, текст, изображения и сетевые сообщения в компьютере представлены байтами.

End-to-end сценарий

Представим простую программу-калькулятор:

text
20 + 22 → 42

Что происходит:

  1. Пользователь запускает файл программы.
  2. ОС создаёт процесс и выделяет ему память.
  3. Код программы и нужные данные оказываются в оперативной памяти.
  4. Процессор получает команду сложить два числа.
  5. Процессор сохраняет результат 42 в памяти.
  6. Программа просит ОС показать результат.
  7. ОС передаёт данные устройству вывода.
Диаграмма

Это упрощение, но оно даёт правильный первый ориентир: программа не выполняется сама по себе. Ей нужны ресурсы компьютера, которыми управляет ОС.

Что происходит под капотом

Процессор выполняет маленькие команды

Строка 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Восстановите упрощённый путь программы.
  1. Появляется результат
  2. ОС загружает программу в память
  3. Процессор выполняет команды
  4. Пользователь запускает программу
04Если программа ждёт ответ из сети, процессор обязан всё это время активно считать.
Проверено: 0 из 4

Самопроверка

  1. Чем RAM отличается от накопителя?
  2. Чем программа отличается от процесса?
  3. Зачем нужна операционная система?
  4. Почему ожидание сети не равно вычислению?
Ответы и критерии
  1. RAM хранит текущую работу и теряет её после выключения; накопитель хранит файлы долговременно.
  2. Программа — сохранённый набор команд, процесс — её запущенный экземпляр.
  3. ОС распределяет процессор и память, запускает процессы и управляет доступом к устройствам.
  4. Во время ожидания программа может не выполнять полезных команд на CPU; ОС отдаёт процессор другой работе.

Краткое резюме

  • Процессор выполняет команды.
  • RAM хранит код и рабочие данные.
  • Накопитель хранит файлы долговременно.
  • ОС запускает процессы и управляет ресурсами.
  • Программа может вычислять или ждать ввод-вывод.

Следующие шаги

Следующая статья — «Архитектура фон Неймана». Она показывает, как процессор читает команды программы из памяти. После неё можно перейти к статье «CPU».

Источники