Floyd> Ничего
Уже лет, как 30 это норма. Когда есть определённый кусочек времени, которое даётся задаче на исполнение. Есть специальный таймер. Как время закончилось, так проц отбирают и отдают другой задаче. Т.е. насильное переключение. Что не отменяет переключения по другим событиям, в том числе и ввода-вывода. Называлось это дело в OS/370 TSO Time Sharing Option. Ещё термины time slicing, preeemtive. В зависимости от величины размера "кванта времени" сейчас часто говорят о серверных настройках (длинный) и десктоп (короткий). Т.е. в зависимости от задач — если нет взаимодействия с человеком, то ставят длинный, т.к. переключение контекства занимает время и ресурсы и снижает общее КПД. А человек не может терпеть долго — некомфортно работать, если между нажатиями клавиши иногда возникает пауза более 0.3-0.5 секунды.
В системах реального времени таймеры выставляют с очень маленьким разрешением, ну и специально код пишут, чтобы обработка такого интервала была гарантирована (hard real time) или почти гарантирована (soft real time). Достигается разными способами, в том числе уходом с giant lockы в micro locks и очень тщательным вылизыванием подсистем на предмет переключения, блокировки и прочего. В том же лине или винде ни фига не гарантированно, т.к. есть непрерываемые операции, которые могут взять секунды. В частности возникают моменты, когда при интенсивном обмене и винда, и линь приседают.