You are on page 1of 16

5.

Jezgra operacijskog sustava


5.1 Osnovna svojstva jezge, jednostavni model jezgre
Sva zbivanja u računalnom sustavu mogu se razmatrati kao
skup procesa koji se odvija pod utjecajem procesora. Zbog
jednostavnosti razmatra se jednoprocesorski sustav
Pretpostavimo da se u računalnom sustavu odvija sustav
zadataka. U sustavu zadataka (koji će postati procesi) utvrđen
je redoslijed odvijanja i eventualna potreba međusobnog
isključivannja,
Procesi ne komuniciraju neposredno jedan s drugim nego
komunikacijske usluge moraju zatražiti od operacijskog
sustava, točnije od njegovog osnovnog nadzornog i
upravljačkog dijela-jezgre operacijskog sustava (engl. Kernel).
Za razmatranje osnovnih svojstava jezgre i njenih funkcija
prikladno je razmotriti jednostavni model: 1

*Programi svih zadataka smješteni su u spremnik i


poznate su njihove adrese
*Čitavi adresni prostor dohvatljiv je svim zadacima
* Koristi se jednoprocesorski sustav
*Prihvat prekida osigurava jednoznačnu obradu
Pretpostavlja se da se procesi obavljaju nesmetano. Kada
procesi žele uslugu jezgre oni izazivaju programski prekid
(engl. Software Interrupt).
Svaki procesor ima instrukcije, (jednu ili više) za
izazivanje programskog prekida.
Pri izvođenju programskog prekida u procesoru se odvija
slična aktivnost kao i kod sklopovskog prekida:
* Zabranjuje se daljnje prekidanje
* Programsko brojilo se stavlja na stog
* U programsko brojilo dolazi adresa programa za
obradu prekida .
2

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.

Završetak operacije izaziva prekid koji pobuđuje neku


jezgrinu proceduru.
Uz računalne (“unutarnje”) procese i ulazno-izlazne
(“vanjske”) procese postoji i proces “sat”
Sat se uobičajeno izvodi sklopovski tako da sustav brojila
(katkada programirljivih) sinkroniziran generatorom ritma
procesora proizvodi periodički slijed impulsa koji izazivaju
prekid

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.

5.2. Stanja procesa, struktura podataka jezgre


Jezgra se sastoji od od skupa jezgrinih procedura i
struktura podataka kojom se opisuje stanje sustava (opisom
stanja pojedinih procesa).
Svaki proces dobiva svoj opisnik ili deskriptor (engl.
descriptor, task control blok, process control block). U
opisniku su smješteni svi podaci o procesu i dodatno još i
kazaljke za povezivanje opisnika u dinamičke strukture
podataka.
Kazaljke
broj procesa
stanje procesa
prioritet
početna adresa
veličina
kašnjenje
Prostor za
smještaj
konteksta
6

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

Rad pripravnih procesa može se organizirati dvojako:


- po redu prispjeća (“prvi došao - prvi poslužen”, engl. first
in first out - FIFO),
- po pravu prvenstva prema utvrđenim prioritetima
Prvi u redu Zadnji u redu

PRIPRAVNI_P

PRIPRAVNI_P
Latentni
proces
8 4
uvijek -1
pripravan 8

a4
Novi pripravni
proces

Redovi po redu prispjeća (po prioritetnim razinama)


U najjednostavnijem slučaju - dvije razine:
* normalni procesi
* hitni procesi

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

Procesi mogu biti blokirani kada:


* Čekaju na binarnom semaforu
* Čekaju na općem semaforu
* Čekaju na završetak ulazno izlazne operacije
* Čekaju na istek zadanog kašnjenje

11

Binarni semafor je mehanizam za ostvarenje međusobnog


isključivanja. Svaki binarni semafor u strukturi podataka jezgre ima
svoje zaglavlje
BSEM(i) BSEM(i)=1 Semafor je
BSEM(i).v prolazan
kazaljka =0 Semafor je
neprolazan
Moguća stanja semafora
1 Semafor je prolazan

0 Semafor je neprolazan, ni jedan proces nije


pokušao proći.
Semafor je neprolazan i dva procesa su
0 pokušala proći. Oni čekaju u redu na prolaz.

12

a6
Opći semafor je mehanizam prikladan za sinkronizaciju procesa.

OSEM(j) OSEM(j).v
kazaljka

OSEM(j).v je cijeli broj. Ispitivanje semafora se svodi na smanjenje


OSEM(j).v i ako je OSEM(j).v>=0 dozvoljava se prolaz. Kada je
OSEM(j).v<0 proces se blokira i stavlja u red.
Proces koji zatraži obavljanje ulazno-izlazne operacije stavlja se u red i
čeka da zatražena operacija završi.
Za svaku ulazno-izlaznu napravu postoji red UI(k)
RED_UI(k)
U RED_UI(k) stavlja se opisnik procesa
koji je zatražio obavljanje ulazno-izlazne
operacije UI(k) 13

