dr. adamis gusztáv operációs rendszerek szetesen az ilyen jellegû...

41
1 dr. Adamis Gusztáv OPERÁCIÓS RENDSZEREK PÉLDATÁR

Upload: vanthu

Post on 20-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

1

dr. Adamis Gusztáv

OPERÁCIÓS RENDSZEREK PÉLDATÁR

2

BEVEZETÉS

A Gábor Dénes Mûszaki Informatikai Fõiskola egyik alapkoncepciója a

távoktatás támogatása. Ez azt igényli, hogy a hallgatókat olyan oktatási anyagokkal

lássuk el, amelyek segítségével otthon, önállóan meg tudják érteni és el tudják

sajátítani a tananyagot.

Jelen példatárunk a Fõiskola Operációs rendszerek c. tárgyához készült. A

példatár felöleli a tárgy teljes tananyagát.

A példatárban alapvetõen két típusú feladat található.

Az egyik típusú példa az olvasó elméleti felkészülését segíti. Ezekre a

példákra hosszabb-rövidebb elméleti összefoglaló a válasz. Ezek a példák az anyag

fontosabb részeire, fogalmaira kérdeznek rá, igyekezvén rávezetni az olvasót a

súlyponti témakörökre. Természetesen az ilyen jellegû példákhoz közölt megoldások

csak összefoglalások, részletesebb megértésükhöz nélkülözhetetlen a tankönyv [2]

tanulmányozása.

A példák másik csoportját a gyakorlati kérdések alkotják. Ezek keretében van

mód az elméleti ismeretek alkalmazására egy-egy konkrét szituációban. Az ilyen

jellegû példákhoz adott megoldások általában nem csak a "végeredményt"

tartalmazzák, hanem igyekeznek megmutatni a megoldás elvét, fõbb lépéseit is.

Végezetül egy jótanács a példatár használatához. Ezt a példatárat ne

"tankönyvként" használjuk, azaz ne olvassuk el egyfolytában az elejétõl a végéig.

Elõször mindig csak a vastag betûvel szedett kérdést nézzük meg, majd próbáljunk

meg a kérdésre önállóan válaszolni. Csak ez után olvassuk el a megoldást, hogy

ellenõrizzük saját válaszunk helyességét. (Természetesen vegyük figyelembe azt is,

hogy egy kérdésre sokszor egynél több helyes, egymással egyenértékû válasz adható!)

Ha a könyvet ilyen módon használjuk, sokkal hasznosabb segítséget fog nyújtani a

felkészüléshez.

Jó tanulást, sikeres felkészülést kíván

A szerzõ

Budapest, 1995. december

3

PÉLDATÁR

1. Mik az operációs rendszerek fõbb funkciói?

Az operációs rendszerek három fõ funkciója:

- alkalmazói támogatás

- alkalmazói programok

- segédprogramok

- rendszerszolgáltatások

- operátori és munkavezérlõ parancsnyelvi rendszerek

- programfejlesztési támogatás

- programírás támogatása

- editorok

- fordítóprogramok (compiler) / interpreterek

- szerkesztõprogramok (linker)

- programkönyvtárak

- rendszerhívások

- betöltõprogramok (loader)

- programok belövéséhez nyújtott támogatás

- nyomkövetõprogramok ("debuggerek")

- tártartalom kijelzése ("dump")

- rendszeradminisztráció (magának az operációs rendszernek a

mûködtetéséhez szükséges szolgáltatások)

- processzorütemezés

- megszakításkezelés

- erõforráskezelés, szinkronizálás, idõzítés

- folyamatvezérlés

- tárkezelés

- perifériakezelés

- adatok, adatállományok kezelése

- mûködési statisztikák készítése, számlázás

- operátori interfész

2. Ismertesse a legfontosabb címzési módokat! Milyen magasszitû (programozási

nyelv, operációs rendszer) funkciókat támogatnak?

- direkt címzés

- a címmezõ az operandus címét tartalmazza

4

- változók támogatása

- indirekt címzés

- a címmezõ annak a memóriahelynek a címét tartalmazza, ahol az

operandus címe található

- pointerek (mutatók) támogatása

- immediate címzés

- a "címmezõ" magának az operandusnak az értékét tartalmazza

- konstansok támogatása

- indexelt címzés

- a cím a címmezõ tartalma + egy speciális, ún. indexregiszter tartalmának az

összege

- tömbök, rekordok kezelésének támogatása

- bázisrelatív címzés

- a cím a címmezõ tartalma + egy speciális, ún. bázisregiszter tartalmának az

összege. A bázisregiszter tartalmazza a program kezdõcímét, az utasítás

címmezõje pedig a program elejétõl való távolságot. A bázisregiszter

tartalmának megváltoztatásával - a programkód változatlanul hagyása mellett -

a program a memóriában bárhová elhelyezhetõ.

- áthelyezhetõ (relokálható) progamok támogatása

- a virtuális tárkezelés (lapozás) illetve a szegmentálás támogatása

- stack pointeren keresztüli címzés

- az utasítás nem tartalmaz címmezõt, a címet egy speciális regiszter, az

ún. stack pointer tartalma jelenti

- függvényhívások támogatása

- függvények paraméterátadásának támogatása

3. Mik a CISC és a RISC gépek fõbb jellemzõi?

A CISC (Complex Instruction Set Computer - összetett utasításkészletû

számítógép) jellemzõi:

- sokfajta, bonyolult utasítás

- sokfajta, bonyolult címzési mód

- operációsrendszer-szolgáltatásokat támogató hardver elemek és utasítások

5

- összetett adattípusok

- magasszintû programnyelvi egységek támogatása

- bonyolult hardver.

Értékelés: a bonyolult funkciók nagy részét igyekszik hardver úton megoldani vagy

legalább támogatni. Emiatt bonyolult szerkezetû. A bonyolult szerkezetbõl fakadó

nagy belsõ késleletések miatt az utasítások végrehajtási ideje (relatíve) nagy. De a

hardvertámogatás miatt viszonylag könnyû (rendszer)szoftvert írni rá. Ilyen pl. az

INTEL 80386-os mikroprocesszor.

A RISC (Reduced Instruction Set Computer - csökkentett utasításkészletû

számítógép) jellemzõi:

- kevés, nagyon egyszerû, egyforma hosszú (1 órajel idõ alatt végrehajtható)

utasítás

- utasítások átlapolása (pipeline) egyszerûen megvalósítható

- csak az abszolút szükséges memóriareferens utasítások, nagyon sok belsõ

regiszter

- egyszerû, gyors - emiatt olcsóbb - hardver.

Értékelés: a bonyolult funkciókat szoftver úton kell megoldani, emiatt nehéz - az

alacsony szintû - programozása. De az egyszerû hardver sok regiszterrel biztosítja a

gyors mûködést. Ilyen például az IBM RISC 6000-es gépcsaládja.

4. Ismertesse a megszakítások elfogadásának és kiszolgálásának fõbb lépéseit!

1., Megszakítási kérelem érkezik a központi egységhez.

Ez érkezhet kívülrõl, pl. egy perifériától (hagyományos interrupt), a rendszeren

belülrõl, pl. 0-val való osztás (exception - kivételes állapot) illetve a

programozótól, pl. DOS-ban egy operációsrendszer-szolgáltatás hívása az INT

21H utasítással (szoftver interrupt).

2., A központi egység a megszakítás kérelmet várakoztatja az éppen végrehajtás

alatt álló utasítás végrehajtásának befejeztéig, illetve ha az adott szintû

megszakítás tiltott, a tiltás befejeztéig.

3., Amikor a központi egység elfogadja a megszakítást, elmenti a megszakított

program állapotát jelzõ állapotvektort (vagy legalább annak legkritikusabb

részét) a megfelelõ verembe.

4., Automatikusan privilegizált állapot jön létre, amelyben többnyire legalább az

adott szintû megszakítás letiltódik.

5., A központi egység meghatározza a kiszolgáló eljárás címét (vagy kívülrõl a

megszakítást kérõ eszköz adja be vagy - fejlettebb esetekben - a megfelelõ

6

megszakítási vektorból a CPU veszi elõ) és elindítja a kiszolgáló eljárást, elõtte

- szükség esetén - betölti a kiszolgáló eljárás induló állapotvektorát.

6., A kiszolgáló eljárás befejezi a megszakított program állapotvektorának

mentését és elvégzi a megszakítás kiszolgálási tevékenységet.

7., Amint a megszakítás kiszolgálás túl van a kritikus szakaszon, újra engedélyezi

a megszakítás elfogadáskor automatikusan letiltott megszakítási szint(ek)et.

8., A megszakítás végén a kiszolgáló eljárás átadja a vezérlést az operációs

rendszer megfelelõ (többnyire az ütemezõ) eljárásának.

9., Az ütemezõ dönt a folytatásról, általában visszaadja a vezérlést a megszakított

programnak, miután helyreállítja annak az állapotát az elmentett

állapotvektorból.

5. Milyen támogatást nyújtanak az operációs rendszerek a

programfejlesztéshez?

Az operációs rendszerek által tipikusan nyújtott programfejlesztési

támogatás:

- A program megírásához nyújtott támogatás:

- editorok (esetleg speciális nyelvérzékeny editorok)

- fordítóprogramok (compilerek) / interpreterek

