Transcript CPU
Visoka poslovno-tehnička škola Užice
OPERATIVNI SISTEMI
FAJL SISTEMI
SISTEMI DATOTEKA
GLAVNI DELOVI RAČUNARA
CPU
MEMORIJA
Centalna
procesorska
jedinica za obradu
U/I
ulazno-izlazni
uređaji
2/47
Hijerarhija memorije
1 instrukcija
i nekoliko
podataka
3/47
1%
10 %
100 %
Pojam datoteke - fajla
4/47
Datoteka ili fajl (file) je logička jedinica smeštanja
podataka i informacija.
Za OS, to je objekat koji se čuva u sekundarnoj memoriji
– na HDD (hard disk drive)
Apstrahuje fizička svojstva uređaja za smeštanje
podataka. OS preslikava fajl na fizički uređaj.
Za korisnika, fajl je najmanja jedinica alokacije logičkog
prostora na sekundarnoj memoriji: podaci se ne mogu
smeštati izvan fajla
OS ne ulazi u tumačenje sadržaja i strukture fajla, osim
za neke posebne vrste fajlova (npr. fajl - program).
Strukturu fajla tumači onaj program koji ga je kreirao ili
koji je u stanju da ga prepozna
Neki OS zahtevaju određenu strukturu svakog fajla koju
u celini ili delimično tumače.
Pojam fajla - atributi
5/47
Fajl, osim imena i sadržaja, opisuju i dodatni atributi, koji
se čuvaju u kontrolnom bloku fajla (eng. file control
block, FCB).
Atributi fajla (tipično):
– simboličko ime (naziv) fajla: jedini atribut u ljudski
čitljivoj formi
– identifikator: jedinstveni interni identifikator fajla u
sistemu
– tip datoteke, pomoću koga OS određuje vrstu
datoteke i po potrebi je povezuje sa nekom
aplikacijom
– lokacija: informacija o uređaju i mestu gde se fajl
nalazi na njemu
– veličina: trenutna veličina (u bajtovima, rečima ili
blokovima)
Pojam fajla - atributi
6/47
Atributi fajla - nastavak:
– zaštita: informacije o pravima pristupa fajlu (ko sme
da ga čita, piše, briše, izvršava itd.)
– datum, vreme i korisnik koji je kreirao, poslednji
modifikovao ili poslednji pristupao fajlu
Informacije o fajlovima čuvaju se u strukturi direktorijuma
(katalog, imenik)
Datoteke, podela: izvršne i sa podacima
Pojam fajla - operacije
7/47
Osnovne operacije sa fajlom – usluge OS (sistemski
pozivi):
– Kreiranje (create) fajla: alociranje prostora za
smeštanje fajla i formiranje ulaza u direktorijumu
– Upis (write) u fajl - parametri: ime fajla i podaci za
upis. Traži se fajl sa datim imenom, na poziciju
pokazivača za upis datog fajla upisuju se dati podaci i
na kraju, pokazivač se pomera na novo mesto
Pojam fajla - operacije
–
–
–
8/47
Čitanje (read) iz fajla; parametri: ime fajla i mesto u
OM za smeštanje pročitanih podataka; sa pozicije
pokazivača za čitanje datog fajla čitaju se podaci i
pokazivač pomera na novo mesto; obično su
pokazivači za čitanje i upis isti, tj. postoji samo jedan
pokazivač trenutne pozicije za fajl (current-fileposition pointer)
Pozicioniranje pokazivača na novo mesto (seek)
Brisanje fajla (delete): prostor koji je zauzimao fajl se
proglašava slobodnim i briše se ulaz u direktorijumu
Pojam fajla - operacije
9/47
Ostale operacije sa fajlom – usluge OS (sistemski pozivi):
– Odsecanje (truncate): brisanje sadržaja fajla, ali
zadržavanje atributa (osim veličine koja se postavlja
na 0)
– Preimenovanje (rename) fajla
– Dodavanje informacija na kraj fajla (append): upis
podataka na kraj fajla
– Kopiranje (copy) fajla
– Promena atributa fajla
Većina ovih operacija zahteva pretragu direktorijuma za
ulazom za fajl sa datim imenom i dobijanje lokacije i
ostalih atributa fajla – pristupa se disku, neefikasno!
Pojam fajla - otvaranje
10/47
Rešenje: kada program želi da pristupa fajlu, prvo mora
da pozove sistemsku uslugu otvaranja fajla (file open):
– OS vodi tabelu otvorenih fajlova; za svaki otvoreni fajl,
ulaz u ovoj tabeli čuva sve potrebne informacije o fajlu
(atribute, posebno lokaciju i pokazivač trenutne
pozicije)
– sistemska usluga otvaranja fajla radi sledeće:
pronalazi fajl u strukturi direktorijuma
otvara novi zapis (red) u tabeli otvorenih fajlova
učitava atribute fajla u ulaz (zapis, red) u tabeli
otvorenih fajlova
opciono proverava prava pristupa do fajla u
odnosu na pristup zahtevan pri otvaranju fajla
vraća indeks ili pokazivač na ulaz u tabeli otvorenih
fajlova
Pojam fajla - otvaranje
–
–
11/47
svako sledeće obraćanje fajlu iz programa, tj. sve
ostale operacije nad otvorenim fajlom koriste ID ulaza
u tabeli otvorenih fajlova, a ne ime fajla – nema
pretrage direktorijuma, efikasan pristup do atributa
fajla
nakon upotrebe, fajl se mora zatvoriti, da bi se zapis
(red, ulaz) uklonio iz tabele otvorenih fajlova
Pojam fajla - zaključavanje
12/47
Koncept zaključavanja fajla (file locking):
– jedan proces traži da zaključa fajl; ako nijedan drugi
proces nije zaključao fajl, proces će dobiti ključ i
nijedan drugi proces neće moći da dobije ključ nad
fajlom
– modaliteti zaključavanja - dve vrste ključa:
deljeni (shared) i ekskluzivni (exclusive): više
procesa može imati deljeni ključ ili samo jedan
može imati ekskluzivni ključ
obavezni ključ (fajl se zaključava pri otvaranju) ili
neobavezni ključ (fajl se zaključava na eksplicitan
zahtev)
Pojam fajla – tip fajla
13/47
Pojam tipa fajla: OS može, ali ne mora da poznaje koncept
tipa fajla; ako ga poznaje, može da kontroliše upotrebu fajla
Način smeštanja informacije o tipu:
– u ekstenziji imena fajla (Windows – ime.tip)
– kao poseban atribut fajla (postavlja se prilikom kreiranja
- Mac OS)
– u samom sadržaju fajla (UNIX/Linux: magični broj
(magic number) koji se nalazi na početku fajla)
Pojam fajla - struktura
Interno strukturiranje fajla:
– smeštanje informacija na disku je uvek u jedinicama
fiksne veličine – blokovi, klaster (ceo broj X veličina
sektora, npr. 8 x 512B = 4 KB) => interna
fragmentacija
–
14/47
logički, fajl se može posmatrati kao:
nestrukturiran: sekvenca (niz) bajtova sa
mogućnošću direktnog pristupa svakom bajtu
strukturiran u logičke zapise fiksne ili promenljive
veličine, npr. red u tekstualnom fajlu
Direktorijum
15/47
Na jedan disk se može smestiti veliki broj fajlova koji se
grupišu u posebne strukture koje se nazivaju
direktorijum (directory) ili folderi.
Direktorijumi se u okviru sitema datoteka moraju
implementirati tako da obezbeđuju efikasno
pronalaženje fajlova i prostora za nove, što se postiže
tehnikama Heš i B+ stabla.
Tipične operacije nad direktorijumom:
– prikazivanje sadržaja direktorijuma
– pronalaženje fajl sa datim imenom ili sa imenima koja
zadovoljavaju dati kriterijum (search)
– kreiraj fajl i dodaj u direktorijum
– obriši fajl i izbaci iz direktorijuma
– promena imena fajla itd.
Direktorijum
16/47
Disk se može podeliti na delove - particije (partitions)
Svaka particija može da sadrži poseban fajl sistem ili da
bude rezervisana za zamenu (swap space)
Particija može da zauzima i više fizičkih diskova
Više particija može da se kombinuje u veću celinu –
volumen (volume); fajl sistem se može kreirati na
jednom volumenu
Svaki volumen ili particija mora da sadrži informacije o
fajlovima na sebi
Direktorijum je imenik fajlova – sadrži kontrolne blokove
svih fajlova koji su u njemu logički smešteni.
Direktorijum - struktura
17/47
Najjednostavnija struktura direktorijuma – u jednom
nivou:
– svi fajlovi su u istom (jedinom) direktorijumu
– fajl mora imati jedinstveno ime u direktorijumu, pa i u
celom sistemu
– mnogo fajlova smanjuje preglednost
– fajlovi se ne mogu organizovati u logičke celine
– krajnje nepraktično, posebno za više korisnika
Direktorijum - struktura
18/47
Direktorijum u dva nivoa:
1. nivo – glavni direktorijumi
2. nivo - direktorijumi za svakog korisnika
Veoma problematično:
– fajlovi jednog korisnika su nestruktuirani i nepregledni
– kako deliti fajlove? kako pristupati fajlovima drugog
korisnika? - imenovanje punom stazom (npr.
volume/user/file)
– kako pristupati sistemskim fajlovima? – složenijom
pretragom: ako se fajl ne nađe u direktorijumu
tekućeg korisnika, traži se u sistemskom ili u spisku
staza za pretragu (search path)
Direktorijum - struktura
19/47
Uopštenje: dozvoliti hijerarhijsku strukturu direktorijuma
oblika stabla proizvoljne dubine:
– korisnik može manipulisati strukturom proizvoljno
– svaki fajl je jedinstveno određen punom stazom od
korena
– direktorijum je takođe fajl, samo što se posebno
tretira – ima strogo određenu internu strukturu koju
tumači fajl sistem OS-a
Direktorijum - struktura
20/47
Svaki fajl ima svoje ime i putanje.
Putanja može biti:
– apsolutna, ako je izražena u odnosu na početni (koreni
– root) direktorijm (npr: cd \windows\system32 –
Windows način)
– relativna, ako je izražena u odnosu na tekući
direktorijum (npr: cd etc/apache2 – Linux način)
Staze, putanje do fajla:
– otvaranje fajla samo po imenu traži fajl u tekućem
direktorijumu
– fajl se može naći zadavanjem apsolutne ili relativne
putanje
Deljenje fajlova
21/47
Mogućnost deljenja fajlova i direktorijuma.
Deljenje fajlova se obavlja po strogo definisanim
pravilima koji obuhvataju i zaštitu fajlova.
Sihronizacija višeprocesnog istovremenog pristupa fajlu
– u jednom trenutku više procesa može da čita datoteku,
ali samo jedan proces može da upisuje ili menja sadržaj
fajla.
Deljenje fajlova
22/47
Udaljeni (remote) fajl sistemi – pristup fajlovima preko
mreže:
– File Transfer Protocol (FTP): protokol koji obezbeđuje
operacije za prenos fajlova između udaljenih fajl
sistema; anonimni (anonymous) ili autorizovani pristup
fajlovima
– distribuirani fajl sistemi (DFS): udaljeni direktorijumi se
vide kao i lokalni
– WWW - World Wide Web
Klijent/server (client/server) arhitektura
Tolerancija otkaza kod udaljenog pristupa fajlu
Očuvanje konzistentnosti kod konkurentnog pristupa fajlu algoritmi sinhronizacije procesa
Zaštita - Linux
23/47
U Linux-u se definišu tri vlasničke kategorije i to:
– vlasnik (owner): korisnik koji je kreirao fajl;
podrazumevano ima pravo da vrši sve operacije sa
fajlom i da daje prava drugima
– grupa (group): skup korisnika koji su imenovani kao
grupa korisnika, dele fajl izvršavajući slične operacije
i imaju pravo na podskup operacija nad fajlom
– ostali (others): svi ostali, nisu ni vlasnik ni grupa,
imaju pravo na podskup operacija sa fajlom
UNIX/Linux: po tri bita (rwx – read, write, execute) za
vlasnika, grupu i ostale određuju prava izvršavanja ove
tri operacije
Zaštita - Linux
24/47
Značenje za fajlove:
rwx rwx rwx = 111 111 111
– read (r) – samo za čitanje
r - - r - - r - - = 100 100 100
sadržaja fajla
rw - rw - r - - = 110 110 100
– write (w) – samo za
pisanje, izmene fajla
– execute (x) – fajl se može
izvršavati
Značenje za direktorijume:
– read (r) – čitanje sadržaja
direktorijuma
– write (w) – mogu se
dodavati i brisati fajlovi i
poddirektorijumi
– execute (x) – korisnik se
može pozicionirati u
direktorijum, prikazati
sadržaj direktorijuma i
pretraživati direktorijum.
Zaštita - Windows
25/47
Administrator Windows XP/Vista/7 formira korisničke
grupe (user group) i u njih učlanjuje korisnike (user
account) i druge grupe.
Samo ako je fajl sistem NTFS, tipovi pristupa fajlovima
(dozvole za rad sa fajlovima, folderima):
– čitanje (read)
– upis (write)
– izvršavanje (execute): učitavanje fajla u memoriju i
izvršavanje kao programa
– izmene (modify): read + write + execute i pojedinačne
dozvole za brisanje
– puna kontrola (full control): sva prava, uključujući
mogućnost dodele i oduzimanja NTFS dozvola i
preuzimanje vlasništva
– List Folders Contents – omogućeno da korisnik vidi
sadržaj direktorijuma - foldera
Zaštita - Windows
26/47
NTFS dozvole se dodeljuju ili oduzimaju korisnicima i
grupama, pri čemu svaki korisnik (ili grupa) predstavlja
jedan zapis u tabeli (Access Control Entry, ACE) a skup
svih dozvola korisnika – lista za kontrolu pristupa (access
control list, ACL)
Grupe i korisnici se u ovim tabelama predstavljaju
numeričkim vrednostima SID (Security Identifiers) koje ih
jednoznačno identifikuju.
Izgled ploče diska - podsećanje
27/47
Tvrdi disk - podsećanje
pokretna
ruka
cilindar
magnetna
glava
ploča
28/47
sektor
Fajl sistemi
29/47
Fajl sistemi obično počivaju na sekundarnim
memorijskim medijumima (diskovi) koji permanentno
čuvaju veliku količinu podataka
Primarne karakteristike diskova koje ih čine pogodnim:
– blok-orijentisani uređaj sa mogućnošću čitanja i
upisa: pročitaj blok u memoriju, izmeni ga, upiši ga na
disk; blok tipično sadrži nekoliko sektora, a veličine
sektora su od 32B do 4KB, tipično 512B
– uređaj sa direktnim pristupom bilo kom bloku, samo
uz potrebu pomeranja glave diska i čekanja na
rotaciju
Fajl sistemi
30/47
Implementacije fajl sistema jako variraju i sve imaju
svoje specifičnosti. Ovde se prikazuju samo neki
osnovni principi
Postoji mnogo fajl sistema u upotrebi, a jedan isti OS
može podržavati i više fajl sistema. Npr. UNIX – UFS;
Windows NT, XP, Vista – FAT, FAT32 i NTFS; Linux –
preko 40 fajl sistema, bazični je extended file system
(ext2, ext3); CD-ROM (ISO 9660), DVD, flopi disk, ...
Fajl sistemi - Linux
31/47
Nema slovne oznake za particije. Na vrhu je korenski
direktorijum (root - /). Svaki direktorijum može imati drugi
fajl sistem.
Linux fajl sistemi:
– Minix – najstariji, i verovatno najpouzdaniji UNIX-ov
sistem fajlova
– ext2 – visoke performanse, pouzdan, podrazumevan na
Linux sistemima
– ext3 – ext2 proširen sa dnevnikom transakcija –
praćenje svih promena u fajl sistemu i njihovo beleženje
(dnevnik) radi povećanje pouzdanosti.
– ReiserFS – 8 do 15 puta brži od ext2 pri radu sa
fajlovima manjim od 1KB
– XFS – brz pri radu sa velikim fajlovima
– JFS – 64-bitni, razvijen prvo za IBM servere, dobar za
rad sa ogromnim fajlovima
Fajl sistemi - Linux
32/47
Fajl sistemi – Windows, DOS
33/47
FAT (File Allocation Table) – jednostavan fajl sistem,
realizovan u vidu FAT tabele sa 16-bitnim adresiranjem.
FAT tabela je mogla da adresira maksimalno 16535
klastera (npr. klaster 32KB, max = 16535 x 32 KB =
529.120 KB = 516,7 MB) veliki gubici kroz internu
fragmentaciju
Ime fajla se zadaje u formatu 8.3 – 8 znakova za ime i 3
znaka za tip
Atributi fajla: H (hidden) – skriven, R (read-only) – samo
za čitanje, S (system) – sistemska i A (archive) –
namenjeni za izradu rezervne kopije podataka
Fajl sistemi - Windows
34/47
FAT32 – proširenje FAT, omogućeno 32-bitno
adresiranje, veličina klastera smanjena, smanjena interna
fragmenatacije, rad sa diskovima većeg kapaciteta.
FAT i FAT32 koristi i Linux
NTFS (New Technology File System) – pored
standardnih atributa sadrži i proširene, namenjen za rad u
mrežnom okruženju, mogućnost upravljanja pravima
pristupa fajlu korisnicima i grupama, maksimalna veličina
NTFS volumena od 2TB do 16TB, manji klasteri, mogućnost šifrovanja sadržja fajla, mogućnost kompresije ...
Svaki fajl u NTFS fajl sistemu je opisan pomoću jednog ili
više zapisa u okviru posebnog fajla – MFT (Master File
Table)
Postoje dve MFT tabele.
Linux čita NTFS, pisanje – na svoju odgovornost
Struktura fajl sistema
35/47
Strukture podataka fajl sistema na disku potrebne da se
realizuje fajl sistem (FS):
– boot control block: na svakom volumenu tipično prvi
blok na disku; sadrži informacije kako podići OS sa
tog volumena; ako volumen nije butabilan, ovaj blok
je prazan (UNIX FS: boot block, NTFS: partition boot
sector)
– volume control block: na svakom volumenu ili particiji
sadrži globalne informacije o volumenu, kao što su
broj blokova, veličina bloka, broj slobodnih blokova,
pozakivač na prvi slobodni blok, broj slobodnih FCB
(File Control Block), pokazivač na prvi slobodni FCB
itd. (UFS: superblock, NTFS: master file table)
Struktura fajl sistema
36/47
Particija može biti:
– “presna” (“raw”) - ne sadrži fajl sistem: još nije
uspostavljen fajl sistem (pre formatizacije, formatting)
ili za posebne namene (npr. swap space ili za bazu
podataka)
– “pečena” (“cooked”) ili formatizovana (formatted) sadrži fajl sistem
– boot – niz blokova u posebnom formatu koji se
direktno učitavaju u memoriju i pokreće izvršavanje
sa tačno određene lokacije u cilju učitavanja
operativnog sistema
– korena (root) – sadrži OS kernel i druge sistemske
fajlove
Struktura fajl sistema
37/47
Mogućnost podrške više fajl sistema: dual-boot, svaka
particija različiti fajl sistem, montiranje i udaljeni fajl
sistemi
Problem: kako efikasno omogućiti ovakvu heterogenost i
transparentno ponuditi sve fajl sisteme u istoj lokalnoj
strukturi direktorijuma?
Struktura fajl sistema
Virtuelni fajl sistem (virtual file system): OO pristup
izolaciji različitosti fajl sistema iza istog interfejsa –
polimorfizam i dinamičko vezivanje
File
vnode
inode
LocalFile
Virtual Table
VTP
Object
(struct)
38/47
RemoteFile
f(Object*)
...
...
g(Object*)
...
...
Metode alokacije
39/47
Problem: kako alocirati prostor (blokove) i smeštati
mnogobrojne fajlove na disku
Pogodnost: direktni pristup bilo kom bloku
Metode:
– kontinualna alokacija
– ulančana alokacija
– indeksirana alokacija
Kontinualna alokacija:
– svaki fajl zauzima kontinualan niz blokova na disku
– FCB sadrži samo broj prvog bloka i ukupan broj
blokova koje fajl zauzima
– direktan pristup i-tom bloku fajla je jednostavan: ako
fajl počinje na bloku b diska, blok i fajla je u bloku
diska b+i
Metode alokacije
40/47
Varijanta ulančane alokacije: File-Allocation Table (FAT,
MS-DOS, IBM OS/2):
– poseban deo svake particije zauzima FAT koja ima
po jedan ulaz za svaki fizički blok na disku
– svaki ulaz sadrži pokazivač na sledeći ulaz u lancu
– direktorijum sadrži iste informacije kao i kod osnovne
varijante
– u suštini, pokazivači za ulančane liste se umesto u
blokove smeštaju u FAT; blokovi sadrže samo
podatke
Metode alokacije
41/47
FAT – pogodnosti: jednostavni i efikasni algoritmi,
uključujući i za direktan pristup ako je FAT keširan u
memoriji ili je njegov veći deo u jednom bloku
Mane:
– ako FAT nije ceo u memoriji, može da uzrokuje
mnogo šetanja glave diska za pristup susednim
blokovima
– veoma osetljiv na otkaze - bilo kakvo oštećenje u FAT
uzrokuje velike štete
Izgled ploče diska - podsećanje
42/47
Defragmentacija
43/47
Fragmentacija fajlova je pojava da delovi (fragmenti)
fajla, prilikom upisa na površinu ploča diska, ne obrazuju
sekvencijalni (jedan za drugim) niz blokova (klastera) na
površini ploča diska.
Čitanje i pisanje duže, glava diska se češće pomera.
Treba svesti na minimum
Rešenje: defragmentacija fajl sistema – fragmenti
(delovi) fajla se smeštaju jedni uz druge, obrazuju
sekvencijalni niz blokova (klastera)
Koriste se posebni programi za defragmentaciju, mogu
biti sastavni deo OS ili od nezavisnih proizvođača.
Opasnost: u slučaju nestanka napajanja, može doći do
gubitka ili oštećenja podataka.
Defragmentacija
44/47
Pre defragmentacije proveriti sam fajl sistem, skeniranje
a povremeno proveriti i površinu ploča diska – da li ima
bad sectors ?
Efikasnost i performanse
45/47
Fajl sistem i disk (HDD) su izuzetno osetljivi delovi i
najčešće usko grlo u performansama sistema. Zato je
potrebna njihova pažljiva konstrukcija i optimizacija
Neki aspekti i tehnike:
– prealokacija FCB-a na disku; unapred alocirati FCBove na volumenu (UNIX) kako bi kasnije operacije
bile efikasnije
– locirati susedne blokove za isti fajl kako bi vreme
pristupa bilo što kraće
– upotreba klastera različite veličine radi smanjenja
interne fragmentacije: npr. manji klaster za male
fajlove i za kraj fajla
Efikasnost i performanse
–
–
–
46/47
upotreba dinamičkih strukura neograničene dimenzije
umesto ograničenih struktura sa statičkim
dimenzijama
keširanje praktično neizostavno; za sekvencijalni
pristup, read-ahead keširanje: učitavanje bloka
unapred
asinhroni upis podataka
Oporavak od otkaza
47/47
Mnoge informacije o strukturi fajl sistema na disku
čuvaju se u kešu u memoriji. Šta se dešava ako sistem
otkaže pre nego što te podatke snimi na disk? – Otkaz,
oštećenje fajl sistema
Potreba za pokretanjem posebnih programa za
oporavak od otkaza: analiziraju nekonzistentnu strukturu
fajl sistema i pokušavaju da je restauriraju (UNIX - fsck,
MS-DOS - chkdsk). Uspeh zavisi od fajl sistema i
veličine problema
Jedan pristup povećanju otpornosti na otkaze – sinhroni
upis podataka na disk
Obavezno redovno arhiviranje kopija (backup):
– kompletan
– inkrementalan – samo promene od zadatog datuma i
vremena