File System Interface File Concept Access Methods Directory Structure File System Mounting File Sharing Protection
1 1 Varför behöver man filer? Ibland måste man kunna spara mycket stora mängder information. Informationen måste finns kvar även efter det att en process dör. Många processer kan behöva informationen samtidigt. För detta krävs att filerna lagras på sekundärminne.
2 2 Filstrukturer Filer kan vara strukturerade på olika sätt, de vanligaste är: byte-filer post-filer I UNIX och MS-DOS/Win95/NT/Win2K finns det bara byte-filer. Ger maximal flexibilitet. Om användaren vill ha någon annan struktur kan han/ hon bygga upp den själv. Sk.”raw dev.”
3 3 Fil typer De flesta operativsystem understödjer olika typer av filer. I UNIX och MS-DOS finns t.ex. *regular files - användarfiler 1. binär-filer (t.ex. exekverbara filer) 2. ASCII-filer (textfiler) *directories (katalogfiler) - för att strukturera filsystemet *character special files - används för in- och ut- matning (terminaler, skrivare, nätverk etc.) *länkar: soft, hard * pipes *block special files - används för hårddiskar etc.
4 4 Exempel på binära filer
5 5 Attribut Namn Identifierare Type Location Size Protection Date/Time User
6 6 Accessmetoder sekventiella filer - då man enbart använde band för att lagra filer, kunde man av naturliga skäl bara komma åt informationen i filerna sekventiellt. indexerbara filer (random access files) - när man började använda diskar för att lagra filer kunde man komma åt informationen i filerna i godtycklig ordning. Två typer av indexering: (i)SEEK-kommando som positionerar i filen (ii)för varje READ/WRITE specificeras position
7 7 Sequential-access File
8 8 Example of Index and Relative Files
9 9 Operationer / metoder Create Write Append Change Reduce Read Start, n++, end Reposition in a file Deleting Truncating
10 File pointer File open count ( OFT inside PCB ) Disk location of file Access rights Operationer / metoder
11 Några typiska operationer på filer CREATE - skapar en tom fil DELETE - raderar filen, frigör diskutrymme OPEN - hämtar information om filen från disk CLOSE - lagrar information om filen på disk READ/WRITE - läser/skriver data från/på filen SEEK - för indexerade filer, positionera i filen RENAME - ändra namn på filen SET ATTRIBUTES - ändra attribut, t.ex. rättigheter
12 File Structure Enkla sekventiella filer - då man enbart använde band för att lagra filer, kunde man av naturliga skäl bara komma åt informationen i filerna sekventiellt. Lines Fast längd Variabel längd Complexa Fil Structurer Kan hantera olika binär format.com.exe. // cof.elf Object, library, Source Batch (.bat.cmd ) Text, Multimedia mm
13 Operating system Program
14 - Directory/filkataloger - PIPEs - Devices char. dev. block dev. Fil typer 2
15 Filkataloger Kataloger används för att hålla ordning på filer. I hierarkiska filsystem kan en katalog innehålla underkataloger. En katalog innehåller ett antal poster, en för varje fil, som innehåller information om filen. T.ex. var på disken den finns lagrad och dess attribut. Speciella poster är: “.” (dot), som refererar till katalogen själv “..” (dotdot), som refererar till förälder-katalogen I unix är en fil som börjar med. osynlig (hidden)
16 Montering av diskar I vissa system är bundna till att montera en ny disk under ex. A: B: C: D: osv. I UNIX mfl börjar filsystement med ”/” där efter monteras under lämpligt directory
17 Hur hittar systemet kommando/ program “lätt” i filsystemet? med hjälp av PATH variablen, PATH=/usr/bin:/usr/sbin:/opt/SUNWspro/bin:/usr/local/bin:. ditt shell öppnar alla ovan nämnda dir och försöker hitta det kommandot du gav, i annat fall “command not found” ändra: tcsh med: setenv PATH $PATH:/newpgm/bin sh och ksh: set PATH=$PATH:/newpgm/bin;export PATH
18 Path names I hierarkiska filsystem finns det två sätt att specificera filnamn: absolut path name - beskriver filen i relation till rotkatalogen. ex. /home/is/is00/is00pdv/lab/lab01/tenta.pdf relativt path name - beskriver filen i relation till arbetskatalogen (working directory). ex. om arbetskatalogen är: /home/is/is00pdv/privat så blir det:
19 Filattribut fil-namn ( 8+3 or 256 char) läs (gömd)/ skriv / execut ägare / grupp / övriga Tids-stämpling : skapad, ändrad, öppnad (accessed) pekare till block/sektorer/mm
20 Implementation av filsystem Hur lagras filer och kataloger på disken? Hur håller man ordning på diskutrymmet? Var på disken finns filerna & var hittar man ledigt utrymme? Hur gör man ett filsystem tillförlitligt? Filer får inte försvinna. Hur gör man filsystemet effektivt (snabbt)?
21 Tekniker för att implementera filer Minnesutrymmet på en disk är indelat i ett antal lika stora block. (Ej att förväxlas med sidor.) Hur ska man hålla reda på i vilka block en viss fil finns lagrad? konsekutiv (contiguous) allokering länkade listor länkade listor med tabell (index) index-noder (i-noder)
22 Konsekutiv (contiguous) allokering Alla filer lagras i konsekutiva block på disken. Enkelt, man behöver bara komma ihåg var filen börjar Det går snabbt att läsa/skriva dessa filer Man måste vet hur stor filen kan komma att bli redan då den skapas detta leder till (extern) fragmentering.
23 Länkade listor Filer lagras som en länkad lista av block. Första ordet i varje block fungerar som en pekare till nästa block. räcker att veta var första blocket finns man behöver inte veta i förväg hur stor filen blir ingen extern fragmentering extremt långsamt vid access av indexerade filer minnesstorleken inte längre en jämn två-potens (några bytes går åt för att lagra pekaren)
24 Länkade listor med tabell (index) Pekarna samlas i en tabell, ett s.k. index, som hela tiden finns i primärminnet. ( FAT ) samma som för länkade listor minnesstorleken jämn två-potens hyfsat snabbt vid access av indexerade filer tabellen kan ta stor plats ex.1GB hårddisk, 1KB block => tabellrader => minst 2MB (16 bitar)
25 Index-noder (i-noder) Index-noder (i-noder) Till varje fil finns en liten tabell (index-nod) vilken innehåller:* filens attribut * pekare till filens block Pekarna kan lagras i flera nivåer så att små filer klarar sig med bara I-noden medan större filer kräver två eller flera nivåer. (UNIX) +som för länkade listor med tabell +kräver lite primärminnesutrymme (endast i-noden och ev. några block på andra nivåer) +kan hantera mycket stora filer
26 Exempel på i-nod med flera nivåer DATAblock
27 Tekniker för att implementera kataloger För att kunna läsa en fil måste den först öppnas. För att öppna en fil anger användaren filnamnet. Det används för att hitta filens post i katalogen. I posten finns information bl.a. om var på disken man kan hitta filen. Filens attribut kan lagras: *direkt i katalogen (MS-DOS) *tillsammans med filens övriga data t.ex. i filens i-nod (UNIX) Delar man filer är det senare mer praktiskt.
28 Delade filer Ibland vill man att flera användare kan dela en fil, d.v.s. den kan finnas i flera kataloger samtidigt. ex. ett antal personer arbetar i samma projekt Introducerar nya problem: Vem (vilken katalog) äger filen? Hur ska man globalt uppdatera informationen om filen (attribut etc.) då någon ändrar i den?
29 Två metoder för delning av filer 1.Lagra info i en separat datastruktur, t.ex. i-nod, och låt katalogerna ha pekare till denna. kräver inte extra CPU-tid eller minnesutrymme problem när ägaren tar bort filen 2.Inför en ny typ av fil, en s.k. symbolisk länk, som innehåller en path till filens ägar-katalog. mindre problem när ägaren tar bort filen kan dela filer mellan datorer på olika platser kräver extra CPU-tid och minnesutrymme
30 Aspekter på diskutrymmet *Blockstorlek stora block => mer intern fragmentering (speciellt illa eftersom många filer är små) små block => många diskaccesser *Hålla reda på ledigt diskutrymme 1. bitkarta 2. länkad lista (s.k. free list) *För att inte minnet ska ta slut Diskkvot (Disk Quota) - varje användare får ett visst utymme att lagra sina filer på
31 Aspekter på tillförlitlighet Det är ofta värre om filsystemet krashar än om datorn går sönder! Diskar har ofta ett antal dåliga block 1. lagra blocknummren på en sektor 2. lagra dem i en fil Backup - lagra diskinnehållet på t.ex. band 1. total backup: alla filer 2. inkrementell backup: de som ändrats sen sist 3. ha två hårddiskar och skriv till båda samtidigt
32 Konsistens hos filsystem Om systemet går ner samtidigt som man använder en fil så kan t.ex. dess i-nod bli felaktig. Lösning: ett program som kontrollerar att filsystemet är konsistent körs när systemet startas upp. Hittar programmet en inkonsistens så: 1.försök rätta till problemet om det går ex. ett block är varken ledigt eller allokerat 2.annars, försök göra filsystemet konsistent och rapportera felet till anvädaren ex. samma block tillhör olika filer
33 Säkerhet & Skydd *Skydd (protection) handlar om att skydda användare från varandra och från sig själva. ex.att program använder CPU, minne, filer m.m. på ett lämpligt sätt *Säkerhet (security) är ett vidare begrepp och inkluderar även saker som späningsbortfall, inkräktare m.m.
34 Problem: skyddsmatriserna kan bli väldigt stora. *Access Control Lists - dela upp skyddsmatisen i kolumner, d.v.s. en lista för varje objekt. *Capability Lists - dela upp matisen i rader, d.v.s. en lista för varje domän. UNIX använder sig av förenklade Access Control Lists (9 bitar per objekt). 3 domäner: owner, group, others 3 rättigheter: (r)ead, (w)rite, e(x)ecute ex. rwxr-x--- ( internt i datorn) Access Control Lists och Capability Lists
35 Search for a file Create a file Delete a file List a directory Rename a file Traverse the file system Operations Performed on Directory