- programkönyvtárak

- rendszerhívások (a felhasználónak nyújtott operációsrendszer-

szolgáltatások, pl. állománykezelés, nyomtatás stb.)

- szerkesztõprogramok (linker), melyek a lefordított program és a

hívott (könyvtári) szubrutinok összeszerkesztésére szolgálnak

- betöltõprogramok (loader)

- A programok belövéséhez nyújtott támogatás:

- nyomkövetõprogramok ("debuggerek")

- tártartalom kijelzése ("dump")

6. Mi az operátori parancsnyelvi rendszer?

Az operátori parancsnyelvi rendszer a géptermi, futásideji események

vezérlésére szolgál, a géptermi személyzet munkáját segíti. Funckóival indíthat

el a kezelõszemélyzet bizonyos operációs rendszer szolgáltatásokat. A mai

interaktív rendszerekben használható vezérlõnyelv is az operátori parnacsnyelv

egy fajtája ("batch file-ok").

7

7. Milyen DOS parancsok szolgálnak

- lemez/meghajtó váltásra:

floppy egység kiválasztása, pl.:A:

diszk egység kiválasztása, pl.: C:

- könyvtárváltásra:

CD útvonalnév,

illetve speciálisan, ha az aktuális könyvtárból közvetlenül "nyíló"

alkönyvtárat akarunk elérni:

CD könyvtárnév

- könyvtár létrehozására:

MD útvonalnév\könyvtárnév

illetve az aktuális könyvtárból nyíló új alkönyvtár létrehozására:

MD könyvtárnév

- állomány listázására:

TYPE állománynév

oldalanként:

TYPE állománynév MORE

- dátum módosítására:

DATE

- idõpont módosítására:

TIME

- tartalomjegyzék kiírására:

DIR

- állomány másolására:

az aktuális könyvtárba:

COPY fájlnév (mit)

máshová:

COPY fájlnév (mit) könyvtárnév (hová)

- állomány átnevezésére:

REN régifájlnév, újfájlnév

8. Milyen szempontok szerint osztályozhatjuk az operációs rendszereket?

Az osztályzási szempontok:

a., felhasználók száma (egyfelhasználós, többfelhasználós)

b., a multiprogramozás foka (nem multiprogramozott/multiprogramozott)

c., az elérés módja (kötegelt, interaktív (idõosztásos), valós idejû)

8

d., a hardver mérete (nagygépes, kisgépes, mikrogépes)

e., a rendszer struktúrája (centralizált, elosztott, hálózati)

f., a felhasználás jellege (ügyviteli, adatfeldolgozó, tranzakciós és lekérdezõ

rendszerek; folyamatvezérlõ; ipari és tervezõi munkaállomások;

programfejlesztõi környezet; személyi számítógépes rendszerek stb.).

9. Mik a multitasking operációs rendszerek fõbb feladatai?

- az egyes taszkok jellemzõinek nyilvántartása

- a processzor ütemezése

- taszkváltás, a taszkok állapotának mentése/helyreállítása

- (közös) erõforrások ütemezése

- tárkezelés, tárkiosztás, tárvédelem

- a konkurencia kezelése, kölcsönös kizárás biztosítása

- a rendszer hatásfokának vezérlése

10. Mi az ütemezés?

Az ütemezés a folyamatok végrehajtási sorrendjét határozza meg, azaz azt,

hogy milyen sorrendben kaphatják meg a CPU-t használatra. (Ehhez hasonlóan

egyéb erõforrások használati sorrendjét az erõforrások ütemezõje határozza

meg.)

A magas szintû ütemezõ a rendszerbe való bejutásra (háttértárolón) váró

folyamatok közül választja ki a következõt, míg az alacsony szintû ütemezõ a

rendszerbe már bejutott, futásra kész folyamatok közül választja ki azt, amelyik

a CPU-t használhatja a következõ idõben. Nagyobb rendszerekben e két

ütemezési szint között helyezkedhet el az ún. közbensõ szintû ütemezõ, a

folyamatok ütemezésének optimalizálására.

11. Mi a különbség a processz és a program között?

A program valamilyen algoritmus megvalósítását szolgáló utasítások sorozata,

míg a processz ennek egy konkrét lefutása. Tehát - bizonyos feltételek

teljesülése esetén - ugyanazt a programot több processz is végrehajthatja

egyidõben.

9

12. Milyen lehetséges állapotai lehetnek egy folyamatnak a központi egység

ütemezés szempontjából? Rajzolja fel a folyamat állapotdiagramját!

ÒM $NWtY %HIHMH]HWW

9iUDNR]y +ROWSRQWL

13. Milyen fõbb szolgáltatásokat nyújtanak az operációs rendszerek?

1. Az operációs rendszer tevékenységi körei szerinti csoportosítás:

a. vezérlõáram-kezelés

b. tárkijelölés és programbetöltés

c. programszerkesztés (linkelés)

d. magas szintû ütemezés (feladatok fogadása)

e. mûködésoptimalizálás (közbensõ ütemezés, valós idejû kezelés)

f. alrendszerek kezelése

2. Az operációs rendszer által nyújtott szolgáltatás felhasználója szerinti

csoportosítás:

a. A felhasználók kiszolgálása:

- folyamatvezérlés

- program betöltés, végrehajtás

- folyamat létrehozás, megszüntetés, attribútumainak beállítása

- központi tár igénylése, felszabadítása

- folyamatok közötti kommunikáció, szinkronizáció

- nyomkövetés hibakereséskor

- állományok kezelése

- állományok létrehozása, megszüntetése, attribútumaik

beállítása

- könyvtárak létrehozása, megszüntetése, törlése

- állományok megnyitása, lezárása

10

- perifériák kezelése

- perifériák igénylése, lefoglalása, felszabadítása

- folyamat és periféria közötti átvitel biztosítása

b. A rendszer mûködtetése:

- rendszerinformációk kezelése

- rendszerkomponensek (folyamatok, állományok, perifériák,

felhasználók, rendszeróra, stb.) állapotának lekérdezése,

módosítása

- rendszerstatisztikák készítése

- számlázás

- erõforrás gazdálkodás

- erõforrás kiosztás, -kezelés, -elvétel

- holtpontmentesség biztosítása

- kölcsönös kizárás

- védelem

- a rendszer védelme a felhasználóktól

- a felhasználók védelme egymástól

- adott folyamat egyes részei közötti védelem

c. A felhasználók és a rendszer együttmûködése:

- kommunikáció

- kommunikációs csatornák létrehozása, megszüntetése

- üzenetek, állapotinformációk küldése, fogadása

- mûveletek távoli erõforrásokon

14. Mi a fõütemezõ, az alacsony szintû és a közbensõ ütemezõ és fõbb feladataik?

A fõütemezõ a rendszerbe való belépés céljából várakozó munkák közül

választja ki azt a következõ munkát, melyet beenged a rendszerbe. A kiválasztott

munkához elkészíti a munkavezérlõ blokkot (PCB - Process Control Block vagy TSS

- Task State Segment), amelyet elhelyez a munkasorba. A fõütemezõ feladata, hogy a

rendszer optimális mûködését elõsegítõ munkakeveréket készítsen, azaz hogy a

kiválasztott munkák CPU és I/O igénye összességében körülbelül azonos legyen. A

fõütemezõ - mûködésébõl adódóan - a kötegelt feldolgozású operációs rendszerek

sajátja, de az interaktív operációs rendszerekbõl sem hiányozhat a PCB-t elkészítõ

funkció.

Az alacsony szintû ütemezõ (másik gyakran használt neve: diszpécser) a CPU-

ra várakozó, futásra kész folyamatok közül választja ki azt, amelyik a következõ

idõben használhatja a CPU-t. Különösen idõosztásos rendszerekben követelmény,

11

hogy mûködése gyors legyen. Ezért az alacsony szintû ütemezõ csak korlátozott

számú szempont figyelembe vételével határozza meg a következõ kiválasztandó

folyamatot (lokális optimum).

Nagyobb rendszerekben az optimalizálás figyelembe vétele vagy nagyon

lelassítaná a sebességkritikus alacsony szintû ütemezõt vagy megfelelõ sebesség

megtartása mellett csak nagyon kevéssé hatékony optimalizáló algoritmust

használhatnánk. Ezért szokták az (alacsony szintû) ütemezõ feladatát kettéválasztani,

és az optimalizálást egy harmadik, az ún. közbensõ szintû ütemezõ segítségével

megvalósítani. Ez az ütemezõ globális szempontok szerinti optimalizálást tud

végezni. A folyamatok futási sebességének figyelésével detektálhatja például a

kiéheztetés tényét, vagy azt, hogy ha egy folyamat aránytalanul lassan fut stb. A

megbomlott egyensúlyt például a folyamatok prioritásának idõleges

megváltoztatásával, sõt bizonyos folyamatok ideiglenes vagy végleges

felfüggesztésével állíthatja helyre.

15. Mik az alrendszerek? Milyen tipikus szolgáltatásaik vannak?

Az alrendszerek egy-egy speciális alkalmazói kör igényeit elégítik ki

olymódon, hogy az adott szolgáltatás igénybevétele a felhasználók szempontjából

(sokkal) egyszerûbb legyen, mint a hagyományos (alrendszer nélküli) operációs