Neki procesi mogu tražiti odgođeno pokretanje drugog procesa (ili


samoga sebe) za neki inerval vremena. Taj interval može biti cjelobrojni
višekratnik trajanja periode otkucaja sata T tj∆t=M*T. Broj M zapisuje
se u lokaciju za kašnjenje opisnika procesa i proces stavlja u red
ODGOĐENI_P.
Ako više procesa treba odgođeno izvoditi i to uz
M1<M2<M3<…. oblikuje se red:
ODGOĐENI_P

∆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)

OTKUCAJ SATA POKRENI(L)


POSTAVI OSEM(i) PRIPRAVNI_P

15

5.3. Jezgrine procedure


Razmatra se jednoprocesorski sustav. Poziv jezgrine procedure (ulazak
u jezgru) ostvaruje se sklopovskim ili programskim prekidom. Stoga u
svakom trenutku samo jedna od procedura može djelovati. Osigurana
je njihova međusobna isključivost.
U višeprocesorskim čvrsto povezanim sustavima međusobna
isključivost j-procedura mora se ostvariti nedjeljivim čitanjem i
pisanjem a u raspodijeljenim sustavima razmjenom poruka i
algoritmima koji su slični Lamportovom.
U opisu jezgrinih procedura pretpostavit će se da je pri njihovu
pozivanju:
* programsko brojilo na stogu
* zabranjeno prekidanje
* obavljeno pohranjivanje registara procesora na stog
16

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

S obzirom da se često aktivira proces koji je prvi u redu


PRIPRAVNI_P, prikladnoje koristiti pokratu (makroinstrukciju):

AKTIVIRAJ_PRVI_PROCES_IZ_REDA_PRIPRAVNI_P
ili kraće
AKTIVIRAJ
za niz instrukcija

prebaciti prvi opisnik iz reda PRIPRAVNI_P u red AKTIVNI_P;


obnoviti kontekst iz opisnika AKTIVNI_P
dozvoliti prekidanje;
obnoviti sadržaj PC iz opisnika AKTIVNI_P

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

Kašnjenje se određuje parametrom M koji određuje broj otkucaja sata


(perioda!). U modelu jezgre pretpostavimo da proces može zatražiti da
on sam bude suspendiran za određeno vrijeme ilida drugi proces bude
pomaknut odgođeno.
J-procedura ZAKASNI_SEBE(M)
pohrani kontekst u opisnik AKTIVNI_P;
uvrsti opisnik iz reda AKTIVNI_P u red ODGOĐENI_P
AKTIVIRAJ
kraj

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

Procedure za obavljanje ulazno-izlaznih operacija


J-procedura POČNI_UI(k)(Vrsta operacije, adresa)
pohraniti kontekst u opisnik AKTIVNI_P;
premjestiti opisnik iz reda AKTIVNI_P u red UI(k);
pokrenuti ulazno-izlaznu operaciju;
AKTIVIRAJ;
kraj;
J-procedura ZAVRŠETAK_UI(k)
pohraniti kontekst u opisnik AKTIVNI_P;
premjestiti opisnik iz reda AKTIVNI_P u red pripravni;
premjestiti opisnik iz reda UI(k) u red pripravni;
AKTIVIRAJ;
kraj;

26

a13
5.4. Ostvarenje jezgre u višeprocesorskom sustavu

Globalni Ograda jezgre


sabirnica spremnik Struktura podataka jezgre

LM1 Procesor0 LM2 Procesor1 …... LMn-1 Procesorn


D(1) T(1)
D(0) T(0)
Dodjeljivač
sabirnice
U potpuno homogenom sustavu svi procesi se mogu izvoditi na bilo
kojem procesoru (tekstovi - programi su primjerice za sve procese
smješteni u sve lokalne spremnike). U tom slučaju potreban je samo
jedan red PRIPRAVNI_P.
Razmotrimo jednostavniji slučaj:
Procesi su pridjeljeni pojedinom procesu. Tada za svaki proces
postoje:
* red AKTIVNI_P(i)
*red PRIPRAVNI_P(i) 27

Poziv jezgrine procedure iz procesira i zabranjuje prekidanje samo


u procesoru i.
Pristup do strukture podataka jezgre mora biti pojedinačan te se
ona mora zaštititi mehanizmom međusobnog isključivanja.
Uz pretpostavku da postoji instrukcija ispitaj_i_postavi (TAS)
može se uvesti zaštitna varijabla OGRADA_JEZGRE. Sve jezgrine
procedure prije pristupa do strukture podataka jezgre moraju uspješno
preći OGRADA_JEZGRE.

28

a14
Primjerice, može se razmotriti j-procedure za binarni semafor
AKTIVNI_P(i)

Dio strukture podataka jezgre


pridružen procesoru

PRIPRAVNI_P(i)

BSEM(k)

BSEM(k).v Globalna struktura podataka


jezgre 29

j-procedura ČEKAJ-BSEM (k,i)


pohraniti kontekst iz procesora u opisnik AKTIVNI-P(i);
TAS OGRADA_JEZGRE;
dok je ACC ≠ 0 činiti
TAS OGRADA-JEZGRE;
ako je BSEM(k).V=1
onda BSEM(k).V:=0
inače
premjestiti opisnik iz reda AKTIVNI_P(i) u
red BSEM(k);
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 sadržaj PC iz opisnika AKTIVNI_P(i);
kraj.

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

You might also like