Что такое «Прерывание» для перехода процесса из готового состояния в готовое? - PullRequest
0 голосов
/ 15 сентября 2018

Вот диаграмма состояния процесса от современных операционных систем. Переход от запуска к готовности происходит, когда планировщик выбирает другой процесс.

enter image description here

Вот диаграмма состояния процесса из Концепции операционной системы. Что означает «Прерывание» для перехода от запуска к готовности? Это так же, как «планировщик выбирает другой процесс» в приведенном выше?

enter image description here

Спасибо.

1 Ответ

0 голосов
/ 18 сентября 2018

Существует два способа перехода процесса из рабочего состояния в состояние готовности в зависимости от того, в какой ОС реализована многозадачность:

  • При вытесняющей многозадачности ОС использует прерывания по таймеру (для каждого ядра или процессора в системе существует один таймер), чтобы регулярно прерывать любой процесс, который выполняется в данный момент. Затем обработчик прерываний вызывает планировщик ОС, чтобы определить, планировать ли другой процесс или продолжить выполнение того же процесса. Если планировщик решил запустить другой процесс, то текущий процесс переходит из состояния выполнения в состояние готовности.
  • При кооперативной многозадачности ОС не использует прерывания для процессов планировщика. Вместо этого запущенный процесс должен добровольно передать управление планировщику, чтобы позволить ему планировать другой процесс. Таким образом, процессы не переходят между рабочим и готовым состояниями, используя прерывания, а только добровольно.

Мне кажется, что рисунок из книги «Современные операционные системы» относится к обоим методам многозадачности, в то время как рисунок из Концепции операционной системы специально относится к вытесняющей многозадачности. Хотя, изменив слово «прерывание» на что-то более инклюзивное, например «yield», другая цифра также применима к совместной многозадачности.

...