Filsystem användarvy och implementering Föreläsning 4
Filsystem De abstrakta datatyperna fil och directory Hur implementerar man filsystem? Användarvyn av filsystem Implementering av filsystem Exempel på filsystem Kap: 4.1-6.4, 10.6, 11.8 OS Föreläsning 4, Filsystem 2
Filsystemet - att organisera nästa minnesnivå register cache primärminne elektronisk disk magnetisk disk optisk disk magnetband OS Föreläsning 4, Filsystem 3
Användarvyn Filsystemet - det de flesta förknippar med ett operativsystem
Filsystemet Filsystemets främsta uppgift är att implementera långtidslagring av information Filsystemet abstraherar bort detaljer om fysisk implementation av filer på lagringsmediat (diskarna) Filsystemet bör tillåta att användaren organiserar sina filer på ett lätthanterigt sätt (vi bortser från ev. grafisk presentation av filsystemet) OS Föreläsning 4, Filsystem 5
Filsystemet två nivåer Två nivåer av filsystemet är synligt för användaren: Directoryn (eller mappar, foldrar) Filer Både directoryn och filer kan ses som abstrakta datatyper med attribut och operationer OS Föreläsning 4, Filsystem 6
Filer intern organisation Hur organiseras en fil internt? Vanligast en följd av bytes (jfr. primärminne) Historiskt - records (fixlängdsfält) - sökträd Om filsystemet inte bestämmer den interna strukturen är det upp till applikationen att tolka/skapa ev. struktur i filen OS Föreläsning 4, Filsystem 7
Filer som abstrakt datatyp Attribut Namn (Typ) Storlek Skydd (protection i.e. rwx) Tid för skapande Ägare/skapare Unik identifierare i filsystemet Lagringsplats Operationer Skapa Skriva Läsa Positionera Ta bort Trunkera Öppna Stänga Kopiera Döpa om OS Föreläsning 4, Filsystem 8
Filer namngivning (historiskt) Filnamn Antal tecken Skiljer på gemena och versaler? (små/stora tecken) Flera extensions? OS medvetet om extension? (Applikationer kontrollerar oftast extensions) MS-DOS/WINDOWS 8+3 (WINDOWS långa filnamn) Nej Nej Ja UNIX 255 Ja Ja Nej OBS! I UNIX kan ett filnamn börja med en punkt (ex..tcshrc) dessa filer syns normalt inte när man listar innehållet i directoryt OS Föreläsning 4, Filsystem 9
Vanliga filtyper - extensions typ vanlig extension användning exekverbar.exe.bin.out ingen objekt.obj.o Kompilerad men ännu inte länkad källkod.c.cc.java.f77.asm batch.bat Kommandon till kommandotolken text ordbehandling bibliotek utskrift/view arkiv multimedia.txt.doc.fm.tex.rtf.lib.a.dll.ps.pdf.jpg.tif.arc.zip.tar.mpeg OS Föreläsning 4, Filsystem 10
Exempel på (applikationsspecifik) intern organisation UNIX magic number text storlek data storlek BSS storlek symboltabell storlek flaggor text header objektmodul header objektmodul namn datum ägare protection storlek data header relokeringsbitar symboltabell objektmodul Exekverbar binärfil OS Föreläsning 4, Filsystem 11 Arkiv (bibliotek av objektmoduler)
Accessmetoder hur läser/skriver man filer Sekvensiell access Man läser/skriver en följd av bytes utan möjlighet att kunna positionera sig i filen Ett specialexempel: I/O mot terminal/tangentbord Random access Man kan positionera sig i filen för skrivning/läsning Andra accessmetoder Ex: indexerad access i databas Implementeras normalt ovanpå random access genom att applikationen bygger datastrukturer i filen (dvs bestämmer hur filens innehåll ska tolkas, jfr. Primärminne) OS Föreläsning 4, Filsystem 12
Accesskontroll - vem får göra vad Accesskontroll allmänt säkerhetsproblem För filsystem Vem får skapa/ta bort filer? Vem får läsa? Vem får modifiera? Vem får administrera rättigheten att administrera rättigheter? En-användar OS hade oftast inte accesskontroll för filer från början, ex. MS-DOS, MacOS OS Föreläsning 4, Filsystem 13
Protection domain -en modell för acessrättigheter protection domain - en uppsättning objekt och rättigheter på objekten - Ex. på domäner: user-space, kernel-space objekt fil1 fil2 fil3 fil4 term1 term2 dom1 dom2 dom3 domän 1 r rw r-x w adm enter 2 3 rw r r-x w rw w adm Capability Accesskontrollista OS Föreläsning 4, Filsystem 14
Accesskontrollistor UNIX (UFS) Begränsad form av accesskontrollistor För varje fil/directory kan rättigheter anges för 3 domäner: User, Group, Other (alla användare) Rättigheter: r-read, w-write, x-execute user group other rw r r AFS - Andrew File System Accesskontrollistor för directoryn Kan skapa godtyckliga grupper (domäner) Rättigheter per grupp för directory: lrwdika robert: rlwdika dan, f: rwdl os-students: rl system:anyuser none OS Föreläsning 4, Filsystem 15
Att dela filer I fleranvändarsystem tillåts ofta flera processer att ha en och samma fil öppen samtidigt Enkelt om det är read-only filer För filer som kan skrivas: Behov kan finnas att låsa delar av filen så bara en process kan skriva den delen i taget Vilken concistency semantics implementerar filsystemet Ex: UNIX: en skrivning syns samtidigt för alla användare/processer som har filen öppen OS Föreläsning 4, Filsystem 16
Directoryn - kataloger En-nivå alla filer i ett directory Enkelt att implementera Svårt att hantera speciellt om fler användare Två-nivåers ett directory per användare Isolerar användare Användare kan inte strukturera innehållet i sitt directory Fler-nivåers trädliknande directorystrukturer Vanligast idag OS Föreläsning 4, Filsystem 17
Directorystrukturer / / /usr /misc /usr /misc /include /info /include /info Träd Ex: MS-DOS Acyklisk graf Ex: UNIX Länk (hård) Symbolisk länk OS Föreläsning 4, Filsystem 18
Directorystrukturer forts. Varför tillåter man oftast inte cykler i directorystrukturen? Svårare att göra vanliga operationer som lista innehållet i ett directory och dess underdirectoryn Möjligt att man måste ha garbage collection för att ta reda på vilka filer/directoryn som inte längre kan kommas åt OS Föreläsning 4, Filsystem 19
Directoryn - som abstrakt datatyp Attribut Namn Skydd (protection i.e. rwx) Ägare/skapare Entries (filer, sub-directoryn, länkar) Unik identifierare i filsystemet Lagringsplats Operationer Skapa Skriva Läsa Ta bort Öppna Stänga Döpa om Skapa länk Ta bort länk OS Föreläsning 4, Filsystem 20
Att montera filsystem Innan ett filsystem används måste det monteras Directorystrukturen kan vara uppbyggd av flera hårddiskar och/eller partitioner Att montera: OS får reda på: Var filsystemet som ska monteras finns (t.ex disk E) Var i filsystemet det ska monteras (monteringspunkt) OS kontrollerar att det filsystem som ska monteras är korrekt OS noterar i directoryt där monteringspunkten ligger att det finns ett monterat filsystem OS Föreläsning 4, Filsystem 21
Montering - exempel /usr /ele /ds johnny danne robertr schulte OS Föreläsning 4, Filsystem 22
Montering Montering i UNIX Hela filsystemet ser ut som ett träd med en rot Montering konfigureras explicit Montering i Windows, MS-DOS När systemet bootas letas alla enheter som håller filsystem redas på De olika enheterna görs automatiskt tillgängliga Två-nivåer: devicename:\path\to\file OS Föreläsning 4, Filsystem 23
Sökvägar Absolut sökväg Anges med varje directory från roten /afs/it.kth.se/usr/include/sys/errno.h Relativ sökväg Anges relativt working directory cd /afs/it.kth.se/usr/include/ sys/errno.h OS Föreläsning 4, Filsystem 24
Minnesmappad I/O Istället för att läsa/skriva mot filsystemet/disk kan en process ofta mappa in en fil i sitt adressutrymme Läsning/skrivning går mot minne Kan snabba upp I/O När skrivs modifieringar tillbaka till disk? Om inte annat först när man stänger filen På explicit kommando OS Föreläsning 4, Filsystem 25
Implementation av filsystem Hur gör man egentligen?
Implementation av filsystem Hur implementeras filsystem? Logisk struktur hos skiktade (layered) filsystem Grunder om indelning av hårddisk Implementering av filer Hålla ordning på ledigt utrymme Öppna filer datastrukturer i OS Implementering av directoryn OS Föreläsning 4, Filsystem 27
Lagrade filsystem - ett smart sätt att organisera koden Applikationsprogram Logiska namn på filer etc. Logiskt filsystem Fysisk organisation av filsystemet hämta block x från disk y på spår z... Filorganisationsmodul Basfilsystem Ett OS stöder ofta flera filsystem: UFS, NFS, AFS FAT, FAT32, NTFS, CD-ROM... Hanterar de fysiska enheterna (översättare) Devicedrivers (I/O-controller) Fysisk enhet (disk) OS Föreläsning 4, Filsystem 28
Indelning av hårddisk - ett möjligt sätt att organisera hårddisken (formatering) Hela disken/skivminnet Master Boot Record Partitions tabell Partition 1 Partition 2 Partition 3 MBR läses vid bootning av BIOS identifierar partitioner och var OS ligger BOOT block Partition boot block Superblock MasterFileTable Hantering av ledigt utrymme I-noder (inte i NTFS) Root directory Filer och directoryn Ladda OS Filsystemstyp (UNIX, NTFS) OS Föreläsning 4, Filsystem 29
Implementering av filer Hur allokera utrymme på disken Vad händer när man öppnar och läser en fil OS Föreläsning 4, Filsystem 30
Allokering av utrymme för filer Kontinuerlig allokering Samma problem som för minnesallokering Fragmentering Hur hantera filer som växer Dock: Bra för skivminnen som bara skrivs en gång! Används för CD-ROM, DVD... OS Föreläsning 4, Filsystem 31
Blockindelad allokering Dela in skivminnet i block Allokering med länkad lista: Länkad lista med länken till nästa block i blocket - långsamt vid random access FAT File Allocation Table separat tabell med pekare till block Kan hållas i minne Hur stor blir tabellen? Mer detaljer längre fram... Men varför inte låna ideer från sidtabeller!? OS Föreläsning 4, Filsystem 32
Indexerad allokering - jfr sidindelad sidtabell UNIX File System (UFS) mode owners (2) timestamps (3) size link count device id direct blocks (10) single indirect double indirect triple indirect i-node (FCB)... data data data... data data data... Klarar filer upp till 64GB...... data data data data OS Föreläsning 4, Filsystem 33
Var ligger i-noder? - hur fungerar en disk Läs/skriv huvuden Cylinder Sektor OS Föreläsning 4, Filsystem 34
Var lägger man i-noderna? Nära starten av disken I varje cylindergrupp OS Föreläsning 4, Filsystem 35
Val av blockstorlek Medianstorlek på fil i UNIX ~ 1KB Små block annars mycket intern fragmentering I/O mot disk Små block mycket overhead Helst större block 512B 8KB har använts Ex: Berkley Fast File System: 8KB block som kan fragmenteras till 1KB Ex: MS-DOS max 2 16 block blockstorleken beror på hårddiskens storlek OS Föreläsning 4, Filsystem 36
Implementation av directoryn Primär uppgift - översätt filnamn till var filen finns på disk Annat att fundera över Var ligger filernas attribut - i directoryt eller i i-noden (FCB) Hur hantera långa filnamn Hur organisera directory - länkad lista av information om filer - kombinera med hashtabell Directoryn implementeras ofta som filer med speciell intern struktur OS Föreläsning 4, Filsystem 37
Datastrukturer - man normalt finner i filsystem På disk Boot block Superblock (MasterFileTable) Hur är partitionen indelad i block, lediga block... File Control Blocks (i-noder i UFS) Ev. Directorystruktur I minne Partitionstabell Information om monterade partitioner Tabell med nyligen accessade directoryn Tabell över alla öppna filer med kopior av filernas FCB:er Per process öppen filtabell OS Föreläsning 4, Filsystem 38
Att öppna/stänga filer Varför måste man normalt sett öppna en fil innan man läser/skriver den? Varför måste man stänga filen efteråt? Öppna filen: OS håller ordning på/kontrollerar: Accessrättigheter Var i filen man är positionerad Hur många som öppnat filen (delade filer) Stänga filen: OS håller ordning på: Hur många som öppnat filen Om filen buffrats i minne och behöver skrivas till disk OS Föreläsning 4, Filsystem 39
Öppna en fil - datastrukturer i minnet User space Kernel space open(filename) fd (index) read(fd) directory tabell directory info P2 read(fd2) FCB i-node data block Filtabeller för Tabell över varje process alla öppna filer OS Föreläsning 4, Filsystem 40
Hålla ordning på lediga block Hur håller man ordning på lediga block på disken? Bitvektor (växer med diskstorlek och minskande blockstorlek) Länkade listor Bygg dem i de lediga blocken Inget extra utrymme krävs! OS Föreläsning 4, Filsystem 41
Prestanda - några detaljer bland många Buffer (cache) för diskblock som accessas i minnet Kan implementera LRU När skrivs modifierad data till filsystemet? Försök designa filsystemet så man minskar Onödiga diskrörelser Inte skriver/läser för små mängder data Undvik dubbel cachening av minnesmappade filer minnesmappad I/O vanlig filaccess minnesmappad I/O vanlig filaccess sidcache buffercache buffercache filsystem OS Föreläsning 4, Filsystem filsystem 42
Mjuka och hårda länkar i UNIX Länk - En fil som innehåller sökvägen till en annan fil eller directory Hård länk Får bara peka ut filer Uppdaterar räknaren i den utpekade filens i-node för hur många som refererar till filen En fil kan inte tas bort så länge denna räknare är > 0 Mjuk länk Får peka ut både filer och directoryn Räknar inte upp räknaren i i-noden OS Föreläsning 4, Filsystem 43
Backup och konsistenskontroller - förbaskat viktigt men slarvas med... Backup Fysisk dump - skriv alla block i följd på backupmedia Logisk (incrementell) dump - skriv alla directoryn och alla ändrade filer till backupmedia - I UNIX följ inte mjuka länkar! Konsistenskontroller (fsck, scandisk) Block konsistens - kontrollera att alla diskblock finns en gång i antingen fri-listan, i en fil eller i listan med dåliga block Filsystemskonsistens - Kontrollera att räknarna för hur många som refererar till en fil (i FCB, i- node) stämmer överens med hur många referenser som finns från directory-strukturen Fysisk korrekthet - block/sektorer som inte går att läsa markeras att inte kunna accessas Läs 6.3.6 OS Föreläsning 4, Filsystem 44
Exempelfilsystem MS-DOS Windows 98 UNIX (UFS)
MS-DOS - Windows-95 Fortfarande vanligt! Speciellt på minneskort Utvidgning av filsystemet i CP/M Skiljer inte på user- och kernel-mode Skiljer inte på olika användare (bara en) Root directory har fix storlek Hur många sub-directoryn som helst Directoryn sparas som filer med fixt format på posterna 8 3 1 10 2 2 2 4 filnamn ext attr. reserverat tid datum första block storlek Datum klarar upp till år 2107 FAT tabell i minnet Olika versioner beroende på hur många bitar i pekarna till diskblock: FAT-12, FAT-16, FAT-32 (28 bitars pekare) Olika blockstorlek: multipel av 512B OS Föreläsning 4, Filsystem 46
MS-DOS - varianter på FAT Max 4 partitioner per disk. Max storlek per partition för olika blockstorlekar och FAT pekarstorlekar Blockstorlek FAT-12 FAT-16 FAT-32 0.5 KB 2 MB 1KB 4 MB 2KB 8 MB 128 MB 4KB 16 MB 256 MB 1 TB 8KB 512 MB 2 TB 16KB 1024 MB 2 TB 32KB 2048 MB 2 TB OS Föreläsning 4, Filsystem 47
Windows-98 Kan utnyttja FAT-32 fullt ut Långa filnamn Bakåtkompatibelt med MS-DOS Windows-98 directory entry 8 3 1 10 2 2 2 4 filnamn ext attr. reserverat tid datum första block storlek 8 3 1 1 1 4 2 2 4 2 4 basefilename ext attr. NT creation date last acc last mod size Höga 16 bitar i adress till första blocket Låga 16 bitar i adress till första blocket OS Föreläsning 4, Filsystem 48
WINDOWS-98 -långa filnamn Tillåter upp till 260 tecken (819 klaras...) Ex. På hur det lagras i directoryfilen Långt namn entryn 68 5 tecken attr. 0 chk 6tecken 0 2 tkn 2 5 tecken attr. 0 chk 6tecken 0 2 tkn 1 5 tecken attr. 0 chk 6tecken 0 2 tkn Directory basefilename ext attr. NT creation date last acc last mod size entry WINDOWS skapar ett unikt MS-DOS filnamn (8+3 tecken) Flaggar för att det är ett långt namn OS Föreläsning 4, Filsystem 49
FAT i detalj Directory 8 3 1 1 1 4 2 2 4 2 4 entry basefilename ext attr. NT creation date last acc 0000 last mod 0001 size Höga 16 bitar i adress till första blocket Låga 16 bitar i adress till första blocket FAT (hålls om möjliigt i minnet) 4 8-1 0 2 4 6 8 6 1 3 5 7 9 OS Föreläsning 4, Filsystem 50
UNIX Mycket av det vi gått igenom gäller UNIX! Kan ha många olika filsystemsimplementationer samtidigt Tillåter att man låser regioner i filer för exklusiv access (skrivning) eller delad access (läsning) Skiljer på olika typer av filer regular vanliga filer directory special Specialfiler kan vara terminaler och andra I/O enheter (/dev) kan montera råa diskar/partitioner (dvs utan filsystem på) för t.ex SWAP-space OS Föreläsning 4, Filsystem 51
UNIX - kärnans datastrukturer för öppna filer Per process fildescriptortabeller Gemensam tabell för öppna filer i-nodes tabell för öppna filer föräldraprocess barnprocess annan process Filposition r/w pekare till i-node Filposition r/w pekare till i-node Filposition r/w pekare till i-node OS Föreläsning 4, Filsystem 52
Summering vad vi pratat om idag Filsystem Filer och directoryn som abstrakta datatyper Fysisk implementation av filsystem på disk Datastrukturer i minnet för att hantera öppna filer och directoryn OS Föreläsning 4, Filsystem 53
Kommande föreläsningar Nästa föreläsning: I/O OS Föreläsning 4, Filsystem 54