Filsystem

**Filsystem** er ein modul i eit operativsystem som inneheld naudsynt funksjonalitet for å lagra, og lesa attende, data på eit platelager, CD-ROM, minnepinne, etc. Filsystemet lagrar data på ein strukturert måte, slik at det er muleg å finna han att på ein lettvint måte. Eit filsystem er bygd opp som eit hierarki av fleire lag med funksjonalitet. 

## Oppbygging
### Det mediaspesifikke laget
Måten data lagra på eit fysisk medium er organisert er tilpassa det spesifikke fysiske mediet. Eit platelager, til dømes, er organisert i sektorar og partisjonar, der data vert lagra i form av blokker. Det fysiske mediet inneheld kontrollelektronikk som utfører mediaspesifikke operasjonar, som å skriva og lesa data til/frå det fysiske lagringsmediet. Noko av denne elektronikken er analog, som skrive- og leseforsterkarane, medan reguleringssystema for rotasjonshastigheit og radial posisjonering av lese/skrivehovudet kan vera anten analoge eller digital. Men mesteparten av elektronikken er digital, og utfører operasjonar som lågnivåformatering av data, feilkorreksjon, etc. Denne mediaspesifikke elektronikken er bygd saman med det fysiske mediet og vert ofte kalla drivelektronikk.

### Drivarlaget
Drivar er progravaremodular i operativsystemet som kommuniserer med elektronikken som kontrollerer dei ulike fysiske lagringsmedia. Drivarar er difor spesielt tilpassa dei ulike fysiske lagringsmedia. Dei ulike operativsystema har skil seg noko frå kvarandre i måten drivarane fungerer, så drivarar må skrivast må skrivast for kvar einskilt lagringsmedia og operativsystem. Men mykje av funksjonaliteten er lik, så i praksis kan mykje av koden brukast omatt. Av konkurranseomsyn er produsentane av lagringsmedia ofte restriktive med å publisera detaljar om elektronikken i lagringsmedia dei produserer. Dette gjer det vanskeleg for andre å skriva drivarar, og det er i stort mon produsentane sjølve som skriv drivarane.

### Pakkelaget
Informasjonen vert lagra i blokker av fast storleik på det fysiske mediet. På platelager er dette ofte 512 byte, men 1024 og 2048 byte vhar òg vore nytta. Filer kan ha vilkårleg storleik, så ved lagring vil eit lag i filsystemet splitta opp fila som skal lagrast i blokker, som høver med storleiken til blokkene til lagringsmediet. Når ei fil vert lesen attende frå eit lagringsmedium vil denne modulen setta saman blokkene til ei samanhengande fil. Dette gjer at programmerarar ikkje treng å ta omsyn til storleiken på blokkene til lagringsmediet.

### Virtuelt filsystem
Eit virtualt filsystem er eit abstraksjonslag som gjev program tilgang til fleire fysiske filsystem på ein einheiltleg måte. Dette gjer det til dømes muleg å skriva til, eller lesa frå, lagringsmedia på andre maskinar, via eit nettverk, på same måte som til/frå lokale lagringamedia. Fleire maskinar i eit nettverk kan for eksempel nytta ein sentral database, plassert på ei tenarmaskin. Eit anna døme er å gi maskiner i eit nettverk muligheit for å lagra sikkerheitskopiar på ein NAS.

### Fil- og katalogabstraksjon

Fil- og katalogtenester er eit abstraksjonslag som implementerer naudsynt funksjonalitet for at brukarar og brukarprogram kan gi filer lesbare namn og oppretta katalogar . Katalogar, eller mapper, er i røynda berre ein måte å gruppera, og andre katalogar, filer på. Dette gjer det muleg å syna katalogar og filer på ulike måtar i ein filutforskar.

### Programmeringsgrensesnitt
Eit programmeringsgrensesnitt er eit standardisert grensesnitt, for å kalla opp funksjonar, eller i samband med objektorientert programmering metodar, som gjer det mykje enklare å skriva brukarprogram. Ein av dei mest vanlege programmeringsgrensesnitta er POSIX, som vert nytta i Unix-liknande operativsystem. Eit programmeringsgrensesnitt har funksjonar for å oppretta, sletta, opna, lukka, skriva, lesa, flytta, endra namn på, søka etter filer, etc. Det er òg funksjonar for å oppretta, sletta, flytta, endra namn på katalogar, etc. Nokre programmeringsgrensesnitt, som til dømes POSIX, har òg funksjonar for å oppretta og sletta symbolske lenkjer, og namngjeve røyr («pipes»). POSIX har òg sokalla «sockets» (soklar), som gjer det muleg å skriva/lesa filer til/frå andre prosessar (andre program) og/eller over eit netverk. Kvart einskild programmeringsspråk har sine eigne spesifikke programmeringsgrensesnitt, som kallar opp funksjonar i programmeringsgrensesnittet til det underliggande operativsystemet. På denne måten kan brukarprogramma lettare flyttast mellom ulike operativsystem.

### Filtypar
Eit filsystem funksjonalitet for dei mest brukte filtypane, som binære og tekstfiler. I tillegg til å lagra ein bolk med informasjon i ei ny fil, er det òg muleg å legga til, eller fjerne, informasjon på ein tilfeldig plass i ei fil. Meir spesifikke filtypar, som Lydfiler, videofiler, grafikkfiler, etc. er plassert på eit abstraksjonsnivå over programmeringsgrensesnittet, men gjer bruk av basisfunksjonaliteten til programmeringsgrensesnittet. Det same gjeld databasar.

## Referansar