Почему значения достоинства обратно связаны с приоритетом процесса?

приятность процесса уменьшается с увеличением приоритета процесса.

Извлечение из программирования Linux 4 th Edition, стр. 169:

По умолчанию приоритет равен 0. Положительные приоритеты используются для фона   задачи, которые выполняются, когда другая задача с более высоким приоритетом не готова к запуску.   Отрицательные приоритеты заставляют программу работать чаще, принимая   большую долю доступного времени процессора. Диапазон действительных приоритетов   от -20 до +20. Это часто путает, поскольку чем выше   числовое значение, тем ниже приоритет выполнения.

Есть ли какая-либо особая причина для отрицательных значений, соответствующих более высокому приоритету процесса (в отличие от увеличения приоритета для процессов с более высокой стоимостью)?

7
nl ja de
Это может быть ошибкой: «POSIX не определяет семантику значений, которые эти функции получают и задают. Как вы увидите, реализация Linux довольно обратна тому, что имели в виду авторы синтаксиса POSIX». gnu.org/software/libc/manual/html_node/Priority.html
добавлено автор Thilo, источник
добавлено автор Thilo, источник
Хотя он говорит о том, как могут подумать программисты - просто идет, чтобы показать, не все, что мы делаем, понятно :)
добавлено автор Ewald, источник
Я бы ответил на этот вопрос на serverfault, потому что это не программирование, извините.
добавлено автор Roman Newaza, источник
@AshRj, да, вы правы.
добавлено автор Roman Newaza, источник
@akp В моей книге указано от -20 до +20, а wiki - от -20 до +19, поэтому я точно не знаю. Вероятно, это будет +19
добавлено автор asheeshr, источник
@RomanNewaza Я действительно не понимаю, почему это должно быть на ServerFault вообще. Может быть, Unix или SuperUser.
добавлено автор asheeshr, источник
@AshRJ да, это +19 конечно ... есть 40 приоритетов от -20 до +19, включая 0. и для более подробной информации читайте мой ответ.
добавлено автор akp, источник
@AshRj, как вы объяснили .. Диапазон действительных приоритетов - от -20 до +20, но я думаю, что нет +20, но это +19.
добавлено автор akp, источник

4 ответы

