Windows - Programfuttatási prioritások

forráskód letöltése
A rendszerben futó programok prioritásának változtatásával jelentős teljesítménynövekedést lehet elérni az adott alkalmazásnál. Ezen túlmenően ha gyakrabban van szükség a normáltól eltérő prioritás elérésére, lehet készíteni egy menüt, ahonnan két kattintás után már fut is a program - a kívánt szinten. Cikkünkhöz mellékelve található egy Registry importállomány "HighPriority.reg" néven, ami az .EXE kiterjesztésű programok magas prioritással való futtatását könnyíti meg.

A futási prioritás lényege röviden abban rejlik, hogy a processzor nem tud egyszerre minden alkalmazással kommunikálni, ezért váltakozva szólítja meg őket, bonyolult rendszer szerint, kívülről ezt a szakaszosságot a felhasználó nem veszi észre. A magasabb prioritású programok több, míg az alacsonyabbak kevesebb időt kapnak. Minél több processzoridőt kap egy folyamat, annál hamarabb tudja elvégezni a feladatát. Két fő folyamatot különböztetünk meg a Windows-ban: előtérben futót (foreground) és háttérben futót (background). Előtérben futó - amit látunk, egy program ablaka, ami felhasználói beavatkozást igényel (vagy éppen nem igényel). Míg a háttérben futó látszólag láthatatlan a Feladatkezelő folyamatlistájában jó esetben szerepel, de lehet, hogy még ott sem. Működés közben foglalja az erőforrásokat. Ilyen folyamatok minden rendszerben vannak, de a kiszolgáló verziókban (Server, Advanced Server, Datacenter Server) nagyobb számban. A Web, FTP, levelezés és egyéb kiszolgáló programok gyakorlatilag mind ezen rendszer szerint működnek.
Optimális teljesítményhez a kettő közül annak a folyamattípusnak kell nagyobb prioritást adni, amelyikből több van, vagy fontosabb feladatokat lát el. A Windows 2000 minden verziójában ugyanúgy válthatunk át: Tallózzunk el a Vezérlőpult > Rendszer > Speciális > Teljesítménybeállítások (Control Panel > System > Advanced > Performance Options) oldalra és az "Alkalmazásteljesítmény" ("Application response") alatti "Alkalmazásokra" ("Applications") - előtérben futó és "Háttérszolgáltatásokra" ("Background services") rádiógombok kiválasztásával elérhetjük a kívánt eredményt. Professional-ben az előbbi, míg a szerver verziókban az utóbbi az alapértelmezett.

Azonban nem minden számítógépen határozható meg ennyire egyértelműen a teljesítményigény. Lehet egy alkalmazáscsoport háttérben, egy másik pedig előtérben futó folyamat és mindkettő egyformán fontos. Továbbá a csoportok tagjai is igényelhetnek különböző prioritást. Ekkor jön jól a Windows 2000-nek az a funkciója, hogy folyamatonként lehet beállítani a prioritást. Minden program folyamatban fut, van amelyik csak egyben, de van olyan is amelyik többet is elindít. A prioritás váltás bemutatásához szükség van néhány futó programra. Nyomjuk le a SHIFT billentyűt és kattintsunk a Start > Programok > Kellékek (Start > Programs > Accessories) menüre, ezen belül pedig a Jegyzettömb (Notepad), Paint és Számológép (Calculator) programokra. A SHIFT végig lenyomva marad, hogy ne záródjon mindig be a Start menü. Elindult a három alkalmazás, most nyomjuk le a CTRL+ALT+DEL billentyűkombinációt és a megjelenő ablakban kattintsunk a "Feladatkezelő" ("Task Manager") gombra (rövidebben SHIFT+CTRL+ESC). A "Folyamatok" ("Processes") oldalon láthatjuk a rendszerben éppen futó alkalmazások által elindított folyamatokat. Kattintsunk rá az egyikre a jobb oldali egérgombbal és nézzük meg a "Prioritás beállítása" ("Set Priority") menüsorból megnyíló elemeket. Itt állíthatjuk be az adott folyamat futási prioritását. A "Valós idejű" ("Realtime") jelenti a legmagasabbat, ennek kiválasztása után a processzor szinte teljesen csak az adott folyamattal foglalkozik és kismértékben minden mással. Szinte teljesen ki leszünk rekesztve a rendszerből, ezért vigyázni kell a valós idő kiosztásával. Általában olyan folyamatoknál szokás használni, amelyek egy idő után véget érnek (pl. video tömörítés) vagy akkor, ha azt a számítógépet nem használják másra csak arra az egy feladatra. Az előbb elindított programjainknak is ezzel a módszerrel változtathatjuk meg a prioritását, ha megkeressük a folyamat listában a nevüket. Nem minden program szerepel a folyamatok között ugyanolyan névvel, mint ami az indító .EXE fájl és főleg nem, mint a Start menüben szereplő neve volt.

