Вы находитесь на странице: 1из 7

2.1.

A szinkronizcis elemek

A taskok mkdsk sszehangolsra, egyms futsnak klcsns kizrsra a monitor


ltal biztostott un. szinkronizcis elemeket hasznlhatjk. Kt ilyen elem van: a flag s a
postalda.
A szinkronizcis elemek (de a ksbb trgyaland erforrsok is) nvvel (szmmal)
azonosthat logikai elemek. A logikai elem terminus azt jelenti, hogy fizikailag nem
lteznek. Akrmilyen kis darabokra szednk szt egy szmtgpet, nem fogjuk megtallni
ket. Ltk az ltaluk kivltott hatsban van, s ez a hats nagyon is valsgos. A hats gy
jn ltre, hogy pontosan betartjuk a kezelskre vonatkoz szablyokat, vagyis adott esetben
nem tehetnk meg akrmit, hanem csak gy cselekedhetnk, hogy kzben e fiktv
objektumokra vonatkoz jtkszablyok ne srljenek.
2.1.1. A flag (szemafor)
A flag egy nvvel azonosthat ktllapot logikai elem, amely lehet SET (szabad) s
RESET (tilos) llapotban. Egy flag (pldul) egy esemny lekpezsre alkalmas: ha az
esemny bekvetkezett, a flag SET, ha mg nem, akkor RESET llapot. Az esemny
tartalma a flag kezelse szempontjbl teljesen rdektelen, azt csak a taskoknak kell
ismernik.
A flaggel ngy mvelet vgezhet, mindegyik mvelet egy-egy monitorhvssal
realizlhat:
RQSTF: szabadra llts (SET),
RQCLF: tilosa llts (RESET),
RQASK: a flag llsnak lekrdezse,
RQWTF: vrakozs a flag SET llapotra.

Minden monitorhvsnl paramterknt meg kell adni a flag szmt.


Egy flag kzvettsvel mindig kt task kerl kapcsolatba egymssal. A taskok viszonya a
flaghez aszimmetrikus: az egyik lltja, a msik vizsglja, illetve vrakozik a SET llapotra.
Az RQSTF, RQCLF s az RQASK hvsok nem vihetik WAIT llapotba a hv taskot. Az
RQWTF hvsnl a hv vrakozni knyszerl, ha a flag tilosra ll s csak akkor kerlhet jra
aktv llapotba, ha a msik szabadra lltja a szemafort. Egy task lekrdezheti egy flag
llapott (RQASK). Ez nem okozhat vrakozst, viszont tilos szemafor esetn a task nyilvn
nem csinlhatja azt a tovbbiakban, amit szabad szemafor esetn csinlna.
A flag hasznlatra nzznk egy egyszer pldt. Kt task kzsen hasznl egy
memriaterletet, az egyik (I) rja, a msik (O) olvassa. Amg I be nem fejezte az rst, O nem
olvashat, s fordtva. A klcsns kizrsra kt flaget hasznlnak: IE az rs engedlyez, OE
az olvass engedlyez flag. Az IE-t O lltja s I vizsglja, az OE-t I lltja s O vizsglja. I
az rst csak akkor kezdheti meg, ha IE szabadra ll. Az rs megkezdse eltt OE-t tilosra,
befejezsekor pedig szabadra kell lltania. O az olvasst csak akkor kezdheti, ha OE szabadra
ll. Az olvass megkezdse eltt IE-t tilosra, befejezsekor pedig szabadra kell lltania. A
plda nagyon jl szemllteti a flagek hasznlatt, de maga a feladat ms eszkzzel sokkal
elegnsabban megoldhat.
A monitor tbb (64, 128,) flaget biztost a taskok szmra. A monitortblkban minden
flaghez egy bjt tartozik, amely a flag llapott tartalmazza. (Az llapotinformci trolsra
egy bjt pazarlan sok, viszont a szelektv bitkezels igen hosszadalmas mvelet s a monitor
gyors mkdse mg a hajdani, memriaszks vilgban is sokkal fontosabb szempont volt,
mint a memriatakarkossg.)
2.1.2. A postalda (exchange)
A postalda egy nvvel azonosthat ktllapot logikai elem, amely lehet res s
nem-res llapotban. A postaldba lehet zenetet kldeni, vagy (ha nem res) lehet belle
zenetet venni.
Az exchange kezelsre kt monitorhvs szolgl:
RQSEN: zenetklds,
RQWTE: zenetvtel.

