Компьютер не работает как набор изолированных деталей — процессор, память, шины, накопители и другие компоненты объединены в единую систему. Чтобы увидеть, как это взаимодействие проявляется на практике, разберём конкретную задачу: пользователь открывает фотографию.
Щелкаем по файлу photo.jpg.
Если мышь проводная (USB): Контроллер мыши фиксирует клик и отправляет цифровой код по USB-кабелю. USB-контроллер на материнской плате принимает данные и передаёт их в систему по шине PCI Express.
Если мышь беспроводная (Bluetooth): Контроллер мыши упаковывает событие в Bluetooth-пакет и передаёт по радиоканалу. Модуль Bluetooth на компьютере принимает сигнал, декодирует его и передаёт дальше по PCI Express.
В обоих случаях событие обрабатывается контроллером прерываний (APIC), который сообщает процессору, что произошло новое событие. CPU прерывает текущую задачу и запускает драйвер мыши. Управление передаётся операционной системе.
Теперь ОС знает, какой файл нужно открыть. Она вызывает системный вызов open(). Системные вызовы (syscalls) — это механизм, через который программы обращаются к ядру ОС, чтобы получить доступ к файлам, памяти и устройствам.
Ядро обращается к драйверу файловой системы, который знает структуру диска и где находятся блоки файла photo.jpg. Драйвер вычисляет список логических блоков и передаёт запрос в драйвер контроллера накопителя.
Если это жёсткий диск (HDD): Контроллер диска управляет мотором и головкой. Пластины вращаются, головка перемещается к нужной дорожке и ждёт, пока сектор пройдёт под ней. Данные считываются магнитной головкой, преобразуются в цифровой поток и передаются по интерфейсу SATA.
Если это SSD: Контроллер SSD сразу обращается к NAND-памяти, выбирает страницы (pages) и возвращает их. Чтобы ускорить работу, он может использовать SLC-кэш. В современных системах SSD часто подключён по NVMe, что работает прямо поверх PCI Express и даёт минимальные задержки.
Данные из накопителя поступают через шину в контроллер памяти (Memory Controller). Он размещает байты в оперативной памяти (RAM).
Теперь файл «живёт» в RAM. Доступ к RAM занимает десятки наносекунд, тогда как чтение с диска — миллисекунды. Для процессора разница — сотни тысяч раз.
При обращении к памяти процессор работает не с физическими адресами, а с логическими. Таблица страниц (page table) сопоставляет логические страницы с физическими блоками. Чтобы ускорить этот процесс, используется TLB (Translation Lookaside Buffer) — кэш адресов.
В RAM лежит photo.jpg, но это пока закодированные байты. ОС запускает программу-просмотрщик, которая вызывает инструкции для работы с JPEG. CPU загружает данные из RAM в регистры, передаёт их в арифметико-логическое устройство (ALU) и выполняет декодирование.
Алгоритмы JPEG включают дискретное косинусное преобразование (DCT), квантование, распаковку коэффициентов и восстановление цветности. Каждая операция разбита на машинные команды, проходящие по циклу Fetch → Decode → Execute → Writeback. Тактовый генератор задаёт ритм — миллиарды тактов в секунду. Чтобы CPU не простаивал, кэш L1/L2 хранит ближайшие данные.
На выходе CPU формирует массив пикселей — уже не JPEG, а готовое растровое изображение в формате RGB.
Дальше управление переходит к графической подсистеме. Просмотрщик вызывает системные функции (X11 или Wayland в Linux, GDI+ в Windows). Вызовы уходят в драйвер видеокарты.
Драйвер копирует массив пикселей в видеопамять (VRAM). GPU начинает работу: его тысячи ядер параллельно формируют кадр, накладывают интерфейс окна и саму фотографию.
Когда кадр готов, он сохраняется во фреймбуфере (framebuffer) — области VRAM, где хранится итоговое изображение для вывода. Контроллер дисплея считывает данные построчно и отправляет их по HDMI или DisplayPort.
На мониторе электрический сигнал преобразуется в световые импульсы, подсвечивающие пиксели матрицы. Каждый пиксель получает своё значение яркости и цвета.
Через доли секунды после клика мышью пользователь видит фотографию. Для него это мгновение, но внутри компьютера прошла цепочка сотен тысяч операций: от прерывания USB и чтения с диска до декодирования JPEG, копирования в VRAM и подсветки пикселей на экране.
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.