Filhåndtering Kjell Åge Bringsrud (Foiler fra Olav Lysne) INF 103 Filhåndtering 1 Hva er en fil logisk sett? En samling data til ett eller annet formål En kjørbar programfil En fil med kildekode til et program En samling tall som skal benyttes av et program som driver med numerisk analyse Informasjon om andre filer (linker, directories) Et tekstdokument i ett eller annet gitt format En samling administrative data som henger sammen på ett eller annet vis både internt og med andre filer Representasjon av et bilde, en lydsekvens, en film, et kunstverk Filhåndtering 2 1
Eksempel: Post (record) orientert fil En post-orientert fil består av en samling av poster (records), som hver består av en sekvens av felt (fields). Vanlig form for organisering innen databaser. Filhåndtering 3 Fysisk organisering av filer Et logisk bilde av en fil må kunne representeres på et fysisk medium. Sylinder Plate (platter) Spor Sektor Blokk Filhåndtering 4 2
Blokker En blokk er den minste enheten som kan leses fra eller skrives til på en disk. Et program som leser ett ascii tegn fra en fil, vil kreve at det leses en hel blokk av disken. En typisk (og svært vanlig) blokkstørrelse er 512 byte. Hele disken har samme blokkstørrelse. Det betyr at dataene er lagret på mindre fysisk plass innerst på disken enn ytterst. Dette gjør oppgaven til diskhodet mye enklere. Filhåndtering 5 Mapping av post-filer til diskblokker Det er (som regel) ingen sammenheng mellom poststørrelse og blokkstørrelse på en maskin. Filhåndtering 6 3
Blokkstørrelse Vanligvis 512, evt 256 eller 1024. En fil krever minimum en blokk, uansett hvor liten den er. Det er en avveining mellom effektiv lesing/skriving, og god utnyttelse av diskplass i valg av blokkstørrelse. Det er ikke nødvendigvis slik at de blokkene som inneholder en fil er lokalisert i nærheten av hverandre. Det er imidlertid ofte ønskelig av ytelsesårsaker. Filhåndtering 7 Operativsystemets filtyper Windows og UNIX har bare to filtyper Kataloger (directories) og datafiler. Datafilene sees på som en byte-strøm. For å holde rede på forskjellige filtyper benyttes forskjellige navne-utvidelser..doc.c.java Dette gir fordeler i form av enkelhet i filsystemet. Det overlater imidlertid ansvaret for en del funksjonalitet til applikasjonsprogrammereren. Filhåndtering 8 4
Men hva med Random Access filer? Enkelte logiske filtyper er slik at vi typisk ikke ønsker å lese hele filen fra starten av, men ønsker tilgang til en post midt inni Databasefiler er typiske eksempler Disse kalles gjerne post-baserte (record-based) IBM OS/390 har et rikere sett av filtyper, hvor dette problemet er løst av OSet. Mer om dette senere Filhåndtering 9 Andre egenskaper ved filer som systemet kan støtte Tilgangskontroll Skrive Lese Eksekvere Kopiere, kunnskap om eksistens Forskjellige brukergrupper. Assosiere et program med en fil på en annen måte enn vha. slutten på filnavnet). Filhåndtering 10 5
Fil håndteringsystemets (FS) rolle Tjener som et grensesnitt mellom brukerens logiske bilde av filen, og maskinens fysiske realiteter. Skjuler begreper som sektorer, plater og blokker. Tilbyr et felles sett av kommandoer for alle filer uavhengig av lagringsmediets egenskaper (floppy, harddisk, blokkstørrelser etc.) Sjekker gyldigheten av forespørsler, og oversetter dem til f.eks lesing og skriving av enkelte blokker. For å få til dette vedlikeholder systemet en katalog- (directory-) struktur. Filhåndtering 11 Logisk bilde av FS sin rolle Filhåndtering 12 6
Hva skjer ved kommandoen prompt> cp frafil tilfil 1. Shell ber FM åpne filen frafil og opprette filen tilfil. 2. FM sjekker om frafil finnes, i tilfelle settes det av bufferplass i minnet til (minst) en diskblokk. 3. FM sjekker om det er plass til tilfil. I tilfelle opprettes den med det nødvendige antall blokker. 4. Shell informeres om at punkt 2 og punkt 3 over gikk bra. 5. Shell ber FM om å lese litt (typisk en blokk) av frafil 6. FM leser en blokk av frafil inn i det avsatte bufferet. 7. Shell ber FM om å skrive bufferet ut til en blokk av tilfil. 8. FM skriver bufferet ut til frafil 9. Punktene 5-8 gjentas det nødvendige antall ganger. 10. Filene lukkes 11. Kopieringen avsluttes. Filhåndtering 13 Tre typer operasjoner De som opererer på hele filer Kopier, flytt, lagre, etc. De som bare opererer på informasjon om filen uten å endre filen selv. Endre sikkerhetsnivå, endre navn på filen De som endrer innholdet i filer Skriv, legg til, fjern Hvilken funksjonalitet som her er nødvendig er avhengig av om filene ansees som strøm-baserte eller post- (record-) baserte. Filhåndtering 14 7
Funksjoner som endrer innholdet i filer Post-baserte filer Åpne og lukke filer Lese en post Skrive en post Fjerne en post Endre en post Hvilken post (record) man opererer på angis gjerne med en unik nøkkel. Mer om dette i andre kurs. Strøm-baserte filer Åpne og lukke filer Lese et antall byte Skrive et antall byte Spole frem og tilbake Dersom OS kun tilbyr denne typen filer, må de post-baserte operasjonene implementeres av de applikasjonene som trenger dem. Filhåndtering 15 Logisk fil-aksess Sekvensiell aksess Byte-strøm Magnetisk tape analogi Støttes av alle OS. Random aksess Tilgang til enkelt-poster Tilgang basert på kjennskap til hvilken logisk blokk posten befinner seg i. Ved f. eks Hashing. Logisk blokkstørrelse behøver ikke være det samme som fysisk blokkstørrelse - man ønsker ikke å endre alle applikasjoner selv om man bytter til en disk med annen fysisk blokkstørrelse. Omregning fra logisk blokk til fysisk blokk må gjøres av Filsystemet Støttes av nesten alle moderne OS. Filhåndtering 16 8
Logisk aksess forts. Indeksert aksess. Tilgang til poster gjennom flere forskjellige indekser. Oppslag i telefonkataløgen ved hjelp av Etternavn eller gatenavn eller kommune eller telefonnummer eller. Implementert ved hjelp av pekere fra indekslister til blokker. Gjerne kombinert med sekvensiell eller random access. Implementasjonen av indeksert aksess er ofte overlatt til applikasjonen, men noen OS har et FS som støtter indeksert aksess direkte (IBM OS/390). Filhåndtering 17 Fysisk fillagring FM må tilordne blokker til filer, og holde rede på hvilke blokker en fil består av. For sekvensiell aksess bør dette gjøres slik at det er mulig å aksessere alle blokker etter hverandre på en rask måte. For random aksess er det viktig at det finnes effektive metoder for å få tak i en gitt blokk midt inne i en fil. De to kravene over står ofte i motsetning til hverandre. Tre vanlige metoder Kontinuerlig Pekerkjede Indeksert Filhåndtering 18 9
Kontinuerlig blokk-allokering Dette er den enkleste metoden Enhver fil lagres i blokker som følger etter hverandre. men hva betyr etter hverandre her? Jo at diskhodet lett kan lese blokkene i sekvens. Filhåndtering 19 Kontinuerlig forts. Styrker Sekvensiell aksess blir svært effektiv. Random aksess kan gjøres enkelt-hvilken blokk en post ligger i kan lett regnes ut. Svakheter Vanskelig med filer som vokser over tid de må få satt av all den plassen de trenger med en gang, evt flyttes når de er for store. Fragmentering av disken når en fil blir fjernet er man sjelden så heldig at det dukker opp en ny fil som er akkurat like stor. Filhåndtering 20 10
Kontinuerlig - fragmentering Dette problemet minner mye om fragmenteringsproblemet for minnehåndtering. Metodene for å håndtere dem er de samme: Allokering ved First fit første og beste Best fit den minste som er stor nok Worst fit den største ledige plassen (fordi det da er større sjanse for at det som er igjen er stort nok til å kunne benyttes av noen andre). I siste instans må disken jevnlig reorganiseres for å fjerne fragmenteringsproblemer. Defragmentering, eller defragging, kompaktering. Filhåndtering 21 Pekerkjede En fil kan spres ut over de blokkene som er tilgjengelige. I slutten av hver blokk ligger en peker til neste blokk. Listen kan også være toveis, ved at hver blokk også inneholder en peker til forrige blokk. Filhåndtering 22 11
Pekerkjede forts. Styrker God utnyttelse av diskkapasitet Velegnet til sekvensiell aksess Ingen fragmenteringsproblemer Svakheter Dårlig egnet for random access. Hva med evnen til å tolerere feil i en diskblokk..? Filhåndtering 23 Indeksert allokering Samme grunnidé som pekerkjeder, men med den forskjell at alle pekere (indekser) ligger på samme sted (indeks blokken). Det er mao. én indeksblokk per fil. Filhåndtering 24 12
Indeksert allokering Styrker Egnet for sekvensiell aksess Velegnet for random aksess Ingen fragmentering Svakheter Bruker en hel blokk til pekere uavhengig av hvor stor filen er. Hva når indeksblokken blir for liten? Man kan søke å allokere så mange kontinuerlige blokker som mulig. Indeksblokken trenger da bare ta vare på adressen til den første blokken, og antallet blokker for hvert cluster av blokker (Windows 2000). Filhåndtering 25 UNIX allokeringsmetode Indeksert aksess med et antall første nivå indekser. I tillegg én peker til et 2- nivå hierarki, én til et 3- nivåhierarki, og én til et 4-nivåhierarki. Dette er tilstrekkelig for filer opp til flere hundre GigaByte. Filhåndtering 26 13
UNIX i-node Filhåndtering 27 FAT File Allocation Table Brukt i MS-DOS, Windows, OS/2 I stedet for en indekstabell per fil, er det en felles indekstabell for hver disk. Hver linje i en FAT tilsvarer en blokk (cluster av blokker) på disken. Hver linje inneholder en peker til neste blokk i filen. Et spesielt tegn tabellen angir at dette er filens siste blokk Filhåndtering 28 14
FAT-eksempel fra boken Filhåndtering 29 FAT Styrker Samme som indeksert aksess Enklere å sette av bare den indeksplassen som trengs. Svakheter Opprinnelig bare satt av 16 bit til å lagre hver peker det gir kun 65536 mulige blokker (clustre) På store disker må derfor blokkene (clustrene) bli store, slik at mye plass går til spille ved små filer. FAT32 løser dette problemet, men FAT ser allikevel ut til å fases ut av Micrsoft. Filhåndtering 30 15
Håndtering av ledig plass Bitmap Setter av en bit som er 0 dersom blokken er ledig, og 1 dersom den er opptatt. Fordeler Trenger lite ekstra plass Enkelt å implementere Lett å finne kontinuerlige sekvenser av ledige blokker. Ulemper Når en fil slettes risikerer man å overskrive blokkene med en gang uheldig for recovery. Filhåndtering 31 Håndtering av ledig plass forts. Kø/Pekerkjede Vedlikeholder en oversikt over alle ledige blokker i en kø. Blokker som akkurat har blitt ledige legges bakerst i køen Allokering av nye blokker skjer forfra. Styrke Bra for recovery av fjernede filer det tar lang tid fra en fil blir slettet til innholdet i den er borte fra diskblokkene. Svakhet Gir svært inneffektiv allokering av blokker kontinuerlige blokker er vanskelig å finne. Filhåndtering 32 16
Fjerning av diskdata Merk at vi har antatt at idet en fil slettes, så vil de blokkene som inneholdt filen ikke berøres. Dette er den vanligste måten å gjøre det på, siden det opplagt er det som krever minst ressurser Det gir imidlertid en sikkerhetsrisiko en fil som er slettet er ikke det samme som et dokument som er makulert. Det finnes software som virkelig sletter de blokkene som ikke er i bruk på disken. Filhåndtering 33 Katalogstrukturer Historisk Flate struktur - alle filer på samme nivå Vanskelig å holde oversikt Navnekollisjoner skjer ofte Alle brukere må ha hensyn til hverandres filnavn Struktur med to nivåer Skiller brukerfiler fra hverandre og fra systemfiler Fremdeles vanskelig for en bruker med mange filer å holde oversikt. I dag hierarkiske strukturer Trær (MS-DOS, og eldre Windows) Asyklisk graf (UNIX og nyere Windows) Filhåndtering 34 17
Trestrukturert katalog Relevante begreper er rot (root), sti (path), stinavn (path name), nåværende katalog (current) etc. Dette er kjent stoff! Filhåndtering 35 Asyklisk graf En enkel generalisering av trestrukturert katalog, som tillater lenker (links) fra et sted i katalogen til en fil eller mappe/directory som ligger et annet sted. Dette er praktisk av flere grunner Flere brukere kan innlemme et filområde blant sine filer for å lette samarbeide Tillater en bruker å benytte korte enkle navn i stedet for lange stinavn. Opprettes i UNIX ved ln kommandoen f eks: ln s /hom/olavly OlavSittOmråde gir en peker ved navn OlavSittOmråde som peker til olavly sitt hjemmeområde. Filhåndtering 36 18
Asyklisk graf - eksempel Filhåndtering 37 Asyklisk graf forts. Når en fil fjernes kan man få en linker som ikke peker noen steder lengre Man kan jo vente til den siste linken er fjernet før man fjerner filen. Hvordan vet man når den siste linken er fjernet? Man kan for hver fil telle opp antall linker hver gang de opprettes, og telle ned hver gang en fjernes. Hva når det blir løkker i grafen slik at den ikke lenger er asyklisk? Det må unngås! Ved sykler i grafen vil blant annet verktøy som søker etter filer gå i det uendelige. Filhåndtering 38 19
Tilnærming til linker Skal alle linker til en fil være sidestilte (hard link), eller skal en link eie filen (symbolic links). Filhåndtering 39 Oppsummering Vi har sett på det logiske filgrepet og hvordan det kan implementeres på fysiske medier. Diskens oppdeling i plater, sylindre, sektorer og blokker. Filsystemets oppgaver og funksjonalitet Aksesstyper for filer: Sekvensiell Random Indeksert. Filhåndtering 40 20
Oppsummering forts. Håndtering av ledige blokker/allokering av plass Bittabell Kø/pekerkjede Katalogstrukturer Trestruktur Asykliske grafer linker Fysisk lagring tilordning av blokker til filer: Kontinuerlig Pekerkjede Indeksert Filhåndtering 41 21