Debreceni Egyetem
Matematikai és Informatikai Intézet
10. Fájl rendszer interfész • Fájl koncepció • Elérési módok • Könyvtár szerkezet • Védelem • Konzisztencia szemantika
Operációs rendszerek (I 1204)
140
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Fájl koncepció • A számítógépek az adatokat különbözô fizikai háttértárakon tárolhatják (pl. mágnes lemez, szalag kártya, optikai lemez, stb.). A számítógép kényelmes használhatósága érdekében az operációs rendszerek egy egységes logikai szemléletet vezetnek be az adattárolásra és adattárakra: az operációs rendszer elvonatkoztatva a tároló eszköz és a tárolt adat fizikai tulajdonságaitól, egy logikai tároló egységet (adatállomány – fájl – file) használ. • A fájlokat az operációs rendszer képezi le a konkrét fizikai tároló berendezésre. • A fájlokat tartalmazó fizikai tároló berendezések általában nem törlôdôek (de ez nem kritérium). • Pl. "képernyô" fájlok egyes rendszerekben.
• Felhasználói szemszögbôl: a fájl összetartozó adatok egy kollekciója, amelyeket egy másodlagos tárban tárolunk. A fájl a felhasználó számára az adattárolás legkisebb allokációs egysége: felhasználói adatot a háttértáron csak valamilyen fájlban tárolhatunk. • Az operációs rendszer támogatást nyújthat a fájl tartalmának kezelésében, a fájl szerkezetének (adatszerkezet) létrehozásában: • Fájltípusok: adat – program, folyam (stream) – rekord.
Operációs rendszerek (I 1204)
141
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Fájl attribútumok • Az operációs rendszer a fájl kezeléséhez szükséges információkat (attribútumokat) is tárolja a háttértárban. • (Pl. egy elkülönített helyen, a szótárban, fájl jegyzékben – directory-ban .)
• Név – a fájl azonosítására szolgál (szimbolikus fájlnév, név hossza, osztott nevek, kisbetûk/nagybetûk szerepe) • Típus – az egyes típusokhoz (text, script, bináris program, kép, stb) különbözô operációs rendszer szolgáltatásokat lehet rendelni. • Lokáció – a fájl fizikai elhelyezkedésével kapcsolatos adatok (háttértár címek) • Méret – aktuális / maximális méret • Védelem – a fájlhoz történô hozzáférés vezérlése. • Idô, dátum, felhasználó azonosítás.
Operációs rendszerek (I 1204)
142
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Fájl mûveletek • A fájl mûveleteket, mint egy absztrakt adattípuson végezhetô mûveleteket kell tekintenünk. • Az operációs rendszer ezeket rendszer-hívások segítségével teszi elérhetôvé. • Alapmûveletek: 1. Létrehozás (create) – terület allokálás + új bejegyzés a directoryba. 2. Írás (write) – write pointer szerepe 3. Olvasás (read) – kurrens pozíció szerepe 4. Újrapozicionálás (repositioning) 5. Törlés (deleting) 6. Csonkítás (truncate) • További mûveletek: bôvítés (append), átnevezés (rename), másolás (copy), az attribútumok megváltoztatása. • Open/close operációk szükségessége és szerepe: • A directory-hoz fordulások számának csökkentése (open–file table). • Multiuseres környezet támogatása, fájlvédelem (open–count). • A fájl elhelyezkedésével kapcsolatos információk memóriában tartása (file pointer, memory mapping).
Operációs rendszerek (I 1204)
143
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Fájl típusok fájl típus
kiterjesztés
funkció
végrehajtható (executable)
.exe .com .bin vagy "üres"
futtatható, gépi kódú program
tárgy (object)
.obj .o
lefordított, áthelyezhetô bináris kód
forrás (source)
.c .p. .pas .asm
program forráskódja
parancs (batch)
.bat .sh .cmd vagy "üres"
parancs fájl
szöveg (text)
.txt .doc
szöveges adat, dokumentum
szövegszerkesztô (WP)
.doc .rtf .tex .ltn .wp
változatos szövegszerkesztô formátumok
könyvtár (library)
.lib .dll
szubrutin könyvtárak
nyomtatás/megjelenítés (print/view)
.ps .pdf .gif .prn
megjelenítô berendezések saját fájlformátumai
archívum (archieve)
.arc .zip .tar
kapcsolt fájlok egy fájlba szervezve, esetleg tömörítve
alkalmazói rendszerek (appl. syst.)
???
Operációs rendszerek (I 1204)
144
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Fájl szerkezetek • A fájl típus indikál(hat)ja a fájl (belsô) szerkezetét. (A kreátornak és a fájlt feldolgozó programnak ezt természetesen ismernie kell.) • Pl. forrásnyelvi-, tárgynyelvi- (object), ill. végrehajtható (bináris) programokat tartalmazó állományok szerkezete kötött. • Kérdés: Mennyire ismerje az operációs rendszer az egyes fájlok belsô szerkezetét? • Egy szerkezetet (végrehajtható program) biztosan ismernie kell! • Egyébként olyan mértékben ismeri, amennyire a fájlkezeléshez "központi támogatást" akar nyújtani. • Pl.: • Néhány régi nagy rendszer (IBM DOS 26.2; IBM OS/VS, stb.) támogatta a változatos blokkolási és fájl szervezési módokat (FIXUNB, FIXBLK, VARUNB, VARBLK, UNDEF; VSAM, VDAM, ISAM). • A UNIX minden fájlt bájtok egyszerû sorozatának tekint, ez a feldolgozó programoknak nagy flexibilitást, de minimális támogatást jelent. Szolgáltat ugyanakkor egy mechanizmust (rendszer hívás) a fájl típus meghatározására. (Vö.: file parancs, magic number) • VAX/VMS három szerkezetet is támogat!
• Az operációs rendszer által nyújtott szerény támogatást kiegészíthetik a programozási környezetekben / futtató rendszerekben implementált szerkezet-kezelési lehetôségek. • (Pl. adatbázis kezelôk.)
Operációs rendszerek (I 1204)
145
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Elérési módok • Szekvenciális elérési mód • • • • •
read next write next reset no read after last write (rewrite)
• Direkt elérési mód • • • • • •
read n write n position to n (pozicionálás az n-edik rekordra) read next write next rewrite n
n= a relatív blokk–sorszám
Operációs rendszerek (I 1204)
146
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Könyvtár szerkezet • Bejegyzések (node) együttese, amely információt tárol a fájlokról • A könyvtárszerkezet és a fájlok is a lemezen a háttértáron tárolódnak. • Kapcsolódó fogalmak: kötet (volume), partíció (partition), VTOC
• Egy directory-ban (fájl-jegyzékben) tárolt információ: • (pl.) név, típus, cím, aktuális hossz, maximális hossz, legutóbbi elérés (access) idôpontja, legutóbbi módosítás (update) idôpontja, tulajdonos azonosító (owner ID), védelemmel kapcsolatos adatok.
• Egy directory-val kapcsolatban végrehajtható (absztrakt alap-) mûveletek: • Fájl keresés (file search), fájl létrehozás (create), fájl törlés (delete), directory listázás (dir, list, ls), fájl átnevezés (rename), a fájl rendszer pásztázása (traverse), bejárása.
• A könyvtárszervezéssel szemben támasztott elvárások: • Hatékonyság: minden fájl könnyen visszakereshetô legyen. • Névadás (naming): • Két user használhassa ugyanazt a nevet más fájlokhoz. • Ugyanannak a fájlnak lehessenek különbözô azonosítói.
• Csoportosítás (grouping) • Fájlok csoportosítása tulajdonságaik alapján. (com, bat, pss, nfs ntfs, ... dtv)
Operációs rendszerek (I 1204)
147
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Egyszintû directory
• – Az összes felhasználó állományai egyetlen jegyzéket (directory) alkotnak. • – Névadási- (névütközési-) és csoportosítási problémák
• Kétszintû directory • • • • • •
– Egy-egy felhasználó állományai elkülönített jegyzéket (directory) alkotnak. – Szintek: MFD - UFD (master/user file directory) – Megoldja a névütközés problémáját, de nincs csoportosítás. – A felhasználók nem tudnak kooperálni (nehéz egymás állományait elérni). – Új fogalom jelenik meg: elérési út (path) – A rendszer fájlok használatának problémája • dedikált kópia? • egy (több) speciális (kitüntetett) UFD-ben lehet (pl.) elhelyezni. (Primitív csoportosítás.)
• Keresési út (search path) fogalma.
• Fa-szerkezetû directory
• Egy fájljegyzék bizonyos elemei lehetnek újabb fájljegyzékek, így fájljegyzékeknek egy hierarchikus rendszere jön létre. • Egy fájljegyzék által (fájlként) tartalmazott fájljegyzék = alfájljegyzék (subdirectory)
• A jegyzékben minden esetben egy speciális bit jelezheti, hogy fájlról, vagy aljegyzékrôl van-e szó.
• Fájljegyzéket létrehozni és törölni speciális rendszer-hívásokkal lehet. • Pl. make: mkdir();
remove: rmdir().
• Kurrens (current) directory, kurrens directory váltás: cd(). • Abszolút- és relatív elérési út, keresési utak, pásztázás (traverse). • Megoldja a névütközés problémáját, és lehet csoportosítani.
• Az elérési utak megadása sokszor körülményes. Egy megoldás: DeskTop file (Mac).
Operációs rendszerek (I 1204)
148
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Aciklikus gráf - szerkezetû directory • Egy aljegyzék (fájl) osztott használatának problémája: több felhasználó/alkalmazás szeretné a saját directory rendszerében látni. • Megoldás: egy típusú directory bejegyzésnek, valamely fájlra, vagy aljegyzékre mutató kapcsolónak (symbolic link) a bevezetése. Logikailag: alias-képzés! • Vö: link, ln rendszerhívás (UNIX), create link (NT). • Technikailag lehetséges lenne a mutató (link) helyett a teljes directory bejegyzést duplikálni: •
(DE: konzisztencia! )
• Hard link és soft link. • Ha a kapcsolókat követve nem juthatunk vissza egy olyan bejegyzéshez, amelyet már korábban elértünk, akkor a directory szerkezete aciklikus gráf. • Nehéz detektálni a ciklust. • Problémák: pásztázás, törlés. • Törlési politikák: Mi történjék a fájlra mutató linkekkel, ha töröljük a fájlt? • …, illetve mi legyen a fájllal, ha töröljük a linket?
• "Függô" link megengedett: megmarad a link, ha töröljük a fájlt (vagy a fájl nem érhetô el). • Pl. UNIX soft link, lokális lemezek mountolása egy fájl rendszerbe. (Ez jól is jöhet!)
• "Függô" link nem megengedett. • Megoldások: • fájl-referencia listák • referencia számlálók Operációs rendszerek (I 1204)
149
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Általános gráf - szerkezetû directory • Hogyan lehet a ciklusmentességet biztosítani? • Vannak algoritmusok, de ezek "költségesek". • Ha a szerkezet ciklust (önreferencia) tartalmaz, akkor a keresés / pásztázás körülményes lesz. • Pl. egy fájl a körbe mutató linkek miatt nem lesz simán törölhetô. Adott esetben "hulladékgyûjtés" (garbage collection) is szükséges lehet.
Operációs rendszerek (I 1204)
150
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Védelem • A számítógépes rendszerben tárolt adatokat védeni kell • a fizikai sérülésektôl (reliability, integrity), és • az illetéktelen hozzáféréstôl (protection, security). • A fizikai sérülések ellen a gondos kezelés mellett meghatározott stratégia szerint készülô biztonsági másolatokkal védekeznek. • Hozzáférési operáció (alap-) típusok: • Read (olvasás a fájlból) • Write (írás a fájlba) • Execute (a fájl betöltése a memóriába és végrehajtása, futtatása) • Append (új adat hozzáírása a fájl végéhez) • Delete (a fájl törlése és az általa elfoglalt hely felszabadítása) • List (a fájl nevének és attribútumainak listázása) • Más operációkat (rename, copy, edit) is lehetne még tekinteni, ezek visszavezethetôk alapoperációkra. A hozzáférési operációk hátterében az operációs rendszer, vagy egyes felhasználók által kezdeményezett processzusok állnak. Ha tehát egy-egy adott fájlhoz minden egyes processzusra (userre) megmondjuk, hogy melyik alapoperációt alkalmazhatja a fájlra, akkor a hozzáférés teljesen szabályozott lesz. Ez a
• Hozzáférési lista (Access Control List, ACL) Az ACL megnöveli a fájlbejegyzés méretét, változó hosszúságú lesz, nehezen kezelhetô (de alkalmazzák!). Operációs rendszerek (I 1204)
151
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Megoldás csoportosítással • a védelem szempontjából az összes felhasználó három kategóriába tartozhat: • ô maga a fájl tulajdonosa (owner), • tagja valamilyen jól definiált csoportnak (group, több csoport is lehet), • beletartozik az összes felhasználók csoportjába (world).
• a hozzáférési alapoperációk közül is hármat emelünk ki (a többit ezek mögé illeszthetjük) • read (r), write (w), execute (x)
• A hozzáférési lista ekkor leegyszerûsödik: egy-egy fájlra azt kell megmondani, hogy az egyes kategóriák mely operációkat hajthatnak végre a fájlon. • UNIX példa: (az egyes oszlopok jelentése a man ls paranccsal lekérdezhetô!) fazekas@paris [~] >>ls -l total 354 drwxr-xr-x
8 fazekas
pcpc
512 Sep 7 14:50
./
drwxr-xr-x 159 root
root
4096 Nov 23 14:03 ../
-rw-------
1 fazekas
pcpc
-rwxr-xr-x
1 fazekas
pcpc
2463 Nov 20 1998 .alias*
drwx------
37 fazekas
pcpc
1024 May 3 1998 .fm/
496 Sep 7 14:50
-rw-------
1 root
other
drwx------
3 fazekas
pcpc
512 Jul 21 1997
drwxr-xr-x
2 fazekas
pcpc
512 Sep 17 1996 .wastebasket/
Operációs rendszerek (I 1204)
0
.Xauthority
Sep 17 1996 .homedir_angelegt_am_96.09.17_12:24:47
152
.netscape/
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Más védelmi megoldások: • jelszó (password) a fájlhoz (ki tudja megjegyezni?) •
archiváló (tömörítô), workflow (office) rendszerekben alkalmazzák
• jelszó a könyvtárakhoz (mindent, vagy semmit!) •
Pl.: TOPS-20, IBM VM/CMS (minidiszk védelem!)
• speciális attribútumok: "read only", "system" (MS DOS)
• A fájljegyzékek, (directory) védelme • Külön probléma: • Pl. attól még hogy egy, a jegyzékben levô fájl olvasható, nem biztos, hogy a jegyzék tartalmát lehet listázni, vagy • nem biztos hogy egy könyvtár kurrens könyvtárrá tehetô.
• Unix példa: • directory esetén (ls által adott listán az elsô betû d) • r jelentése: a directory tartalma listázható • x jelentése: cd (change dir) az adott jegyzékre vonatkoztatva megengedett
Operációs rendszerek (I 1204)
153
Dr. Fazekas Gábor
Debreceni Egyetem
Matematikai és Informatikai Intézet
• Konzisztencia szemantika • Multiprogramozásnál elôfordul(hat), hogy több processzus közösen használ egy-egy állományt. (konkurens hozzáférés). Eközben biztosítani kell az állományban tárolt adatok konzisztenciáját (elkerülni az összeférhetetlenséget). Ehhez egy pontos szemantika (értelmezés) szükséges, amely világossá teszi, hogy az adat milyen állapotot tükröz. • Röviden: hogyan és mikor válik láthatóvá, elérhetôvé egy processzus számára az állományon másik processzus által okozott változás? • Fogalom: fájl szeansz/ülés (file session)= a processzus életének az a szakasza amely a fájl megnyitásától a fájl lezárásáig terjed. (vö. terminal session: logintôl logout-ig terjedô idôszak!) • UNIX fájl rendszer szemantika: • Egy megnyitott fájlba történô írás azonnal látszik a többi felhasználóknak is, akik a fájlt nyitva tartják. • Bizonyos feldolgozó programok ezt lokálisan módosíthatják (lock, dedikált kópia használata.) • Még olyan megosztás is van, ahol a kurrencia pointer is közös és mindkét fél által mozgatható. • Szekció szemantika (Andrew - fájl rendszer) • Egy megnyitott fájlba történô írás nem látszik a többi felhasználóknak, akik a fájlt nyitva tartják. • Csak azok látják majd akik azután nyitották meg, amikor az író processzus lezárta. • E szemantika szerint a fájlnak több másolata lehet egy idôben.
• Osztott megváltoztathatatlan (immutable) fájl szemantika • Egy ilyen fájl neve védett, tartalmát nem lehet módosítani. Osztott rendszerben egyszerûen implementálható (read only) Operációs rendszerek (I 1204)
154
Dr. Fazekas Gábor