Vikigimnazijalac:Operativni sistemi/Kontrolni blok procesa
Da bi operativni sistemi bili u mogućnosti da vode preciznu evidenciju o procesima, obično se koriste strukture podataka koje čuvaju informacije o svakom pokrenutom procesu. Ova dinamička struktura se naziva Kontrolni blok procesa i sadrži najznačajnije podatke koji omogućavaju identifikaciju i upravljanje procesima. Nikad se ne nalazi u istom memorijskom područiju kao i proces. Zbog podataka u kontrolnom bloku proces se može prekidati i nastavljati više puta.
U većini implementacija operativnih sistema kontrolni blok procesa sadrži sledeće informacije o procesima:
- Jedinstveni identifikator procesa (Process ID – PID) – broj koji proces dobija u trenutku pokretanja. Svi procesi na jednom sistemu imaju različite PID-ove, čime je sistemu omogućeno da ih razlikuje na krajnje jednostavan način.
- Stanje procesa – informacija o trenutnom stanju u kojem se proces nalazi. Na primer, proces se može naći u nekom od stanja koja su definisana u prethodnom tekstu: Spreman, Izvršavanje, Čekanje, Suspendovan i spreman itd.
- Programski brojač – čuva informaciju o sledećoj instrukciji koju proces treba da izvrši.
- Sadržaj registara procesora – vrednosti koje se nalaze u registrima kako bi proces posle gubitka prava da koristi procesor mogao da nastavi sa radom tamo gde je zaustavljen.
- Prioritet procesa – informacija o važnosti procesa u odnosu na ostale procese u sistemu.
- Adresa memorije gde se nalazi proces – pokazivači na adrese u memoriji gde se nalaze segmenti procesa.
- Adrese zauzetih resursa – kako bi operativni sistem imao informaciju o tome na kojim lokacijama treba da traži potrebne podatke.
Polja koje čine kontrolni blok se mogu svrstati u one koje se odnose na:
- Procese;
- Memoriju;
- Fajlove.
Operativni sistemi obezbeđuju efikasne mehanizme za manipulaciju kontrolnim blokovima procesa kako bi se realizovali sledeći zadaci:
- Kreiranje kontrolnog bloka za novi proces;
- Uništavanje kontrolnog bloka procesa koji se izvršio;
- Menjanje stanja procesa;
- Menjanje prioriteta procesa;
- Izbor procesa za izvršavanje.
Prebacivanje konteksta predstavlja postupak kojim se proces koji se trenutno izvršava na procesoru prekida, pamte njegovi parametri, a zatim se umesto njega pokreće neki drugi proces i pri tome se učitavaju parametri drugog procesa.
Proces P0 je u stanju izvršavanja, ali bi trebalo da se prekine i da proces P1 krene da se izvršava. Prvo se stanje P0 upisuje u odgovarajući kontrolni blok, zatim se učitava kontrolni blok novog procesa i on može da nastavi sa izvršavanjem. Programski brojač procesa P1 dohvata sledeću instrukciju i on počinje da se izvršava. Kada se, iz nekog razloga donese odluka da postoji potreba da se P1 prekine, a proces P0 nastavi sa izvršavanjem, upisuju se podaci o izvršavanju P1 u njegov kontrolni blok, a učitavaju se podaci procesa P0.
Modul koji je odgovoran da izvršava prebacivanje konteksta često se naziva dispečer (Dispatcher). On je zadužen za punjenje registara procesa, prebacivanje u korisnički režim rada i skok na odgovarajuću lokaciju u korisničkom programu kako bi se on nastavio.