Почему «ps aux» в Linux не показывает процесс, pid = 0? [Дубликат]

2017 ответ: теперь вы можете делать то, что хотите, в каждом текущем браузере и узле

. Это довольно просто:

  • Вернуть обещание
  • Используйте 'await' , в котором JavaScript ожидает, что обещание будет разрешено в vlue (например, hTTP-ответ)
  • Добавьте 'async' для родительской функции

Вот рабочая версия вашего кода:

(async function(){

var response = await superagent.get('...')
console.log(response)

})()

ожидание поддерживается во всех текущих браузерах и узлах 8 [/ д2]

38
задан Suresh Subedi 18 July 2015 в 01:37
поделиться

4 ответа

Причина историческая и программная. Задача бездействия - это выполнение задачи, если никакая другая задача не выполняется, как вы это сказали. Он имеет наименьший возможный приоритет, поэтому он не запускает никакой другой задачи.

Программная причина: это упрощает планирование процесса, потому что вам не нужно заботиться о специальном случае: «Что произойдет, если никакая задача не будет выполнена?», поскольку всегда существует хотя бы одна задача, выполняемая , простаивающая задача. Также вы можете подсчитать количество процессорного времени, используемого для каждой задачи. Без задачи бездействия, какая задача получает учетную запись cpu-time, которую никто не нуждается?

Историческая причина. До того, как у нас был cpus, способный уйти или перейти в режимы энергосбережения, он должен был работать полной скорости в любое время. Он выполнил серию NOP-инструкций, если никакие задачи не выполнялись. Сегодня планирование простаивающей задачи обычно снижает производительность процессора с помощью HLT-команд (halt), поэтому энергопотребление сохраняется. Таким образом, в наши дни есть какая-то функциональность в незанятой задаче.

В Windows вы можете увидеть незанятую задачу в списке процессов, это незанятый процесс.

31
ответ дан bl4ckb0l7 24 August 2018 в 02:20
поделиться

На процессор действительно одна незанятая задача, но она не хранится в главном списке задач, а находится в структуре runpue struct «rq» процессора, как struct task_struct *.

Это активируется планировщиком всякий раз, когда нет ничего лучше (на этом ЦП) и выполняет какой-то код, специфичный для архитектуры, для простоя процессора в состоянии низкой мощности.

9
ответ дан MarkR 24 August 2018 в 02:20
поделиться

Ядро linux поддерживает список ожидания процессов, которые «блокируются» на IO / мьютексах и т. д. Если нет запускаемого процесса, процесс простоя помещается в очередь выполнения до тех пор, пока он не будет выгружен задачей, выходящей из ожидания queue.

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

16
ответ дан Spence 24 August 2018 в 02:20
поделиться

Вы можете использовать ps -ef, и в нем будет указано отсутствие процесса, который выполняется. Затем в первой ссылке он отобразит первый pid-0, который является задачей swapper.

2
ответ дан user1082080 24 August 2018 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: