Автоматически приостановить процесс - PullRequest
0 голосов
/ 19 февраля 2020

Я видел, что Windows / Linux имеет возможность приостановить процесс. Мне сообщают, почему фоновые приложения не приостанавливаются автоматически.

Например, Chrome использует много ресурсов, когда оно работает в фоновом режиме. Легко это может быть приостановлено. Поэтому он останется в оперативной памяти и может быстро отключиться, но не будет использовать процессор и графический процессор.

Мой вопрос состоит из двух частей:

  1. Почему Windows / Linux (или приложения ) не используете функцию приостановки? (это похоже на паузу в Android, но другим способом)
  2. Есть ли способ приостановить фоновую задачу и отменить ее, когда она получает фокус (когда она выходит на передний план)?

1 Ответ

0 голосов
/ 19 февраля 2020

Процесс, подобный Chrome, может не иметь фокуса ввода на пользовательском интерфейсе, но все еще "запущен". (Chrome состоит из набора связанных процессов и потоков.)

Да, Linux имеет ли возможность фактически "приостанавливать" процесс, используя сигналы STOP/CONT, но это было бы разрушительным для пользовательского интерфейса, потому что Chrome, будучи теперь буквально замороженным, больше не мог отвечать на сообщения, отправленные ему пользовательским интерфейсом.

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

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

...