Mindkt hvsnl paramterknt meg kell adni a postalda szmt, ezen kvl az RQSEN-nl
a kldend zenet kezdcmt. Az RQWTE hvs, ha van zenet, annak kezdcmt adja
vissza.
Az RQSEN hvsnl a hv task nem kerlhet WAIT llapotba, az RQWTE-nl - res
postalda esetn - igen. A vrakoz llapotbl a task akkor szabadul, ha zenet rkezik az
exchangebe.
Az zeneteket, ahogy a postn a leveleket, bortkban kell kldeni. A bortknak itt az
elhasznlt (feldolgozott) zenet felel meg. gy a kldnek elszr kell vennie egy elhasznlt
zenetet, annak tartalmt fell kell rnia az j adatokkal (aktualizlni kell), s ezt kell
rvnyes j zenetknt elkldenie. A vev, miutn feldolgozta a kapott zenetet, nem
dobhatja el, hanem elhasznlt zenetknt el kell kldenie egy erre a clra fenntartott
postaldba.
A vzolt zenetforgalom kt task kztt kt postalda kzvettsvel szervezhet meg
(6-3. bra).

6-1. bra

A kt task szerepe nem szimmetrikus. Az egyik a termel (T), kldi a feldolgozand


zeneteket, a msik a fogyaszt (F), dolgozza fel a kapott zeneteket. Az egyik
postaldban (X1) a feldolgozand (rvnyes), a msikban (X0) az elhasznlt zenetek
gylekeznek. A termel X0-bl vesz s X1-be kld, a fogyaszt X1-bl vesz s X0-ba kld.
A krforgsban rsztvev zenetek szma lland. Ezt a szmot a fogyaszt szabja meg
oly mdon, hogy a rendszer indulsakor adott szm res bortkot (elhasznlt zenetet)
kld X0-ba. Ksbb a bortkok szma mr nem vltozhat, brmely idpontban az zenetek
egy rsze rvnyes, ms rsze elhasznlt. Ha sok zenet van forgalomban, a gyorsabb task
megszaladhat a lassbbhoz kpest. Mivel azonban az zenetek sszes szma lland, egy id
utn szre fogja venni, hogy a megfelel exchange-bl nem kap zenetet, gy kldeni sem tud,
s le fog fkezdni. (Egybknt a gyorsabb task - lassbb task szereposzts nem rk
rvny, azt szmtalan vltoz krlmny befolysolja s dinamikusan vltozhat.) A
forgalomban lv zenetek szmnak nvelse rugalmasabb, cskkentse merevebb teszi a
kt task kapcsolatt. Ha csak egy zenet van forgalomban, akkor a klcsns kizrs esete
valsul meg.
Maga az zenet egy adott hosszsg memriaterlet, amely kt rszbl, az zenetfejbl
s az zenettrzsbl ll. Az zenetfejet a monitor hasznlja, a taskoknak szigoran tilos
megvltoztatni. Az zenettrzs az zenet tartalmi rsze, ennek rtelmezse az rintett taskok
belgye.
A postalda egy, az zenetfejjel azonos mret, egy cm trolsra alkalmas
memriaterlet (pl. kt bjt, vagy egy sz). A monitor az zeneteket lncolt FIFO-ba
rendezve csatolja a postaldhoz oly mdon, hogy minden zenetfej a kvetkez zenet
pointere (6-4. bra).

6-2. bra

Az utols zenet fejben un. lncvg-jel van. A postalda az els zenetre mutat. Ha a
postalda res, akkor tartalmazza a lncvg-jelet. Az zenetlnc FIFO jellege biztostja,
hogy a vev task a klds sorrendjben kapja meg az zeneteket.
A lncolsi mechanizmus a kvetkezkppen mkdik: zenetkldskor a monitor a lnc
utols zenetnek fejbl kiveszi a lncvg-jelet s a kldtt zenet cmt helyezi bele, mg a
lncvg-jel az jonnan becsatolt zenet fejrszbe rdik.. zenetvtelkor a postaldban lv
cmet kapja meg a hv, majd a postaldba a kicsatolt zenet fejben lv cm rdik.
A monitor a taskok szmra tbb (64, 128,...) postaldt biztost.

