Pěkný nástroj je počítačový program v operačních systémech podobných UNIXu určený ke spouštění procesů se změněnou prioritou nice. Prioritu nice ( celé číslo ) procesu používá plánovač procesů jádra OS při alokaci času CPU mezi procesy , lze ji nazvat cpu_nice [1] , aby se odlišila od priority io_nice [2] používané plánovačem I/O a upraveno ionickou utilitou [3] . Pěkná utilita se objevila ve verzi 4 operačního systému UNIX vyvinutého společností AT&T [4] . Popsáno v IEEE Std 1003.1-2001 ( POSIX .1) [4] [5] . Jedna pěkná implementace je součástí balíčku coreutils .
Je třeba rozlišovat pojmy „utilita“ a „příkaz“. Nástroj je počítačový program , který běží v samostatném procesu . Příkaz je vestavěný příkaz interpretu příkazů (shell) , který se provádí uvnitř procesu shellu .
Příkaz nice je vestavěný příkaz shellu , který provádí stejné funkce jako obslužný program nice , ale běží uvnitř procesu shellu . Implementováno například pomocí interpretů příkazů csh a tcsh .
Příjemná priorita je číslo, které říká plánovači procesů jádra operačního systému prioritu, kterou by uživatel chtěl procesu přiřadit .
Obslužný program nice , spuštěný bez argumentů, poskytuje prioritu nice zděděnou z nadřazeného procesu . nice přebírá argument offsetu v rozsahu od -20 (nejvyšší priorita) do +19 (nejnižší priorita). Pokud zadáte offset a cestu ke spustitelnému souboru , nice získá svou prioritu procesu , změní ji na zadaný offset a pomocí rodiny nahradíexec() kód procesu kódem ze zadaného spustitelného souboru Příkaz nice udělá totéž, ale nejprve zavolá rodinný systém ke spuštění podřízeného procesu ( angl. sub-shell ). Pokud není zadán žádný posun, použije se posun +10. Privilegovaný uživatel ( root ) může zadat záporný posun. fork()
Priorita nice a priorita plánovače procesů jádra OS jsou různá čísla. Hezké číslo je priorita, kterou by uživatel chtěl procesu přiřadit . Priorita plánovače je skutečná priorita přiřazená procesu plánovačem . Plánovač může chtít přiřadit procesu prioritu blízkou nice, ale to není vždy možné, protože v systému může běžet mnoho procesů s různými prioritami. Prioritou nice je atribut procesu a stejně jako ostatní atributy je zděděn podřízenými procesy . Ve výstupu utilit top , ps , htop atd. se priorita nice nazývá "NI" - zkratka pro "nice" a priorita plánovače je "PRI" - zkratka pro "priorita". Obvykle NI = PRI - 20 , ale to není vždy pravda. Standardně NI=0 , respektive PRI=20 .
Plánovač procesů jádra Linuxu podporuje priority od 0 (v reálném čase ) do 139 včetně [6] . Priority −20…+19 obslužného programu nebo příkazu nice odpovídají prioritám 100…139 plánovače procesů . Další priority plánovače procesů lze nastavit pomocí příkazu chrt z balíčku util-linux .
Plánovač procesů jádra FreeBSD podporuje priority od -20 do +20.
V Linuxu se systémové volání používá k získání aktuální priority nice procesu a [7] k její změně . getpriority()setpriority()
Plánovač procesů může pracovat v souladu s politikou zvolenou uživatelem ( angl. scheduling policy ). Některé zásady mohou ignorovat hezkou prioritu.
V Linuxu můžete pomocí systémového volání zjistit politiku plánovače procesů aplikovanou na aktuální proces a použít ji ke změně [8] . sched_getscheduler()sched_setscheduler()
Nástroj renice se používá ke změně priority již běžících procesů .