rendszer felületen keresztül.

Megvalósításuk általában a következõ: a hagyományos operációs rendszer

szolgáltatásokat tartalmazó réteg fölé egy, a szolgáltatásokat valamilyen felhasználói

kör speciális igényeit kielégítõ módon, egyszerûen meghívni képes integrált

programcsomagot készítünk. Ez azonban nem univerzális, azaz csak az adott

felhasználói csoport céljaira megfelelõ. Más célok vagy egy másik alrendszer vagy

közvetlenül rendszerhívások segítségével valósíthatók meg.

Az alrendszerek kialakításának elõnyei:

- a sokszor csak bonyolult módon elérhetõ operációs rendszeri

szolgáltatásokat egyszerûen elérhetõvé teszi a felhasználó számára, így a

felhasználónak nem kell ismernie az operációs rendszer részleteit, munkája ezáltal

hatékonyabbá válik.

- (bizonyos korlátok között) új szolgáltatások, alkalmazások

megvalósításakor nem kell az operációs rendszert módosítani (vagy legfeljebb csak

kis mértékben).

Az alrendszerek kialakításának hátrányai:

- mivel az alkalmazás és az operációs rendszer közé egy újabb szint került,

ezáltal sebesség, felhasznált tármennyiség stb. szempontjából hatékonyságromlás lép

12

fel (bár ha figyelembe vesszük, hogy különben az alrendszer funkcióinak nagy részét

magába az alkalmazásba kellett volna integrálni, ez a veszteség általában nem túl

számottevõ).

Tipikus alrendszerek az univerzális operációs rendszerek esetében a

programfejlesztõi alrendszerek. Ezek legfontosabb szolgáltatásai:

- (nyelvspecifikus vagy mésnéven szintaxisvezérelt) editorok

- fordítók és/vagy interpreterek

- szerkesztõk (linker)

- betöltõk (loader)

- hibakeresési támogatás (debugger) stb.

Egy másik, tipikus, manapság egyre növekvõ jelentõségû alrendszer az

adatbázis-kezelési alrendszer.

16. Ismertesse az operációs rendszerek héjszerkezetét!

Az operációs rendszerek felépítésekor - elsõsorban védelmi okokból - szükség

van a hierarchikus struktúrálásra. Ez azt jelenti, hogy az operációs rendszer

szolgáltatásait ún. rétegekbe szervezzük. Egy réteg rutinjai csak a közvetlenül alatta

levõ réteg rutinjait használhatják, de csak egy jól meghatározott interfészen

keresztül. Vagyis egy adott réteg elemi mûveleteket nyújt a felette levõ rétegnek,

vagy másképpen nézve, egy felsõbb réteg bõvíti, komplexebbé teszi egy alatta lévõ

réteg szolgáltatásait. Az egyes rétegek önmagukban is több funkciót tartalmazhatnak,

az egyes rétegeken belüli struktúrálódásra szolgálnak a modulok, amelyek a rétegen

belül egy-egy jól körülhatárolható feladat(csoport)ot valósítanak meg. E modulok -

szintén jól definiált interfészeken keresztül - használhatják egymás szolgáltatásait. A

rétegek kialakításakor meg kell oldani az adatelrejtést is, azaz hogy egy réteg

adatstruktúrája (táblázatok, változók stb.) csak a rétegen belülrõl legyen elérhetõ,

alulról illetve fölülrõl ne.

Egy tipikus rétegzõdést tükröz a következõ ábra:

3. szint Alkalmazói szint

2. szint Parancsértelmezõ szint

1. szint I/O szint

0. szint Rendszerhívások szintje

A kernel a 0. és az 1. szint együttese.

17. Mi a rendszermag (kernel) ?

13

A rendszermag az operációs rendszer réteg felsõbb szintjeibõl intenzíven

használt közös rutinokat tartalmazza. Ez nem egy összefüggõ algoritmusú program,

hanem egy olyan szubrutin- és adattáblázat-együttes, amely együttesen képes a

rendszermag szolgáltatásait nyújtani.

A rendszermag tipikus funkciói:

- a hardverben nem létezõ, gyakran használt utasítások megvalósításai

(lebegõpontos aritmetikai mûveletek stb.)

- megszakításkezelés

- folyamatok állapotainak vezérlése, követése

- folyamatszinkronizáció

- a védelmi rendszer mûködtetése

- erõforrás-kezelés

- ütemezések (CPU, perifériák)

- eseménystatisztika, eseménykezelés

- rendszerkönyvtárak, rendszertáblák kezelése

- kölcsönös kizárást megvalósító algoritmusok (szemafor kezelés,

P és V primitívek)

18. Mi az erõforrás-kezelés? Milyen típusú erõforrásokat ismerünk?

Az erõforrás-kezelés során az operációs rendszer gondoskodik a

számítógéprendszer erõforrásainak (a futó folyamatok igényei alapján történõ)

elosztásáról, ezek védett használatáról, illetve az erõforrások használatáért vívott

versenyhelyzetek kezelésérõl.

Az erõforrás-kezelés két fontos célja:

- a számítógéprendszer mûködését gazdaságossá tenni valamilyen

szempont szerint

- elkerülni a holtponthelyzetek kialakulását és/vagy detektálni és

felszámolni a kialakuló holtponthelyzeteket.

A rendszer erõforrásait többféle szempont szerint osztályozhatjuk:

I. - hardver erõforrások; Pl.: a központi processzor, memóriák,

input/output csatornák és perifériák stb.

14

Ezek az erõforrások általában a technikai fejlõdés következtében egyre

gyorsabbá és olcsóbbá válnak, ezért maximális kihasználtságuk

manapság egyre kevésbé fontos követelmény.

- szoftver erõforrások; Pl.: a különbözõ programok, adatállományok stb.

Ezek ára a hardverhez képest egyre nõ, ezért hatékony kihasználtságuk

egyre inkább elõtérbe kerül.

II. - a számítógéprendszerben meglévõ "hagyományos", a felhasználók

igényeit kielégítõ erõforrások, pl. nyomtatók, szövegszerkesztõ

programok, stb.

- az operációs rendszer által létrehozott, magának a számítógéprendszernek

a mûködését lehetõvé tevõ, illetve elõsegítõ erõforrások, pl. lapok a

virtuális tárkezelésnél, fájl leíró táblák, stb.

III. - elvehetõ erõforrások; Pl. operatív tár (tartalma a háttértárolóra

menthetõ) folyamatok felfüggesztése esetén (pl. holtponthelyzet

kialakulása miatt); az adott erõforrás használata a folyamat

újraindításakor a felfüggesztéskori állapotából folytatódhat

- nem elvehetõ erõforrások; Pl. nyomtatók. Ha egy processz ilyen

erõforrást használ, célszerû megvárni, míg a használatot befejezi (ha ez

lehetséges), mert újbóli vagy más általi használata esetén elõzõleg

alaphelyzetbe kell hozni.

19. Mi a holtpont? Milyen feltételrendszer teljesülése esetén alakulhat ki?

Milyen holtpontkezelési stratégiákat ismer?

A holtpont az a jelenség, amikor a számítógéprendszerben a folyamatok egy

egynél több elemû halmaza egy olyan eseményre vár (erõforrás felszabadítás),

amelyet csak a halmaz valamelyik eleme válthatna ki, de erre nincs lehetõség.

A holtpont kialakulásának feltételei:

1. Vannak olyan erõforrások, amelyek egyidejûleg csak egy folyamat által

haszálhatók.

2. A folyamatok várakozás közben lekötve tarthatnak erõforrásokat.

3. A várakozó folyamatok által lefoglalva tartott erõforrások erõszakkal nem

vehetõk el ("rablás" nincs).

4. A rendszerben ciklikus várakozás van, azaz például az elsõ folyamat olyan

erõforrásra vár, amit a második folyamat foglal, a második olyanra vár, amit

a harmadik foglal stb., míg az utolsó olyanra vár, amit az elsõ folyamat tart

lefoglalva.

15

A holtponthelyzet kialakulása a fenti négy feltétel EGYIDEJÛ teljesülése

esetén lehetséges.

A holtpontkezelésnek két alapvetõ módja van.

1. A holtpont lehetõségének elkerülése, megelõzése:

1.1. Ha egy folyamat várakozik, nem köthet le erõforrást:

1.1.1. Statikus lefoglalási stratégia: egy folyamat csak akkor indulhat,

ha minden szükséges erõforrást megszerzett

1.1.2. Egy folyamat csak akkor igényelhet újabb erõforrást, ha nincs

lekötött erõforrása

Hátrány: kiéheztetés, rossz erõforrás kihasználtság

1.2. Ha egy várakozó folyamatnak nem elégíthetõ ki az erõforrás igénye:

1.2.1. Az összes eddig lekötött erõforrását fel kell szabadítania

1.2.2. Más, várakozó folyamattól "elrabolhatja" a szükséges erõforrást.

A két módszer hátránya: nem mûködik nem elvehetõ erõforrások esetében

(pl. nyomtató).

1.3. A ciklikus várakozás kizárása:

1.3.1. Minden erõforráshoz egy (a többitõl különbözõ) sorszámot

rendelünk, és a folyamatok az erõforrásokat csak azok sorszámai szerint

