Как правило, расписания операционной системы не имеют отношения к блокам кода C. Они переключаются при возникновении различных событий, в том числе:
- Срок действия таймера, показывающий, как долго ваш процесс использует процессор, истекает.
- Устройство, подключенное к компьютеру, сообщает о завершении задачи, и некоторый процесс с более высоким приоритетом, чем ваш, ожидал этого.
- Ваш процесс делает запрос, который не может быть удовлетворен немедленно, например, запрашивает ввод с клавиатуры, и пользователь еще не набрал его.
В последнем случае переключение, конечно, происходит в точке вашего запроса. Другие фактически случайны в отношении того, где выполняется ваш процесс. Связанное прерывание может произойти в любой инструкции вашего процесса.
В некоторых процессорных архитектурах прерывание может даже произойти во время определенных инструкций: инструкция может быть прервана, если она была выполнена только частично и регистры будут обновлены, чтобы можно было продолжить выполнение, чтобы продолжить выполнение инструкции позже.