Operációs Rendszerek II

Preview:

DESCRIPTION

Operációs Rendszerek II. 13. előadás 2007. május 7. Konkurencia. Csak nagyon röviden Szituációk Folyamatok közötti „direkt” együttműködés Folyamatok között „akaratlanul” kialakuló versenyhelyzetek Problémák, megoldási lehetőségek. Folyamatok együttműködése. - PowerPoint PPT Presentation

Citation preview

Operációs Rendszerek II.

13. előadás

2007. május 7.

Konkurencia

• Csak nagyon röviden

• Szituációk– Folyamatok közötti „direkt” együttműködés– Folyamatok között „akaratlanul” kialakuló

versenyhelyzetek

• Problémák, megoldási lehetőségek

Folyamatok együttműködése

• A folyamatoknak sokszor szükségük van arra, hogy más folyamatokkal kommunikáljanak– Folyamatok működésükhöz más folyamattól várnak adatot

• Adatok átadása (egyik folyamat a másiknak)• Adatok megosztása folyamatok között

– Közös erőforrásokért versengő folyamatok szinkronizációja– Különböző folyamatok által végzett műveletek megfelelő

sorrendben történő végrehajtásának biztosítása

• Sok operációs rendszer lehetővé teszi, hogy az együtt dolgozó folyamatok megosszanak bizonyos erőforrásokat egymás között – versenyhelyzet alakulhat ki

Versenyhelyzetek - alapprobléma

• Klasszikus probléma, egy print spooler rendszer– Ha egy folyamat ki szeretne nyomtatni egy fájlt, akkor a fájl nevét

elhelyezi a print spooler következő üres sorában. • Spooler betelésével most nem foglalkozunk (kellően nagy)

– A spooler bejegyzéseit természetes számokkal azonosítjuk (sorszám)– A rendszer továbbá két osztott változót használ

• out változó a következő nyomtatandó fájl helyét adja meg• in változó a következő szabad bejegyzés helyét mutatja.

• Az alábbi szituációban kíván az A és B folyamat többé-kevésbé egyszerre új bejegyzést átadni a rendszernek.

Versenyhelyzet folyt.worst case scenario

• ‘A’ folyamat– Kiolvassa az in változó értékét (6), majd eltárolja egy belső

változójában. – Mielőtt megnövelhetné az in változó értékét, az ütemező átadja a

vezérlést a B folyamatnak• ‘B’ folyamat

– Szintén 6-ot olvas ki az in változóból– Az általa nyomtatni kívánt fájl nevét eltárolja a spooler 6-os sorában– Utána megnöveli in értékét is– Vezérlés visszakerül az A folyamathoz

• ‘A’ folyamat– A sor számát nem az in változóból veszi, hanem a belső változójából, – A folyamat is a 6-es sorba fogja elhelyezni a fájlnevet

Versenyhelyzet folytatás,megállapítások

• A fenti problémához hasonló problémákat, ahol több folyamat szeretne közös adatokat használni, és a futás eredménye a folyamatok végrehajtásának egymáshoz képesti ütemezésétől is függ versenyhelyzetnek nevezzük. • Az átmeneti változó az előző példában a

processzor akkumulátor regisztere is lehet, tehát még egy gépi kódú program sem lenne elegendő a probléma feloldásához

Versenyhelyzet kialakulásának megakadályozása

• Megoldás az, ha biztosítani tudjuk, hogy az osztott erőforrásokat egy időben csak egy folyamat olvashassa ill. módosíthassa — tehát kizárólagos hozzáférésre van szükségünk.

– A kizárólagos hozzáférés biztosítása azonban nem csak egyetlen gépi utasítás erejéig szükséges, hanem egy kódrészlet végrehajtása alatt.

– A programok azon részét, amelynek megszakított végrehajtása problémákat okozhat kritikus régiónak hívjuk.

– Ha el tudjuk érni, hogy egyszerre csak egy folyamat hajtsa végre a kritikus régiójához tartozó kódrész utasításait, elkerülhetjük a versenyhelyzeteket.

• A teljes megoldáshoz négy feltétel egyidejű teljesülése szükséges:– Egy időben csak egy folyamat futtathat a kritikus régiójához tartozó kódot.– A processzorok sebessége vagy száma nem befolyásolhatja a működés

