Folyamatok és szálak - studopediya

. Az általános koncepciója az eljárás a fent tárgyalt a 4.2.1 szakaszban, a Windows mivel osztja két fogalom: az aktuális folyamat és a menet (menet; a kifejezés áramot használnak egyes könyvek). Ebben az esetben a menet egy egységnyi munka, akkor részt vesz a versenyben CPU időt, megváltoztatja annak állapotát és kiemelt, a fent leírtak szerint az eljárásban. Ami a folyamat a Windows, ez állhat több szálat használó osztott memóriát a megnyitott fájlokat, és egyéb források tulajdonában a folyamatot. Dióhéjban: a folyamat - amelynek (memória, fájlok), menet - munka, miközben megosztják a forrásokat a folyamat. Azonban a szál is birtokol valamit: ablakok, üzenet sorban, egy verem.

A folyamat létrehoz egy indítási program (EXE-fájlok). Ugyanakkor a folyamat teremtett egy szál (ott kell valakit, hogy működik!). Létrehozása céljából végrehajtott folyamatot az API-funkció CreateProcess. A fő paraméterek a hívása a függvény a következők.

· A fájlnév a programok futtatására.

· Parancskarakterláncot telt el a folyamatot az indítás során.

· Védelem attribútumokat az újonnan létrehozott folyamat és cérna. És a folyamat és menet Windows kernel objektumok, és mint ilyen, meg lehet védeni a jogosulatlan hozzáférés (például kísérletek más folyamatok beavatkozni a folyamatba).

· Különböző zászlók, tisztázza az alkotás folyamatát módban. Köztük van a folyamat prioritása osztály, hibakeresési módot zászló (ebben az esetben a rendszer értesíti a szülő folyamat a cselekvés által generált folyamat), valamint létrehozta a zászló felfüggesztett folyamat, amely nem indul, amíg a funkció az úgynevezett újbóli munka.

· Blokk technológiai közeg.

· Az aktuális könyvtár a folyamat.

· A paraméterek az első ablakot kell nyitni, ha a folyamat elindul.

Ha a folyamat sikeresen létrejött, a CreateProcess függvény egy nem nulla értéket.

Miután létrehozott egy szál folyamat indul eljárás foganatosítására program párhuzamosan működő más szálak futó folyamatokat. Ha a logika a program magában foglalja a párhuzamos végrehajtás bármilyen intézkedés egyetlen folyamat, a további menetek lehet létrehozni. Ez használ a CreateThread funkciót. Fő paraméterek az alábbiak:

· Védelem tulajdonítja az újonnan létrehozott szál;

· Méret a menet verem;

· Beállítása egy mutatót, hogy átmenjen egy szál futtatása során valamilyen érték érvként;

· Flag szálat létrehozni egy felfüggesztett állapotban;

· Pointer egy változó, amely a függvény vissza kell térnie az ID a létrehozott szál.

CreateThread függvény visszatérési értéke a fogantyú által létrehozott szál, vagy NULL, az, ha nem volt lehetőség, hogy hozzon létre egy szál.

Egy tökéletes példa a többszálú program Microsoft Word. Míg a fő szál feldolgozza a bemenet a billentyűzet, külön szálban dinamikusan kiszámítja a partíció a szöveg az oldalon, egy másik szál is, ugyanakkor a dokumentum kinyomtatásához vagy elmentheti.

Ahhoz, hogy állítsa le a szálat a hívás ExitThread funkciót. Hogy teljes legyen az egész folyamat bármely menet hívhatjuk a funkciót ExitProcess. Az egyetlen paraméter minden ilyen funkció egy teljes kód egy szál vagy folyamat.

Az eljárás befejezése felszabadulásához vezet az összes erőforrás, amely tulajdonában volt a folyamat: a memória, a megnyitott fájlokat, stb

Az adagolás befejezése után a folyamat befejeződött annak összes szálak. Ezzel szemben, ha a folyamat befejeződött, és az utolsó szál befejezi a folyamatot.

Nem közismert, hogy a téma nem a legkisebb algoritmusok. Sőt, a Windows lehetővé teszi, hogy néhány szál szál (fiber), amely általánosságban leírható korutinokat vagy egy probléma a nem preemptív ütemezés, munka keretében egy és ugyanaz a probléma a preemptív ütemezés. Kapcsolási szál csak végre kifejezetten használatával SwitchToFiber funkciót. Használatáról szóló korutinokat látni. / Error! Referencia forrás nem található. /.

A feladat ütemező a választás a következő szál végre kell hajtani. Az ütemező felhozott három esetben:

· Ha az idő lejár szelet, a kiválasztott aktuális szál;

· Ha az aktuális szál okozott blokkoló funkciójának (pl, WaitForMultipleObjects vagy readfile), és kapcsolva a készenléti állapotban;