növekvõ sorrendjében igényelhetik, vagy másképen megfogalmazva, ha

egy folyamat egy bizonyos sorszámú erõforrást igényel, elõtte fel kell

szabadítania az összes általa lefoglalt, az igényeltnél nagyobb sorszámú

erõforrást.

Hátrány: csökken a rendszer áteresztõképessége

1.3.2. Az operációs rendszer csak akkor engedi meg új erõforrások

lefoglalását, ha ennek teljesítése után a rendszer ún. biztonságos

állapotban marad, azaz olyan állapotban, hogy az igények valamilyen

sorrendben ki legyenek elégíthetõk.

Hátrány: olyan pluszinformáció szükséges (hogy egy folyamat egy

erõforrásból maximálisan hányat igényel), mely sokszor nem tudható

elõre, illetve az algoritmus bonyolultsága.

2. A már kialakult holtponthelyzet felismerése és megszüntetése (esetleg

speciális, holtpontfelismerõ és holtpontból való felélesztést szolgáló

alrendszerek használatával):

2.1. Holtpontfelismerés

- folyamatos adatgyûjtés az erõforrások szétosztásáról és a ki nem

elégített igényekrõl

16

- a holtponti helyzetet ezen adatokból detektálni képes algoritmus

ismételt futtatása

Hátrány: bonyolult, sok idõt felemésztõ algoritmusok

2.2. Holtpontból való felélesztés

2.2.1. A holtponti helyzetben lévõ folyamatokat - vagy azok egy

megfelelõ részét - felszámoljuk

Hátrány: az elvégzett munka (egy része) kárbaveszik, nagy károkozást

jelenthet.

2.2.2. A holtponti helyzetben lévõ folyamatok (egy részétõl)

erõforrásokat rabolunk

Hátrány: az elvégzett munka egy része kárbaveszik el nem vehetõ

erõforrások elrablása esetén, illetve ezeket az erõforrásokat más

folyamatnak való átadás elõtt alaphelyzetbe kell hozni.

20. Mi a rendszer biztonságos illetve nem biztonságos állapota?

Egy rendszer (holtpont kialakulás lehetõségének a szempontjából)

biztonságos, ha minden folyamat erõforrás igényét ki lehet elégíteni valamilyen

sorrendben, a ciklikus várakozás veszélye nélkül. Ha ez nem lehetséges, akkor a

rendszer nem biztonságos állapotban van. Ez azt jelenti, hogy ilyenkor holtponti

helyzet kialakulHAT.

21. Milyen fontosabb processzorütemezési stratégiákat ismer? Jellemezze

röviden mûködésüket! Milyen elõnyös illetve hátrányos oldalai vannak az egyes

módszereknek?

1. Elõbb jött - elõbb fut (First Come First Served - FCFS)

A folyamatok érkezési sorrendjükben kapják meg a processzort.

Elõny: egyszerû megvalósítás (egy FIFO sor)

Hátrány:

- a folyamatok átlagos várakozási ideje nagymértékben függ a

folyamatok érkezési sorrendjétõl. Egy hosszú folyamat sokáig

várakoztatja az összes utána érkezõ folyamatot (lassú kamion effektus),

ezáltal az átlagos várakozási idõ nagyon nagy lehet.

- csorda hatás: nagy CPU igényû folyamat sokáig használja a

CPU-t, az összes többi várakozik, az I/O sorok/processzorok

kihasználatlanok.

17

2. A legrövidebb elõnyben (Shortest Job First - SJF)

A CPU-t egy folyamat befejezõdése után a legrövidebb CPU igényû várakozó

folyamatnak adjuk oda (ha több ilyen van, azok közül az FCFS technikával

választunk).

Elõny: a legjobb az átlagos várakozási idõ szempontjából

Hátrány: - KIÉHEZTETÉS!

- tudni kell a CPU igény nagyságát (ez nem mindig mondható meg

elõre):

- kötegelt rendszereknél (ált. itt használják) programozói becslés

- idõosztásos rendszereknél matematikai statisztikai becslés

3. Prioritásos módszerek

Minden folyamathoz egy prioritási értéket rendelünk, és a CPU-t a

legmagasabb prioritású folyamat kapja meg (ha több ilyen van, FCFS szerint

választunk). A prioritás lehet külsõ (pl. a folyamat fontosságától függõ)

illetve belsõ (az operációs rendszer által meghatározott pl. az erõforrás igény

alapján).

Elõny: a prioritásokkal sokféle szempont érvényesíthetõ

Hátrány: KIÉHEZTETÉS!

A kiéheztetés megszüntetése:

- "öregedés" (a folyamatok prioritását adott idõ eltelte után növeljük

vagy csökkentjük - fõleg belsõ prioritású rendszerekben használt

megoldás)

- biztosítjuk, hogy adott (nagy) idõközönként az alacsony prioritású

folyamatok is használhassák egy (kis) idõre a CPU-t, még akkor is, ha

vannak várakozó magas prioritású folyamatok is (fõleg külsõ prioritású

rendszerekben használt megoldás).

4. Körben járás (Round Robin - RR)

A folyamatokat egy zárt körbe szervezzük, és minden egyes folyamat egy

elõre rögzített maximális idõre (idõszelet - time slice) megkapja a

processzort, majd vesszük a kör következõ folyamatát. Az interaktív

rendszerek tipikusan ezt az ütemezési stratégiát használják. Kombinálható

prioritások bevezetésével is, ilyenkor minden prioritási szintnek "saját köre"

van.

Elõny: egyszerû algoritmus; nincs kiéheztetés

Hátrány: a folyamatok megszakításakor állapotukat el kell menteni

(környezetváltás - context switching). Ez jelentõs idõt vesz igénybe és

jelentõs plusz erõforrásokat igényel.

18

A 2. és 3. pont alatt felsorolt algoritmusok mindegyikének megvan a preemptív

(kizárásos) és nem preemptív formája. A preemptív forma annyiban különbözik az

ismertetett nem preemptív formáktól, hogy ha egy rövidebb (SJF esetén) illetve

magasabb prioritású (prioritásos algoritmus esetén) folyamat érkezik, akkor az

MEGSZAKÍTJA a futó folyamatot. A preempció elõnye: kisebb átlagos várakozást

biztosít illetve a fontosabb folyamatokat jobban preferálja. Hátránya: megszakításkor

környezetváltásra van szükség.

22. Egy rendszer az alábbi erõforrásokkal gazdálkodik:

E1: 240 példány

E2: 36 példány

E3: 8 példány

A rendszerben levõ processzek: P1, P2, P3, P4.

Biztonságos-e holtpontmentesség szempontjából a következõ állapot?

Foglal Maximális igény

E1 E2 E3 E1 E2 E3

P1 53 14 4 67 15 5

P2 0 5 1 13 5 3

P3 46 17 0 107 27 5

P4 127 0 1 132 25 4

A maximális igényt leíró mátrixból kivonva a pillanatnyilag lefoglalt

erõforrások mátrixát kapjuk meg a folyamatok által igényelt erõforrások mátrixát,

azaz:

Igény

E1 E2 E3

P1 14 1 1

P2 13 0 2

P3 61 10 5

P4 5 25 3

A pillanatnyilag lefoglalt erõforrásokat tartalmazó mátrix oszlopait összeadva

és az eredményt az összerõforrás-számból kivonva megkapjuk a pillanatnyilag szabad

erõforrások számát:

19

E1=240-(53+0+46+127)=240-226=14

E2=36-(14+5+17+0)=36-36=0

E3=8-(4+1+0+1)=8-6=2

Ebbõl látszik, hogy a szabad erõforrásokból (14,0,2) kielégíthetjük P2 (13,0,2)

igényét. P2 lefutása után felszabadítja az általa lefoglalt erõforrásokat (0,5,1) is. Ezt

hozzáadva az eredetileg szabad erõforrások számához (14,0,2), kapjuk a szabad

erõforrások új számát: (14,5,3). Ebbõl kielégíthetõ P1 igénye, amely lefutása után a

szabad erõforrások új száma (14,5,3)+(53,14,4)=(67,19,7) lesz. Ebbõl kielégíthetõ P3

igénye, amely lefutása után a szabad erõforrások új száma

(67,19,7)+(46,17,0)=(113,36,7) lesz, amelybõl kielégíthetõ P4 igénye. Vagyis a

folyamatok erõforrás igénye P2, P1, P3, P4 sorrendben kielégíthetõ, tehát a rendszer

holtpontmentesség szempontjából BIZTONSÁGOS.

23. Határozza meg az alábbi terhelés esetén az átlagos várakozási idõ értékét a

következõ CPU ütemezési algoritmusok mellett:

a. FCFS (elõbb jött - elõbb fut)

b. SJF (legrövidebb elõször)

c. Round-Robin (idõszelet 10 egység)

processz érkezési idõ CPU

(futásra kész sorba) igény

P1 0 15

P2 8 7

P3 12 26

P4 20 10

a. FCFS:

Ennél a módszernél a folyamatok érkezési sorrendben kapják meg a processzor

használati jogát. A várakozási idõ értelemszerûen a kezdési idõpont és az érkezési

idõpont különbsége.

20

proc. érkezési CPU kezdési befejezési várakozási idõ

idõ igény idõpont (kezd. - érk.)

