Я учусь на факультете компьютерных наук и узнал многие основные понятия о том, что происходит «под капотом» во время работы компьютерной программы.Но недавно я понял, что не понимаю, как программные события работают эффективно.
В аппаратном обеспечении это легко: вместо того, чтобы процессор «ждал», чтобы увидеть, если что-то произошло, компонент отправляет запрос прерывания.
Но как это работает, например, при наведении курсора мыши?Мое предположение следующее: если мышь посылает сигнал («перемещен»), операционная система вычисляет свою новую позицию p, затем проверяет, какая программа отображается на экране, сообщает эту программную позицию p, затем сама программа проверяет, чтоobject находится в точке p, проверяет, связаны ли какие-либо обработчики событий с указанным объектом, и, наконец, запускает их.
Это звучит для меня ужасно неэффективно, поскольку крошечное движение мыши приравнивается к множеству переключений контекста процессора (которые я узналотносительно дороги).А потом есть десятки фоновых приложений, которые могут захотеть сделать что-то свое.
Где моя интуиция подводит меня?Я понимаю, что даже «медленные» процессоры с тактовой частотой 500 МГц выполняют 500 миллионов операций в секунду, но все же кажется, что это слишком много для такого простого события.
Заранее спасибо!