Tevkenysg: A fenti rszfejezet ttanulmnyozsa utn nllan, segdeszkz hasznlata


nlkl;
- rja le/mondja el a szinkronizcis elem fogalmt s sorolja fel tpusait!
- rja le/mondja el a flag fogalmt, hasznlatt, s sorolja fel a flaget kezel
monitorhvsokat!
- Gondolja meg, mi trtnne, ha termel az rvnyes zeneteket a lejrt (res) zenetek
ldjba klden!
2.2. Az erforrs
Az erforrs egy nvvel azonosthat ktllapot logikai elem, amely lehet szabad, vagy
foglalt llapotban. Ez eddig a kt llapot elnevezstl (ami egybknt lnyegtelen)
eltekintve azonos a flag s a postalda kapcsn mondottakkal, s fogalmunk sincs, hogy mi az
erforrs. Ha a lnyeget akarjuk megragadni, a kvetkezt kell mondanunk.
Az erforrs olyan logikai elem, amely egyidejleg csak egy task birtokban lehet, de
amelyet ugyanakkor tbb task konkurens mdon ignyel. Ebbl mr lthat, hogy az
erforrs olyan valami (brmi), amibl adott idben kevesebb van, mint amennyi kellene,
ezrt versenyezni kell rte. Az erforrs teht a rendszer szk keresztmetszeteit lekpez,
illetve azok kezelst lehetv tev elem. Abban a pillanatban, amikor a valamibl annyi lesz,
amennyi kell, a valami elveszti erforrs jellegt, mert minden ignylnek meglesz a sajt
valamije s senki nem verseng mr rte. (Egybknt a rendszer legfbb erforrsa a
processzorid, de ezt a monitor sajt hatskrn bell osztja el.)
Az erforrst lehet ignyelni (lefoglalni) s elengedni (visszaadni, felszabadtani). E
mveletekre kt monitorhvs van:
RQRES: lefoglals,
RQRLS: elengeds.

Mindkt hvsnl paramterknt meg kell adni az erforrs azonostjt.


Az RQRES hvskor, ha az erforrs szabad, a hv task megkapja (ezzel az erforrs
foglaltt vlik), s futhat tovbb. Ha az erforrs nem szabad, a hv WAIT llapotba kerl s
a monitor bejegyzi az adott erforrsra vrakozk priorits szerinti lncba. Ha az erforrs
felszabadul, akkor a r vr tskok kzl a legmagasabb priorits kapja meg, a tbbinek pedig
tovbb kell vrnia. Az RQRLS hvssal a task visszaadja az ltala birtokolt erforrst. Ez a
hvs nem viheti WAIT llapotba a taskot.
Egy task csak ltala birtokolt (megelzleg lefoglalt s megkapott) erforrst engedhet el,
vagyis nem lehet egy RQRLS hvssal egy msik tasktl elvenni az erforrst.
A tasknak a mr nem hasznlt erforrst azonnal fel kell szabadtania.
Egy task egyszerre csak egy erforrst foglalhat le, s amg el nem engedte, msikat nem
ignyelhet. (Ezt a monitor nem ellenrzi ugyan, de ktelez betartani.) Ellenkez esetben un.
holtpont alakulhat ki s a szablyszeg task soha tbb nem fog futni. Vizsgljuk meg ezt
rszletesebben! Az A task fut, lefoglalja s megkapja az erforrst. Fut tovbb s elzetes
elengedse nlkl kri a erforrst. m az foglalt, egy B task foglalja, gy A WAIT
llapotba kerl. Egyszer csak B-re kerl a sor, fut, s mieltt -t elengedn, kri -t. m
foglalt az A ltal, gy B is WAIT llapotba kerl. Most mr mind a ketten vrakoznak, s
mivel sem -t, sem -t ms nem szabadthatja fel, rkre vrakozni is fognak. Fokozza (ha
mg lehet) a bajt, hogy ez az julat tovbb gyrzhet, mert brmely olyan task, amely a
ksbbiekben az emltett kt erforrs valamelyikt ignyli, szintn rkre vrakoz llapotba
zuhan.

