Помните, когда вы впервые поняли,
что ваш компьютер больше,
чем просто монитор и клавиатура?
Между щелчком мыши и видеоиграми
было что-то, что cхватило ваш замысел,
поняло его,
и сделало его настоящим?
Что это?
Это гремлины?
Давайте представим,
что мы можем уменьшиться
до размера электрона
и внедриться в щелчок мыши.
Если вы разберёте мышь,
то увидите, что это на самом деле
очень простая машина.
Она имеет пару кнопок
и систему для обнаружения
движения и расстояния.
У вас, возможно, есть оптическая мышь,
производящая эти измерения
с помощью света и датчиков,
но более старые модели делали это
с помощью резинового мячика
и нескольких пластиковых колёсиков.
Та же концепция.
Когда вы нажимаете кнопку вашей мыши,
она отправляет сообщение на компьютер
с информацией о своей позиции.
Когда нажатие вашей мыши получено,
оно обрабатывается базовой
подсистемой ввода/вывода.
Эта подсистема действует как глаза, уши,
рот и руки компьютера.
По существу, она
предоставляет компьютеру способ
взаимодействия с окружающей средой.
Но она также действует как буфер,
чтобы предотвращать перегрузку ЦПУ
отвлекающими факторами.
В этом случае подсистема
ввода-вывода решает,
что ваше нажатие мыши
достаточно важно,
поэтому она генерирует прерывание ЦПУ.
«Эй, процессор!
Я здесь получила нажатие».
ЦПУ, или центральное
процессорное устройство, —
это мозги всего компьютера.
Так же, как ваш мозг
не занимает всё ваше тело,
ЦПУ не занимает весь компьютер,
но он тем не менее всем заправляет.
И работа ЦПУ, вся его работа —
это выборка инструкций из памяти
и их выполнение.
В то время, как вы печатаете,
печатаете, печатаете,
может быть, очень быстро,
около 60 слов в минуту,
ЦПУ осуществляет выборку и выполнение
миллиардов инструкций в секунду.
Да, миллиардов каждую секунду:
инструкции для перемещения
мыши на экране,
для запуска виджета часов
на вашем рабочем столе,
для проигрывания вашего
Интернет-радио,
для управления файлами, которые вы
редактируете на жёстком диске,
и многое, многое другое.
ЦПУ вашего компьютера —
тот ещё мультитаскер!
«О, боже мой,
очень важное нажатие мыши
приходит сейчас!
Давайте теперь всё бросим
и займёмся этим»!
Существуют программы для всего,
что делает ЦПУ.
Специальная программа для мыши,
для виджета часов,
для Интернет-радио
и для работы с письмами,
отправленными с клавиатуры.
Каждая программа была изначально
написана человеком
на человекочитаемом
языке программирования,
как Java,
C++
или Python.
Но человеческие программы
занимают много места
и содержат большое количество ненужной
для компьютера информации,
поэтому они компилируются,
уменьшаются
и хранятся в битах
единиц и нулей в памяти.
ЦПУ понимает, что ему
необходимы инструкции
по обработке нажатия этой мыши,
так что оно ищет
адрес программы мыши
и отправляет запрос
в подсистему памяти
для получения инструкций,
хранящихся там.
Каждая инструкция в драйвере
устройства мыши
должным образом выбрана и выполнена.
И это далеко не конец истории!
Так как ЦПУ узнаёт,
что мышь была нажата,
когда курсор был на рисунке
кнопки на экране монитора,
ЦПУ просит у памяти
программу монитора,
чтобы узнать, что это за кнопка.
Затем ЦПУ должен попросить у памяти
программу для кнопки,
что означает, что ЦПУ снова нужна
программа монитора,
чтобы показать видео,
связанное с кнопкой,
и так далее.
Давайте просто скажем,
что существует много программ,
прежде чем вы вообще увидите,
как загорается
кнопка на экране
в результате вашего нажатия.
Так что простая задача нажатия мыши
означает посещение
всех важных компонентов
архитектуры вашего компьютера:
периферийных устройств,
базовой системы ввода-вывода,
ЦПУ,
программ
и памяти.
И гремлины здесь ни при чём.