Megosztás a következőn keresztül:


Beágyazott feladatok

Az alkalmazások beágyazott feladatokkal kezelhetik a folyamatok részhalmazait. A beágyazott feladatok olyan alkalmazásokat is engedélyeznek, amelyek más, szintén feladatokat használó alkalmazások üzemeltetésére használják a feladatokat.

Windows 7, Windows Server 2008 R2, Windows XP SP3, Windows Server 2008, Windows Vista és Windows Server 2003: Egy folyamat csak egyetlen feladathoz társítható. A beágyazott feladatok a Windows 8-ban és a Windows Server 2012-ben lettek bevezetve.

Ez a témakör áttekintést nyújt a feladatok beágyazásáról és a beágyazott feladatok viselkedéséről:

A feladatokról és a feladatobjektumokról a Feladatobjektumokcímű témakörben talál általános információt.

Beágyazott feladathierarchiák

A beágyazott feladatok szülő-gyermek kapcsolatban vannak, amelyben minden gyermekfeladat a szülőfeladat folyamatainak egy részét tartalmazza. Ha egy feladatban már szereplő folyamat egy másik feladathoz van hozzáadva, a feladatok alapértelmezés szerint beágyazottak, ha a rendszer érvényes feladathierarchiát tud alkotni, és egyik feladat sem állít be felhasználói felületi korlátokat (SetInformationJobObjectJobObjectBasicUIRestrictions).

Az 1. ábra egy P0–P7 címkével ellátott folyamatfát tartalmazó feladathierarchiát mutat be. Az 1. feladat a 2. és a 4. feladat szülőfeladata, és a 3. feladat őse. A 2. feladat a 3. feladat közvetlen szülő ; A 3. feladat a 2. feladat közvetlen gyermek . Az 1., a 2. és a 3. feladat feladatláncot alkot, amelyben az 1. és a 2. feladat a 3. feladat szülőfeladat-lánca. A feladatlánc végfeladata a feladat folyamatainak azonnali. Az 1. ábrán a 3. feladat a P2, P3 és P4 folyamatok azonnali feladata.

1. ábra. egy beágyazott feladathierarchia, amely egy folyamatfát

A beágyazott feladatok a társfolyamatok csoportjainak kezelésére is használhatók. A 2. ábrán látható feladathierarchiában az 1. feladat a 2. feladat szülőfeladata. Vegye figyelembe, hogy a feladathierarchiák csak egy folyamatfa egy részét tartalmazhatják. A 2. ábrán a P0 nem szerepel a hierarchiában, de a P1–P5 gyermekfolyamatai igen.

2. ábra. társfolyamatokat tartalmazó beágyazott feladathierarchia

Beágyazott feladathierarchiák létrehozása

A feladathierarchiában lévő folyamatok vagy explicit módon vannak hozzárendelve egy feladatobjektumhoz a AssignProcessToJobObject függvénnyel, vagy implicit módon vannak társítva a folyamatlétrehozás során, ugyanúgy, mint az önálló feladatok esetében. A feladatok létrehozásának és a folyamatok hozzárendelésének sorrendje határozza meg, hogy létre lehet-e hozni egy hierarchiát.

Ha explicit társítással szeretne feladathierarchiát létrehozni, minden feladatobjektumot létre kell hozni CreateJobObjecthasználatával, majd AssignProcessToJobObject minden folyamathoz többször kell meghívni a folyamatot minden olyan feladathoz, amelyhez tartoznia kell. A feladathierarchia érvényességének biztosításához először rendelje hozzá az összes folyamatot a feladathoz a hierarchia gyökerénél, majd rendelje hozzá a folyamatok egy részhalmazát az azonnali gyermekfeladat-objektumhoz, és így tovább. Ha a folyamatok ebben a sorrendben vannak hozzárendelve a feladatokhoz, a gyermekfeladatok mindig a folyamatok egy részhalmazával rendelkeznek a szülőfeladatban a hierarchia létrehozásakor, ami a beágyazáshoz szükséges. Ha a folyamatok véletlenszerű sorrendben vannak hozzárendelve a feladatokhoz, egy gyermekfeladat egy bizonyos pontján olyan folyamatok lesznek, amelyek nem szerepelnek a szülőfeladatban. Ez beágyazással nem engedélyezett, és AssignProcessToJobObject sikertelen lesz.