végeredményét.– A kritikus szekcióján kívül futó program nem blokkolhatja más folyamatok

végrehajtását– Egyetlen folyamatnak sem kell örökre várakoznia, hogy végrehajthassa a kritikus

szekcióhoz tartozó utasításait.

Kizárólagos hozzáférés megvalósítása (alapok)

• Megszakítások tiltása– A legegyszerűbb megoldást jelenti, ha a kritikus szekciójába

belépő folyamat által végrehajtott első utasítás a megszakítások tiltása.

• Ha a megszakításokat letiltjuk, a rendszeróra megszakítása sem jut érvényre, így az ütemező sem jut érvényre.

• Ez a megoldás a gyakorlatban használhatatlan, ugyanis egyetlen hibás felhasználói folyamat a teljes rendszert lebénítaná. Az operációs rendszer kódján belül azonban sokszor használják ezt a fajta megoldást (bár mára jelentőssége erősen lecsökkent).

• Üzenettovábbítás– Az üzenettovábbítás a folyamatok közötti kommunikáció egy

igen elterjedt módja. Két primitív műveletet használ, a SEND művelet segítségével egy üzenetet továbbíthatunk, míg a RECEIVE művelet üzenet vételét célozza.

Kizárólagos hozzáférés megvalósítása (alapok)

• Szemaforok– A szemaforok elméletét E. W. Dijkstra dolgozta ki 1965-ben – A megoldás lényege egy számláló változó, amelyet két művelet

segítségével változtathatunk• A Down művelet eggyel csökkenti a számláló értékét. Ha a számláló értéke

nulla volt, akkor a művelet mindaddig nem tér vissza, amíg a számláló értékét egy másik művelet nem növeli meg egyel. Ebben az esetben már a csökkentés végrehajtható

• Az Up művelet a számláló értékét egyel növeli, és ha az érték előzőleg nulla volt, akkor egy várakozó Down műveletet „felébreszt”

– A megoldás leglényegesebb eleme az, hogy az Up és a Down műveletek atomiak, tehát végrehajtásuk nem szakítható meg

• A mai processzorok többsége már rendelkezik olyan gépi kódú utasítással ami lehetővé teszi a fenti műveletek atomi szintű megvalósítását

– A szemaforokat a kizárólagos hozzáférés megvalósításán túl szinkronizációs célokra is felhasználhatjuk (pl. jelezzük, hogy egy puffer megtelt)

Folyamatok viszonya

• Folyamatok közötti viszony szintjei– Folyamatoknak nincs tudomásuk egymásról– Folyamatoknak indirekt módon tudomásuk

van egymásról– Folyamatok tudatosan együttműködnek

Folyamatok viszonya

• Folyamatok közötti viszony szintjei– Folyamatoknak nincs tudomásuk egymásról

• Egymástól teljesen független folyamatok (pl. multiprogramozott környezetben)

• Az erőforrásokért folyó küzdelem miatt felléphet verseny szituáció, ezt OS szinten kezelni kell!

– Folyamatoknak indirekt módon tudomásuk van egymásról

– Folyamatok tudatosan együttműködnek

Folyamatok viszonya

• Folyamatok közötti viszony szintjei– Folyamatoknak nincs tudomásuk egymásról– Folyamatoknak indirekt módon tudomásuk

van egymásról• A folyamatok közös objektumokon (pl. I/O puffer)

osztoznak• A közös objektumhoz való hozzáférés

együttműködést igényel

– Folyamatok tudatosan együttműködnek

Folyamatok viszonya

• Folyamatok közötti viszony szintjei– Folyamatoknak nincs tudomásuk egymásról– Folyamatoknak indirekt módon tudomásuk

van egymásról– Folyamatok tudatosan együttműködnek

• A folyamatok feladatuk kapcsán működnek együtt (tudatos tervezési döntés következményeképpen)

További fogalmak

• Holtpont (deadlock)– Folyamatok permanens blokkolódása– Elkerülésére nincsen általánosan jó megoldás

• Kiéheztetés (starvation)– Valamely folyamat nem jut hozzá az általa

igényelt erőforráshoz– Megfelelő (igazságos) erőforrás ütemezési

algoritmusokkal kivédhető

