Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem
11.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Bakgrund Filsystemet tillhandahåller mekanismer för lagring och access till program och data Består av en samling filer och en katalogstruktur Ligger på sekundärminne, oftast en disk Två designproblem: 1. Hur ska filsystemet se ut för användaren? 2. Hur ska vi mappa det logiska filsystemet till den fysiska disken? Ett filsystem består oftast av många olika lager
11.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Layered File System Logical file system: hanterar metadata (katalogstruktur, filstruktur mm) File-organization module: översätter logiska blockadresser till fysiska, hanterar ledigt utrymme Basic file system: generiska kommandon (t ex läs drive 1, cylinder 73, track 2, sector 10) I/O control: drivrutiner, avbrottshanterare
11.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Olika filsystem Många olika filsystem används idag Diskbaserade filsystem: UNIX – UFS Windows – FAT, FAT32, NTFS Linux – ext2, ext3 + minst 40 andra Filsystem för DVD, CD-ROM Distribuerade filsystem
11.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Implementation av filsystem Många strukturer används för att implementera filsystem På disk: Boot control block innehåller information om hur OS bootas från den volymen Volume control block innehåller detaljer om volymen (blockstorlek, antal block mm) Katalogstruktur – organiserar filerna File Control Block (FCB) innehåller många detaljer om en fil I minnet: System-wide open-file table – innehåller en kopia av FCB:n för varje öppen fil Per-process open-file table – innehåller pekare till system-wide open-file table
11.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition A Typical File Control Block
11.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Skapa och öppna en fil Skapa en ny fil: Logiska filsystemet allokerar en ny FCB Katalogen läses in i minnet och uppdateras Öppna en fil: Open() skickar ett filnamn till det logiska filsystemet Först söks system-wide open-file table igenom Om filen hittas – skapa en pekare i per-process open-file table Om filen ej hittas – sök igenom katalogstrukturen efter rätt FCB och lägg i system-wide open-file table först Open() returnerar en pekare till filens rad i per-process open-file table Alla filoperationer görs sen genom denna pekare
11.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition In-Memory File System Structures
11.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Virtuella filystem Hur kan flera filsystem integreras i en katalogstruktur? Virtuella filsystem (VFS) använder OO-tekniker för att implementera filsystem VFS använder samma systemanropsgränssnitt (API) till alla filsystem API:et är till VFS-gränssnittet, som separerar operationerna från deras implementation.
11.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Schematisk bild av ett virtuellt filsystem
11.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Implementation av kataloger Linjär lista med filnamn med pekare till datablocken Enkel att programmera Tidskrävande att exekvera Hashtabell – linjär lista med en hash-datastruktur. Minskar söktiden Kollisioner – situationer där två filer hashar till samma ställe Fast storlek
11.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Allokeringsmetoder Hur ska plats på disken allokeras till filerna? Sammanhängande (contiguous) allokering Länkad allokering Indexerad allokering
11.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Sammanhängande allokering
11.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Sammanhängande allokering (forts) Varje fil ligger samlad på ett ställe Enkel, kort söktid Lider av extern fragmentering Hur mycket plats ska vi allokera?
11.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Linked Allocation
11.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Länkad Allokering Varje fil är en länkad lista med diskblock: blocken kan vara utspridda varsomhelst på disken Katalogen har en pekare till första och sista diskblocken Varje block har en pekare till nästa block Fördelar: Ingen extern fragmentering Inget problem att filer växer Nackdelar: Bara sekventiell access Pekarna tar plats Sårbart om en pekare förstörs
11.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition File-Allocation Table (MS-DOS)
11.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Indexerad Allokering Alla pekare läggs i ett index block Varje fil har sitt eget indexblock (en array) Fördelar: Ingen extern fragmentering Random access Filer kan växa Nackdel: Overhead från indexblocken
11.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exempel på indexerad allokering
11.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Hantering av ledigt utrymme Bitvektor (n block) … 012n-1 bit[i] = 0 block[i] ledigt 1 block[i] upptaget
11.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Länkat ledigt utrymme