Ha a folyamatok implicit módon kapcsolódnak egy feladathoz a folyamat létrehozása során, a gyermekfolyamat a szülőfolyamat feladatláncában lévő összes feladathoz társítva lesz. Ha az azonnali feladatobjektum lehetővé teszi a szakítást, a gyermekfolyamat megszakad az azonnali feladatobjektumtól és a szülőfeladatlánc minden feladatától, és feljebb lép a hierarchián, amíg el nem éri azt a feladatot, amely nem teszi lehetővé a megszakítást. Ha az azonnali feladatobjektum nem engedélyezi a szakítást, a gyermekfolyamat akkor sem szakad el, ha a szülőfeladat-láncban lévő feladatok engedélyezik.

Feladatkorlátok és értesítések beágyazott feladatokhoz

Bizonyos erőforráskorlátok esetén a szülőfeladat-láncban lévő feladatokra vonatkozó korlát határozza meg a gyermekfeladatokra érvényes érvényes korlátot. A gyermekfeladatok tényleges korlátja szigorúbb lehet, mint a szülő korlátja, de nem lehet kevésbé korlátozó. Ha például egy gyermekfeladat prioritási osztálya ABOVE_NORMAL_PRIORITY_CLASS, és a szülőfeladat prioritási osztálya NORMAL_PRIORITY_CLASS, a gyermekfeladat folyamatainak érvényes korlátja NORMAL_PRIORITY_CLASS. Ha azonban a gyermekfeladat prioritási osztálya BELOW_NORMAL_PRIORITY_CLASS, a gyermekfeladat folyamatainak érvényes korlátja BELOW_NORMAL_PRIORITY_CLASS. A rendszer érvényes korlátokat kényszerít a prioritási osztályra, az affinitásra, a véglegesítési díjra, a folyamatonkénti végrehajtási időkorlátra, az ütemezési osztálykorlátra és a munkakészlet minimális és maximális értékére. Az egyes erőforráskorlátokkal kapcsolatos további információkért lásd SetInformationJobObject című témakört.

Bizonyos események , például új folyamat létrehozása vagy erőforráskorlát megsértése esetén a rendszer üzenetet küld a feladathoz társított I/O-befejezési portra. A feladatok regisztrálhatnak is, hogy értesítéseket kapjanak bizonyos korlátok túllépése esetén. Nem beágyazott feladatok esetén a rendszer elküldi az üzenetet a feladathoz társított I/O befejezési portra. Beágyazott feladatok esetén a rendszer minden olyan I/O-befejezési portra elküldi az üzenetet, amely az üzenetet aktiváló feladat szülőfeladat-láncában lévő feladathoz van társítva. A gyermekfeladatoknak nem kell társított I/O-befejezési portokkal rendelkezniük azokhoz az üzenetekhez, amelyeket a rendszer a feladatláncban magasabb szintű szülőfeladatok I/O-befejezési portjaira küld. Az egyes üzenetekről további információt a JOBOBJECT_ASSOCIATE_COMPLETION_PORTcímű témakörben talál.

Beágyazott feladatok erőforrás-nyilvántartása

A beágyazott feladatok erőforrás-nyilvántartási adatai az adott feladathoz társított összes folyamat használatát ismertetik, beleértve a gyermekfeladatok folyamatait is. A feladatlánc minden egyes feladata ezért a saját folyamatai által használt összesített erőforrásokat és a feladatlánc alatt lévő összes gyermekfeladat folyamatait jelöli.

Beágyazott feladatok leállítása

Egy feladathierarchiában lévő feladat leállásakor a rendszer leállítja az adott feladatban és annak összes gyermekfeladatában lévő folyamatokat, kezdve a gyermekfeladattal a hierarchia alján. Az egyes leállított folyamatok által használt fennmaradó erőforrásokat a szülőfeladat terheli.

A feladatkezelőnek rendelkeznie kell a JOB_OBJECT_TERMINATE hozzáféréssel, ugyanúgy, mint az önálló feladatok esetében.