P1 0 15 0 15 0

P2 8 7 15 22 7

P3 12 26 22 48 10

P4 20 10 48 58 28

----

45

Átlagos várakozási idõ: 45/4=11,25

b. SJF:

Ennél a módszernél meg kell vizsgálni, hogy egy folyamat befejezésekor a

várakozó folyamatok közül melyik a legrövidebb, és az kapja meg a processzor

használati jogát. Tehát itt az érkezési és a végrehajtási sorrend különbözõ lehet!

proc. érk. CPU kezd. befej. vár. befejezéskor következõ

idõ igény idõpont idõ váró proc-k legrövidebb

P1 0 15 0 15 0 P2(7), P3(26)P2

P2 8 7 15 22 7 P3(26), P4(10) P4

P3 12 26 32 58 20 - -

P4 20 10 22 32 2 P3(26) P3

----

29

Átlagos várakozási idõ: 29/4=7,25

c. Round Robin:

Ennél a módszernél egy folyamatot az idõszelet letelte után felfüggesztünk és a

várakozási sor végére rakjuk be. A táblázatban csillaggal jelöltük meg a korábban

felfüggesztett folyamatok ismételt futását és ilyenkor az érkezési idõpont

oszlopában zárójelben a felfüggesztés idejét adtuk meg.

21

proc. érk. CPU kezd. befej. maradék vár. befejezéskor a

idõ igény idõpont igény idõ váró proc-k sorrendje

P1 0 15 0 10 5 0 P2, P1

P2 8 7 10 17 0 2 P1, P3

P1* (10) 5 17 22 0 7 P3, P4

P3 12 26 22 32 16 10 P4, P3

P4 20 10 32 42 0 12 P3

P3* (42) 16 42 52 6 10 P3

P3* (52) 6 52 58 0 0 -

----

41

Átlagos várakozási idõ: 41/4=10,25

(Megjegyzés: az átlagos várakozási idõ mindig a folyamatok összes várakozási ideje

osztva a folyamatok darabszámával.)

24. Mi a virtuális tárkezelés?

A felhasználó által kiadott memória címek egy háttértáron (virtuális tárban)

levõ címeknek felelnek meg, és e címtartománynak csak bizonyos részei találhatóak

meg az operatív memóriában.

A módszer elõnyei:

- a multiprogramozott rendszerekben ha a folyamatoknak csak egy-egy részét

tároljuk az operatív memóriában, akkor több folyamatot futtathatunk

párhuzamosan.

- ma már a (mikro)processzorok címtartománya (is) olyan nagy, hogy ekkora

operatív memóriát nem tudunk (nem akarunk) kiépíteni. A virtuális

tárkezeléssel elérhetõ, hogy viszonylag kis méretû operatív tároló használata

esetén is a felhasználó úgy lássa, mintha egy teljes címtartomány méretû

operatív tárat használna.

A virtuális tárkezelés leggyakrabban használt formája a lapszervezésû

virtuális tár. Ilyenkor a virtuális tárat és az operatív tárat is felosztjuk egyforma

méretû egységekre, lapokra, és az operatív memóriában egy laptáblát hozunk létre.

Ez a laptábla tartalmazza majd azt, hogy az adott lap az operatív tárban van-e vagy

sem, illetve, hogy ha bent van, akkor mi a lap kezdõcíme az operatív tárban

(valamint egyéb vezérlõ biteket.) A processzor által kiadott logikai (virtuális) címet

logikailag két részre osztjuk, a felsõ rész kiválaszt egy bejegyzést a laptáblából, itt

megtaláljuk a lap operatív tárbeli kezdõcímét és ehhez adjuk hozzá a cím második

22

felét, az úgynevezett (lapon belüli) eltolást. Ez az összeg jelenti a keresett

memóriahely címét az operatív tárolóban. A címszámítás gyorsítására az utoljára

használt néhány lap címét tartalmazó asszociatív tárat szoktak használni.

VezérlésKezdõcím

Lapszám Lapon belüli eltolás

++

LOGIKAI CÍM

LAPTÁBLA

OPERATÍV MEMÓRIA

FIZIKAI CÍM

25. Mi a laphiba?

Virtuális tárkezelés használata esetén elõfordulhat, hogy a processzor által

kiadott címet tartalmazó lap nincs bent az operatív memóriában. Ezt hívjuk

laphibának. Kezelése:

1., Ellenõrizzük, hogy a kiadott címet az adott folyamat használhatja-e.

2., A kérdéses lapot be kell olvasni az operatív tárolóba (természetesen ez

azzal járhat, hogy elõtte egy bent lévõ lapot ki kell vinnünk a háttertárba),

majd módosítani kell laptáblát.

3., Meg kell ismételni annak az utasítsának a végrehajtását, amelynél a

laphiba fellépett.

23

26. Milyen lapozási stratégiákat ismer? Ismertesse röviden õket! Milyen elõnyös

és hátrányos tulajdonságaik vannak?

a, FIFO (elõbb be - elõbb ki)

A behozott lapok számait egy FIFO tárban tároljuk. Laphiba esetén a FIFO sor

elején álló (azaz a legrégebben behozott) lapot visszük ki, és az újonnan behozott

lap sorszámát a FIFO sor végére írjuk.

Elõny: - egyszerû

Hátrány: - sok laphibát generál, hiszen elképzelhetõ, hogy egy lapot már régen

behoztunk, de még mindig használjuk. Ez tipikusan igaz a magát az operációs

rendszert tartalmazó lapokra, amelyeket az algoritmus állandóan "kilapoz".

b, OPT (optimális)

Az új lapot mindig annak a lapnak a helyére hozzuk be, amelyre a legkésõbb

fogunk (újra)hivatkozni.

Elõny: - ez adja a minimális laphibaszámot

Hátrány: - a gyakorlatban megvalósíthatatlan, mivel nem lehet elõre tudni a

lapokra való hivatkozások sorrendjét. Ezért csak az egyéb statégiák jóságának

vizsgálatához referenciaként használják.

c., LRU (legrégebben használt)

Az új lapot mindig annak a helyére hozzuk be, amelyre a legrégebben

hivatkoztunk (amelyet a legrégebben használtunk). Az algoritmus alapja a

lokalitási elv megfordítása, azaz ha egy lapot már régóta nem használunk, akkor

nagy valószínûséggel nem lesz rá szükség a késõbbiekben sem.

Elõny: - viszonylag jól közelíti az optimális módszert

Hátrány: - kiegészítõ hardvert igényel és lassú

d., Second chance (második esély)

Ennél a stratégiánál minden lapon van egy hivatkozás bit is, amelyet 1-be állítunk

minden alkalommal, ha a lapra hivatkozunk. (Figyelem: ez igény szerinti

lapozásnál azt jelenti, hogy amikor behozzuk a lapot, ezt a bitet rögtön 1-be

állítjuk, hiszen azért hozzuk be a lapot, mert hivatkozunk rá!) Lapcsere esetén azt

a lapot kell kicserélnünk, amelyik a legrégebben van bent (FIFO), de ha a FIFO

módszerrel meghatározott lap hivatkozás bitje=1, akkor a lapot 0 értékû

hivatkozás bittel betesszük a FIFO végére. (Azaz csak 0 hivatkozás bitû lapot

cserélhetünk le.)

24

27. Miért van szükség tárvédelemre?

Tárvédelemre elsõsorban a következõ okok miatt van szükség:

a., Az operációs rendszer védelme a felhasználói programoktól (illetve az

operjcáiós rendszer rétegeinek védelme egymástól). Megoldás: prioritási szintek

bevezetése, az adott területet csak egy legalább adott prioritási szinttel

rendelkezõ folyamat használhatja.

b., A folyamaton belüli logikai egységek védelme. Megoldás: szegmentálás; kód-

stack- és adatszegmensek definiálása. Minden egyes utasítás végrehajtásakor

(hardver úton) ellenõrizzük, hogy az utasítás operandusa tényleg az adott

utasításnak megfelelõ típusú szegmensen belül található-e meg.

c., A folyamatok védelme egymástól. Megoldás: szegmentálás. Minden egyes

folyamat saját szegmensleíró táblával rendelkezik és csak azokat a szegmeseket

érheti el, amelyek szerepelnek a táblájában.

A fentieken túlmenõen szükség van arra is, hogy kijelöljük, hogy egy folyamat

az általa elért tárterületeket hogyan használhatja (csak olvasható vagy írható-

olvasható; csak futtatható vagy futtatható-olvasható, stb.).

28. Hogyan vesz részt a szegmentálás a védelemben?

1., A folyamat különbözõ logikai egységeit védi egymástól. Például definiálhatunk

egy-egy kód- illetve stackszegmenst valamint egy vagy több adatszegmenst.

Amikor egy-egy utasítást végrehajtunk, ellenõrizzük, hogy az az utasítás az

adott típusú szegmensben dolgozik-e (pl. ugrás-kódszegmens, mûveletvégzés-

adatszegmens, PUSH/POP-stackszegmens), illetve, hogy az utasításban lévõ

cím ténylegesen benne van-e a szegmens kezdete és hossza által meghatározott

memóriaterületen. Így elkerülhetõk azok a tipikus programhibák, mint például,

hogy a stack túlcsordul és felülírja a progamot, egy rossz ugrási cím miatt

