Niti operativnih sistema

Niti (eng. threads) su delovi jednog procesa i izvršavaju se korištenjem resursa koji su njemu pridruženi, a osim resursa poseduje svoje registre, programski broj i stek, a razlikuje ih i jedinstveni identifikator. U moderno vreme operativni sistemi obično podržavaju koncept niti koje predstavljaju osnovne jedinice za izvršavanje u okviru procesa.

Elementi zajednički za sve niti u jednom procesu su: Kod segment, segment podataka, podaci o otvorenim fajlovima itd. Ovakvim pristupom se smanjuje zauzeti prostor i omogućava se da više niti obavlja različite zadatke u okviru jednog procesa. Korištenjem niti se pruža mogućnost da se bolje iskoriste prednosti koje donosi višeprocesorska arhitektura, dok rad sa više niti podrazumeva mogućnost operativnog sistema da podrži konkretno ili paralelno izvršavanje više niti. Na početku izvršavanja svaki proces dobija svoj memorijski prostor i kontrolnu nit. Ova nit ima zadatak da obavi potrebne inicijalizacije i kreira ostale niti koje su potrebne za izvršenje procesa. S obzirom da niti imaju sve karakteristike procesa, pri čemu neke resurse dele sa drugim nitima, često ih nazivamo i lakim procesima.

Prednosti korištenja niti

uredi

Korištenje niti donosi mnoge prednosti. Prvenstveno omogućavaju značajne uštede memorijskog prostora i vremena. Niti dele memoriju i neke resurse koji pripadaju istom procesu tako da zauzimaju manje prostora nego kada su u pitanju nezavisni procesi. Niti se kreiraju mnogo brže od procesa a i prebacivanje konteksta između niti istog procesa je brže od prebacivanja konteksta između procesa jer se prebacuju samo resursi koji su jedinstveni za niti, registri i programski brojač.

Preslikavanje

uredi

Prebacivanje samo resursa se postiže preslikavanjem (mapiranjem) korisničkih u niti jezgra. Najčešća podržana preslikavanja su:

  • Preslikavanje više u jednu;
  • preslikavanje jedna u jednu
  • i preslikavanje više u više.
Preslikavanje više u jednu
uredi

Preslikavanje više u jednu (many-to-one) podrazumeva da se više korisničkih niti, sve koje pripadaju jednom procesu, preslikaju u jednu nit jezgra. Broj niti jezgra je u ovom slučaju jednak broju procesa koji postoje u sistemu. Dakle, jezgro manipuliše isključivo sa procesima, tako da sve niti jednog procesa izvršavaju kroz jednu nit jezgra. Kod ovakvog pristupa, nitima se upravlja iz korisničkog režima bez uticaja jezgra OS.

Odluke o tome koja će se korisnička nit izvršavato donose se na korisničkom nivou. Međutim, jezgro operativnog sistema i dalje upravlja procesima i donosi odluke koja će se od niti jezgra izvršavati na procesoru. Obično se kreiranje, raspoređivanje i upravljanje korisničkim nitima omogućava implementacijom posebnih biblioteka čija je osnovna funkcija da na korisničkom nivou pruže podršku za rad sa nitima.