Википедия говорит:
В вычислительной технике приоритетное прерывание - это акт временного прерывания задачи, выполняемой компьютерной системой, без необходимости ее сотрудничества и с намерением возобновить задачу в более позднее время.
Другие источники говорят:
[...] вытеснение означает принудительное изъятие процессора из одного процесса и передачу его другому процессу. [Операционные системы (самостоятельная версия 1.1), Сибсанкар Халдар]
Вытеснение программы происходит, когда во время ее выполнения возникает прерывание, и планировщик выбирает для выполнения некоторые другие программы. [Операционные системы: концептуальный подход, 2E, Д. М. Дхамдхере]
Итак, я понял, что у нас есть вытеснение процесса, если процесс прерывается (аппаратным прерыванием, то есть прерыванием ввода-вывода или прерыванием таймера) и планировщик, вызываемый после обработки прерывания, выбирает другой запускаемый процесс (в соответствии с алгоритмом планирования ЦП). Если планировщик выбирает прерванный процесс, у нас не будет прерывания процесса (прерывания не обязательно вызывают прерывание).
Но я нашел много других источников, которые определяют приоритетное прерывание следующим образом:
Вытеснение - это принудительное освобождение ЦП от программы. [Операционные системы: концептуальный подход, 2E, Д. М. Дхамдхере]
Вы можете видеть, что в одной и той же книге приводятся два разных определения вытеснения. В последнем не упоминается, что ЦП должен быть выделен другому процессу. Согласно этому определению, упреждение - это просто еще одно название «прерывания». Когда возникает аппаратное прерывание, процесс прерывается (он переключается из состояния выполнения в состояние готовности) или прерывается.
Итак, мой вопрос: какое из двух определений правильное? Я в полном замешательстве.