1
datot_sist.doc
Datotečni (zbirčni) sistem - File Management System OS upravlja tudi z datotekami (file management) datotečni sistem omogoča, da uporabnik oz. program dela z datotekami kot z logičnimi bloki, namesto s fizičnimi.
Večina splošnih OS podpira več različnih datotečnih sistemov (npr. FAT, FAT32, NTFS, itd.)
File manager = transparentni vmesnik med logično obravnavo datotek in fizičnim zapisom v obliki blokov (to je: sektorjev, gruč, blokov na disku, magnetnem traku, itd.)
Upravljanje z datotečnim sistemom zagotavlja: •
standarden nabor vhodno-izhodnih funkcij
•
tvorjenje, brisanje in spreminjanje datotek
•
kontrolo dostopa do datotek
•
prenos podatkov med datotekami
•
podporo za več uporabnikov
•
preprečevanje izgube in uničenja podatkov
•
podporo velikemu številu naprav
•
optimalno delovanje
•
varnostno shranjevanje in obnovo datotek
•
uporabo simbolnih imen
Od dobrega datotečnega sistema zahtevamo: •
hiter dostop do podatkov
•
varčevanje pri uporabi prostora
•
enostavno vzdrževanje
•
zanesljivost
Logičen in fizičen pogled na datoteke Datoteka = organizirana zbirka podatkov. Datoteka je neka logična enota, ki pomni podatke določene vrste, ki so med seboj povezani. To datoteko običajno shranimo v obliki fizičnega zapisa na nezbrisljive pomnilniške medije kot so magnetni diski, diskete, optični diski, magnetni trakovi, itd). Organizacija podatkov: odvisna od programa, ki je ustvaril datoteko.
2
datot_sist.doc
Primeri različnih organizacij datotek: •
programska datoteka = en sam tok binarnih podatkov, ki predstavljajo ukaze
•
Unicode tekstovna datoteka = npr. C++ program zapisan v izvorni obliki
•
ASCII tekstovna datoteka, ki vključuje tudi posebne binarne kode za oblikovanje teksta = npr. Word-ova datoteka
•
podatkovna datoteka, ki vsebuje alfanumerične Unicode znake, ti pa tvorijo zapise (record) = npr. podatkovna baza, ki vsebuje zapise z imeni, naslovi, računi
•
podatkovna datoteka zapisana na poseben način = npr. datoteka, ki vsebuje sliko, zvočni posnetek, video posnetek, itd.
•
datoteka, ki vsebuje informacijo o drugih datotekah =npr. imenik datotek
Podatki v datoteki: dobijo pomen šele, ko jih program oz. uporabnik uporabi.
Logičen pogled na datoteko pomeni, kako uporabnik, programer "vidi" datoteko običajno si jo predstavljamo kot zbirko zapisov (record), od katerih vsak vsebuje nekaj polj, lahko pa ima programska datoteka le en sam dolg zapis (npr. izvršljiva datoteka). Fizičen pogled na datoteko pomeni, kako so podatki na disku dejansko shranjeni običajno so shranjeni v obliki blokov (sektorjev) enakih dolžin npr. 512 zlogov. Logičen in fizičen zapis sta lahko povezana in pogojujeta drug drugega ali pa tudi ne.
Pojmi, s katerimi se pogosto srečujemo v zvezi z datotekami polje (field)
•
osnovni element podatkov (ime, datum, naslov, itd
zapis (record)
• •
zbirka med seboj povezanih polj, ki spadajo skupaj lahko ima fiksno ali spremenljivo dolžino (npr. podatki o zaposlenem)
datoteka (file)
• • • •
skupek sorodnih zapisov predstavlja entiteto za aplikacijo običajno se nanjo sklicujemo preko imena kontrola dostopa je običajno izvedena na nivoju datoteke
podatkovna baza (database)
• • •
zbirka med seboj povezanih datotek medsebojne povezave so eksplicitne uporablja jih več aplikacij
Uporabnik dela z zapisi, operacijski sistem pa zapise sestavlja v bloke, ki jih prenaša k/od vhodno izhodnih naprav.
3
datot_sist.doc
Osnovne logične organizacije datotek: •
datoteko sestavlja sekvenčen (zaporedni) zapis posameznih bitov oz. zlogov - vedno jih beremo in zapisujemo zaporedno - nestrukturiran oz. linearen
•
datoteko sestavlja zaporedje zapisov (record) - vsi zapisi so enako dolgi ali pa tudi različno dolgi (vsak zapis ima zato npr. podano dolžino ali pa so med njimi ločilni znaki)
Dostop do posameznih zapisov pa je lahko: o
sekvenčen (zaporeden), pri katerem moramo prebrati vse zapise do iskanega po vrsti
o
direkten ali naključen (random), pri katerem po določenem pravilu dostopimo do poljubnega zapisa (indeks, izračun z razpšilno funkcijo (razpršena datoteka hashed file)
Osnovne fizične organizacije blokov (gruč): •
alociranje zaporednih fizičnih blokov datoteki - datotečni sistem poišče: - prvi primeren prostor za datoteko ali - prostor, ki se najbolje prilega velikosti datoteke - posledica je fragmentacija diska, zato je potrebna defragmentacija - način je zlasti primeren za sekvenčne datoteke
Tak način se uporablja tudi npr. pri zapisu na CD_ROM (ISO 9660)
datot_sist.doc
4
•
alociranje povezanih blokov - bloki niso sosednji in so povezani s kazalci od enega bloka do naslednjega - primerna je le za sekvenčne datoteke, ker je treba brati od začetka (glej sliko) - okvarjen blok ogrozi celo datoteko - povečevanje datoteke je enostavno - imenik kaže le na prvi blok - primer takih datotečnih sistemov so MS DOS FAT 12/16/32
Prikaz organizacije dveh povezanih datotek work.txt in strange.dat
•
indeksno alociranje blokov - je podobno povezani datoteki zgornjega primera, s to razliko, da so kazalci shranjeni v enem samem bloku (indeksni blok) v obliki tabele - v vsakem trenutku omogoča enostaven dostop do naključnega bloka - pri zaporednih dostopih je le ta počasnejši kot v primeru zaporedne organizacije - primer: datoteka velikosti 50 MB z velikostjo gruče 4 KB, zahteva tabelo z 12500 kazalci - poenostavitev tabele npr. v Windows 2000: prostor se alocira v čim večjih skupinah. Za vsako od njih se zapiše kazalec in število zaporednih blokov - če se poškoduje blok z indeksi, je težko popraviti napako - predstavlja kompromis med potrebo po naključnem dostopu in težavami pri zagotavljanju zaporednih blokov - imenik kaže na blok s tabelo - predstavlja najbolj pogost način alociranja prostora, variacijo tega načina uporablja tudi Unix
Primer tabel s kazalci na bloke za datoteki work.txt in strange.dat
strange.dat 42 48 70 16 konec
work.txt
33 59 5 24 konec
5
datot_sist.doc
Povezava med fizičnim in logičnim zapisom Vsak gibki ali trdi disk je razdeljen na sledi (track) v obliki koncentričnih krogov, sled pa je razdeljena na bloke (običajno dolžine 512 zlogov), ki jim pravimo sektorji (sector).
Sektorji se med seboj združujejo v večje logične enote, ki jih imenujemo gruče (cluster). Velikost gruče je odvisna od datotečnega sistema. Na posamezni sledi je običajno več sto sektorjev.
Disk ima ponavadi več plošč, ki imajo magnetni zapis z zgornje in spodnje strani. Bralno pisalne glave se premikajo skupaj, zato se datoteka ne zapisuje le na eno površino ampak sočasno na vse površine na določeni sledi (zaradi hitrejšega zapisovanja). Določena sled na vseh površinah plošč predstavlja cilinder.
6
datot_sist.doc
Primer: Disk Seagate Cheetah 36 ima kapaciteto 36,4 GB. Sledi so razporejene na 12 dvostranskih ploščah s podatki na obeh straneh. Na eni sledi je 300 sektorjev, vsak sektor pa ima velikost 512 zlogov.
Podrobnosti vhodno-izhodne operacije (branje, vpis) na disku so odvisne od izvedbe računalniškega sistema, operacijskega sistema, vhodno-izhodnega kanala in strojne opreme krmilnika diska. Disk se vrti s konstantno hitrostjo. Za branje ali pisanje se mora magnetna glava pozicionirati na želeno sled (seek time) in na začetek izbranega sektorja na tej sledi (rotational delay - rotational latency). Oba časa skupaj predstavljata dostopni čas (access time). Za prenos podatkov, ko se glava pomika nad sektorjem, je potreben še čas prenosa (data transfer). Seveda pa je za dostop do podatkov treba prišteti še zakasnitve, ko proces čaka na dodelitev vhodno-izhodne enote (wait for device). Če pa si več diskov deli vhodno-izhodni kanal, je treba počakati še na dodelitev kanala (wait for channel) (glej spodnjo sliko!).
Na spodnji sliki je prikazana organizacija gibkega diska s FAT (File Allocation Table) datotečnim sistemom. Na zunanjem robu si sledijo: o
zagonski sektor (boot sector), od koder prične branje program BIOS ob zagonu z gibkega diska
o
dve ali več kopij FAT tabel, v katerih se nahajajo kazalci na gruče, ki sestavljajo datoteko
o
korenski imenik (imenik izhodiščnega nivoja)
o
gruče s podatki
7
datot_sist.doc
FAT tabela (File Allocation Table) in FAT datotečni sistem Tabelo sestavljajo 12 (FAT12), 16 (FAT16), 32 (FAT32)-bitni zapisi za vsako gručo. Vsaka gruča je v tabeli označena kot nezasedena, slaba, zasedena, zadnja gruča v datoteki. FAT tabela se avtomatsko generira v procesu formatiranja. Vsaka izguba tabele ali dela tabele vodi v izgubo podatkov datoteke oz diska. Če je datoteka velika npr. 4000 zlogov, gruče pa imajo velikost 1024 zlogov, datotečni sistem dodeli datoteki 4 gruče.
FAT tabela predstavlja povezan zapis gruč za datoteke, poleg tega pa določa nezasedene in okvarjene gruče.
Na spodnji sliki je prikazana povezava gruč v datoteko preko FAT tabele. Prvo gručo, ki pripada datoteki, določa imenik (direktorij), v katerem se nahajajo tudi drugi podatki o datoteki. V tem primeru imenik kaže na gručo 24. V tabeli se na mestu, ki pripada gruči 24, nahaja naslov naslednje gruče v datoteki (548). Zapis te gruče kaže na zapis v FAT tabeli, ki pripada 548-i gruči. Zapis te gruče določa 428-o gručo, itd. Zapis, ki pripada zadnji gruči v datoteki, ne kaže nikamor (ffff).
zaporedna štev. zapisa v FAT tabeli 24
428 489 548
8
datot_sist.doc
Na naslednji sliki je prikazan primer dveh datotek work.txt in strange.dat v FAT datotečnem sistemu, za kateri določa začetni gruči imenik (33 oz. 42), od tu dalje pa sledi povezan seznam gruč v FAT tabeli: za datoteko work.txt si sledijo gruče 33, 59, 24 in 25. Datoteko strange.dat pa sestavljajo gruče 42, 48, 70 in 16.
Na slikah, ki sledita, je prikazana shema organizacije datotek v UNIX sistemih. V imeniku je kazalec na inode (information node), ki vsebuje vse ključne informacije o določeni datoteki. V prvem delu so zapisane lastnosti datoteke (attributes), nato pa sledijo naslovi blokov (gruč) oz. indeksnih blokov (gruč), ki vsebujejo naslove gruč datoteke.
9
datot_sist.doc
Naslednja slika še bolj podrobno prikazuje zgradbo datotečnega sistema na UNIX sistemih. Vsak inode ima prostora za 13 naslovov. Prvih 10 naslovov kaže direktno na gruče (kar zadošča za kratke datoteke). Enajsti naslov kaže na tabelo z največ 256 indeksi, ki so v bistvu kazalci na gruče v datoteki. Dvanajsti naslov kaže na dvonivojsko tabelo indeksov, trinajsti naslov pa na trinivojsko tabelo indeksov.
Prednosti take organizacije so naslednje: •
inode tabela ima fiksno velikost, ne glede na velikost datoteke in je majhna, zato se lahko nahaja v glavnem pomnilniku
•
manjše datoteke so dosegljive direktno, kar skrajšuje čas dostopa
•
največja teoretična velikost datoteke je zadosti velika, da zadosti vsem aplikacijam
10
datot_sist.doc
Datoteke in imeniki V vsakem datotečnem sistemu so z datotekami povezani tudi imeniki datotek (file directory). Imenik vsebuje informacije o datotekah: lastnosti datotek (atributi), lokacijo in lastništvo. Za večino informacij skrbi operacijski sistem sam, informacije pa so dostopne preko sistemskih programov. Imenik sam je tudi datoteka, s katero upravlja operacijski sistem
Informacije o datotekah shranjene v imeniku Z datoteko so povezane naslednje tipične informacije: •
•
osnovne informacije: o
ime datoteke (file name) - simbolično ime zapisano z določenim številom znakov, ki
o
tip datoteke (file type) - določa vrsto podatkov, ki jih vsebuje datoteka (izvedljiva
o
organizacija datoteke (file organization) - ta informacija je prisotna v operacijskih sistemih, ki podpirajo različne datotečne sisteme
koda, tekstovni zapis, glasbeni zapis, vzorčena slika, - .exe, .txt, .mp3, .bmp)
informacije o naslovu: o
enota (volume) - določa enoto, na kateri se nahaja datoteka
o
začetni naslov (starting address) - začetni fizični naslov na sekundarnem pomnilniku (npr. cilinder, sled, številka bloka na disku)
o o •
je razumljivo uporabniku
velikost datoteke (size used) - pove količino zapisanih podatkov izraženo v zlogih,
besedah ali blokih
dodeljena velikost (size allocated) - maksimalna velikost datoteke
informacije za nadzor dostopa do datoteke: o
o
lastništvo datoteke (ownership) - lastnik, ki mu je dodeljen nadzor nad datoteko. Lastnik lahko omogoči ali pa onemogoči dostop drugim uporabnikom in spreminja privilegije dovoljene aktivnosti (permission) - določa, kaj se sme početi z zbirko. Dovoljenja so urejena po hierarhiji, kar pomeni, da dovoljenje višje v hierarhiji omogoča tudi vse aktivnosti na nižjem nivoju: nič - uporabnik sploh ne ve za obstoj datoteke dostop do informacij o datoteki (knowledge) - uporabnik lahko izve informacije o obstoju datoteke in njenem lastništvu izvajanje - datoteko se lahko izvaja, ne more se je pa kopirati branje - uporabnik jo lahko bere, kopira in izvaja dodajanje (appending)- uporabnik lahko na koncu datoteke dodaja informacije vanjo posodabljanje (updating) - uporabnik lahko spreminja datoteko, briše ali dodaja podatke spreminjanje zaščite - uporabnik (običajno le lastnik) lahko spreminja pravice dostopa brisanje - uporabnik lahko zbriše datoteko zapisovanje, izvršna, arhivska, itd.)
o
informacije za dostop (access information) - določa informacije, ki so potrebne za dostop do datoteke npr. uporabniško ime in geslo
11
datot_sist.doc
Eden od uporabnikov je določen kot lastnik datoteke, običajno tisti, ki je prvi ustvaril datoteko. Lastnik ima vse pravice do datoteke in jih lahko dodeli tudi ostalim uporabnikom. Dostop se lahko določa za naslednje skupine uporabnikov: posamezen uporabnik (user) - posameznim uporabnikom so določene pravice preko njihove identifikacije ID skupina uporabnikov (group) - OS mora imeti vgrajen sistem za organizacijo skupin uporabnikov ostali (all, other) - to so vsi uporabniki, ki imajo dostop do sistema
Istočasni dostop več uporabnikov do datoteke Kadar dostop do datoteke omogoča posodabljanje datoteke več uporabnikom, mora biti poskrbljeno za sinhronizacijo sprememb. Grob način reševanja problemov je tak, da se zaklene celotna datoteka za druge uporabnike, ko se izvaja na njej spremembe. Bolj dodelan pristop pa omogoča zaklepanje le tistega zapisa v datoteki, ki ga uporabnik spreminja.
•
informacije o uporabi datoteke: o
čas izdelave datoteke (date created) - čas, ko je bila datoteka ustvarjena
o
identiteta prvega lastnika (identity of creator) - običajno trenutni lastnik, ni pa nujno
o o o o o
čas zadnjega branja datoteke (date last read access) - čas zadnjega dostopa do
zapisa
identiteta zadnjega uporabnika (identity of last reader) čas zadnje spremembe (date last modified) - čas zadnjega posodabljanja, dodajanja
ali brisanja
identiteta uporabnika, ki je nazadnje spreminjal datoteko (identity of last modifier) čas izdelave zadnje varnostne kopije (date of last backup) - čas, ko je bila datoteka
kopirana na drug pomnilni medij.
Katere funkcije nudi operacijski sistem za delo z datotekami? Kot smo že povedali, je naloga operacijskega sistema med drugim tudi, da omogoča sistemske klice za delo z datotekami: Iskanje datoteke (search) OS preišče imenike, da bi našel informacijo o začetni gruči datoteke Tvorba datoteke (create) OS poišče prazen prostor za novo datoteko, jo umesti v ustrezno kazalo (imenik, directory), doda kazalec na prvo gručo in tja shrani tudi vse informacije o datoteki. Zapisovanje datoteke (write) OS poišče datoteko, prepiše podatke, ki so dodani sistemskemu klicu, in ustrezno poveča kazalec za pisanje (write pointer).
12
datot_sist.doc
Branje datoteke (read) Je podobno kot pri zapisovanju, le da imamo v tem primeru kazalec za branje. Ker pa pogosto v isto datoteko beremo in zapisujemo, je kazalec za branje in zapisovanje kar skupen - kazalec trenutnega stanja. Brisanje datoteke (delete) OS v kazalu označi, da je datoteka zbrisana, prostor, ki ga zaseda, pa spet označi kot prazen (gre le za logično brisanje - do fizičnega pride šele, ko drug vpis prekrije stare podatke) Premeščanje po datoteki (seek) OS le premesti kazalec v zbirki na iskano mesto. Odpiranje in zapiranje datoteke (open, close) Datoteko odpremo (open) zato, da njene lokacije operacijski sistem ne išče vsakič znova v imeniku. Sistemski klic odpiranja shrani v tabelo odprtih datotek, ki jo operacijski sistem vodi za vsak proces, vse potrebne informacije o datoteki in vrne kazalec na ta vpis v tabeli odprtih datotek. Ta kazalec potem uporabljajo sistemski klici za delo z datoteko. Ko operacijski sistem odpre datoteko, se informacije iz kazala in glave datoteke prepišejo v poseben nadzorni blok FCB (file control block). FCB pripada procesu, ki je zbirko odprl in je povezana s procesovim nadzornim blokom PCB. Ko datoteke ne potrebujemo več, jo s sistemskim klicem zapremo (close). Kopiranje datoteke (copy) OS ustvari še eno zbirko z enako vsebino. Preimenovanje (rename) OS le spremeni ime datoteke. Dodajanje (append) Na koncu datoteke se lahko dodajajo podatki Krajšanje (truncate) Na koncu datoteke se lahko odvzemajo podatki
Kako so urejene informacije o datotekah v operacijskem sistemu ? Trdi disk sestavlja veliko število zaporedno oštevičenih sektorjev. Več sektorjev je združenih v gručo (cluster) (2, 4, itd.). Gruča je najmanjša enota, ki jo je možno alocirati na sekundarnem (pomožnem) pomnilniku.
Ko se tvori datoteka, se dodelijo (alocirajo) datoteki prazne gruče in označijo kot zasedene. Datoteka predstavlja verižno povezan seznam gruč. Lahko ima vsaka datoteka shranjeno tudi dolžino datoteke, zato ni potrebno posebej označevati konca datoteke.
13
datot_sist.doc
Fizična enota kot npr. disk, ki ji ustreza logična enota npr. C, je lahko razdeljena na več manjših logičnih enot - particij, od katerih ima vsaka svoje kazalo - imenik datotek (directory).
Kaj je kazalo - imenik (directory)? To je v bistvu neka simbolna tabela, ki določa lego datoteke v particiji in vsebuje njene atribute,
nahaja pa se na vnaprej določenem mestu v particiji. Vsaka particija ima vsaj dvonivojsko zgradbo. V njej so poleg korenskega - glavnega kazala (root directory) še datoteke. Različni operacijski sistemi imajo različno zgradbo kazal. Kazala so lahko enonivojska, dvonivojska, običajno pa imajo drevesno strukturo. V takem primeru imajo več nivojev podkazal in so hierarhično urejena (kvadrati predstavljajo kazala - imenike, krožci pa datoteke oz. skupine datotek). Na vrhu take drevesne organizacije je korenski imenik, iz katerega izhajajo vsi podimeniki. Prednost take organizacije je, da: se lahko datoteke logično grupirajo ima lahko vsak proces svoj delovni imenik, kar zmanjšuje možnost vpliva na druge procese
Zanimiva so kazala s strukturo acikličnega grafa, ki omogočajo, da neka datoteka (ali kazalo) pripada več podkazalom - poddirektorijem. Vsak od njih lahko isto datoteko poimenuje z drugim imenom. Vsak ima do datoteke neke vrste povezavo. Gre za solastništvo datoteke (shared file). Ko eden od uporabnikov zbriše zbirko, odstrani le svoj kazalec nanjo.
14
datot_sist.doc
S kazali operacijski sistem operira tako kot z datotekami, zato vsebuje naslednje sistemske funkcije: • tvorba kazala (make directory) • brisanje kazala (remove directory) • preimenovanje kazala (rename directory) • itd.
Kako navajamo pot do datoteke? Lahko jo navajamo kot: •
absolutno pot (absolute path name) - to je celotno pot od korenskega kazala do datoteke
•
relativno pot (relative path name) - to je pot od trenutno izbranega imenika do datoteke
Kaj se zgodi pri formatiranju diska? Na disk se vpiše struktura stez (tracks), ki jo določijo pomiki motorjev glav. Poleg tega pa se vpišejo še številke sektorjev, polja s kontrolnimi kodami CRC. Na tako formatiran disk pa se lahko vpiše struktura datotečnega sistema, to je particije s kazali in nalagalni blok (boot block), ki poskrbi za zagon začetnega nalagalnika (bootstrap loader), ta pa za nalaganje operacijskega sistema.
Kakšne datotečne sisteme podpirajo Okna (Windows)? FAT (File Allocation Table) • • •
Zanjo je značilno, da vsebuje povezan seznam gruč datotek in oznake praznih gruč. Velikost, ki jo podpira datotečni sistem je omejena s številom naslovov gruč, ki so dolgi le 16 bitov. Imena datotek so dolga le 8 znakov.
FAT32 • Je posodobljena verzija FAT tabel, ki podpira 255 znakov dolga imena datotek in stiskanje datotek. • Velikost diska je lahko največ 2 TB, ker je naslov gruče dolg 32 bitov (241 B). NTFS (NT File System) Osnova datotečnega sistema je posebna tabela imenovana Master File Table (MFT). Vsaka vrstica (zapis - record) v tej tabeli ima lahko drugačno dolžino. Vsaka vrstica opisuje eno od datotek ali pa imenik logičnega diska (lastnosti oz. atribute), med drugim tudi svoje lastnosti, ki se tudi obravnava kot datoteka. Taka organizacija povečuje hitrosti dostopa, ker kratke datotek hrani kar v vrstici MFT tabele. Za daljše datoteke se v vrstici MFT tabele nahaja delna informacija o datoteki, ostali del datoteke pa se nahaja v gručah, na katere kažejo kazalci v vrstici MFT. • • • • • • • • • •
Datotečni sistem NTFS tudi podpira 255 znakov dolga imena datotek. Bistvena prednost NTFS je večja učinkovitost v primerjavi s FAT, ker so datotečne tabele razporejene po disku Datoteke imajo lahko velikost 264 B Datoteka ali imenik se lahko razteza čez več fizičnih diskov Podpira imena datotek v Unicode formatu Administrator lahko določa pravice posameznim datotekam Gruče imajo lahko velikost po izbiri od 512 B do 64 kB Vgrajeno je že stiskanje - kompresija prostora Datotečni sistem podpira zaščito na fiksnih in izmenljivih diskih Vodi log datoteko, ki sledi transakcijam z datoteko, kar omogoča obnovo sistemskih podatkov o datoteki (ne pa tudi vsebine datoteke)
15
datot_sist.doc
Upravljanje s pomnilnikom - Memory Management Kdo upravlja s pomnilnikom in zakaj? Upravljanje s pomnilnikomje tako kot upravljanje z datotečnim sistemom zaupano operacijskemu sistemu. Operacijski sistem upravlja s pomnilnikom ob pomoči strojne enote, imenovane enota za upravljanje s pomnilnikom (Memory Management Unit). Zakaj? Zato, da ima vsak proces dovolj prostora v pomnilniku in da je v prostoru, ki mu je dodeljen, varen pred neželenimi posegi drugih procesov.
Pravimo, da OS skrbi za dodeljevanje (alociranje) primarnega (glavnega) pomnilnika. Seveda je z alociranjem povezano tudi sproščanje primarnega pomnilnika in prepisovanje procesa na sekundarni pomnilnik (disk).
Tehnika, ki se uporablja pri zamenjavi vsebin v glavnem pomnilniku, je swapping (prepis celega procesa), ostranjevanje (prepis strani, ki so enakih velikosti) in segmentacija (prepis segmentov, ki imajo različne velikosti).
Kakšna je razlika med logičnimi in fizičnimi naslovi? Ko CPE deluje po programu, pripravlja naslove za dostop do spremenljivk in kode. Tem naslovom pravimo logični naslovi (virtualni naslovi). Pomnilnik dobi naslov, na osnovi katerega sprejme ali vrne podatke. Ta naslov imenujemo fizični
naslov (resnični naslov).
Lahko sta logični in fizični naslov enaka (npr. pri nekaterih mikrokontrolerjih), lahko pa iz logičnega naslova pride do fizičnega naslova preko pretvorbe - preslikave naslovov.
Ali ima preveden program vedno že izvršljivo obliko? Če je program preveden na absolutne naslove (tiste, na katerih se potem nahaja v pomnilniku), ga je možno naložiti samo natančno na te fizične naslove, če naj se program izvaja uspešno (program je že izvršljiv, logični in fizični naslov pa sta enaka). Običajno pa prevajalnik generira objektno kodo (object code), ki je prenaslovljiva koda in uporablja relativne naslove npr. glede na začetek modula. Po povezovanju s povezovalnikom(linker) dobimo izvršljivo kodo. Do preslikave naslovov pri povezovanju pride enostavno tako, da povezovalnik le spremeni začetni naslov, h kateremu se potem prišteva relativni naslov uporabljen v objeknem modulu.
datot_sist.doc
16
V čem se razlikujeta dinamično nalaganje (dynamic loading) in dinamično povezovanje (dynamic linking)? Poznamo več vrst nalagalnikov programov (programov za nalaganje programov): •
absolutno nalaganje (absolute loading) - program se naloži na naslove, na katere je bil absolutno preveden
•
prestavljivo nalaganje (relocatable loading) - nalagalnik lahko program prestavlja po pomnilniku tako, da relativnim naslovom glede na začetek modula enostavno prišteje določen naslov, na katerem se bo nahajal modul
•
dinamično nalaganje (dynamic run-time loading) - uporablja se pri premeščanju programov v navideznem pomnilniku, ko je potrebno pogosto menjati vsebine v delovnem pomnilniku. Program oz. proces se naloži v pomnilnik šele tedaj, ko ga procesor zares potrebuje. Naloži se v prost del pomnilnika. Modul se prenese v pomnilnik kar z relativnimi naslovi. Enota za upravljanje pomnilnika (Memory Management Unit - MMU) šele v času izvajanja programa skupaj z operacijskim sistemom poskrbi za izračun in generiranje pravih absolutnih - fizičnih naslovov. Do preslikave naslovov torej pride šele v času izvajanja programa. Operacijski sistemi običajno omogočajo, da se procesi oz. programi nahajajo kjerkoli v fizičnem pomnilniku.
CPU
logični naslov
Enota za upravljanje s pomnilnikom
fizični naslov
Pomnilnik
Ker pa so programi ponavadi obsežni, dodane pa so jim tudi knjižnice, ki so lahko skupne več programom, so naredili še en korak naprej. Uvedli so dve vrsti dinamičnega povezovanja programov: •
dinamično povezovanje ob času nalaganja programa (load- time dynamic linking) Program se poveže šele, ko nalagalnik poišče določene dele programa
•
dinamično povezovanje v času izvajanja programa (run - time dynamic linking)
Izvršljiva (strojna koda) v času nalaganja še nima povezanih sistemskih rutin, ampak se namesto njih nahajajo le kratki kosi kode, imenovani štrclji (stubs). Ti vsebujejo take informacije, da proces lahko najde rutino v pomnilniku, če se tam že nahaja, sicer pa zahteva, da se rutina prenese v pomnilnik iz knjižnice na disku ali z oddaljenega računalnika. Program se torej dokončno poveže šele v času izvajanja, ko program potrebuje ta del kode, zato tak način imenujemo dinamično povezovanje (dynamic linking) - (knjižnica DLL - Dynamic Link Library). V štrclju se tudi nahaja informacija o verziji rutine, prav tako pa je verzija zapisana tudi v knjižnici rutin. To omogoča uporabo posodobljenih knjižnic brez dodatnega prevajanja celotnega programa, starejši programi pa še vedno lahko uporabljajo stare knjižnice.
17
datot_sist.doc
Kaj pomeni pojem zamenjava (swapping), ko govorimo o nalaganju programov? Operacijski sistem vedno ve, koliko prostora zaseda posamezen proces. Operacijski sistem tudi skrbi za dodeljevanje primarnega pomnilnika procesom, za prepis programov s pomožnega pomnilnika (diska) v primarni - glavni pomnilnik in obratno. Ko zmanjkuje prostora v glavnem pomnilniku, poskrbi operacijski sistem zato, da se eden od procesov izloči iz glavnega pomnilnika. Proces se v celoti prepiše na odlagalni prostor na disk, nov proces pa se naloži v glavni pomnilnik. Ta princip imenujemo zamenjava (swapping). Ko prihaja do zamenjav procesov v pomnilniku, ostaja del pomnilniškega prostora neizkoriščenega, ker vsi procesi nimajo enake velikosti in ne zasedajo enako prostora. Govorimo o razdrobljenosti (fragmentaciji) pomnilnika. Z zgoščevanjem (compaction, defragmentation) operacijski sistem to pomanjkljivost začasno odpravi, vendar to vzame določen čas procesorju.
Kakšen je pomen navideznega (virtualnega) pomnilnika? Glede na to, da ni potrebno, da se cel program (če je daljši) nahaja hkrati v delovnem pomnilniku ampak le manjši del, lahko posplošimo: o
procesor lahko naslavlja in izvaja mnogo večje programe kot pa to dopušča velikost fizičnega pomnilnika (ki je razmeroma majhen)
o
programi se tudi lahko premeščajo po prostoru fizičnega pomnilnika
o
navidezni pomnilnik tudi omogoča zaščito programov in podatkov
Zakaj ni potrebno, da se nahaja cel program v pomnilniku? Program je strukturiran. To pomeni, da se izvajanje programa odvija v nekem lokalnem omejenem delu programske kode, velik del kode pa se uporablja zelo redko (npr. v primerih napak, itd.) Procesor torej ne naslavlja fizičnega pomnilnika ampak nek mnogo večji navidezni (virtualni) pomnilnik, ki ga predstavljata skupaj glavni in pomožni pomnilnik (disk). Virtualni pomnilnik je pomnilnik, kot ga "vidi" program. Procesor "vidi" majhen delovni pomnilnik kot velik pomnilnik. Tako uporabo omogoča preslikava naslovov na dva načina: z ostranjevanjem in/ali segmentacijo.
18
datot_sist.doc
Zakaj se pri preslikavah naslovov srečujemo z ostranjevanjem in/ali segmentacijo? Fizični pomnilnik razdelimo na manjše dele, ki jim rečemo okviri strani (page frames), velikosti npr. 1K zlogov. Logični naslovni prostor procesorja pa razdelimo na enako velike dele, ki jim rečemo strani (pages). Tako ima operacijski sistem veliko večjo možnost, da nek program iz določenega logičnega naslovnega področja preslika v fizični pomnilnik, saj lahko vsako stran preslika na svoj način. Sosednje strani se lahko prenesejo tudi v nesosednje okvire strani. Strnjen program se tako prenese v tiste okvire strani, ki so prosti, in se nahajajo kjerkoli v fizičnem pomnilniku. Tako je glavni problem fragmentacije pomnilnika rešen. Ta postopek delitve na strani imenujemo ostranjevanje (paging). Na spodnji sliki je prikazan primer ostranjevanja preko enostopenjske tabele.
Pri segmentaciji (segmentation) je princip podoben kot pri ostranjevanju, le da so lahko segmenti različno veliki, za razliko od strani, ki imajo vse enako velikost. Vsak program si lahko predstavljamo, da je sestavljen iz glavnega programa, podprogramov, globalnih in lokalnih spremenljivk in zato ga lahko segmentiramo. Program se pri segmentaciji razdeli na smiselne odseke, ki jim pravimo segmenti. V segment so združeni tisti deli programa, ki tvorijo smiselno celoto.
Ali upravljanje s pomnilnikom na osnovi ostranjevanja in segmentacije nudi še kaj pomembnega poleg možnosti nesklenjene namestitve programa? Bistvena prednost segmentacije in ostranjevanja je zaščita pomnilnika. Za vsako stran oz. segment operacijski sistem označi, če je veljavna, če je dovoljeno branje (read only), branje in vpisovanje (read - write) ali pa le izvajanje (execute). Posegi izven strani oz. segmentov, ki pripadajo določenemu programu, niso dovoljeni. Če proces zahteva nedovoljen poseg v pomnilnik ali nedovoljeno operacijo, procesor javi sistemsko napako (past). Tako so programi tudi zavarovani drug pred drugim in pred nedovoljeno uporabo.
19
datot_sist.doc
Prikaz izvedbe navideznega pomnilnika s segmentacijo:
Kako pa operacijski sistem "ve", katere posamezne strani, ki so "raztresene" po fizičnem pomnilniku, pripadajo določenemu procesu? Že prevajalnik lahko pri prevajanju razdeli proces na strani in pripravi tabelo strani, ki se shrani skupaj s kodo procesa na disk. Ko se program nalaga v delovni pomnilnik, se nalaga po straneh. Za vsako stran se v tabelo strani shrani fizični naslov okvira strani, kamor se je prenesla stran. Torej je tabela strani tista, kjer so zbrane vse informacije o straneh, ki jih zaseda program in o zaščiti posameznih strani. Tako operacijski sistem pride do posamezne strani preko tabele strani. Tako kot so podatki o posameznih straneh, ki jih vsebuje nek proces, shranjeni v tabeli strani v obliki
deskriptorjev, so pri segmentaciji naslovi shranjeni v tabeli segmentov. V tabeli vsak deskriptor določa naslov posameznega segmenta, poleg naslova pa še dolžino segmenta, tako, da se pred
uporabo vedno preveri, če naslov, ki ga izda procesor, ne presega velikosti segmenta. Tako je poskrbljeno za varnost podatkov in programov. Tudi v tabeli segmentov so dodani biti, ki določajo lastnosti in omejitve za vsak segment. Te lahko omogočajo, da je kateri od segmentov solastniški (shared) in ga lahko uporablja več procesov, določajo, ali je segment veljaven, ali se segment lahko le bere ali bere in vpisuje, izvaja, itd. Segmentacija in ostranjevanje upočasnita dostop do pomnilnika, ker poteka dostop do posameznih strani oz. segmentov preko tabel strani oz. segmentov. Problem delno ublaži poseben predpomnilnik, v katerega se shranjujejo naslovi nazadnje uporabljanih strani oz. segmentov.
Uporabljena literatura: Operacijski sistemi, Damjan Zazula, FERI, Maribor, 1997 Operacijski sistemi, Saša Divjak, FRI, Ljubljana, 1999 Gradivo z internetnih strani