![]() |
Implementirani so kot objekti in do njih dostopamo preko upravnika objektov |
![]() |
Imajo lahko ve� niti, ki se izvajajo v skupnem naslovnem prostoru |
![]() |
Tako objekti - procesi kot objekti - niti imajo vgrajeno zmo�nost sinhronizacije |
![]() |
Upravnik procesov ne vzdr�uje nobenih relacij o�e - sin o procesih, ki jih tvori. |
Proces vsebuje naslednje:
![]() |
Izvr�ljivi program, ki dolo�a za�etno kodo in podatke. |
![]() |
Privatni naslovni prostor, ki je del virtualnega prostora, ki je na voljo procesu. |
![]() |
Sistemske resurse, kot so semaforji, komunikacijska vrata in datoteke. |
![]() |
Najmanj eno nit, sicer se proces ne more izvajati. |
![]() |
Vsakemu procesu Windows 2000 ustreza v izvajalniku procesni
blok (EPROCESS, executive process block).
Slika poenostavljeno prikazuje strukture, ki opisujejo proces. Izvajalnikov procesni blok (EPROCESS)
|
![]() |
ID klijenta |
![]() |
Vsebina registrov, ki predstavljajo stanje procesorja |
![]() |
Dva sklada, enega uporablja nit v uporabni�ken re�imu, drugega pa v sistemskem (kernel) |
![]() |
Privatno pomnilno podro�je, ki ga uporabljajo podsistemi, in knji�nice (vklju�no z dinami�no povezanimi knji�nicami (DLL)) |
![]() |
Dinami�na prioriteta niti (to je prioriteta v danem trenutku) |
![]() |
Osnovna (base) prioriteta (to je spodnja limita dinami�ne prioritete) |
![]() |
Afiniteto niti, ki pove, na katerih procesorjih ve�procesorskega sistema lahko nit te�e. Afiniteta niti je torej seznam, ki je podmno�ica afinitete procesa. |
![]() |
Opozorilna zastavica (alert status flag), ki pove, da mora nit izvesti asinhroni klic procedure. |
![]() |
Skupni �as izvajanja niti |
![]() |
�tevilo prekinitev (kolikokrat je bila nit prekinjena, ne da bi bil njen potek obnovljen. |
![]() |
Za�asni dostopni �eton (impersonation token), ki omogo�i, da nit izvede operacije (servis) za nek drug proces. To uporabljajo podsistemi. |
![]() |
Zaklju�na vrata (termination port), to je medprocesni komunikacijski kanal, po katerem upravnik procesov pove, da je nit kon�ala izvajanje. |
![]() |
Izstopni status niti |
Poleg atributov ima vsak objekt niti �e naslednje metode (servise)
![]() |
Tvori nit (create) |
![]() |
Odpri nit (open) |
![]() |
Vpogled v stanje niti (query) |
![]() |
Set stanje niti (set) |
![]() |
Dobi kontekst niti (get) |
![]() |
Nastavi kontekst niti (set) |
![]() |
Teko�a (current) nit |
![]() |
Zaklju�i (terminate) nit |
![]() |
Prekini (suspend) nit |
![]() |
Obnovi (resume) izvajanje niti |
![]() |
Opozori (alert) nit |
![]() |
Preveri opozorilno zastavico niti (test alert) |
![]() |
Registriraj zaklju�na vrata |
Najbolj preprosta in dokaj pogosta oblika komunikacije med nitmi je sinhronizacija, pri kateri lahko posamezna nit prekine svoje izvajanje in �aka na zaklju�ek operacije neke druge niti.
Objekti, ki tako sinhronizacijo omogo�ajo, so:
![]() |
Procesi |
![]() |
Niti |
![]() |
Datoteke |
![]() |
Dogodki |
![]() |
Dogodkovni pari |
![]() |
Semaforji |
![]() |
�asovniki (timer) |
![]() |
Mutanti |
V nekaterih primerih lahko nit z opozorilom (alert) sporo�i neki
drugi niti, naj prekine svoje delo. Ta na�in sinhronizacije se uporablja
pri asinhronem klicu procedur (APC).
Procesorska afiniteta je podatek, na katerih procesorjih lahko ta proces te�e (�e imamo ve�procesorski sistem). Niti imajo svoje lokalne procesorske afinitete, ki so podmno�ica procesorske afinitete danega procesa.
Procesorska afiniteta je pomembna pri razvr��anju niti (thread scheduling). Razvr��evalnik izbere posamezno nit glede na njeno prioriteto, nato pa pogleda, na katerem procesorju lahko te�e.
Niti imajo (ve�inoma) spremenljivo prioriteto. Glede na trenutni prednosti nivo �akajo v ustrezni �akalni vrsti. Razvr��evalnik dvigne njen nivo, ko nit zapusti stanje �akanja na nek vir (waiting state). Vsaki�, ko nit prekine, ji prednostni nivo zni�a. Tako preidejo ra�unsko intenzivne niti na najni�ji (to je osnovni) prednostni nivo.
Ko je nit izbrana za izvajanje, preide kon�no v teko�e (running) stanje. Pri tem mora priti do preklopa konteksta (context switching). To pomeni, da se vsebina registrov uporabljenega procesorja shrani na sistemski sklad niti (kernel stack). Iz sistemskega sklada izbrane niti pa se rekonstruira nova (torej nekdaj prej shranjena) vsebina registrov. To zado��a, �e pripadata prekinjena in novoizbrana nit istemu procesu )in torej delujeta v istem naslovnem prostoru). V nasprotnem primeru pa mora priti �e do rekonstrukcije naslovov strani.
![]() |
Sistem Windows 2000 uporablja 32 prednostnih nivojev:
|
![]() |
Razvr��evalnik uporablja �akalno vrsto (dispatcher ready queue), ki je pravzaprav skupina �akalnih vrst, po ena za vsak nivo prednosti. |
![]() |
Sistem dvigne prednost niti pa prehodu iz stanja �akanja
(na primer po vhodno izhodni operaciji).
Po vsakem izteku �asovne rezine (kvantuma) prednost niti zni�a (a ne pod bazni nivo) |
Kvantum �asa je �asovna rezina, ki je na voljo posameznim nitim v stanju, ko so teko�e.