Ответ Эвальда верен, что подтверждается Jerry Peek и др. в Unix Power Tools (O'Reilly, 2007, стр. 507):

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

Ницца имел это значение, по крайней мере, V6 Unix , но руководство V6 никогда не объясняет это явно. Диапазон допустимых значений был от -220 до +20, а отрицательные числа зарезервированы для суперпользователя. Диапазон был изменен на -20 до +20 в

Истерические причины - я имею в виду исторические ... Я почти уверен, что это началось с чисел, поднимающихся от 0 .. 20, и самый низкий доступный был взят первым. Затем кто-то пришел к выводу, что «Хм, что, если нам нужно сделать что-то БОЛЬШЕ важным», - мы должны пойти отрицательно.

Вы хотите, чтобы приоритет был сортируемым значением, поэтому, если вы начинаете с «по умолчанию равна нулю», вы должны либо сделать более высокий приоритет более высоким числом (но «приоритет 1» в ежедневном разговоре выше «приоритет 2» - когда ваш босс говорит: «Сделайте это своим приоритетом номер 1», это означает, что это важно, правильно?). Будучи компьютером, явно приоритет 0 выше приоритета 1, а приоритет -1 выше приоритета 0.

В конце концов, это произвольный выбор. Возможно, Кен Томсон, Деннис Ритчи или один из этих парней, смогут точно сказать, почему они выбирают именно эту последовательность, а не 0..255, например.

2
добавлено
Кроме того, это упрощает вычисление - просто добавьте интерес к приоритету (или вычтите его, если низкие числа означают высокий приоритет).
добавлено автор Fred Foo, источник
Ritchie умер более года назад, но руководство Unix V6 описывает оригинальный nice (1) и nice (2) : диапазон значений симметрии был -220..20 , с отрицательными значениями, доступными только суперпользователю.
добавлено автор Fred Foo, источник
Правильно, поэтому для планировщика больше, чем простота - значение важности добавляется в вычисление приоритетов, это не ВЕСЬ приоритет процесса. Он также учитывает активность IO и использование процессора. Процессы с высоким уровнем ввода-вывода и низким потреблением процессора получат «импульс» против тех процессов, которые используют весь процессор. Это помогает системе получить хорошую пропускную способность ввода-вывода, где в противном случае они были бы заблокированы интенсивной работой процессора, что может быть сделано позже.
добавлено автор Mats Petersson, источник
Да, я знаю, что DR больше не с нами. Я просто могу сказать, что это был простой способ определить, где начался «специальный» уровень - если он меньше нуля, вы должны быть суперпользователем.
добавлено автор Mats Petersson, источник
Мне нравится сравнение с тем, как люди говорят о приоритетах на английском языке. Невозможно это доказать, но объяснение имеет большой смысл.
добавлено автор gooli, источник

Прежде всего, ответ немного длинный, но это только для разъяснения.

Как и в ядре linux, каждый обычный процесс может иметь приоритеты, которые называются статическим приоритетом, от 100 (самый высокий) до 139 (самый низкий). поэтому есть в основном 40 приоритетов, которые могут быть отнесены к процессу.

поэтому, когда какой-либо процесс создается, он получает приоритет своего родителя, но если пользователь хочет изменить его приоритет, то это можно сделать с помощью хорошего (nice_value) системного вызова.

& the reason for your question is that every process wants base time quantum which is used as how much time the process will get the CPU for its execution in milliseconds and this is calculated as

time={
     if static_priority<120

       (140-static_priority)*20 

     if static_priority>=120

       (140-static_priority)*5

so The sys_nice( )service routine handles the nice( )system call. Although the nice_value may have any value, absolute values larger than 40 are trimmed down to 40. Traditionally, negative values correspond to requests for priority increments and require superuser privileges, while positive ones correspond to requests for priority decreases. In the case of a negative nice_value, the function invokes the capable( ) function to verify whether the process has a CAP_SYS_NICE capability. Moreover, the function invokes the security_task_setnice( )security hook. so in the end the nice_value is used to calculate the static priority & then this static priority is used for calculation of base time quantum.

so it's clear that -ve values are used for increment the priority so needs super user access & +ve values are used for decrease the priority so no need of super user access.

2
добавлено

Да - он получает NICER по мере увеличения числа и MEANER по мере того, как число уменьшается. Таким образом, этот процесс рассматривается как «более дружелюбный», когда он не берет на себя все ресурсы и «противный», поскольку он становится более жадным с ресурсами.

Думайте об этом как о «хороших» точках - чем лучше вы относитесь к другим, тем больше у вас очков.

1
добавлено
@AshRj: интересно - даже когда Wikipedia ссылается на источники, вы не можете полностью этому доверять. Я только что приготовил docset V6 Unix и нигде не объясняет имя «nice».
добавлено автор Fred Foo, источник
@AshRj: все-таки, вот и все. Страница страницы Википедии на хорошем цитирует Кернигана и Пайка (1984) для этимологии, которая может рассматриваться как источник полномочий.
добавлено автор Fred Foo, источник
Мне это веками рассказывали старшие вундеркинды, я думаю, что это народный фольклор тогда ...
добавлено автор Ewald, источник
@AshRj Yup - это правда - как рассказ о том, почему курсор называется курсором ... Потому что он подсказывает вам проклинать :)
добавлено автор Ewald, источник
@larsmans Я только что проверил источник, указанный на странице Википедии, Unix Programming Environment , стр. 35, а также другие экземпляры, нигде авторы не излагают это рассуждение или, если на то пошло, какие-либо соображения или объяснения относительно почему значение достоинства уменьшается. Они ссылаются только на nice utility в двух экземплярах в книге.
добавлено автор asheeshr, источник
Больше похоже на geek-lore ..
добавлено автор asheeshr, источник
Мне трудно поверить, что это единственная причина :)
добавлено автор asheeshr, источник
Обязательный xkcd
добавлено автор ThomasH, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru