В дополнение скажу, что ещё многое зависит от типа операционной системы, в которой работает программа. Скажем, есть класс систем, которые называются "
системы реального времени". Такие ОС как, например, Linux или Windows такими системами не являются, и получить гарантированный отклик в заданный промежуток времени на них не получится. поэтому в промышленности, на чувствительных к времени отклика объектах (на ум приходит ядерный реактор, например, система управления самолётом, и т. д.) такие системы использовать нельзя.
В общем случае, ОС запускает программу и передаёт управление ей, программа думает, что она такая у ОС одна, но это не так. В произвольный момент времени, ОС может прервать работу программы и передать управление второй программе, третьей, и т. д. Если ядер несколько, то ОС сама контролирует какой поток какой из программ на каком ядре будет исполняться. Или же, получив сигнал с оборудования (с клавиатуры или мыши, например), посылает соответствующее сообщение в программы, которые "подписаны" на такие события.
Выше (или ниже - с какой стороны посмотреть) ОС работает BIOS (базовая система ввода-вывода) или приходящий ему на смену UEFI. Ещё "выше" или "ниже" - микрокод на "железе".