Nhny plda az erforrs alkalmazsra:


Tbb task akar nyomtatni, de csak egy nyomtat van. Hogy ne keveredhessenek ssze az
egyes szvegek karakterei, csak sorban egyms utn nyomtathatnak. A nyomtathoz egy
erforrst kell rendelni.
Egy nem jrahvhat szubrutint is hasznlhat tbb task, ha erforrs van hozzrendelve.
Egy-egy hv elbb lefoglalja, majd a szubrutin lefutsa utn elengedi, gy azt nem lehet
jrahvni. Viszont az erforrs-jelleg szubrutint tilos kznsges szubrutinknt hvni!
A flaggel kapcsolatban bemutatott plda elegnsabb megoldsa: a kzs memriaterletet
erforrsnak tekintjk. Az r task rs eltt lefoglalja, az rs vgn felszabadtja (gy rs
alatt nem lehet beleolvasni). Az olvas task olvass eltt lefoglalja, utna felszabadtja
(gy nem lehet olvass kzben belerni). Az ottani pldban a klcsns kizrst kt
flaggel lehetett biztostani, itt ugyanaz elrhet egy erforrssal.

Szoks az erforrst is a szinkronizcis elemek kz sorolni. Mi azrt vlasztottuk kln,


mert ms a funkcija. A szinkronizcis elemek kzvettsvel rendszerint kt task lp
egymssal kapcsolatba, mg az erforrs esetben egy task az sszes konkurens partnervel
gy, hogy tmenetileg kizrja ket a mkdsbl.

A monitor tbb (64, 128,) erforrst bocst a taskok rendelkezsre. A monitortblkban


minden erforrshoz egy llapotbjt (szabad/foglalt), egy, az aktulis birtokos task szmt
tartalmaz bjt, s az ignylk vrakozsi sora tartozik.
Tevkenysg:
- rja le/mondja el a postalda s az zenet fogalmt, hasznlatt, s sorolja fel az
zenetforgalmat lebonyolt monitorhvsokat!
- rja le/mondja el az erforrs fogalmt, hasznlatt, s az erforrskezel
monitorhvsokat!

2.3. Az I/O hvsok


Az I/O kezels a real-time monitorok legkevsb ltalnosthat jellemzje. Tbb monitor
a perifriakezel programok (un. handlerek) b vlasztkt tartalmazza, mg msokhoz ezeket
kln meg kell rni s megszakts ltal aktivlt task-knt, bizonyos elrsok betartsval a
monitor al kell generlni.
Ami tbb-kevsb ltalnos, az a kvetkez: A handlerek a perifrikat megszaktsosan
kezelik, a berkez, illetve kikldend adatokat a monitor csatornnknt input, illetve output
FIFO-kba gyjti. A taskok a perifrikat egyltaln nem ltjk, st, a FIFO-khoz is csak
monitorhvsokkal frhetnek hozz.
Kt tipikus I/O-kezel monitorhvs van:
RQINP: egy bjt beolvassa adott csatornrl,
RQOUT: egy bjt kikldse adott csatornra.

Mindkt monitorhvsnl meg kell adni a csatornaszmot.


Az RQINP-nl a task vrakoz llapotba kerl, ha az input FIFO res, ha nem, megkapja a
legrgibb adatot s futhat tovbb. Az RQOUT-nl paramterknt meg kell adni a kikldend
adatot. A hvs utn a task vrakoz llaotba kerl, ha a FIFO tele van, ha mg van hely, az
adat bekerl a sorba s a task futhat tovbb.

Tevkenysg: Ismertesse az I/O kezels minitorhvsait!

2.4. Egy megjegyzs a taskok trelmrl