A közelmúlt (90-es évek) Unix fájlrendszerei

• Főbb mozzanatok– Fájlrendszer interfész és keretrendszer

változásai, több fájlrendszer egyidejű támogatása

– Többféle fájlrendszer megjelenése • Szolgáltatások (pl. hosszú fájlnevek)• Méret (fájlrendszer, fájlok)• Teljesítmény• Megbízhatóság• Speciális funkciók (pl. tmp terület)

Fájlrendszer keretek

• Fájlrendszer interfész (amely meghatározza az alapvető /rendszerközeli kódból hívható/ műveleteket) – hosszú ideje viszonylag stabilnak tekinthető– Újabb funkciók megjelentek, de cél volt a

kompatibilitás megőrzése

• A fájl keretrendszer az idők során jelentősen átalakult– Leglátványosabb: több fájlrendszer támogatása– Megoldás: vnode/vfs interfész

Több fájlrendszer – a kezdetek

• Többféle fájlrendszer használatának igényére nem volt megoldás (a kernel csak egyet támogatott)– s5fs és/vagy FFS– DOS (pl. Floppy-k)– Speciális fájlrendszerek

• Az 1980-as években a kommunikációs hálózatok elterjedésével a fájlmegosztás igénye is előtérbe került, egyebek mellett a transzparens hozzáférést kínáló Sun által fejlesztett NFS– NFS használata esetén a felhasználó ugyanolyan módon

láthatja a helyi fájlokat, mint a távoli gépen lévőket– Az NFS megoldáshoz a Sun teljesen átalakította a fájl

keretrendszert, később a megoldás (vnode/vfs) de facto szabvány lett (az SVR4 részévé is vált)

– Az NFS is az…

A vnode/vfs architektúra

• Tervezési szempontok– Többféle fájlrendszer egyidejű (Unix és nem Unix – pl.

MS-DOS) támogatása– Különféle fájlrendszereket tartalmazó diszk partíciók

csatolása (mount) után létrejövő kép konzisztens, a felhasználónak nem kell törődnie a különféle fájlrendszerek sajátosságaival

– Fájlok (távoli) megosztásának támogatása– Saját fájlrendszerek típusok létrehozásának

lehetősége

vnode/vfs koncepció

• Objektum szemléletű megközelítés:– Vnode: a fájlok absztrakciója, a– Vfs: pedig fájlrendszeré a Unix kernelben

• Absztrakt alaposztályok, minden tényleges fájlrendszer-implementáció ősei

• Az osztályok adatelemei és metódusai virtualizáltak, a funkciók két szintre oszthatók– alacsony szintű funkciók (pl. open, read) – ezeket

egyes fájlrendszer-implementációk implementálnak– magas szintű „utility” funkciók – alacsony szintű

funkcióra épülő funkciók, ezeket tipikusan a kernel egyéb részei használják

Fájlrendszer Implementációs elvárások

• Minden művelet végrehajtása a hívó folyamat nevében történik, a végrehajtás alatt a hívó blokkolódik/hat

• Bizonyos műveletek kizárólagos fájl hozzáférést igényelnek – ezek struktúrák zárolását igényelhetik

• Az interfésznek állapotmentensnek kell lennie, globális változókra nem támaszkodhat

• Reentráns interfész szükséges, ez tiltja a globális változók használatát

• Globális erőforrások (pl. buffer cache) használata megengedett

• Támogatnia kell a távoli fájlelérést szerver oldalát• Fix méretű, statikus táblák használata nem lehetséges

Fájlrendszerek

• SVR4 rendszerben támogatott fájlrendszerek– System V FS (s5fs) az „eredeti” Unix fájlrendszer– Berkeley Fast Filesystem (FFS, most ufs)– Veritas Journaling Filesystem (VxFS)– Eszközmeghajtók fájlrendszere, specfs– Hálózati fájlrendszer, NFS– Process fájlrendszer, /proc– Boot fájlrendszer, bfs

• További implemetációk– MS-DOS FAT (pl. Solaris esetén)– CD (pl. ISO 9660), DVD támogatás

Az s5fs

• A fájlrendszer egyetlen diszk partíciót foglal el, használatához más információ kell

