Professional Documents
Culture Documents
OS-03 Jezgra
OS-03 Jezgra
a1
Prije instrukcije programskog prekida u neki od registara se
može staviti broj koji određuje vrstu zatražene usluge. U druge
dodatne registre može proces prije izazivanja programskog
prekida zapisati eventualne parametre.
Program za prihvat programskog prekida treba:
Sačuvati kontekst procesa koji je izazvao prekid (za
razliku od sklopovskog prekida kontekst ovdje može biti
kontroliran i mogla bi se zamjena konteksta zanemariti.
Prepoznati iz sadržaja registara što proces traži i
aktivirati odgovarajuću jezgrinu proceduru (uz
eventualni prijenos parametara)
Ulazne i izlazne operacije koje se obavljaju uz pomoć
pristupnih sklopova i odgovarajućih upravljačkih programa
mogu se razmatrati na isti način:
Ulazna (izlazna) operacija pokreće se pomoću jezgre.
Nakon što je pokrenuta, operacija postaje “vanjski” 3
proces koji se odvija samostalno.
t
T period “otkucaja” sata
Uobičajena je perioda T=1 ms ili T=10 ms.
(U upravljačkim sustavima se katkada zahtijeva finija
diskretizacija vremena pa je T manje.)
a2
P1 P2 .... Pn
Programski prekid Aktiviranje procesa
Jezgra
Procesor
Sat
Sklopovski prekid Pokretanje UI operacije
UI1 UI2 ..... UIk
Ulazak u jezgru simboliziran je strelicama koje označavaju prekid. Tim
prekidom pokreće se obrada prekida tj. odgovarajuća jezgrina procedura
(ili funkcija)
Ona će biti označena s j-procedura.Završetak j-procedure je
različit od obične procedure. Ona završava aktiviranjem jednog od
procesa.
Obavljanje j-procedura je međusobno isključivo. Prekidanje se
dozvoljava na samom izlazu iz j-procedure (jezgre)
5
Zbog toga je potrebno da j-procedura bude što je moguće kraća.
a3
* Pripravno stanje:
Svi uvjeti za rad procesa su ispunjeni. Jedino mu
nedostaje procesor. Svi pripravni procesi svrstavaju se
u red za dodjelu procesa
* Blokirano stanje :
Procesi čekaju za ispunjavanje nekih uvjeta za daljnje
napredovanje.
U strukturi podataka jezgre prepoznatljivo je stanje cijelog
sustava zadataka
Aktivni_P
Lista (red) AKTIVNI_P
u jednoprocesorskom
sustavu sastoji se samo
od jednog opisnika
7
PRIPRAVNI_P
PRIPRAVNI_P
Latentni
proces
8 4
uvijek -1
pripravan 8
a4
Novi pripravni
proces
Normalni pripravni
Hitni pripravni
10
a5
Novi pripravni procesi svrstavaju se na kraj jednog od reda. Red
NORMALNI_PRIPRAVNI_P počinje se posluživati tek kada je
red HITNI_PRIPRAVNI_P prazan
11
12
a6
Opći semafor je mehanizam prikladan za sinkronizaciju procesa.
OSEM(j) OSEM(j).v
kazaljka
∆M2=M2-M1
M1 ∆M2 ∆M3
∆M3=M3-M2
Pri obradi prekida od sata smanjuje se sadržaj lokacije za kašnjenje
prvog opisnika u redu ODGOĐENI_P za jedan i kada je rezultat jednak
nuli opisnik se prebacuje u red PRIPRAVNI_P 14
a7
ČEKAJ BSEM(i)
AKTIVNI_P Pojedini proces
BSEM(i) se u svakom
trenutku može
ČEKAJ OSEM(j)
POSTAVI BSEM(i) ZAVRŠI
nalaziti samo u
ZAKASNI SEBE(M) jednom od
OSEM(j) stanja
AKTIVIRAJ
ODGOĐENI_P
ZAKASNI(L,M)
POČNI UI(k) PREKID
PASIVNI_P
RED_UI(k)
15
a8
Svaka j-procedura započinje pohranjivanjem konteksta u opisnik procesa
koji je bio aktivan, tj. Instrukcijom (pri tom se pohranjuje i sadržaj PC-a)
“Pohrani kontekst u opisnik AKTIVNI_P;”
Izlazak iz jezgre rezultira aktiviranjem jednog od procesa. Pritom se
njegov opisnik mora nalaziti u redu AKTIVNI_P, a aktiviranje se obavlja
s:
obnoviti kontekst iz opisnika AKTIVNI_P;
dozvoliti prekidanje;
obnoviti sadržaj PC iz opisnika AKTIVNI_P;
17
AKTIVIRAJ_PRVI_PROCES_IZ_REDA_PRIPRAVNI_P
ili kraće
AKTIVIRAJ
za niz instrukcija
18
a9
Procedure za binarni semafor
Binarni semafor je prikladan za međusobno isključivanje.
J-procedura ČEKAJ_BSEM(i)
pohraniti kontekst u opisnik AKTIVNI_P
ako je BSEM(i).v=1
onda
BSEM(i).v=0;
obnoviti kontekst iz opisnika AKTIVNI_P
dozvoliti prekidanje
obnoviti sadržaj PC iz opisnika AKTIVNI_P
inače
premjestiti opisnik iz reda AKTIVNI_P u red
BSEM(i)
AKTIVIRAJ
kraj
19
J-procedura POSTAVI_BSEM(i)
pohraniti kontekst u opisnik AKTIVNI_P
premjestiti opisnik iz reda AKTIVNI_P u red PRIPRAVNI_P
ako je (BSEM(i).v=0 I red BSEM(i) je prazan ILI BSEM
(i).v=1
onda BSEM(i).v=1;
inače premjestiti prvi opisnik iz reda BSEM(i) u red
PRIPRAVNI_P;
AKTIVIRAJ;
kraj
20
a10
Procedure za opći semafor
Opći semafor je koristan za sinkronizaciju i brojanje događaja. U
načelu semafor je najprikladnije koristiti kao “privatni” semafor jednog
od procesa.
J-procedura ČEKAJ_OSEM(j)
pohraniti kontekst u opisnik AKTIVNI_P;
OSEM(j).v:=OSEM(j).v-1;
ako je OSEM(i).v>=1
onda
obnoviti kontekst iz opisnika AKTIVNI_P
dozvoliti prekidanje
obnoviti sadržaj PC iz opisnika AKTIVNI_P
inače
premjestiti opisnik iz reda AKTIVNI_P u red
OSEM(j)
AKTIVIRAJ 21
kraj
J-procedura POSTAVI_OSEM(j)
pohraniti kontekst u opisnik AKTIVNI_P
premjestiti opisnik iz reda AKTIVNI_P u red PRIPRAVNI_P
OSEM(j).v=OSEM(j).v+1
ako je (OSEM(j).v=0 I red OSEM() nije prazan
onda premjestiti opisnik iz reda OSEM(j) u red
PRIPRAVNI_P;
AKTIVIRAJ;
kraj
22
a11
Procedure za ostvarenje kašnjenja
23
J-procedura ZAKASNI(L,M)
pohraniti kontekst u opisnik AKTIVNI_P;
premjestiti opisnik iz reda AKTIVNI_P u red PRIPRAVNI_P;
pregledati opisnik procesa L u listi POSTOJEĆI_P;
ako je proces u nekom nepasivnom stanju
onda javiti pogrešku
inače uvrstiti opisnik procesa L u red ODGOĐENI_P
AKTIVIRAJ
kraj
24
a12
J-procedura OTKUCAJ_SATA
pohraniti kontekst u opisnik AKTIVNI_P;
premjestiti opisnik iz reda AKTIVNI_P u red
PRIPRAVNI_P;
ako je RED ODGOĐENI_P neprazan
onda
umanjiti lokaciju KAŠNJENJE u prvom opisniku
reda ODGOĐENI_P za jedan;
ako je rezultat smanjenja jednak nuli
onda premjestiti prvi opisnik (a i sve
slijedeće ako u lokaciji KAŠNJENJE imaju
zapisanu nulu) iz reda ODGOĐENI_P u red
PRIPRAVNI_P
AKTIVIRAJ
kraj;
25
26
a13
5.4. Ostvarenje jezgre u višeprocesorskom sustavu
28
a14
Primjerice, može se razmotriti j-procedure za binarni semafor
AKTIVNI_P(i)
PRIPRAVNI_P(i)
BSEM(k)
30
a15
VAŽNO:
• Radno čekanje na OGRADA-JEZGRE zbiva se samo ako
je neki drugi proces uspio zauzeti jezgru i to samo za vrijeme
trajanja jezgrine procedure ( pritom se “troši” procesor i
sabirnica ).
• Eventualno čekanje na BSEM(k) blokira proces i on ne
obavlja radno čekanje.
31
j-procedura POSTAVI_BSEM(k,i)
pohraniti kontekst iz procesora u opisnik AKTIVNI_P(i);
TAS OGRADA_JEZGRE;
dok je ACC ≠0 činiti
TAS OGRADA -JEZGRE ;
premjestiti opisnik iz reda AKTIVNI_P(i) u
red PRIPRAVNI_P(i);
ako je BSEM(k).V=0 i red BSEM(k) nije prazan
onda premjestiti prvi opisnik iz reda BSEM(k)
u red PRIPRAVNI-P(j) procesora j; *
inače BSEM(k).V:=1;
premjestiti prvi opisnik iz reda PRIPRAVNI_P(i)
u red AKTIVNI_P(i);
OGRADA _JEZGRE :=0;
obnoviti kontekst iz opisnika AKTIVNI_P(i);
dozvoliti prekidanje procesora i ;
obnoviti PC iz opisnika AKTIVNI_P(i);
kraj.
* U opisniku se uz opis stanja procesa nalazi i podatak na kojem se procesoru izvodi.
32
a16