Dědí procesy (explicitně nastavenou) prioritu?

Operační systémy Windows z dílny Microsoft a vše kolem nich

Moderátoři: Pic, Mods_senior

Uživatelský avatar
Myloš
Master Level 8.5
Master Level 8.5
Příspěvky: 6991
Registrován: duben 06
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline

Dědí procesy (explicitně nastavenou) prioritu?

Příspěvekod Myloš » 22 dub 2013 21:12

Pomocí programů jako Process Explorer je možné nastavit procesům prioritu. Dědí ji? Jde mi o to, že procesy jsou v těchto programech uváděny hierarchicky, takže když třeba spustím z CMD souboru dávkovou konverzi do MP3 voláním programu lame.exe(*), „rodič“ (cmd.exe) je pořád tentýž, zatímco jednotlivé konverzní úlohy (provádí lame.exe) jsou jeho „potomky“. Dědí prioritu?
Podobně když spouštím některé procesy prostřednictvím asociované extenze z programu Total Commander (třeba Word nebo Gimp…) – pokud bych pro TCMD nastavil jinou prioritu, zdědí ji potomek?
Když se totiž podívám na prioritu procesu-potomka, má ji odlišnou (výchozí, tedy „normal), přestože subjektivně cítím (v případě lame.exe, u kterého to mám odzkoušené) nemá takové nároky, jako kdybych jeho rodiči prioritu nesnížil.
A konečně – pokud potomek zdědí nižší prioritu, co se stane, když ukončím nadřízený, rodičovský proces? (Například spustím renderování videa pomocí TCMD, kterému nastavím třeba idle, ale TCMD ukončím – potomek běží i po „smrti“ rodiče.)

Je o tom nějaké česky psané teoretické povídání? Víte o tom někdo něco bližšího?


(*) Jistě, Lame sám má přepínač commandu --priority, to vím a využívám toho, ale to není odpovědí na výše uvedenou otázku; nejde mi primárně o lame.
  • Než položíte dotaz, nejprve se ptejte strejdy Gůůgla.
  • Výňatek z pravidel fóra PC-HELP:
    • Název tématu zvolte takový, aby co nejvýstižněji charakterizoval obsah tématu.
    • Nesnažte se řešit jiný problém (i když podobný) v jednom tématu. Raději založte nové téma.
  • Mýliti se je Myloš. ;-)

Reklama
Uživatelský avatar
MiliNess
člen BSOD týmu
Master Level 9.5
Master Level 9.5
Příspěvky: 9112
Registrován: říjen 09
Bydliště: Cheb
Pohlaví: Muž
Stav:
Offline

Re: Dědí procesy (explicitně nastavenou) prioritu?

Příspěvekod MiliNess » 22 dub 2013 21:21

Až dorazím domů, tak ti něco napíšu.
-každý má svou pravdu a ta se nemusí vždycky shodovat s tvou vlastní
-naše problémy jsou pouze v naší hlavě
-okolní svět není ani dobrý ani špatný, je mu zcela lhostejné, jestli existuješ
-nejdůležitější v životě je láska. Všechno ostatní jsou zbytečnosti

Uživatelský avatar
Myloš
Master Level 8.5
Master Level 8.5
Příspěvky: 6991
Registrován: duben 06
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline

Re: Dědí procesy (explicitně nastavenou) prioritu?

Příspěvekod Myloš » 22 dub 2013 22:11

Díky. Už když jsem to psal, tušil jsem, že jestli o tom někdo bude něco vědět, budeš to ty. ;-)
  • Než položíte dotaz, nejprve se ptejte strejdy Gůůgla.
  • Výňatek z pravidel fóra PC-HELP:
    • Název tématu zvolte takový, aby co nejvýstižněji charakterizoval obsah tématu.
    • Nesnažte se řešit jiný problém (i když podobný) v jednom tématu. Raději založte nové téma.
  • Mýliti se je Myloš. ;-)

Uživatelský avatar
MiliNess
člen BSOD týmu
Master Level 9.5
Master Level 9.5
Příspěvky: 9112
Registrován: říjen 09
Bydliště: Cheb
Pohlaví: Muž
Stav:
Offline

Re: Dědí procesy (explicitně nastavenou) prioritu?

Příspěvekod MiliNess » 22 dub 2013 23:47

Dědí prioritu?

Proces standardně dědí základní prioritu od mateřského procesu. Tedy rodič na syna, sys na svého syna, syn syna na svého syna atd.
Pokud je ale proces vytvořen pomocí API funkce CreateProcess s parametrem dwCreationFlags definujícím jinou úroveň priority nebo je spuštěn pomocí příkazu start s parametry low, normal, high, realtime, abovenormal nebo belownormal, bude mít prioritu takovou, jaká je požadována v parametru.
Pokud spustíš cmd.exe s below normal a v něm např. zmíněný lame.exe, poběží také s úrovní below normal. Jestliže lame.exe vytvoří další proces pomocí funkce CreateProcess
a v paramertu dwCreationFlags nebude specifikovat žádnou úroveň priority, bude mít vytvořený proces úroveň stejnou jako lame.exe. Pokud v paramertu dwCreationFlags předá hodnotu např. NORMAL_PRIORITY_CLASS, bude mít nový proces základní prioritu normal, bez ohledu na to, jakou úroveň má lame.exe.
Jinak synovský proces dědí od rodiče spoustu dalších věcí.

A konečně – pokud potomek zdědí nižší prioritu, co se stane, když ukončím nadřízený, rodičovský proces?

Potomek bude mít stále stejnou prioritu, kterou zdědil od rodiče, a to až do své smrti (pokud není priorita změněna některou API funkcí, interně volající systémovou službu NtSetInformationProcess).
-každý má svou pravdu a ta se nemusí vždycky shodovat s tvou vlastní
-naše problémy jsou pouze v naší hlavě
-okolní svět není ani dobrý ani špatný, je mu zcela lhostejné, jestli existuješ
-nejdůležitější v životě je láska. Všechno ostatní jsou zbytečnosti


Zpět na “Windows 11, 10, 8...”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host