Ответ 1
Приоритет процесса в Linux динамичен: чем дольше он работает, тем ниже его приоритет. Процесс выполняется, когда он фактически использует CPU - большинство процессов на типичном Linux-боксе просто ждут ввода-вывода и, следовательно, не считаются запущенными.
Приоритет учитывается при наличии большего количества процессов, чем ядра ЦП: выигрывает наивысший приоритет. Но поскольку выигрышный процесс теряет свою способность со временем, другие процессы в какой-то момент возьмут процессор.
nice
и renice
добавят/удаляют некоторые "точки" из приоритета. Процесс с более высоким значением nice
получит меньшее процессорное время. Корень также может установить отрицательное значение nice
- процесс получает больше времени процессора.
Пример. Существует два процесса (1 и 2), вычисляющие проблему остановки и одно ядро ЦП в системе. Значение по умолчанию nice 0
, поэтому оба процесса получают примерно половину процессорного времени каждый. Теперь давайте отредактируем процесс 1 до значения 10. Результат: процесс 2 получает значительно большее количество процессорного времени в качестве процесса 1.
Примечание. В современных настольных компьютерах доступно много процессорного времени - они быстрые в эти дни. К сожалению, жесткие диски по-прежнему слишком медленны при случайном вводе-выводе, поэтому даже хороший процесс может генерировать достаточный трафик ввода-вывода для значительного замедления работы системы.