Каково точное определение «вытеснения процесса»?

Википедия говорит:

В вычислительной технике приоритетное прерывание - это акт временного прерывания задачи, выполняемой компьютерной системой, без необходимости ее сотрудничества и с намерением возобновить задачу в более позднее время.

Другие источники говорят:

[...] вытеснение означает принудительное изъятие процессора из одного процесса и передачу его другому процессу. [Операционные системы (самостоятельная версия 1.1), Сибсанкар Халдар]

Вытеснение программы происходит, когда во время ее выполнения возникает прерывание, и планировщик выбирает для выполнения некоторые другие программы. [Операционные системы: концептуальный подход, 2E, Д. М. Дхамдхере]

Итак, я понял, что у нас есть вытеснение процесса, если процесс прерывается (аппаратным прерыванием, то есть прерыванием ввода-вывода или прерыванием таймера) и планировщик, вызываемый после обработки прерывания, выбирает другой запускаемый процесс (в соответствии с алгоритмом планирования ЦП). Если планировщик выбирает прерванный процесс, у нас не будет прерывания процесса (прерывания не обязательно вызывают прерывание).

Но я нашел много других источников, которые определяют приоритетное прерывание следующим образом:

Вытеснение - это принудительное освобождение ЦП от программы. [Операционные системы: концептуальный подход, 2E, Д. М. Дхамдхере]

Вы можете видеть, что в одной и той же книге приводятся два разных определения вытеснения. В последнем не упоминается, что ЦП должен быть выделен другому процессу. Согласно этому определению, упреждение - это просто еще одно название «прерывания». Когда возникает аппаратное прерывание, процесс прерывается (он переключается из состояния выполнения в состояние готовности) или прерывается.

Итак, мой вопрос: какое из двух определений правильное? Я в полном замешательстве.


person LordFenerSSJ    schedule 30.04.2016    source источник


Ответы (1)


Определение Википедии довольно плохое, другие не очень хорошие. Однако все они говорят, по сути, об одном и том же.

Вытеснение - это просто одно из средств, с помощью которых операционная система изменяет процесс, выполняемый на ЦП.

Такое изменение может происходить либо в результате того, что выполняющийся процесс добровольно уступает ЦП, либо из-за того, что операционная система вытесняет выполняющийся процесс.

Механизм переключения процессов (переключение контекста) идентичен в обоих методах. Единственная разница в том, как срабатывает переключение контекста.

Процесс может добровольно уступить ЦП, когда он больше не может выполняться. Например. после выполнения ввода-вывода на диск (что займет много времени). Некоторые системы поддерживают только добровольную уступку (совместная многозадачность).

Если процесс привязан к вычислениям, он будет загружать ЦП, не позволяя другим процессам выполняться. Большинство операционных систем используют прерывание по таймеру. Если обработчик прерывания обнаруживает, что текущий процесс выполнялся, по крайней мере, в течение определенного периода времени и есть другие процессы, которые могут выполняться, ОС переключит процессы.

Вытеснение - это переключение [контекста] процесса (или потока) на ЦП, которое запускается операционной системой, а не самим процессом (или потоком).

person user3344003    schedule 30.04.2016