adatokat értelmezünk utasításnak, vagy fordítva: rossz operanduscím esetén

felülírunk utasításokat.

2., A folyamatok memóriaterületeinek más folyamatoktól való védelme

(megteremtve viszont az esetleges közös adatterületek kialakításának

lehetõségét). Minden egyes folyamat saját szegmensleíró táblával rendelkezik,

amely csak azon szegmensek címeit tartalamzza, amelyeket az adott folyamat

használhat. A folyamat csak olyan címeket adhat ki, melyek ezeken a

szegmenseken belül vannak, és ezt ellenõrizzük. Így nincs mód arra, hogy egy

25

folyamat véletlenül vagy szándékosan más folyamat számára fenntartott helyre

írjon. Viszont sokszor szükség van arra, hogy több folyamat

együttmûködhessen. Ez a lehetõség úgy teremthetõ meg, hogy bizonyos (a

közös területeket tartalmazó) szegmenseket az együttmûködni kívánó összes

folyamat szegmenstáblájába felvesszük.

29. Mi a vergõdés és megelõzési módja?

A vergõdés mutiprogramozott számítógéprendszerek esetén az a jelenség,

amikor egy folyamat több idõt tölt lapozással, mint saját "hasznos" tevékenységével.

A jelenség oka az, hogy a folyamat a szükségesnél kevesebb lapkerettel rendelkezik

az operatív memóriában.

A vergõdés megelõzési módjai:

a., lokális lapkiosztási algoritmus használata: Ez azt jelenti, hogy minden folyamat

rögzített darabszámú kerettel gazdálkodhat (nem tud más folyamatoktól lapokat

elvenni). Ezáltal, ha egy folyamat vergõdés állapotába kerül, attól a többi még

(viszonylag) zavartalanul lefuthat.

b., munkahalmaz vagy kritikus halmaz: A munkahalmaz kialakíthatósága a

lokalitás elvén alapul, azaz ha egy folyamat egy adott címtartományt (azaz

lapkészletet) használ, akkor nagy valószínûséggel a következõkben is ezt fogja

használni. Ez a munkahalmaz viszonylag lassan változik (akár maguk a lapok,

akár a munkahalmazt alkotó lapok darabszáma). Az operációs rendszer olyan

lapozási stratégiát követ, hogy minden egyes folyamatnak igyekszik állandóan

benntartani a munkahalmazát. Hátránya: bonyolult szoftvert és hardvert igényel.

c., laphiba gyakoriság figyelése: Figyeljük, hogy egy folyamatban idõegységenként

hány laphiba lépett fel. Ha ez az érték meghalad egy elõre rögzített maximumot,

akkor a folyamatnak a szükségesnél kevesebb kerete van. Ha lehetséges, adunk

neki még egyet, ha nem, felfüggesztjük a folyamatot átmenetileg. Viszont, ha

egy elõre rögzített minimumnál kisebb a laphibák száma, a folyamatnak túl sok

kerete van, ezért ilyenkor elveszünk tõle egyet.

26

30. Hogyan találunk meg egy adatblokkot lemezen?

A mágneses háttértárak szervezési elve általában a következõ:

A lemezeket koncentrikus körökre (sáv vagy pálya - track) osztjuk.

Merevlemezes egységeknél, ahol általában több lemez helyezkedik el egymás

alatt, az egymás alatti sávok összességét cilindernek hívjuk. Más esetekben

lehetséges, hogy a lemez mindkét oldalára írunk. A sávok további egységekre,

az úgynevezett szektorokra vannak osztva. A 0. szektor helyzetét egy

referencia- vagy más néven indexlyuk jelzi. Az egyes szektorok között üres

helyek (gap) találhatók. Minden pálya illeve szektor elején egy azonosító

bitsorozat áll, amelyet a formattálás során a formattáló program ír fel. Az

adatblokkok az egyes szektorokban helyezkednek el. Az adatblokkok méretétõl

függõen lehetséges, hogy egy adatblokk = egy szektor, egy adatblokk < egy

szektor illetve egy adatblokk > egy szektor. Az, hogy az egyes állományokhoz

tartozó adatterületek hogyan helyezkednek el a lemezen, nagymértékben függ az

alkalmazott háttértér kiosztási stratégiától (lásd 32. kérdés).

31. Milyen katalógusszerkezeteket (könyvtárszerkezeteket) ismer?

a., kétszintû katalógus

Minden felhasználónak saját katalógusa van (ezek neveit tartalmazza a felsõ

szintû katalógus). E saját katalógusokban helyezhetik el a felhasználók saját

állományaikat. Ezen kívül van egy "rendszerkatalógus", ahol a közös használatú

állományok találhatók meg.

Értékelés: túlságosan egyszerû, merev

b., fa struktúrájú katalógus

Az a., módszer továbbfejlesztése. A felsõ szintû ("gyökér") katalógusban

állományok mellett újabb katalógusok találhatók, majd ezekben a

katalógusokban szintén állományok és újabb katalógusok vannak és így tovább.

Értékelés: elég flexibilis, gyakran használt megoldás.

c., ciklusmentes gráf

A b., módszer továbbfejlesztése. Ha egy állomány több katalógusban is

szerepel, a több másolatonak az egyes katalógusokban külön-külön való

tárolása helyett az adott állományból csak egy példányt tárolunk és a megfelelõ

katalógusokban speciális bejegyésekkel, az ún. kapcsolatokkal (linkekkel)

mutatunk e közös példányra.

27

Értékelés: nagyon flexibilis, többfelhasználós rendszerekben közös

adatterületek kialakítását kifejezetten támogatja, helytakarékos, bár a vezérlése

bonyolultabb.

32. Milyen háttértér-kiosztási stratégiákat ismer? Ismertesse röviden õket!

Milyen elõnyös és hátrányos tulajdonságaik vannak?

a., folytonos

Minden állomány egymás után álló blokkok sorozatát foglalja el a lemezen. A

katalógusba a blokk kezdõcímét és az elfoglalt blokkok számát kell felvenni.

Elõny: szekvenciális és véletlen elérésû állományokhoz is jó

Hátrány:- bonyolult algoritmusok a megfelelõ méretû szabad terület

megkeresére (elsõ illeszkedõ - first fit; legjobban illeszkedõ - best fit;

legnagyobb hely - largest hole).

- külsõ elaprozódás lép fel (a szabad terület egy idõ után sok

haszálhatatlan kis részre esik szét). Kezelése: idõnkénti tömörítés - lassú!

- probléma az állományok bõvítése:

- át kell másolni - lassú

- nagyobb helyet foglalunk le, mint ami szükséges, de egyrészt

nem biztos, hogy késõbb tényleg bõvítjük az állományt, ekkor ez

felesleges helypazarlás, illetve másrészt nincs arra garancia,

hogy bõvítéskor a lefoglalt nagyobb hely tényleg elég nagy-e.

b., láncolt

Minden állomány blokkok láncolt listája, azaz minden blokk végén van egy

pointer, mely a következõ blokkra mutat. A katalógus az elsõ és az utolsó blokk

címét tartalmazza.

Elõny: - a szabad helyek aprózódása nem jelentkezik

- nem probléma az állomány bõvítése

Hátrány: - csak szekvenciális állományokra jó

- sebezhetõ; ha egy pointer elveszik, elvész az állomány egész

hátralévõ része, hiszen ahhoz, hogy egy adott blokkot megtaláljunk, az

elsõ blokktól kiindulva végig kell tudni menni a keresett blokkig a

pointerek segítségével.

c., indexelt

A b., verzió módosítása oly módon, hogy a pointereket egy külön indextáblában

tároljuk. Az indexblokk i. eleme az állomány i. blokkjára mutat.

Elõny: - nem csak szekvenciális állományokra jó

- ez a legflexibilisebb megoldás

28

Hátrány: - az indexblokkok kezelése:

- nem biztos, hogy az indexblokk belefér egy blokkba (hosszú

állományok esetén), ilyenkor a megoldás az indexblokkok láncolt listája

- ha a fizikai blokkméret sokkal nagyobb, mint az indexek

elhelyezéshez szükséges terület - belsõ elaprózódás lép fel (kis méretû

állományoknál).

33. Ismertessen legalább három lemezes háttértár ütemezési stratégiát! Melyik

ezek közül a legoptimálisabb?

FCFS (elõbb jött - elõbb szolgálják ki)

A kérelmek egy FIFO sorba kerülnek, és mindig a FIFO elejérõl vesszük a

következõ kiszolgálandót. - A legrosszabb hatásfokú a fejmozgás szempontjából.

SSTF (a legközelebbi elõnyben)

Mindig azt az igényt elégítjük ki, amelyhez a fej éppen a legközelebb van. - A

kiéheztetés veszélye miatt (a fej jelenlegi állásától "messze" lehet, hogy soha sem jut

el) használhatatlan.

SCAN (pásztázó)

A fej a két végállása között folyamatosan ingázik és kielégíti az éppen

aktuális pályára vonatkozó azon igényeket, amelyek a pásztázás kezdetekor már

fennálltak. (Azaz a kiszolgálás közben érkezõ új igényeket csak a következõ

"körben" szolgálja ki, így kerüli el a kiéheztetést.) - Jó algoritmus, de a lemez szélein