· Ha a szál magasabb prioritású felébredt a készenléti vagy nemrég indult.

Válassza ki a szál prioritási sor algoritmust használjuk. Valamennyi prioritási szintű rendszer vezet az összes aktív szál (azaz szálak, amelyek a készenléti állapotot). Van kiválasztva, hogy fut egy másik szál egy nem üres sorban a legmagasabb prioritást.

Sorban az aktív szál van pótolni szálak, ébredés után a várakozás állapotban és a fonal által kiszorított ütemező. Általános szabály, hogy a szál kerül a sorban. Ez alól kivételt képeznek a menet a kiszorított lejárta előtt annak idején szelet magasabb prioritást szál. Ez a „sértett” a szál kerül a sor a fejét.

Az érték az idő szelet Windows szerver telepítés rendszerint egyenlő 120 ms, a munkaállomások - 20 ms.

Mit gondol, miért a szerver órája szelet több?

Minden fonalak prioritási szintek számozása 0 (legalacsonyabb prioritás) 31 (legnagyobb). A szintek 16-31 nevezzük valós idejű prioritásokat. úgy tervezték, hogy végre időben kritikus rendszer működését. Csak maga a rendszer vagy a felhasználó rendszergazdai jogosultságokkal használhatja prioritása a csoportban. A szintek 0-15 nevezzük dinamikus prioritásokat.

A Windows a kétlépcsős rendszer a prioritásokat. Amikor létrehoz egy eljárás egy kijelölt (és utólag módosítható a program vagy a felhasználó), az egyik a négy prioritási osztályok. amelyek mindegyike társított alap prioritás:

· Valós idejű (alap prioritás 24) - a legmagasabb prioritású osztály, csak akkor érvényes, a rendszer folyamatok elfoglaló CPU egy nagyon rövid ideig;

· Nagy (bázis prioritása 13) - az osztály a magas prioritású folyamatok

· Normál (alap prioritás 8) - a szokásos prioritási osztálytól, amelybe a legtöbb elindított alkalmazás folyamatok

· Készenléti (bázis prioritása 4) - alsó (szó szerint - „idle” vagy „idle”) prioritási osztály, jellemző képernyővédők, figyeli a teljesítmény, és egyéb programok, amelyek nem zavarják élet egy fontos program.

Valójában nem egy társított prioritás a folyamatot, és amely minden egyes szál. meghatározzák a prioritást szál bázis prioritást a folyamat, amelyhez hozzáadjuk a relatív prioritását menet - mennyiség -2 és +2. A relatív fontosságot kap, a menet, amikor azt létrehozzák és meg lehet változtatni, ha szükséges. Van is egy lehetőség, hogy kezelje kiemelten kritikus menet (31, valós idejű folyamat 15, a többi), vagy egyetlen prioritás (16 folyamatok valós idejű 0 a többi).

A real-time szál prioritások folyamatok statikus abban az értelemben, hogy a rendszer nem próbálja megváltoztatni őket a saját. Feltételezzük, hogy ennek a csoportnak a folyamatok relatív prioritások legyen pontosan a tervek szerint programozó.

Eljárások esetében a három alsóbb osztályok prioritásukként nem véletlenül nevezik dinamikus. Az ütemező lehet változtatni a prioritásokat, és ezzel együtt a időrésben a szálak a végrehajtásuk során annak érdekében, hogy egy igazságosabb elosztását CPU időt. Szabályok változása a dinamikus prioritások a következők.

· Ha a blokkolt szál várni a megfelelő esemény neki, hogy a prioritás a menet hozzáadott érték függvényében a várakozásokat az oka. Ez a növekedés elérheti 6 egység (prioritás, de nem haladhatja meg a 15), ha a szál be van kapcsolva miatt billentyűleütés vagy egérkattintás. Ezáltal a rendszer csökkentheti a válaszidőt a felhasználói műveletekre. Amikor egy szál teljesen felhasználja idő szelet, erősítés csökken 1, amíg a szál prioritása nem tért vissza a célérték.

· Ha a szál birtokolja az előtérben ablakban (azaz, azokat, amelyekkel a felhasználó működik), a kedvéért csökkenti a reakcióidőt, az ütemező növelheti a időszelet számára, hogy fonalat 20 és 40 ms-os vagy 60 ms, attól függően, hogy a rendszer beállításait.

· Ha az ütemező azt észleli, hogy egy bizonyos szál összhangban több mint 3 másodpercig, majd felveti a prioritás egészen a 15. és megduplázza kvantum. De ez a szeretet egyetlen: amikor Hamupipőke menet fogja tölteni fokozott kvantum vagy blokkolt, a prioritás, és a kvantum visszatérés az előző értékeket. Az értelmes cselekvés egyértelmű: a rendszer megpróbálja legalább néhány folyamatban vannak, még az alacsony prioritású szál.

Kapcsolódó cikkek