A létrehozásának szükségességét munkafolyamatok - studopediya
Bármilyen futtatható kódját, valamint a vezető kód fut keretében egy patak. Még nem tárgyalt a módszereket, amelyek a vezető is létrehozhatunk saját patak, így azt feltételezzük, hogy az áramlás, amelyben a vezető kódvégrehajtáskor tartozik egy adott alkalmazás. Ez azt jelenti, hogy az alkalmazás létrehoz egy szálat, hogy végre a kódot, nem a kódot a járművezetők. Ha a vezető kódot állít elő egy hosszú folyamat, vagy a járművezető egy szinkronizációs mechanizmus azzal az elvárással, a kibocsátás néhány forrás, alkalmazás kódját, amelyre a teljesítménynövekedés és a szálak, nem teljesül. Ha ez az áramlás az egyetlen a pályázati eljárás, az alkalmazás „lefagy” program.
Ha a helyzet következett be, a kontroll funkciók egy felső szintű vezető, „csak” a „lógott” alkalmazási program közvetlen kölcsönhatásba lép a driver. Ebben az esetben az alkalmazás tisztában van ezzel a lehetőséggel, és lehet, hogy a művelet interakció a vezető (olvasás, írás, küld vezérlési kódok) egy külön téma. Ebben az esetben a gépjárművezető nem kell aggódnia az alkalmazást. Ez a helyzet azonban meglehetősen ritka. Nagyon gyakran, a vezető kód fut keretében véletlenszerű áramlását, azaz tetszőleges áramlását a rendszerben. Ez az üzenet nem tud semmit a mi vezető és a fenti helyzet elfogadhatatlan. Ebben az esetben a vezető létre kell hoznunk saját patak rendelkezésre arra, hogy a hosszú távú kezelés és várakozási erőforrás felszabadítás.
Egy másik lehetséges helyzetet, amely előírja a kötelező létrehozását flow - amikor a járművezetőnek meg kell végre műveleteket IRQL szinten
[12.2] Rendszer munkafolyamatok (Rendszer szálat WorkItems)
Alatt NT rendszer indítása teremt több szálat a System folyamat. Ezek az áramok használata csak az a munka elvégzésére által kért egyéb szálak. Az ilyen áramlások a leghasznosabbak az esetekben, ahol az áramlás emelkedett IRQL elvégzéséhez szükséges munkát IRQL PASSIVE_LEVEL szinten.
Elvileg lehet létrehozni egy új téma, de létrehoz egy új szál ütemező és a tervezés több erőforrást igényel, mint egy meglévő patak. A legtöbb operációs rendszer szabványos alkatrészek, például a fájlrendszer felhasznált összetevők igényeinek teljes rendszer munkafolyamatokat.
Vannak olyan helyzetek, amelyekben a rendszer munkafolyamatok elfogadhatatlan, tekintettel a szervezetük. Egy ilyen helyzet, hogy szükség van a hosszú távú (több száz mikroszekundum) feldolgozása a falon vagy a hosszú várakozás a kiadás egy forrás vagy esemény. Ezekben az esetekben a vezetőnek meg kell létrehozni a saját téma.
Háromféle rendszer munkafolyamatok: Késleltetett (késleltetett), Critical (kritikus) és hiperkritíkus (szuperkritikus). Minden típusú szálak létrehozott IRQL PASSIVE_LEVEL szinten. Minden típusú áramlási más lesz:
· A szálak száma típusú
· Alap ütemezési prioritás flow típusú
· Minden működő elemek
A száma minden egyes típusú folyamok kapacitásától függ, és az operációs rendszer típusát. Az 1. táblázat mutatja a számot az áramlások, és ütemezési prioritás az alap OS Win2K Professional és Server.
Táblázat 1.Number rendszer szálat
Típus munkafolyamat
Meg kell jegyezni, hogy a használata egyetlen típusú áramlási hiperkritíkus nem dokumentálták. OS használja ezt a szálat, hogy végre a funkció - a tisztítást, amely megszabadítja folyik, amikor befejeződött.
A beállítás a művelet tagja pedig jelzi a flow típusú, amely a működtető tag.
Dolgozni egy rendszert szálat, van 2 db funkciók - a funkciók az Ex előtagot. és funkciók előtaggal Io. Funkciók Ex előtag használt OS NT 4.0 és korábbi verziói, és WIN2K elavultnak tekinthető.
Mindenesetre, az első vezető kell inicializálni a működtető tag útján ExInitializeWorkItem () vagy IoAllocateWorkItem (), helyezzük a munka elem a sorban keresztül ExQueueWorkItem () vagy IoQueueWorkItem (), illetve a start funkció meghatározott működési tagja, ezt a funkciót kell hagyják források dolgozó elem keresztül ExFreePool () vagy IoFreeWorkItem ().