OPERATIVNI SISTEMI
KONKURENTNI PROCESI
Nit (thread) je entitet koji se izvršava koristeći program i druge resurse od pridruženog procesa. Svaka nit je pridružena nekom procesu. Jednom procesu se može pridružiti više niti. Rad sa više niti (multithreading) se odnosi na mogućnost operativnog sistema da podrži izvršavanje više niti u okviru jednog procesa. Tradicionalan pristup je izvršavanje jedne niti po procesu. Primjeri operativnih sistema sa takvim pristupom su MS-DOS i više verzija UNIX-a. Većina savremenih operativnih sistema podržava niti. Na primjer, sve novije verzije operativnog sistema Windows i Solaris podržavaju rad sa nitima. Takođe, savremeni programski jezici kao što su Ada i Java podržavaju niti.
Proces je definisan parom <program, procesor>. Paralelno (uporedno, istovremeno, konkurentno) izvršavanje više procesa je moguće samo ako se računarski sistem sastoji od više centralnih procesora. Za takav računarski sistem se kaže da je višeprocesorski. Na sistemu sa jednim procesorom moguće je samo kvaziparalelno izvršavanje procesa. U bilo kom trenutku izvršava se samo jedan proces. Primjer kvaziparalelnih procesa R1, R2 i R3 je prikazan na slici dole lijevo. Primjer paralelnih procesa R1, R2 i R3 je dat na slici dole desno. Pretpostavljeno je da sistem ima 3 procesora i da se na svakom od njih izvršava samo po jedan proces.
Jedna nit može da zahtjeva servis neke druge niti. Tada ta nit mora da sačeka da se pozvani servis završi. Potreban je mehanizam sinhronizacije jedne niti sa drugom niti ili sa hardverom. To se može uraditi pomoću signala koji ima značenje da je pozvani dio posla završen.
Konkurentne niti su niti koje se izvršavaju u isto vrijeme. Konkurentne niti mogu da se takmiče za ekskluzivno korišćenje resursa. Niti mogu da postavljaju istovremene zahtjeve za istim resursom ili istim servisom. Operativni sistem mora da obezbijedi interakciju između konkurentnih niti. Kritična sekcija je segment koda čije instrukcije mogu da utiču na druge niti. Kada jedna nit izvršava kritičnu sekciju ni jedna druga nit ne smije da izvršava tu istu kritičnu sekciju.
Slika 3.
Teškoće koje nastaju u softverskoj realizaciji algoritama za upravljanje kritičnim sekcijama su:
- stalno testiranje promjenljivih ili stanja čekanja, što troši procesorsko vrijeme,
- svi detalji implementacije direktno zavise od programera i mogucnost greške je uvijek prisutna,
- ne postoji način da se nametne protokol koji zavisi od kooperacije, programer može da izostavi neki dio,
- ovi protokoli su suviše komplikovani.
Problem upravljanja konkurentnim procesima
Upravljanje konkurentnim procesima usložnjava operativne sisteme. Za upravljanje konkurentnim procesima potrebno je da:
- Metod za dijeljenje vremena mora da bude implementiran tako da omogući svakom od kreiranih procesa da dobije pristup sistemu. Ovaj metod uključuje mogućnost prekidanja onih procesa koji ne ustupaju procesor dovoljno.
- Proces i sistemski resursi moraju da imaju zaštitu i moraju da budu zaštićeni međusobno. Veličina memorije koju dati proces može da koristi mora da bude ograničena za bilo koji proces, kao i operacije koje može da izvršava na uređajima kao što su diskovi.
- Sistem ima ugrađene mehanizme unutar jezgra za prevenciju potpunog zastoja između procesa.
Index
|