• A partíció logikailag blokkok lineáris tömbjének tekinthető– A blokkok mérete 512 szorzata 2 egész számú hatványával– A diszk műveletek előtt a blokkok címét át kell fordítani a lemez

fizikai címadataira

• A partíció négy részből áll– Boot terület– Szuper blokk– i-node lista– adatterület

Fájlok tárolása

• Kb. fa struktúrájú szervezés, a struktúrát a könyvtár fájlok írják le. Felépítés:– Fájl neve 14 karakteren– i-node szám, 2 bájton (0 érték foglalt, törölt fájlt jelöl)– A ‘.’ és ‘..’ minden könyvtárban kötelező, root könyvtár

i-node értéke: 2

• Index node fájl adatait tárolja (kivétel név)– Fájl elhelyezkedésének magadása: indexelt, 13

bejegyzés, ebből 3 indirekt– Lyukak támogatása fájlokban (ilyenkor a blokkcím 0)

• Másoláskor gond lehet…

Szuperblokk

• A fájlrendszer metaadatait tartalmazza– Minden fájlrendszer tartalmaz egy ilyen blokkot– Csatoláskor a kernel memóriába tölti, leválasztásig ott

is marad

• Szuperblokkban tárolt adatok– Fájlrendszer mérete (blokkok)– I-node lista mérete (blokkok)– Szabad blokkok és i-node bejegyzések száma– Szabad blokkok listája– Szabad I-node bejegyzések listája

Szuperblokk, folyt.

• Szabad i-node blokkok nyilvántartása– Csak részleges lista van a szuperblokkban– Ha elfogy, a rendszer szabad blokkokat keres a

diszken

• Szabad diszk blokkok nyilvántartása– Az összes szabad blokkot nyilván kell tartani– Teljes lista szuperblokk-ban tartása nem lehetséges– A szuperblokkban csak a lista „eleje” van, a többi

tárolása adatblokkokban történik• Minél jobban telített a diszk, annál kisebb ez a lista!

Cache

• Korai megoldásokban különálló buffer cache• SVR4 esetén a fájlkezelés a virtuális memóriakezeléssel

integrált• Olvasási művelet (példa)

– Blokk diszk-beli címének meghatározása– Lap foglalás kernelben, megadva az előbb kiszámolt cím– Lap másolása felhasználói térbe – laphiba, adatterület

beolvasása

• Az írás is virtuális memórián át történik, de:– A fájl mérete változhat– Ha nem teljes blokkot ír, akkor visszaíráskor szükség van a

diszken található adatokra is

A fájlrendszer értékelése• Egyszerűsége kiemelkedő, de problémák több területen is

jelentkeznek:– Megbízhatóság– Teljesítmény– Szolgáltatások

• A szuperblokk sérülése a teljes fájlrendszert tönkreteszi• Teljesítmény szempontjából kritikus a teljes i-node tábla partíció

elején való elhelyezése• Az i-node foglalás véletlenszerű, nem ügyel kapcsolatokra (pl. egy

könyvtár fájljai)• A fájlrendszer létrehozásakor a szabad blokkok listája optimális (a

diszk műveletekre nézve), később azonban ezzel nem foglalkozik• A diszk blokkok mérete szintén nem optimális (nagyobb méret,

kevesebb művelet – jobb teljesítmény, de sok pazarlás)• A 14 karakteres fájlnév komoly funkcionális korlát

Berkeley FFS

• Az FFS célja az s5fs korlátainak túllépése volt• Teljesítmény-növelés

– Bár a fájlrendszer továbbra is blokkok tömbjének tekinthető, a műveleteknél figyelembe veszi a diszkek forgási késleltetését

– A fejmozgások csökkentése érdekében a partíciót tovább osztjuk, ún. cilinder csoportokat hozunk létre

• Cél az összetartozó adatok egy cilinder-csoportban tartása• A szuperblokk adatainak egy része is a cilinder-csoportokba

vándorol

• Biztonság növelés érdekében a szuperblokk több példányban „elszórtan” tárolódott

• A helykihasználás javítása (és a teljesítmény növelése) miatt a (s5fs-nél nagyobb méretű) blokkokat oszthatóvá tették

Fájlfoglalási politika

