La nicecommande vous permet d'ajuster la priorité de planification ("gentillesse") d'un programme. Sur tous les systèmes de type Unix que j'ai utilisés, la gentillesse est spécifiée par une plage d'entiers, où -20 est la priorité de planification la plus favorable, 0 est la valeur par défaut et 19 est la moins favorable.
Avoir 0 comme finesse par défaut est assez intuitif, mais pourquoi -20 et 19 ont-ils été sélectionnés comme points de terminaison de la plage? Pourquoi pas -128 et 127, ce qui correspondrait exactement à un octet 8 bits signé? Ou pourquoi pas -100 à 100, ce qui est plus intuitif pour les humains décimaux, ou de manière similaire mais légèrement plus ergonomique, -99 à 99? La plage de -20 à 19 a-t-elle été choisie arbitrairement, ou a-t-elle une relation avec les éléments internes de l'ordonnanceur qui ont niceinitialement interagi avec? (Je comprends qu'il n'y a pas une telle relation aujourd'hui, du moins pour Linux, dont le planificateur utilise des priorités dans la plage de 0 à 139. Cependant, je suis intéressé par les raisons historiques de la plage de -20 à 19.)
min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20), et les priorités <25 étaient réservées pour processus faisant des choses sans interruption. La gentillesse devait donc être une sorte de gamme limitée.