1 / 63

Operációs rendszerek

Operációs rendszerek. I/O és fájlkezelő alrendszer. A mai program. Az I/O alrendszer, különböző látásmódokkal Eszközök osztályai, eszköz-driverek Logikai diszk, partíció fogalom Fájlok, szervezettség, elérés Fájlrendszer megvalósítási feladatok jegyzékstruktúra megvalósítás,

kyros
Télécharger la présentation

Operációs rendszerek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operációs rendszerek I/O és fájlkezelő alrendszer

  2. A mai program • Az I/O alrendszer, különböző látásmódokkal • Eszközök osztályai, eszköz-driverek • Logikai diszk, partíció fogalom • Fájlok, szervezettség, elérés • Fájlrendszer megvalósítási feladatok • jegyzékstruktúra megvalósítás, • blokk hozzárendelés fájlokhoz, • szabad blokk menedzselés. • Unix fájlrendszer. Vadász

  3. Az I/O alrendszer feladatai • Elrejteni az eszközök specialitásait • Kényelmessé tenni az eszközhasználatot • Menedzselni az eszközöket, fájlokat • védeni azokat, ütemezni, konkurens vagy kizárólagos hozzáféréseket biztosítani. • (A fájl absztrakció a felhasználók által leginkább ismert és használt absztrakció, amit az operációs rendszer nyújtani tud.) Vadász

  4. Eszközök, másodlagos tárolók, fájlrendszer I/O alrendszer, eszközök Hozzáférések Eszköz driverek Másodlagos tárolók Fájlrendszer megvalósítás Buffer cache Jegyzékstruktúra, attribútumok rögzítése Blokkhozzárendelés Blokkmenedzselés Vadász

  5. I/O rendszer a felhasználó szemszögéből • Szimbolikus neveken látja az eszközöket, fájlokat • Lát eszközöket (köztük logikai eszközöket), • látja a fájlok halmazát (file pool), • lát hierarchiát (ösvény, jegyzék stb. fogalmak, ezek “rendeznek“), fájl névteret. • A felhasználói felülettel (burok, v. GUI és segédprogramok) kezeli ezeket (készít, töröl, másol, mozgat, eszközt kezel stb.) • Ismer tulajdonossági és hozzáférési kategóriákat (védelem), beállít ilyeneket. • Bizonyos OS-ekben észlel fájl szervezési és fájl elérési módokat. Vadász

  6. A programozó látásmódja • (Nyitott) csatornákat (stream) lát. Ezek azonosítója: fájl-leíró/pointer. • Nyithat/zárhat csatornákat (open, fopen, close, fclose). Nyitni: több dolgot jelent: • csatorna azonosítót kreál, pozíció indikátorral, • a csatornát összeköti szimbolikus névvel, • védelmeket kezel, beállít. • Azonosított csatornákon adatokat (byte/karakter, rekord, blokk stb.) mozgat. Ez függ az elérési módtól: • szekvenciális eléréssel, • direkt eléréssel. Vadász

  7. A programozó látásmódja • Fájl nyitó-záró rendszerhívások • A fájlleíró processzenkénti objektum • Az adatmozgató rendszerhívások: read, write, put, get, putchar, getchar, seek stb. • Néha külön rendszerhívások a jegyzékekre opendir, readdir, rewinddir, mkdir, rmdir stb. Vadász

  8. A programozó látásmódja Proc A fd1=open(”/etc/passwd”, O_READONLY) fd2=open(”local”, O_RDWR) fd3=open(”/etc/passwd”, O_WRONLY) Proc B fd1=open(”/etc/passwd”, O_READONLY) fd2=open(”private”, O_RDWR) Proc A descriptor table Inode list File table Proc B descriptor table A kernel globális táblái Vadász

  9. Az OS I/O alrendszere • A kernel struktúráknál láttuk: van külön I/O alrendszer • Ennek feladata: • vezérlés, • interfész biztosítás, • védelem és menedzsment biztosítás. • Alapelvek: • Réteges struktúra, • eszközfüggetlenség biztosítása, • célszerűen elosztott a hibakezelés, • szinkronitás-aszinkronitás biztosítása, • osztható és dedikált eszközök, fájlok is kezelhetők. Vadász

  10. I/O alrendszer szerkezet Vadász

  11. Unix I/O alrendszer Vadász

  12. NT I/O Manager alrendszer Vadász

  13. A Linux többrétegű fájlrendszere Process 1 Process 2 Process n User mode Kernel mode VIRTUAL FILE SYSTEM … ext2 msdos minix proc Buffer cache Device drivers File system Vadász

  14. Az eszköz „driverek” • Rutinkészlet + táblázatok + pufferek • “Megszólíthatók“: • felülről (call, IRPs), • alulról (IT). • Három fő részük: • Auto-konfigurációs inicializáló rutinok (egyszer futnak, az eszközt inicializálják), • I/O hívások rutinjai (Call-lal többször is megszólítódnak, alapvető szolgáltatók), • IT handlerek (IT-vel többször is). Vadász

  15. Az eszköz driverek „felső” rétege • Setup: paramétereket juttat a driverhez • automatic detection • a setup argumentumokkal • Init: eszköz jelenlétét teszteli • Hívódik a kernel inicializáláskor • belső adatstruktúrákat, regisztereket generál az eszköz számára • open & release: inicializál standard értékekkel • hogy adminisztrálni lehessen az eszközt • visszaad/megszüntet egy leírót az eszközhöz • processz nyithat kizárólagosan magának, vagy osztottnak Vadász

  16. Az eszköz driverek „középső” rétege • Read & Write: a szokásos szolgáltatások • IOCTL: eszköz-specifikus parancsok készlete • Select: vizsgáló • vizsgálja, hogy lehet-e írni, olvasni • a lekérdezős (polling) technikához jó • nem minden eszközhöz, és lehet az IOCTL-ben • Mmap: leképzés a felhasználói címtartományra • nincs minden eszköznél, de • fájlrendszert tartalmazónál hasznos lehet • Lseek: indikátor mozgató • Nincs minden driver-nél, lehet IOCTL-ben Vadász

  17. Az eszköz driverek „alsó” rétege • IT kezelők: értelemszerűen • Check_media_change & revalidate: • blokkos cserélhető eszközhöz • észreveszi a medium cserét, annak paramétereivel aktualizálja az adatstruktúrákat • kérdés, hogy ne a felső réteghez tartozónak vegyük-e Vadász

  18. A DLLs & VxDs • DLL: Dynamic Link Library • Csak ha kérelem van, akkor töltődik be (egyfajta overlay) • Kérelmeket fogad és szolgál ki (sokszor úgy, hogy a kérelmeket speciális formában továbbadja) • VxD: Virtual anything Device • A rétegezettségi koncepció miatt virtuális eszközöket valósít meg • A "kezelő" rutinjai valószínűleg nem IT-vel szólítódnak meg (hanem call jelleggel, pl. IRP-vel) • Elvileg lehet DLL Vadász

  19. Milyen eszközök vannak? • Karakteres eszközök (pl. billentyű, soros port, képernyő, analóg-digital átalakító stb.). • Strukturálatlanul (pl. karakter-folyamként) kezel, • (Néha sor (line) strukturáltság van!) De! • A driver fölött szűrés lehet. • Diszk is kezelhető karakteresen. • Strukturált (blokkos) eszközök (diszkek). • blokkos I/O-val is kezelhetők, • fájl-rendszer is alakíthatók ki rajtuk, • a buffer cache gyorsító mechanizmuson át használjuk Vadász

  20. Diszkek, blokk orientált eszközök • Blokknyi egységben történik az adatáramlás. • Oldal-sáv-(cilinder)-szektor (blokk) fogalmak • adattárolási egység a szektor (blokk), • oldal-sáv-szektor címek léteznek, • Az oldal-sáv-szektor címek leképezhetők folyamatos logikai blokkcímekre (ezt a kontroller végezheti): felülről 0-n-ig számozott blokkok sorának láthatjuk. • Logical Disk képezhető a fizikai diszkre. Oka: egységesítés, egyszerűbb driverek. Vadász

  21. Logikai diszk, partíció • Egy fizikai diszken több 0-ni -ig számozott blokk sora, több logikai diszk a képzet. • Mindegyiknek saját szimbolikus neve van. • Mindegyiknek saját driver-e van. • A partíciók (egyes OS-eknél) átlapolódhatnak. • Egy partíciót kijelölhetünk • egy OS boot területének (erről indítunk), • kilapozási/kisöprési területnek (virt. mem.), • egy OS fájlrendszer területének, • hibás blokkok helyettesítő területének (ma már nem szükséges). Vadász

  22. A partícionálás • Részben az OS-től független dolog! • “Alacsonyabb“ szintű SW-ek kellenek • a partíció létrehozásához, • a boot partíció kijelöléséhez, • a “magasabb“ driver-ek támogatásához. • Alacsonyabb? Mi általában egy OS-t használunk. ezek a SW-ek szinte minden OS-ben megvannak, használhatók (akár más OS “javára“). • A partíciókat az OS-ek nem egyformán kezelik. Vannak OS-ek, melyek pl. kötött számú partíciót engednek, nem mindig látják egymás fájlrendszereit stb. Vadász

  23. Diszkek, partíciók - kötetek • Partícionálással egy nagy diszket részekre osztunk • Néha szükség lenne kisebb diszkeket (partíciókat) összevonva, egyetlen nagy diszkként "látni": ez a kötetesítés • Némely OS tudja ezt … pl. AIX, Windows, NT • A kötet: logikai diszk, szervezhető rá fájlrendszer … van drivere ... Vadász

  24. A Unix eszközök szimbolikus nevei • Unix-ban minden fájl. Az eszközök: speciális fájlok, a /dev/ jegyzékben, aljegyzékeiben ... • Tartalmuk (rövid): • major device number: azonosítja a kontrollert, • minor device number: azonosítja a • tényleges eszközt (pl. logikai diszket), és a • device driver-t. Vadász

  25. Partíciókra osztás Unixban /dev/dsk/0s0 /dev/dsk/0s1 /dev/dsk/0s2 /dev/dsk/0s3 /dev/dsk/0s4 /dev/dsk/0s6 /dev/dsk/0s5 Vadász

  26. A fájlok • Mi a fájl? • Fájl szervezettség (organisation) lehet • Byte-ok sora (nincs szervezettség), csakis a processzek strukturálhatnak. • Rekordok sora (szekvenciális). A rekordokban mezők. Fix, változó rekordhossz, rekordok blokkokba csoportosítva stb., mindezek a fájlban (fájlrendszeren) rögzítettek. Nem minden OS biztosítja. • Index-szekvenciális szervezettségű rekordok: egyes mezők a rekordokban kulcsmezők, ezek rendezettek, a rekordok gyors keresését teszik lehetővé. Nem minden OS biztosítja. Vadász

  27. A fájlok • A fájl elérés: • soros elérés: egy adatelem (byte, rekord) eléréséhez az előzőeken “át kell jutni“. Minden szervezettségnél lehetséges. • direkt (random) elérés: egy adatelem eléréséhez nem kell a többiekkel foglakozni. Csak az indexelt és bizonyos szekvenciális (fix rekordhosszúságú) szekvenciális szervezettségnél. (A Unix seek hívással lehetővé teszi. ) • Fájl típusok a tartalmuk szerint is kialakíthatók (text, dokumentum, futtatható, bináris, jegyzék, fifo stb.) Vadász

  28. A fájlok • Fájl attribútumok: • név, • készítési, módosítási, elérési dátumok/idők, • tulajdonossági és védelmi információk, • szervezettségi adatok (hossz, rekordhossz, blokkolási tényezők stb.), • néha a • tartalom szerinti típusukra vonatkozó adatok, • a logikai diszken való elhelyezkedésükre vonatkozó információk. Vadász

  29. Fájlrendszer megvalósítások • Partíciókra szervezhetünk fájlrendszert. • 3 dolgot kell megoldani valahogy: • adott (szimbolikus) fájlnévhez hogyan rendelhetjük az attribútumokat, kiváltképp a fájl “testét“ képező blokkokat? (Megfelelő sorrendben persze.) (Keresni, hozzáfűzni, elengedni blokkokat) • A partíción a szabad blokkok menedzselésehogyan történjen? (Keresni szabad blokkokat, elengedni (szabaddá tenni) blokkokat.) • Kiindulás: jegyzékstruktúra alakítandó ki. Rögzíteni kell az attribútumokat is. Vadász

  30. Blokkhozzárendelés fájlokhoz (A) Folyamatos allokáció • Jegyzékben a név mellet a kezdő blokk cím és a hossz. A fájl blokkjai egymás után, folyamatosan • Egyszerű, teljesítményre optimalizált allokáció • Fájlkészítésnél megbecsülni a várható hosszt, választani a lehetséges szabad folytonos területekből (best-, worst-, next fit) • Nehézkes a hozzáfűzés (append) meglévő fájlhoz. • Fregmentálódik a partíció, időnként compaction szükséges • Tisztán ezt ma már nem használják • HPFS/NTFS kiterjesztésein (extent, run) folyamatos allokáció van. Annyira mégsem elavult? Vadász

  31. Blokkhozzárendelés fájlokhoz (B) Láncolt (lista) allokáció • Jegyzékben a név mellett az első blokk címe (esetleg hossz). • Az adott blokkban mutató a következő blokkra. • Az utolsó blokkban a mutató a véget jelez(het)i. • Egyszerű, nincs partíció-fregmentáció, van ugyan fájl-fregmentáció, könnyű a hozzáfűzés stb. • Gond: hosszú fájlok végének eléréséhez végig kell menni a láncolt listán. • Gond: A mutató a blokkokon “elvesz“ területet a fájl adataitól. Hossz-számítás. Vadász

  32. Blokkhozzárendelés fájlokhoz (B) File a, starts at 4 File b, starts at 6 7 a első blokkja a második blokkja NULL a utolsó blokkja 12 b első blokkja b második blokkja NULL b utolsó blokkja 2 6 4 7 12 28 Láncolt listás allokáció Vadász

  33. Blokkhozzárendelés fájlokhoz (C) Indextáblás allokáció • A jegyzékben az első blokk/első index (és a hossz). • Indextábla: egy bejegyzése egy-az-egy megfeleltetésben a blokkokkal (i-edik bejegyzéshez az i-edik blokk tartozik). Az indextábla kötött helyen a diszken. • Egy bejegyzés az indextáblában kettős jelentésű: • a bejegyzés index-száma jelzi, az ugyanolyan számú blokk a fájl blokkja. • maga a bejegyzés a soron következő blokk (egyben index is), vagy a lista vége. • Tulajdonképp láncolt lista, de a mutatók ki vannak emelve az indextáblába. • Nem zárja ki az optimalizált allokációs lehetőségeket Vadász

  34. Indextáblás allokáció indextábla blokkok 012345678910111213… 28 ... NULL712xy… NULL ... 012345678910111213… 28 ... a utolsó blokkja a első blokkja b első blokkja a második blokkja b második blokkja… b utolsó blokkja ... File a, starts at 4  File b, starts at 6  Vadász

  35. Blokkhozzárendelés fájlokhoz (C) Indextáblás allokáció (folyt) • Egyszerű. Ma is használatos. Közepesen gyors hosszú fájloknál is (Csak az indextáblát kell végigolvasni). • Gond: nagy blokkszámnál nagy az indextábla. Megoldása: • Blokkokat “cluster“-ekbe szervezik, az indextábla ezeket címezi. • Persze, területvesztés lehet itt. • In-core indextábla pedig gyorsítja az elérést. • Ilyen a VAX/VMS, és tulajdonképpen a DOS FAT is. Vadász

  36. Blokkhozzárendelés fájlokhoz (D) • I indexes, i-bögös, i-listás allokáció (i, inode, i-list) (Unix, Linux ext2 stb.) • Egyéb, vegyes, i-listához hasonló bögös megoldások (HPFS, NTFS stb.) Vadász

  37. Szabad blokk menedzselés (A) • Bit térképes (bitmap) • Kötött helyen a bit-térkép. Lehet elosztott térkép is. • Egy-az-egyes megfeleltetés egy bit és a blokkok (clusterek) között. • Ha egy bit bebillentett: azt jelenti, a hozzá tartozó blokk foglalt. • Ilyen a VAX/VMS, HPFS, NTFS, Linux ext2 • Bit térkép helyett mező-térképes is lehet (ilyen a DOS FAT, a VFAT). A FAT egybevont indextábla és szabad bokk/cluster menedzselő térkép: egy bejegyzés harmadik funkciója: a foglaltság jelzése. • Tetszőleges allokációs politikát kiszolgálhat. Vadász

  38. Szabad blokk menedzselés (B) Láncolt listás szabad blokk menedzselés • Kötött helyről indulva mutató egy szabad blokkra, melyben mutató van a következő szabad blokkra s.í.t. • Hátránya, hogy a lista kezelése lassú (diszkműveletek kellenek). • Egyszerű allokációs politikája lehet: lista elejéről allokálunk, lista elejére tesszük a felszabadulót. (Esetleg a végére.) Vadász

  39. Szabad blokk menedzselés (C) Szabad helyek csoportjainak listája • (Az előző teljesítményének javítására) • Kötött helyről indulva egy blokk mutatókat tartalmaz szabad blokkokra, • egy mutatója viszont további olyan blokkra mutat, ami további szabad blokkok csoportját jegyzi fel s.í.t. • Blokk foglalás esetén a lista elején lévő blokkon feljegyzett szabad blokkokat allokáljuk, blokk felszabadításkor ide tesszük a felszabadult blokkok mutatóit. Belátható a teljesítmény javulás: kevesebb I/O művelet. • Ha a lánc eleji blokkról „kifogytak” a szabad blokkok, maga a lánc eleme is felhasználható (Unix s5fs megoldás)! Vadász

  40. Szabad blokk menedzselés (D) Egybefüggő szabad területek nyilvántartása • Kötött helyen lévő táblázat bejegyzései az egyre magasabb című, egybefüggő szabad blokkcsoportok kezdő mutatóját és blokkban mért hosszát tárolják. • Hozzá illő allokációs politika a folyamatos allokáció (best-, worst-, next fit). • A lapozó eszköz menedzselésénél szokták alkalmazni Vadász

  41. Jegyzék implementációk • A jegyzék is fájl. Blokkhozzárendelés jegyzékhez akár a szokásos fájlhoz való blokkhozzárendeléssel, akár speciálisan történhet. • Tartalma: bejegyzései fájlneveket, kezdő címet (hosszat, esetleg bizonyos attribútumokat) tartalmaz. Kötött vagy változó hosszú lehet. • A bejegyzések struktúrája befolyásolja a keresést: • lineáris keresés (nem rendezett, hézagos bejegyzések), • hash táblás keresés, • b-fás (rendezett) jegyzékben a keresés. Vadász

  42. Unix fájlrendszer • Itt minden fájl: az eszközök is a fájlrendszerben, a fájlrendszer pedig blokkos eszközre (partícióra, kötetre) szervezett. • Minden fájlhoz tartozik ún. i-bög (i-node). • Az i-bögök az ún. i-listán vannak. • Egy i-bög szinte mindent tartalmaz a hozzá tartozó fájlról. Ha ismered: elérheted a fájl blokkjait. • A szabad blokk menedzselést az ún. szuperblokkból kiinduló szabad blokkok listája segíti: ezen lista eleme maga is szabad blokk. Vadász

  43. Egy Unix partíció szerkezete 0 boot block 1 super block 2 i-bög tábla (i-list) . . data blocks n Vadász

  44. A Unix i-bög szerkezete Directory file1 i-bög mode & védelem linkek száma tulajdonos uid gid fájl méret Adat blokk Direkt mutatók Single indirekt Double indirekt Triple indirekt Utolsó hozzáf. Utolsó mód. Készítési idõ Vadász

  45. Unix jegyzékek • SVID-ben 16 bájt hosszúak a bejegyzések (névhossz max. 14) • BSD-ben a “chunk“-ok 255 kar. hosszú neveket is megengednek. BSD szerkezet SVID szerkezet Vadász

  46. Hogyan “szerzik“ meg az i-bögöt? • A namei algoritmus. • Elemzi az ösvény egy-egy komponensét, minden nevet az ösvényből i-böggé konvertál, a bög segítségével megnézi, jegyzék-e. Ha nem az visszatér jelezve ezt a tényt. Ha jegyzék veszi i-bögjét, a jegyzékben keresi a következő komponenst, sít. Végül visszatér az input ösvény i-bögével, vagy hibajelzéssel. • root jegyzék i-böge a szuperblokkban, • jegyzékből kikeresi a nevet, veszi az i indexet, és ezzel “megragadta“ a következő jegyzéket-fájlt, s.í.t. • Gyors kereséshez: • in-core-i-node lista! • Az aktuális jegyzék i-böge processzenként feljegyezve! Vadász

  47. Miért kell az i-bög? • Ha egy fájl i-bögét ismered, szinte mindent tudsz róla • ismered attribútumait • típusát & védelmi maszkját, • tulajdonosi viszonyait, • hosszát, • linkjeinek számát, • készítési és hozzáférési időit. • Ismered blokkjainak sorrendjét és helyét. Vadász

  48. A fájl link • Célja: már meglévő fájlra más névvel is hivatkozhassunk. • Hard link: • új dir-bejegyzés készül, a már létező fájl i indexével! • Csak ugyanazon a fájlrendszeren! Hozzáférések? • Törléskor a linkek száma csökken! • Szoft link (symbolic link): • új fájl készül (új i-böggel), ebben az eredeti abszolút ösvényneve. • Mount-olt fájlrendszeren is! • Korrektebb védelmek! Vadász

  49. Hard link-soft link > ln -s /usr/joe/foo /usr/sue/bar > ln /usr/joe/foo /usr/sue/bar 2. i-bög 16. i-bög 2. i-bög /usr/joe /usr/joe foo 2 foo 2 link=2 /usr/joe/foo /usr/sue /usr/sue bar 2 bar 16 A simbolic link A hard link Vadász

  50. A szuperblokk tartalma ... ind ind • a fájlrendszer mérete; • a szabad blokkok száma; • a szabad blokkok listája + index a listán; • az i-lista mérete; • a szabad i-bögök száma; • a szabad i-bögök listája + index a listához; • lock mező a két listához; • jelző, hogy történt-e módosítás a szuperblokkban. Vadász

More Related