• Fájlfoglalás optimalizálása cilinder-csoportokon keresztül– Egy könyvtár fájljai egy csoportba kerülnek (lokalitás,

gyors könyvtárműveletek)– Új alkönyvtárat eltérő csoportba helyezi– A fájl blokkokat egy csoportba helyezi az i-node

blokkal– A nagy fájlokat „szétkeni” a blokkok között– Szekvenciális blokkok elhelyezése a diszk forgás

függvényében (késleltetések)• Az optimális működéshez legalább 10% szabad

diszk terület szükséges!

Új szolgáltatások

• Hosszú fájlnevek (255 karakter)– Tárolás változó hosszon a könyvtár fájlokban

(a fix 255 hossz túlzás lenne)

• Szimbolikus linkek

• Stb.

Blokkok osztása

• A nagy(obb) blokkméret jót tesz a teljesítménynek, de helyet fecsérelhet– 1 transzfer alatt átvihető adatmennyiség

• Az FFS egy fájlrendszeren belül csak egyféle blokkméretet támogat (ez általános)

• A blokkméret 2 hatványa, legalább 4096 byte– Ezzel a mérettel már elég a kétszeres indirekció

• Kis fájlok miatt az FFS támogatja blokk töredékek használatát– Csak a fájl utolsó blokkja lehet töredéken, a többi

csak teljes blokkot foglalhat (emiatt néha mozgatni is kell)

Értékelés

• S5fs-hez képes jelentős teljesítmény növekedés– 1983: olvasás ~8x, írás ~3x

• Fájlrendszer kihasználási hatékonyság hasonló– Több tényező, kiegyenlítik egymást

• Mai diszkek esetén a sávonkénti blokkok száma eltérő, így az FFS elhelyezési politikája többé-kevésbé elévült

• Összességében az FFS jelentős előrelépés a s5fs-hez képest, azonban innen van még hova fejlődni

Speciális fájlrendszerek, tmpfs

• Átmeneti adattárolás (tmp terület)– Sok alkalmazás intenzíven használ átmeneti fájlokat –

a teljesítmény fontos, a hosszú távú megőrzés szükségtelen

– Sokáig az ún. RAM diszkek használata volt a tipikus, ez viszont a központi memóriát statikusan foglalja

• A különféle speciális fájlrendszer megoldások (pl. Berkeley mfs, Sun tmpfs) dinamikusan használják a (virtuális) memóriát– a tmpfs akár nagyobb is lehet, mint a fizikai memória– a két megoldás közül a tmpfs a fejlettebb

Speciális fájlrendszerek, procfs

• Cél hatékony és elegáns hozzáférés biztosítása a folyamat-adatokhoz (kernel adatok)

• A folyamatok adatait fájlok reprezentálják, hozzáférés egyszerű fájl I/O műveletekkel

• Az adathozzáférés (pl. státusz, creditentals, címtér) mellett (olvasás, esetenként írás) vezérlés is lehetséges (stop, resume, signal)

Tradicionális fájlrendszerek korlátai

• Teljesítmény– Még az FFS sávszélessége is jelentősen elmarad a diszk

potenciális sávszélességétől

• Összeomlás esetén– A cache miatt adat és metaadat is elveszhet, helyreállás során

hosszadalmas konzisztencia ellenőrzés (fsck) szükséges– Minél nagyobb a diszk, annál tovább tart

• Biztonság– A klasszikus Unix hozzáférés kontroll sokszor nem elég finom,

ACL-re lenne szükség

• Méretek– A 32 bit korlátjai…

Naplózás (journaling)

• Alapkoncepció (jelentősen leegyszerűsítve)– Minden változást feljegyzünk egy szekvenciális fájlba

(is)– Hiba esetén csak a fájlt kell ellenőrizni (végrehajtatlan

tranzakciókat keresve)

• Megvalósítás– Jelentős számú tervezési kérdés– Valós referenciák (pl. már a standard Solaris

fájlrendszernek is része a naplózási opció)

Tervezési kérdések

• Naplózás köre: mindent v. metaadat változások• Műveletek vagy értékek naplózása• A napló kiegészíti vagy kiváltja a fájlrendszert• Redo vagy undo-redo logok• Szemétgyűjtés (naplófájl nem használt részei)• Írási szemcsézettség (egyedi, csoport)• Adatvisszanyerés teljesítménye (főleg a kiváltó

megoldásoknál)