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