lévõ állományokat ritkábban szolgálja ki.

N-SCAN (N lépéses pásztázó)

Egy irányba mozogva csak maximum N darab igényt elégítünk ki minden

pályán. - Az átlagos várakozási idõ körülbelül ugyanaz mint a SCAN-é, de a szórása

kisebb.

C(ircular)-SCAN (Egyirányú pásztázó)

A kérések kiszolgálása mindig csak az egyik irányú fejmozgásnál történik. -

Elkerüli még a szélsõ pályák háttérbe szorítását is.

34. Mit nevezünk konkurens folyamatoknak?

Konkurens folyamatoknak az egymással (elvileg) párhuzamosan futtatható

folyamatokat nevezzük. A konkurens folyamatokat egymásrahatásuk szempontjából a

következõképpen osztályozhatjuk.

- Független folyamatok: sem közös erõforrás, sem adatcsere nem kapcsolja õket

össze, nincs semmi közük egymáshoz. Csak multiprocesszoros rendszerekben

29

fordulhatnak elõ. (Egyprocesszoros rendszerben, ha más nem is, de a CPU

mindig közös erõforrás, melyért a folyamatok versenyeznek.)

- Aszinkron folyamatok: esetenkénti szinkronizáció, kooperáció, illetve közös

erõforrásért való versengés fennáll köztük:

- erõforrásokért versengõ (de egyébként egymástól független)

folyamatok

- kooperáló folyamatok (kooperáció és versengés együttesen jellemzi

õket).

35. Mi a precedenciagráf, a fork/join illetve a parbein/parend utasításpár?

A konkurens folyamatokban is lehetnek olyan utasítások (vagy

utasításcsoportok), melyek végrehajtása meg kell, hogy elõzze más utasítások (vagy

utasításcsoportok) végrehajtását. A lehetséges párhuzamosítások, illetve sorrendi

kötöttségek szemléletes ábrázolására szolgál a prcedenciagráf, mely egy irányított,

ciklusmentes gráf. A gráf csomópontjai utasítások, míg, ha egy csomópontból él

vezet egy másik csomópontba, akkor ez jelenti azt, hogy az elsõ csomópont

utaításának végrehajtása meg kell, hogy elõzze a második csomópontét. Ha egy

csomópontból egynél több él indul ki, akkor ez jelenti azt, hogy az élek mentén lévõ

csomópontok utasításai párhuzamosíthatók. Míg, ha egy csomópontba egynél több él

fut be, akkor ez azt jelenti, hogy az - eddig - párhuzamosan futó tevékenységeket

szinkronizálni kell, azaz a csomópontban szereplõ utaítást csak azután lehet

végrehajtani, ha minden bevezetõ ág tevékenysége végetért.

A precedenciagráfok szemléletesek, de közvetlenül programozásra nem

használhatók fel. Megoldás:

a., fork/join utasítások bevezetése

- a "fork címke" utasítás: a végrehajtás két párhuzamos ágra szakad, az

egyik ág következõ utasítása a fork utasítást követõ utasítás, míg a másik

ágé a címkénél található.

- a "join számláló" utasítás: a számláló által mutatott darabszámú ág

egyesítése. Mûködése: minden ág befejzõdése eggyel csökkenti a számláló

értékét, és a join után következõ utasítás végrehajtása csak akkor

kezdõdhet el, ha a számláló eléri a nulla értéket (minden ág befejezõdik).

A fork/join utasításokkal tetszés szerinti precedenciagráf leírható, de a

program strukturálatlan, a címkék és a goto utasítások miatt áttekinthetlen

lesz.

30

b., parbegin/parend utasítások bevezetése

A parbegin/parend utasítások között egymással párhuzamosan

végrehajtható utasításokat sorolhatunk fel. A parbegin/parend

utasításokkal készült program strukturált, áttekinthetõ, goto utasítás

mentes lesz, de csak önmagukban ezekkel az utasításokkal nem írható le

minden precedenciagráf. Megoldás: alkalmasan megválasztott szemaforok

és az õket kezelõ P (letiltás) és V (engedélyezés) primitívek bevezetése.

Ezen kiegészítésekkel minden precedenciagráf kezelhetõ és az elkészült

program áttekinthetõ, goto mentes lesz.

36. Mi a kritikus szekció, a szemafor és a P illetve V primitív?

A párhuzamosan végrehajtható folyamatokban is lehetnek olyan részek,

melyek párhuzamos végrehajtása hibát okozhat. Ezeket a részeket nevezzük kritikus

szekcióknak. Biztosítani kell, hogy a kritikus szekcióhoz tartozó utasítások

oszthatatlanul (azaz más folyamatok által meg nem szakítható módon) hajtódjanak

végre.

Megoldás: rendeljünk minden kritikus szekcióhoz egy, a kritikus szekcióba

való belépést engedélyezõ jelzõt, egy ún. szemafort. Egy folyamat csak akkor léphet

be az adott kritikus szekcióba, ha a hozzá tartozó szemfort szabadnak találja. A

szemafor állítására szolgáló két oszthatatlan mûvelet a P és V primitív.

A P primitív lefoglalja (azaz tilosra állítja), míg a V primitív felszabadítja

(azaz szabadra állítja) a szemafort.

37. Ismertesse a P és V primitívek mûködését egy termelõ/fogyasztó probléma

megoldására!

A termelõ/fogyasztó probléma: két folyamat egy közös memóriaterületen

(postaláda) kommunikál egymással. A termelõ üzenetet (levelet) tesz be a

postaládába, míg a fogyaszó azt kiveszi onnan.

A feladat megoldásához 3 szemafor szükséges:

1., SEMA: a kölcsönös kizárást valósítja meg, tehát, hogy amíg az egyik

folyamat használja a postaládát, a másik folyamatnak

várakoznia kell. A SEMA szemafor két értéket vehet fel:

SZABAD = 1, FOGLALT = 0; Kezdeti értéke SZABAD.

2., TELE: a postaládában lévõ tele borítékok (azaz üzenetek) számát

határozza meg. Értéke 0 és a postaláda kapacitását meghatározó

31

MAX érték között változhat. Kezdeti értéke: 0. Ha a TELE = 0.

ez jelzi a fogyasztó folyamatnak, hogy nincs levél (üzenet) a

postaládában.

3., ÜRES: a postaládában levõ üres helyek száma. Értéke 0 és MAX között

változhat. Kezdeti értéke: MAX. Ha ÜRES = 0, ez jelzi a

termelõ folyamatnak, hogy a postaláda tele van, tehát újabb

üzenet oda nem tehetõ be.

A megoldáshoz a P és V primitívek azon megvalósítása használható, melyben P

(a lefoglaló primitív) eggyel csökkenti, míg a V (a felszabadító primitív) eggyel

növeli a szemafor értékét.

termelõfolyamat

posta-láda

fogyasztófolyamat

SEMA

TELE ÜRES

A termelõ folyamat programja:

P (ÜRES) - egy üres hely lefoglalása, az üres helyek számának eggyel való

csökkentése

P (SEMA) - a postaláda használati jogának megszerzése, a postaláda

lefoglalása

a levél beírása a postaládába

V (SEMA) - a postaláda felszabadítása

V (TELE) - a tele borítékok számának eggyel való növelése

32

A fogyasztó folyamat programja:

P (TELE) - egy tele boríték lefoglalása, a tele borítékok számának

csökkentése

P (SEMA) - a postaláda használati jogának megszerzése, a postaláda

lefoglalása

egy levél kiolvasása a postaládából

V (SEMA) - a postaláda felszabadítása

V (ÜRES) - az üres helyek számának eggyel való növelése

38. Milyen operációsrendszer-támogatást nyújt az Intel 80386-os processzor?

A legfontosabbak operációsrendszer-támogatási formák:

- a strukturált tárkezelés támogatása:

- virtuális tárkezelés támogatása

- kétszintû laptáblán alapuló címzés

- címszámítást gyorsító egység (TLB)

- szegmentálás:

- lokális, globális és interrupt szegmensleíró táblák támogatása

- címszámítást gyorsító szegmensregiszterek

- a védelem támogatása:

- prioritások (4 szintû)

- a hardver bizonyos regiszterei illetve utasításai csak bizonyos

prioritási szintû folyamatok számára elérhetõek (rendszerregiszterek

ill. privilegizált utasítások).

- tárvédelmi jogosultságok

- szegmentálás

- az idõosztásos multiprogramozás támogatása:

- környezetváltás hardver támogatása (a környezetválás EGY assembly

utasítás)

- a task állapot szegmens (TSS; kb. azonos a máshol használt PCB-vel)

adattípus assembly szintû bevezetése

- a megszakítások, rendszerhívások támogatása:

- különféle típusú megszakítás lehetõsége (hardver, szoftver, kivételes

állapot)

- interrupt vektortábla, néhány fontos interrupt definiálása

- különbözõ típusú megszakításkezelõ eljárások

33

- a megszakításkezelõ eljárás ellenõrzött hívása, paraméter átadása,

prioritási szint idõleges módosítása (kapuk - gate)

- a programfejlesztõ alrendszer támogatása:

- nyomkövetõ programok ("debuggerek") hardver támogatása

- töréspont elhelyezési támogatás

- lépésenkénti programvégrehajtás

