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