fluxuri de lucru de sistem
Când Windows inițializare creează mai multe fire în timpul sistem, numit flux de lucru (fire de lucrător de sistem). Ele sunt destinate exclusiv pentru executarea de lucrări în numele altor fire. Bo fluxurile adesea realizată la nivelul «DPC / expediere», trebuie să numim aceste funcții, care pot fi cauzate doar la un ICCV inferior. De exemplu, DPC-procedura executat în contextul unui nivel de flux arbitrar la ICCV «DPC / expediere» (DPC poate uzurpa orice flux în sistem), este necesar să se aplice de memorie piscina Paged sau de așteptare în managerul de facilitatea de a se sincroniza cu fluxul de orice aplicație. Deoarece DPC-procedura nu se poate reduce ICCV, acesta trebuie să treacă fluxul de activitate, care va fi capabil să-l execute la ICCV de mai jos «DPC / expediere».
Unele dispozitive și componente ale driverelor executive ale sistemului creează propriile fluxuri de date privind nivelul «pasiv», ci utilizează fluxurile de lucru ale sistemului majoritar, care ajută la evitarea comutarea prea frecventă a fluxurilor și sarcină excesivă asupra memoriei din cauza programarea fluxurilor suplimentare. Un driver de dispozitiv sau sistem de cereri de componente de servicii executive sistem de flux de lucru prin intermediul sistemului de execuție funcția ExQueueWorkItem sau IoQueueWorkItem. Aceste funcții sunt plasate membru de operare (element de lucru), într-o coadă specială, verifică fluxul de lucru (a se vedea. Secțiunea „porturi IO finalizare“, capitolul 9).
Elementul de operare include un pointer la o procedură și un parametru transmis în flux această procedură, procesarea elementului de operare. Procedura pusă în aplicare de către conducătorul auto dispozitiv sau sistem de componente care rulează executiv la nivel de «pasivă».
De exemplu, DPC-procedura, care trebuie să aștepte pe dispecerul obiect poate iniția un element de lucru care indică procedura în driverul de așteptare la managerul facilitate, și, probabil, un pointer la un obiect. Ha unele etapă extractele de sistem de flux de lucru din coadă de un element de lucru și să urmeze procedura de conducător auto. După efectuarea verificărilor sale sistem de flux de lucru, dacă mai multe elemente de lucru pentru a fi procesate. Dacă nu, firul lucrător de sistem este blocat până când coada nu este un element nou de lucru va fi plasat. Efectuarea DPC-procedura nu poate avea ca rezultat procesarea sistemului său de operare membru al fluxului de lucru. (B punerea în aplicare a acestei proceduri uniprocesor a finalizat întotdeauna procesarea acesteia către elementul de acționare, deoarece «/ expediere DPC» nivel fluxurilor ICCV sunt planificate.)
Există trei tipuri de flux de lucru de sistem:
• amânate (întârziate fire lucrător) - efectuat cu o prioritate a 12 este tratată cu un element de operare non-critice de timp și pentru a permite descărcarea stack-ul său în fișierul pagina de pe elementele de lucru de așteptare;
• critice (fire de lucrător critice) - 13 sunt executate cu prioritate, tratate elemente critice ale timpului de lucru. B Windows Server le suprapunem este întotdeauna doar în memoria fizică;
• giperkritichny (filet muncitor hipercritica) - un singur fir care ruleaza cu prioritate 15. Stack-ul său este, de asemenea, întotdeauna în memorie. Process Manager utilizează elemente de lucru timp giperkritichnye pentru a efectua funcții, eliberând fluxurile finalizate.
Numărul de așteptare de sistem și de proces fluxuri critice generate funcția sistemului executiv ExpWorkerInitialization, care se numește în primele etape ale procesului de boot, depinde de capacitatea sistemului și dacă sistemul de server. Tabelul B prezintă cantitatea de 3-11 fluxurilor create inițial în configurații diferite de instalare. Puteți specifica ExpInitializeWorker crea până la o suplimentare de 16 aflate în așteptare și 16 fluxuri de lucru critice ale sistemului. Pentru a face acest lucru, utilizați opțiunile și AdditionalDelayedWorkerThreads AdditionalCri-ticalWorkerThreads în registru cheie HKLM \ SYSTEM \ CurrentControlSet Cont-Rol \ Session Manager \ Executive \.
sistem de acționare încearcă să echilibreze numărul de sistem critic de flux de lucru, în conformitate cu volumul de muncă actual. La fiecare al doilea executiv verificări ale sistemului funcția ExpWorkerThreadBalanceManager dacă este necesar pentru a crea un nou flux de lucru critic. Apropo, fluxul de lucru critic, de a crea funcții ExpWorkerTbread-BalanceManager, numit dinamic (fir de muncitor dinamic). Pentru a crea un astfel de flux de următoarele condiții trebuie să fie îndeplinite.
• elemente de lucru-queue critice nu ar trebui să fie gol.
• Numărul de flux critic inactiv (blocat în așteptare elemente de lucru sau obiecte în cazul în care procedura de operare controler) trebuie să fie mai mic decât numărul de procesoare din sistem.
• Sistemul B ar trebui să fie mai mică de 16, fluxuri de lucru dinamice.
flux dinamic este completă după 10 minute de inactivitate. B în funcție de sistemul de acționare poate crea volumul de muncă de până la 16 de astfel de fluxuri.