39. Igény szerinti lapozásnál a lapokra az alábbi sorrendben hivatkoznak:

7 6 5 4 6 7 3 2 6 7 6 5 1 2 5 6 7 6 5 2

Határozza meg a laphibák számát

a. a FIFO

b. az optimális (OPT)

c. az LRU

d. a second chance (második esély)

lapváltási stratégiák mellett, ha a memóriában 4 lapnyi hely van (4 frame)!

Írja le a laphibák meghatározásának menetét is!

a. A FIFO stratégiánál azt a lapot kell lecserélni, amelyiket a legrégebben hoztuk be.

7 6 5 4 6 7 3 2 6 7 6 5 1 2 5 6 7 6 5 2

7 7 7 7 3 3 3 3 5 5 5 5 7 7

- 6 6 6 6 2 2 2 2 1 1 1 1 5

- - 5 5 5 5 6 6 6 6 2 2 2 2

- - - 4 4 4 4 7 7 7 7 6 6 6

A laphibák száma: 4+10.

b. Az OPT stratégiánál azt a lapot kell lecserélni, amelyik a legkésõbb kell majd.

7 6 5 4 6 7 3 2 6 7 6 5 1 2 5 6 7 6 5 2

7 7 7 7 7 7 1 7

- 6 6 6 6 6 6 6

- - 5 5 5 5 5 5

- - - 4 3 2 2 2

A laphibák száma: 4+4.

34

c. Az LRU stratégiánál azt a lapot kell lecserélni, amelyiket a legrégebben

használtuk.

7 6 5 4 6 7 3 2 6 7 6 5 1 2 5 6 7 6 5 2

7 7 7 7 7 7 7 7 2 2

- 6 6 6 6 6 6 6 6 6

- - 5 5 3 3 5 5 5 5

- - - 4 4 2 2 1 1 7

A laphibák száma:4+6.

d. A második esély stratégiánál minden lapon van egy hivatkozás bit is, amelyet 1-be

állítunk minden alkalommal, ha a lapra hivatkozunk. (Figyelem: ez igény szerinti

lapozásnál azt jelenti, hogy amikor behozzuk a lapot, ezt a bitet rögtön 1-be

állítjuk, hiszen azért hozzuk be a lapot, mert hivatkozunk rá!) Lapcsere esetén azt

a lapot kell kicserélnünk, amelyik a legrégebben van bent (FIFO), de ha a FIFO

módszerrel meghatározott lap hivatkozás bitje=1, akkor a lapot 0 értékû

hivatkozás bittel betesszük a FIFO végére. (Azaz csak 0 hivatkozás bitû lapot

cserélhetünk le.) Az alábbi példában a laphiba eseteket - a fentiektõl eltérõen - *-

gal jelezzük.

7* 6* 5* 4* 6 7 3* 2* 6* 7* 6 5* .

7,1 7,1 7,1 7,1 7,0 7,0 7,0 7,0 3,1 3,1 3,1 3,1 3,0 3,0 3,0 3,0 5,1

---- 6,1 6,1 6,1 6,1 6,0 6,0 6,0 6,0 2,1 2,1 2,1 2,1 2,0 2,0 2,0 2,0

---- ---- 5,1 5,1 5,1 5,1 5,0 5,0 5,0 5,0 6,1 6,1 6,1 6,1 6,0 6,0 6,0

---- ---- ---- 4,1 4,1 4,1 4,1 4,0 4,0 4,0 4,0 7,1 7,1 7,1 7,1 7,0 7,0

1* 2* 5 6* 7* 6 5* 2 .

5,1 5,1 5,1 5,1 5,0 5,0 5,0 5,0 7,1 7,1 7,1 7,1

1,1 1,1 1,1 1,1 1,1 1,0 1,0 1,0 1,0 1,0 5,1 5,1

6,0 2,1 2,1 2,1 2,1 2,1 2,1 2,0 2,0 2,0 2,0 2,1

7,0 7,0 7,0 6,1 6,1 6,1 6,1 6,0 6,0 6,1 6,1 6,1

A laphibák száma: 4+10.

Figyeljük meg, hogy mindegyik lapozási algoritmus esetében, amíg az

operatív memória meg nem telik, minden egyes új lapra történõ hivatkozás

laphibával jár. Az ezen (jelen példában az elsõ 4) felüli laphibaszám jellemzi

valójában az adott algoritmus jóságát. Ezért adtuk meg minden esetben a laphibák

35

számát összeg formájában, külön felüntetve a "kötelezõ" és az algoritmust jellemzõ

laphibaszámot.

40. Valósítsa meg a következõ precedenciagráfot

a. fork/join

b. parbegin/parend

utasítások segítségével!

U1

U2 U3

U4 U5 U6

U7

U8

a. c1:=c2:=2;U1;fork L1;U2;fork L2;U4;goto L3;

L2: U5;L3: join c1;

U7;goto L4;

L1: U3;U6;

L4: join c2;U8;

36

b. U1;parbegin

beginU2;parbegin

U4;U5;

parend;U7;

end;begin

U3;U6;

end;parend;U8;

41. Valósítsa meg a következõ precedenciagráfot

a. fork/join

b. parbegin/parend

utasítások segítségével!

U1

U2 U3 U4

U5

a. A problémát most az okozza, hogy az U1 utasítás után a gráf három ágra szakad,

míg a fork utasítással csak kétfelé való elágaztatás lehetséges. Megoldás: két fork

utasítás használata. Az elsõvel a gráfot kétfelé ágaztatjuk, míg a másodikkal az

egyik ágat (a mi megoldásunkban az elsõt) bontjuk további két részre. Figyeljük

37

meg azt is, hogy mivel az U5 utasítás elõtt 3 ág találkozik, a join utasítás c

számlálójának kezdetben 3-as értéket adunk!

c:=3;U1;fork L1;fork L2;U2;goto L3;

L2: U3;goto L3;

L1: U4;L3: join c;

U5;

b. A parbegin/parend használatakor semmilyen probléma nem merül fel:

U1;parbegin

U2;U3;U4;

parend;U5;

42. Adott a következõ fork/join leírású programrészlet:

c1:=c2:=c3:=2;U1;fork L1;U7;fork L3;U8;goto L4;

L1: U2;fork L3;U3;

L2: join c1;U4;goto L4;

L3: join c2;U6;goto L2;

L4: join c3;U5;

38

a. Mely utasítások hajthatók végre az U3 utasítással párhuzamosan?

Indokolja!

b. Rajzolja fel a precedenciagráfot!

c. Valósítsa meg ugyanezt a programot parbegin/parend utasításokkal is!

b. A precedenciagráf:

U1

U7 U2

U8 U6 U3

U4

U5

a. A gráfból leolvashatóan U3-mal párhuzamosan a vele "megelõzõ" illetve "követõ"

kapcsolatban nem álló utasítások, azaz az U6, illetve az U7(!) és az U8(!) hajtható

végre.

c. Az adott precedenciagráf parbegin/parend utasításokkal közvetlenül nem

valósítható meg (hiszen az U1 után szétváló két ág egynél több helyen, az U6-nál és

az U5-nél is egyesül), be kell vezetnünk a megfelelõ vezérlõ szemaforokat is. A

szemaforokat berajzoltuk a precedenciagráfba:

39

U1

U7 U2

U8 U6 U3

U4

U5

s7 s2

s8s67 s62 s3

s58s46 s43

s54

Magyarázat: például az s2 szemafor az U2 utasítás elvégzését engedélyezi, az

s43 szemafor az U4 elvégzését az U3 elvégzése után, míg az s46 az U4 elvégzését

engedélyezi az U6 elvégzése után stb.

A parbegin/parend program a berajzolt szemaforokkal:

parbegin

begin U1; V(s7); V(s2); end;

begin P(s7); U7; V(s8); V(s67); end;

begin P(s2); U2; V(s62); V(s3); end;

begin P(s8); U8; V(s58); end;

begin P(s67); P(s62); U6; V(s46); end;

begin P(s3); U3; V(s43); end;

begin P(s46); P(s43); U4; V(s54); end;

begin P(s58); P(s54); U5; end;

parend;

40

Magyarázat: például a begin P(s46); P(s43); U4; V(s54); end; sor jelentése:

Az s46 szemafor segítségével megvárjuk, míg az U4 utasítást engedélyezzük az U6

elvégzése után, illetve az s43 szemafor segítségével megvárjuk, míg az U4 utasítást

engedélyezzük az U3 elvégzése után. Ha mind a két feltétel teljesül, elvégezhetjük az

U4 utasítást, majd ezután az s54 szemafor szabadra állításával engedélyezzük az U5

utasítás elvégzését, stb.

41

IRODALOMJEGYZÉK

[1] James L. Peterson - Abraham Silberschatz:

Operating System Concepts - 2nd edition

Addison-Wesley, 1985. ISBN 0-201-06079-5

[2] Bakos Tamás - Zsadányi Pál:

Operációs rendszerek

Gábor Dénes Mûszaki Informatikai Fõiskola, ISBN 963 577 098 7

[3] Kiss István - dr. Kondorosi Károly:

Operációs rendszerek

Mûegyetemi Kiadó, 1992.

[4] Intel Microprocessor and Peripheral Handbook

Intel Corporation, 1989. ISBN1-55512-041-5