A trgyalt monitorhvsok kztt van ngy olyan (az RQWTF, az RQWTE, az RQINP s
az RQOUT), amelyek hvsakor a hv tasknak paramterknt meg kell adnia egy idtartamot
is, mellyel a monitor tudomsra hozza, hogy WAIT llapotba kerlse esetn legfeljebb
mennyi ideig hajland vrakozni. Ezt az idtartamot time-out-nak nevezik, magyarul gy
mondhatjuk: trelmi id. A time-out lehet vgtelen, valamilyen vges rtk, vagy zrus.
Ha a time-out vgtelen, a task, amikor jra aktv llapotba kerl, biztos lehet abban, hogy
a monitortl krt szolgltats rendben teljeslt. Ha pl. zenetre vrt (RQWTE),
tovbbfutskor biztos lehet abban, hogy megkapta az zenetet.
Ha a time-out nem vgtelen, tovbbfutskor a tasknak tudnia kell, hogy most azrt futhat,
mert idkzben teljeslt a tovbbfuts felttele, vagy csak azrt, mert a trelmi id lejrt. A
kt klnbz esetben ugyanis a task nyilvnvalan nem folytathatja azonos mdon a
tevkenysgt. A monitor ilyenkor visszaadott paramterben kzli a tovbbfuts
krlmnyeit, s a taskra van bzva, hogy mit tesz.

2.5. A monitor mkdse


Emltettk, hogy a monitor kt esetben fut: ra-interruptkor, illetve - a kztes idben -
monitorhvskor. Most, amikor megksreljk sszegyjteni a monitor konkrt
tevkenysgeit, a korbbiakra tmaszkodva mr igen egyszer helyzetben vagyunk.

A) ra-interrupt: Az sszes idtl fgg tevkenysg ekkor zajlik le.


A fut task meglltsa, de aktv llapotban hagysa.
A szoftver-ra aktualizlsa.
Az IDLE llapotban lev idztett taskok idzts-szmllinak aktualizlsa.
Amelyiknek letelt az idztse, annak aktv llapotba helyezse.
A WAIT llapotban lev vges time-outos taskok time-out szmllinak aktualizlsa.
Amelyiknek letelt a time-outja, annak aktv llapotba helyezse, s a nem-normlis
aktivls jelzse.
A legmagasabb priorits aktv task kivlasztsa s futsnak engedlyezse.

B) Monitorhvs: Idtl fgg tevkenysg nincs, az megtrtnt az elz ra-interruptnl.


A hv task meglltsa, de (egyelre) aktv llapotban hagysa.
A monitorhvs jellegnek megfelel tevkenysgek s llapotvltoztatsok
vgrehajtsa. Ha az llapotvltoztats WAIT llapotban lev vges time-outos task
aktivlsval jr, annak jelzse, hogy az aktivls normlis, teht nem a time-out
lejrta miatt kvetkezik be.
Az aktv taskok kzl a legmagasabb priorits kivlasztsa s futsnak
engedlyezse.

A msodik tevkenysgsor lersa nagyon ltalnosnak s felletesnek tnik (pedig ppen


olyan pontos, mint az els). Ez termszetes is, mert nem mondtuk meg, hogy milyen konkrt
monitorhvsrl van sz.

Tevkenysg: Nyomatkkal javasoljuk az Olvasnak, hogy nhny konkrt hvs esetben


alaposan gondolja t a mkds rszleteit, vagyis tltse meg konkrt tartalommal a fenti,
nagyon ltalnosan megfogalmazott utalsokat! Ennek kapcsn azt is gondolja t, hogy egy
olyan rtatlan monitorhvsnl, amely biztosan nem viheti WAIT llapotba a hvt, vajon
biztosan fog-e tovbb futni, vagy olyan eset is elfordulhat, hogy csak aktv marad, de
mgsem fut! Vagy plasztikusabban fogalmazva: elfordulhat-e, hogy valakit kihzunk a
gdrbl s az hlbl nem lk ugyan bele a gdrbe, de elveszi tlnk a biciklit s otthagy?
- Sorolja fel a monitor tevkenysgeit ra-interrupt, illetve monitorhvs esetn!
- rja le/mondja el a time-out fogalmt s a time-out-os monitorhvsok specilis
mkdst!

Вам также может понравиться