A könnyebb megtalálhatóság végett kattintsunk a Feladatkezelő "Alkalmazások" ("Applications") fülére, az itteni listában a futó alkalmazások beszédes nevei, esetleg elérési útjai és ikonjai szerepelnek. Válasszuk ki az alkalmazásunkat (például a Számológépet (Calculator)), kattintsunk rá a jobb oldali egérgombbal és a menüben válasszuk az "Ugrás folyamatra" ("Go To Process") sort. Ismét a "Folyamatok" ("Processes") oldal lesz előtérben a kiválasztott alkalmazásunkkal a fókuszban. Ha a Számológépet jelöltük ki, most a "calc.exe" kezdetű soron találjuk a fókuszt (ismételjük ezt el a másik két programunkkal is).

Kezdetben minden program "Normál" ("Normal") prioritással indul, de előfordulhat, hogy gyakran kell "Magas"-at ("High") adni bizonyos programoknak. A fenti módszerek alkalmazása ebben az esetben elég nehézkes és lassú. Van egy trükk, amivel az EXE fájlok menüjéhez hozzárendelhető a prioritás állítás. Ez a speciális menüelem akkor jelenik meg, amikor az Intéző-ben ("Explorer") a jobb oldali egérgombbal kattintunk a fájlon. Aktivizálásához a regisztrációs adatbázisban kell némi változtatást eszközölnünk. Indítsuk el a REGEDIT.EXE programot a Start > Futtatás (Start > Run) - rövidebben: WIN+R - menüben és keressük meg a következő helyet:
HKEY_CLASSES_ROOT\exefile\shell\

Hozzuk létre a "XQSHP" kulcsot "@="Futtatás magas prioritással"" értékkel.
Ezen belül pedig a "Command" kulcsot az alábbi értékkel:
HKEY_CLASSES_ROOT\exefile\shell\XQSHP\Command
@="E:\\WINNT\\System32\\cmd.exe /c start \"XQSHP\" /High \"%1\""

Cikkünk mellékletében megtalálható a megvalósító Registry import állomány. Elég az Intéző-ben (Explorer) lefuttatni és létrejönnek a megfelelő értékek.

Ezek után szintén az Intéző-ben (Explorer) kattintsunk a %systemroot% könyvtárban (általában c:\winnt) a NOTEPAD nevű fájlra a jobb oldali egérgombbal és a megjelenő menüben válasszuk az általunk létrehozott " Futtatás magas prioritással" sort. Elindul a Jegyzettömb (Notepad) program, most a CTRL+SHIFT+ESC billentyűkkel indítsuk el a Feladatkezelőt (Task Manager), lépjünk az "Alkalmazások" ("Applications") oldalra, kattintsunk a jobb oldali egérgombbal a Jegyzettömb-re (Notepad), majd az "Ugrás folyamatra" ("Go To Process") menüre. Ezzel átváltottunk a "Folyamatok" ("Processes") oldalra, itt ismét csak a jobb oldali egérgombbal kell kattintani, ezúttal a fókuszban lévő NOTEPAD.EXE-n. Nézzük meg a "Prioritás beállítása" ("Set Priority") menü kiterjesztését, a Jegyzettömb (Notepad) "Magas" értéket kapott.

Összesen 6 prioritás érték közül lehet választani a Registry bejegyzés @="E:\\WINNT\\System32\\cmd.exe /c start \"XQSHP\" /High \"%1\"" sorában a "High" értéket kell lecserélni az alábbiak szerint:
1. RealTime - Valós idejű
2. High - Magas
3. AboveNormal - Normál feletti
4. Normal - Normál
5. BelowNormal - Normál alatti
6. Low - Alacsony

Ezenkívül a "@="Futtatás magas prioritással"" menüsort is célszerű a prioritás értéknek megfelelően átírni.