nice

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 23 июля 2025 года; проверки требуют4 правки.
Перейти к навигацииПерейти к поиску
Эта статья об утилите Unix; о британской группе музыкантов, активной в конце 1960-х годов, см.The Nice.

Утилитаnice —компьютерная программа вUNIX-подобныхОС, предназначенная для запускапроцессов с изменённым приоритетом nice. Приоритет nice (целое число)процесса используетсяпланировщиком процессовядра ОС при распределениипроцессорного времени междупроцессами, может называться cpu_nice[1] для отличения от приоритета io_nice[2], используемогопланировщиком ввода-вывода и изменяемого утилитойionice[3]. Утилита nice появилась в 4‑й версииОСUNIX, разработанной фирмойAT&T[4]. Описана в стандарте IEEE Std 1003.1-2001 (POSIX.1)[4][5]. Одна из реализацийnice входит в пакетcoreutils.

Следует различать термины «утилита» и «команда».Утилита —компьютерная программа, исполняемая в отдельномпроцессе.Команда — встроенная командаинтерпретатора команд (shell), исполняемая внутрипроцессаshell.

Командаnice — встроенная командаинтерпретатора команд (shell), выполняющая такие же функции, как и утилитаnice, но работающая внутрипроцессаshell. Реализована, например,интерпретаторами командcsh иtcsh.

Приоритетnice — число, указывающеепланировщику процессовядраОС приоритет, который пользователь хотел бы назначитьпроцессу.

Содержание

Описание

[править |править код]

Утилитаnice, запущенная без аргументов, выводит приоритет nice, унаследованный от родительскогопроцесса.nice принимает аргумент «смещение» в диапазоне от −20 (наивысший приоритет) до +19 (низший приоритет). Если указать смещение ипуть кисполняемому файлу, утилитаnice получит приоритет своегопроцесса, изменит его на указанное смещение и используетсистемный вызовсемействаexec()[англ.] для замещениякода своегопроцесса кодом из указанного исполняемого файла. Командаnice сделает то же, но сначала выполнитсистемный вызовсемействаfork() для запуска дочернегопроцесса (англ. sub-shell). Если смещение не указано, будет использовано смещение +10. Привилегированный пользователь (root) может указать отрицательное смещение.

Приоритет nice и приоритетпланировщика процессовядраОС — разные числа. Число nice — приоритет, который пользовательхотел бы назначитьпроцессу. Приоритетпланировщика —действительный приоритет, назначенныйпроцессупланировщиком.Планировщик может стремиться назначитьпроцессу приоритет, близкий к nice, но это не всегда возможно, так как всистеме может выполняться множествопроцессов с разными приоритетами. Приоритет nice является атрибутомпроцесса и, как и другие атрибуты, наследуется дочернимипроцессами. В выводе утилитtop,ps,htop и др. приоритет nice называется «NI» — сокращение от «nice», а приоритетпланировщика — «PRI» — сокращение от «priority». ОбычноNI = PRI - 20, но это верно не всегда. По умолчаниюNI=0, соответственноPRI=20.

Планировщик процессовядраОСLinux поддерживает приоритеты от 0 (реальное время) до 139 включительно[6]. Приоритеты −20…+19 утилиты или командыnice соответствуют приоритетам 100…139планировщика процессов. Другие приоритетыпланировщика процессов можно установить командойchrt из пакетаutil-linux.

Планировщик процессовядраОСFreeBSD поддерживает приоритеты от −20 до +20.

ВОСLinux для получения текущего приоритета niceпроцесса используетсясистемный вызовgetpriority(), а для его изменения —setpriority()[7].

Планировщик процессов может работать в соответствии с выбранной пользователем политикой (англ. scheduling policy). Некоторые политики могут игнорировать приоритет nice.

ВОСLinux с помощьюсистемного вызоваsched_getscheduler() можно узнать применяемую для текущегопроцесса политикупланировщика процесса, а с помощьюsched_setscheduler() — изменить её[8].

Для изменения приоритета уже запущенных процессов используется утилитаrenice.

Синтаксис

[править |править код]
nice[-nсмещение][--adjustment=смещение][команда[аргумент…]]

Параметры

[править |править код]
-n смещение
--adjustment=смещение
Установить приоритет nice, равный сумме текущего приоритета nice и указанного числа «смещение». Если этот аргумент не указан, будет использовано число 10.

Примечания

[править |править код]
  1. CPU —англ. central processing unit,центральный процессор.
  2. IO —англ. input-output,ввод-вывод.
  3. ionice — программа из пакетаutil-linux. См.ionice(1) — страница справкиman по пользовательским командамGNU/Linux  (англ.).
  4. 12nice(1) — страница справкиman по пользовательским командамFreeBSD  (англ.).
  5. Утилитаnice . The Open Group. — The Open Group Base Specifications Issue 7. IEEE Std 1003.1, 2013 Edition. Дата обращения: 8 августа 2015. Архивировано 12 сентября 2015 года.
  6. См.исходный кодядра Linux:
  7. getpriority(2) — страница справкиman по системным вызовамGNU/Linux  (англ.)
  8. sched_getscheduler(2) — страница справкиman по системным вызовамGNU/Linux  (англ.)

Ссылки

[править |править код]
  • nice(1) — страница справкиman по пользовательским командамGNU/Linux  (англ.) (см.:GNU Coreutils).
  • nice(1) — страница справкиman по пользовательским командамOpenBSD  (англ.).
  • nice(1) — страница справкиman по пользовательским командамFreeBSD  (англ.).
Перейти к шаблону «Команды Unix»
Команды Unix
Перейти к шаблону «POSIX.1-2008»
УтилитыPOSIX.1-2008
Источник —https://ru.wikipedia.org/w/index.php?title=Nice&oldid=146246914
Категория:
Скрытые категории: