kapitel 11: implementation av filsystem
DESCRIPTION
Kapitel 11: Implementation av filsystem. 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: Hur ska filsystemet se ut för användaren? - PowerPoint PPT PresentationTRANSCRIPT
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,
Kapitel 11: Implementation av filsystem
11.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
A Typical File Control Block
11.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
In-Memory File System Structures
11.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
Schematisk bild av ett virtuellt filsystem
11.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
Sammanhängande allokering
11.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
Linked Allocation
11.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
File-Allocation Table (MS-DOS)
11.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th 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 ©2009Operating System Concepts – 8th Edition
Exempel på indexerad allokering
11.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Hantering av ledigt utrymme
Bitvektor (n block)
…
0 1 2 n-1
bit[i] = 0 block[i] ledigt
1 block[i] upptaget
11.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Länkat ledigt utrymme