Procesi Flashcards
- Što su procesi i kako se modeliraju?
Procesi su programi u izvođenju, uključuju trenutna stanja računala, registara i varijabli.
Modeliranje funkcionira na način da svaki program ima vlastiti tijek upravljanja te se istovremeno na CPU izvodi samo jedan proces.
- Navedite uobičajene događaje (i primjere) koji dovode do stvaranja procesa, te
objasnite razliku u stvaranju procesa u UNIXu/Linuxu i Windowsima.
- Inicijalizacija sustava - kod boot-a stvaraju se prednji i pozadinski - daemons procesi.
* Lista procesa: UNIX – ps, Windows – CTRL-ALT-DEL - Izvođenje sustavskog poziva za stvaranje procesa od strane pokrenutog procesa (postojeći proces izaziva sustavski poziv za stvaranje novog procesa)
- Zahtjev korisnika za stvaranje novog procesa - više otvorenih prozora u WIndowsima
- Iniciranje nakupine poslova (batch job) – korisnik postavlja poslove sustavu na izvođenje, a kada OS odluči da ima resursa za neki posao, kreira novi proces i pokreće sljedeći posao iz reda čekanja.
- Sustavski poziv: u UNIX-u, fork nakon kojega imamo dva procesa (roditelj i dijete) koji imaju jednaku sliku u memoriji, okolinu i otvorene datoteke. Dijete izvodi execve ili sličan poziv koji mijenja sliku u memoriji i pokreće novi program.
- Sustavski poziv: u Windows-ima CreateProcess obavlja kreiranje procesa i učitavanje odgovarajućeg programa u novi proces. Poziv ima 10 parametara
- U oba OS-a, nakon što je proces kreiran, i dijete i roditelj imaju vlastite odvojene adresne prostore
- Navedite uobičajene razloge (i primjere) i uvjete završetka procesa.
- Normalni izlazak (svojevoljno), nakon obavljenog posla. Npr. kada prevoditelj prevede program, on izvodi sustavski poziv kojim OS-u govori da je gotov (exit ili ExitProcess), ali i da nešto treba ukloniti.
2.** Izlazak zbog pogreske** (svojevoljno), odnosno otkrivene pogreške. Npr. pokrenemo prevoditelj cc foo.c, a programa foo.c nema (Pop-Up prozor)
- Fatalna pogreska (nije svojevoljno), često zbog pogreške u programu. Npr. izvođenje nepostojeće instrukcije, referenciranje nepostojeće adrese u memoriji, dijeljenje s 0.
- Ubijanje od strane drugog procesa (nije svojevoljno), gdje proces izvodi sustavski poziv koji OS-u govori da ubije neki drugi proces. Ubojica mora biti ovlašten za ubijanje. U UNIX-u je to kill, a u Windows TerminateProcess.
- Ukratko objasnite hijerarhiju procesa i razliku između Windowsa i UNIXa
- UNIX: proces, njegova djeca i daljnji nasljednici čine skupinu procesa. Kada korisnik tipkovnicom pošalje signal, on se prosljeđuje svim članovima skupine pridruženima tipkovnici, a proces ga može uhvatiti, ignorirati ili poduzeti neku “default” akciju.
Posebni proces init nalazi se u boot-u. Kad se pokrene, gleda broj terminala, a onda stvara jednog ili više novih procesa po terminalu. Oni čekaju da se netko prijavi, što opet može razgranati stablo procesa.
- Windows: nema hijerarhije procesa – svi su procesi jednaki. Ipak, kreiranom procesu roditelj daje posebnu oznaku (token), zvanu rukovatelj (handle) koju koristi za nadzor djeteta. Dijete može oznaku dati drugom procesu.
- Navedite barem 10 parametara iz svih skupina parametara iz tablice procesa
potrebnih pri implementiranju procesa.
Stack pointer,
Priority,
Registers,
Pointer to text segment,
Pointer to data segment,
Pointer to stack segment,
User ID,
Group ID,
Process ID
- Objasnite postupak razmjene procesa i stanje suspendiranosti procesa.
Razmjena procesa je premještanje dijela ili cijelog procesa iz glavne memorije na disk. Kada nijedan od procesa u glavnoj memoriji nije u stanju spremnosti, operacijski sustav premješta jedan od tih procesa na disk, a u glavnu memoriju učitava neki od spremnih procesa iz reda čekanja ili dozvoljava kreiranje novog procesa.
Proces je u suspendiranom stanju kada biva premješten na disk, a iz njega se može vratiti samo u stanje čekanja.
- Što su niti i kako se modeliraju?
Niti (dretve = threads) su dijelovi procesa koji se sastoje od:
- PC- pokazuje koja se instrukcija sljedeća izvodi
- registara - čuvaju trenutne vrijednosti varijabli
- stoga - sadrži povijest izvođenja
Sve niti dijele isti adresni prostor (time i globalne varijable, otvorene datoteke, childeove…) pa nisu neovisne.
- Navedite osnovne razlike između procesa i niti, te navedite parametre koji su
nužni pri implementiranju niti.
Razlike procesa i niti: procesi imaju različite adresne prostore,dok niti dijele isti; procesi predstavljaju način
objedinjavanja resursa, a niti postoje kao entiteti koji se izvode na CPU.
Parametri za implementaciju niti: PC, registri, stog, stanje
10.Navedite razloge korištenja niti i ukratko opišite jedan primjer korištenja niti, te
mogući način programskog ostvarenja višenitnosti.
Zašto niti? Zato što se u većini aplikacija više aktivnosti izvodi od jednom, pa povremeno mogu zablokirati.
Dekompozicijom aplikacije u višestruke slijedne niti koje se pokreću kvazi-paralelno, izvođenje je jednostavnije:
1. I procesi su omogućavali paralelizam, ali kod niti se radi o paralelnim entitetima koji dijele adresni prostor, a tako i sve pripadajuće podatke.
2. Niti nemaju pridružene resurse, pa ih je lakše kreirati i uništiti (oko 100x brže od procesa).
3. Performanse. Ukoliko rade samo na CPU, nema poboljšanja performansi, ali ako koriste CPU i U/I, te aktivnosti se
mogu preklopiti, a performanse poboljšati .
4. Niti su vrlo pogodne na višestrukim procesorima gdje je moguć i pravi paralelizam.
Primjer: Web poslužitelj (na zahtjev za stranicom, odgovara se njenim slanjem klijentu)
Neke stranice češće se dohvaćaju od ostalih. Njih poslužitelj smješta u glavnu memoriju, kako ne bi pristupao HDD-u. Taj sadržaj naziva se web cache. Dispečerska nit čita dolazne zahtjeve i bira slobodnu (blokiranu) radnu nit, te joj prosljeđuje zahtjev – tako je budi iz stanja blokirana u stanje pripravna. Tada radna nit provjerava je li traženi sadržaj u web cache-u. Ako nije, pokreće čitanje s diska, a druga radna nit prihvaća novi zahtjev.
11.Objasnite razliku između niti na korisničkoj razini te niti na razini jezgre.
Korisnička razina- jezgra ne zna ništa o tome i rukuje s njima kao s jednonitnim procesima pa se mogu implementirati
i u OS koji ne podržava niti
Razina jezgre- zna za niti i rukuje s njima
12.Što su Pthreads i kojim pozivima se njima upravlja.
POSIX threads, dozvoljavaju programu da kontrolira više različitih tokova rada koji se odvijaju u isto vrijeme
->Pthread_create, Pthread_exit, …_join, …_yield, …_attr_init, …_attr_destroy
13.Što je kritični odsječak i zašto je potreban? Objasnite po potrebi i slikom.
Dio programa u kojem proces pristupa dijeljenoj memoriji. Zabranjuje da više od jednog procesa čitaju ili pišu iz ili u dijeljeni prostor podataka u isto vrijeme - osigurati međusobno isključivanje (mutual exclusion).
14.Navedite četiri uvjeta koji omogućuju međusobno isključivanje.
- Dva procesa istovremeno ne mogu biti u kritičnom odsječku
- Ne rade se pretpostavke o brzinama i broju procesora
- Proces pokrenut izvan kritičnog odsječka ne može blokirati drugi proces
- Proces ne mora beskonačno čekati do ulaska u svoj kritični odsječak
15.Opišite razlike između poznatih problema kontrole istovremenosti u višenitnim
aplikacijama: međusobnog isključivanja, zastoja i gladovanja.
16.Navedite zahtjeve za komuniciranjem među procesima, te zahtjeve za komuniciranjem među nitima
Zahtjevi među procesima:
1. Prosljeđivanje informacije jednog procesa drugom procesu
2. Sprječavanje da procesi jedan drugom ulaze u kritične odsječke
3. Omogućavanje redoslijeda izvođenja koji poštuje međusobnu zavisnost među procesima
Zahtjevi među nitima:
1. primjenjiv za niti i to još lakše za niti u istom adresnom prostoru, a pod nadzorom procesa za niti u različitim
adresnim prostorima
2. jednako primjenjivo i za niti