124
UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET OPERATIVNI SISTEMI - skripta- dr Božo Krstajić PODGORICA, 2005.

skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Embed Size (px)

Citation preview

Page 1: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET

OPERATIVNI SISTEMI

- skripta-

dr Božo Krstajić

PODGORICA, 2005.

Page 2: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

PREDGOVOR

U ovoj skripti je izlažena struktura operativnih sistema, principi njihovog funkcionisanja, problemi vezani za pravljenje operativnih sistema, kao i načini rešavanja ovih problema. Dio objašnjenja, navedenih u ovoj skripti, je u tradiciji operativnog sistema UNIX. Podrazumijeva se da čitalac ove skripte poznaje arhitekturu računara.

Kao dodatak u skripti je detaljnije obrađen koncept Windows XP-a i dat je pregled osnovnih Linux naredbio (Slackware distribucija).

Ova skripta je namijenjena studentima III godine ETF-a, a kao dodatak za praktičan rad je skripta koju je autor sa kolegalma prof. dr Zdravkom Uskokovićem i Radosavom Puzovićem priredio za potrebe sličnog predmeta na Studijama primijenjenog računarstva. Tekst skripte (u pdf formatu), dodatni materijal i seminarske radove možete naći na web adresi www.os.cg.ac.yu.

Skripta je priređena i štampana kao rezultat projekta CDP+ finansiranog od strane WUS Austrija, kojem se ovim putem zahvaljujem.

Autor

Page 3: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

SADRŽAJ: UVOD .................................................................................................................................... 1 1. UVOD U OPERATIVNE SISTEME .................................................................................... 4 1.1 ŠTA JE OPERATIVNI SISTEM ............................................................................... 5 1.2 ZADATAK OPERATIVNOG SISTEMA.................................................................. 6 1.3 POJAM FAJLA-DATOTEKE.................................................................................. 10 1.4 POJAM PROCESA .................................................................................................. 11 1.5 STRUKTURA OPERATIVNOG SISTEMA........................................................... 13 1.6 PODJELA OPERATIVNIH SISTEMA PREMA STRUKTURI............................. 15 2. SLOJEVI OPERATIVNOG SISTEMA............................................................................... 20 2.1 SLOJ ZA UPRAVLJANJE PROCESIMA............................................................... 20 2.2 SISTEMSKI PROCESI ............................................................................................ 28 2.3 SLOJ ZA UPRAVLJANJE FAJLOVIMA............................................................... 31 2.4 SLOJ ZA UPRAVLJANJE RADNOM MEMORIJOM .......................................... 50 2.5 SLOJ ZA UPRAVLJANJE KONTROLERIMA I/O UREĐAJA ............................ 61 2.6 SLOJ ZA UPRAVLJANJE PROCESOROM........................................................... 68 3. MRTVE PETLJE ................................................................................................................. 70 4. KOMUNIKACIJA SA OPERATIVNIM SISTEMOM....................................................... 72 4.1 PROGRAMSKI NIVO KOMUNIKACIJE SA OPERATIVNIM SISTEMOM...... 72 4.2 INTERAKTIVNI NIVO KOMUNIKACIJE SA OPERATIVNIM SISTEMOM ... 72 5. KLASIFIKACIJA OPERATIVNIH SISTEMA .................................................................. 78 5.1 OPERATIVNI SISTEMI REALNOG VREMENA................................................. 78 5.2 OPERATIVNI SISTEMI ZA INTELIGENTNE KARTICE ................................... 79 5.3 MULTIPROCESORSKI OPERATIVNI SISTEMI ................................................. 79 5.4 DISTRIBUIRANI OPERATIVNI SISTEMI ........................................................... 79 5.5 MREŽNI OPERATIVNI SISTEMI.......................................................................... 87 DODATAK 1: Windows XP................................................................................................ 88 DODATAK 1: Linux ......................................................................................................... 108 LITERATURA................................................................................................................... 120

Page 4: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 1

UVOD

Istorija čovječanstva je istorija neprekidnog tehnološkog napretka: od točka do satelita i dalje.

Ljudi pronalaze načine za poboljšanje svakodnevnog života, proizvodnje, komunikacije, putovanja itd. Određeni periodi u istoriji su obilježeni naglašenim razvojem u nekoj tehnološkoj oblasti. Tako je period u kome živimo obilježen informatikom i komunikacijama.

Kroz vjekove čovjek je smišljao sredstva da sebi olakša (automatuzuje) proces računanja. Sredinom prošlog vijeka (1945. god.) je konstruisan prvi računar (computer). To je bilo ogroman elektronski uređaj. Današnji računari su mnogo manji, bolji i jeftiniji. Oni su postali nezaobilazni u poslovnom, ali i u privatnom životu. Računar je uređaj koji vrši obradu informacija. Zato se informacionim tehnologijama (information tehnologies) nazivaju tehnologije koje se koriste za bilo koji oblik računarske (automatske) obrade informacija (podataka).

Pomoću računara informacije (podaci) mogu da se: - obrađuju (računanje, crtanje, obrada teksta, kreiranje zvuka i pokretne slike, ...), - pamte (trajno ili privremeno ) i - razmjenjuju (bez obzira na udaljenost).

Da bi razmjenjivali informacije ljudi moraju da komunicijaju. Pronalaskom telefona (1876. god.) prenos informacija se automatizovao i ubrzano razvijao. Danas je prenos infomacija skoro trenutan u okviru planete zahvaljujući savremenim sredstvima komunikacije: telefonu, telefaksu, mobilnom telefonu, radiju, televiziji i računarskim mrežama. Tehnologije koje se koriste za prenos informacija u raznim oblicima nazivaju se komunikacionim tehnologijama (communication tehnologies).

Infromaciono-komunikacione tehnologije (Information Communication Tehnologies) ili ICT je skup tehnologija koje se koriste pri automatskoj obradi informacija i njihovom prenosu nekim komunikacionim sredstvom.

Računar je uređaj (hardware) koji obrađuje, pamti ili razmjenjuje informacije. Način na koji

to radi je određen u programu. Program (software) je niz komandi koje određuju šta treba uraditi sa podacima. Znači, dva neodvojiva dijela računara su::

- hardver – uređaj (hardware ) i - softver – program (software).

Pošto hardver ne može da radi bez softvera, a softver nema smisla bez hardvera jasno je da oni čine računar. Na primjer, ako zamislimo da je ljudsko biće računar, onda bi hardver predstavljale ćelije (tkiva, organi, ...), a misli i ideje bi predstavljali softver. Harderom treba upravljati, tj. na neki način treba „natjerati“ procesor da sabere dva broja, disk da zapamti određenu sliku, monitor da prikaže podatke kako treba, pointer da prati kretanje miša, štampač da odštampa željene podatek itd. To je posao softvera ili programa. Dakle, ispravan hardver ne radi ako nema softvera. Tip softvera koji upravlja hardverom zove se sistemski softver (jer upravlja sistemom) ili operativni sistem. Softver ne služi samo da upravlja hardverom nego i za pružanje usluga korisniku (čovjeku). Tako su za razne poslove kreirani različiti programi. Ako želite da otkucate neki tekst određeni program vam nudi tu mogućnost. Ako želite da kreirate neku sliku koristićete neki drugi

Page 5: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 2

program. Čak i korisnik može napraviti neki svoj program za neku posebnu cvrhu. Ova vrsta softvera koja pruža razne usluge korisnicima tj. ima konkretnu primjenu (application) u svakodnevnom poslu se zove aplikativni softver (primijenjeni ili upotrebni program). Dakle, softver dijelimo na:

- sistemski (operativni sistem za upravljanje hardverom) i - aplikativni (primjenjivi).

Softver se kreira pomoću nekog programskog jezika. Najpoznatiji programski jezici su: Basic, Pascal, Fortran, C, C++, Java, Delphi, VisualBasic itd. Većina današnjih operativnih sistema je kreirana („napisana“) u C-u.

Operativni sistem (sistemski softver) je skup programa koji upravljaju harverom, podacima i izvršavaju naredbe korisnika. Funkcije operativnog sistema su:

- upravljanje procesorom (CPU), - upravljanje memorijom (RAM), - upravljanje I/O uređajima, - upravljanje podacima i - upravljanje aplikacijama.

Dakle, OS kontroliše i upravlja računarom uz pomoć instrukcija korisnika. Ako bi grafički prikazali odnos korisnika i računara onda bi to izgledalo kao na slici 1. Naime, korisnik radi na nekoj aplikaciji (unosi tekst, sluša muziku, projektuje, računa, ...). Aplikacija koristi operativni sistem da bi izvršila obradu podataka na hardveru.

Slika 1. Odnos korisnika i djelova računara

Raniji OS (MS DOS, UNIX, VMS, ...) su radili u tzv. tekstualnom modu. To znači da je korisnik kucao tekstualne naredbe koje su uglavnom bile komplikovane. Korišćenje računara je bilo dosta nepraktično i teško za učenje. To je bio jedan od razloga zašto je malo ljudi tada koristilo računare. Poznato je da obrada jedne slike traži mnogostruko više računarskih resursa od obrade bilo kog teksta. Razvojem hardvera računari su imali sve bolje performanse i rad sa grafikom je postajao sve lakši. To je bio preduslov za pojavu tzv. grafički orjentisanih operativnih sistema (Windows, Linux, Mac OS). Ovi OS su uveli pojam pokazivača (pointer) koji se koristi kao kažiprst. Pomjeranje ovog pointera se obavlja pomoću miša. Ovim pointerom se biraju komande ili sličice koje se zatim startuju nekim od tastera miša. Ova grafička veza između korisnika i računara se naziva GUI (Graphical User Interface). Prednosti pri korišćenju GUI-a su jednostavnost pri radu, intuitivno i brzo učenje. Korišćenje GUI-a liči na sporazumijevanje „rukama“. Dakle, umjesto da se kucaju komplikovane naredbe prosto se prstom pokazuje na njih. To je doporinijelo ogromnom povećanju broja korisnika PC računara. Danas ne postoji OS koji nema ili ne razvija GUI.

A

PLIK

AC

IJA

O

PER

ATI

VN

I SI

STEM

Page 6: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 3

Trenutno se na PC računarima najviše koristi razne verzija Windows operativnog sistema. Razlog za to je lak i dopadljiv način upotrebe PC računara. Koristeći asocijativne sličice korisnik upravlja računarom i koristi njegove mogućnosti. Za takav OS se kaže da ima grafički interfejs (interfejs je veza između nečega). Postoje razne verzije ovog operativnog sistema: Windows 95, Windows 98, Windows ME (Millennium), Windows NT (New Technology), Windows 2000, Windows XP (Experience) i Windows 2003. Kompanija koja proizvodi ovaj OS je američka i zova se Microsoft. Drugi, sve popularniji OS, je Linux. To je jeftin ili besplatan OS kojeg razvijaju programeri širom svijeta. I on ima grafički interfejs i postaje sve prisutniji kod PC računara. Njegova osnovna prednost je otvorenos. To znači da je svaki detalj svih programa Linux OS javan i poznat. Drugim riječima svako može vidjeti ili mijenjati ovaj OS. Upravo zbog toga se Linux najviše koristi u obrazovnim institucijama.

Simboli Windows-a i Linux-a

Aplikativni softver ili prosto aplikacije se koriste za izvršavanje određenih poslova na

računaru: obrada teksta, tabelarni proračuni, crtanje, obrada slike, obrada zvuka, komponovanje, kreiranje animacija, učenje, zabava itd. Aplikacije su onaj dio računara koji krajnji korisnik najviše koristi. Aplikacije koriste operativni sistem da bi pristupile hardveru. Zbog toga se aplikacije kreiraju i prilagođavaju za razne operativne sisteme. Drugm riječima, aplikacija izrađena za Windows obično neče raditi na PC koji koristi Linux OS. Poznate aplikacije koje se svakodnevno koriste su: za unos i obradu teksta, za tabelarnu obradu podataka, za kreiranje prezentacija, za kreiuranje baza podataka, za kreiranje WEB stranica za čitanje WEB stranica, za kreiranje i obradu slike, za kreiranje grafika i crteža, za obradu zvuka, itd. Slične aplikacije postoje za sve OS. Ovo su aplikacije opšte namjene. Pored njih, postoje aplikacije za posebne namjene (bankarsko poslovanje, evidencija građana, statistika, finansijko poslovanje, itd).

Korisnici kroz aplikacije koriste funkcije računara (obrada, pamćenje i prenos informacija). Da bi aplikacije pravilno funkcionisale treba da su prilagođene operativnom sistemu i da koriste njegove prednosti. Dakle, poznavanje operativnog sistema je neophodan preduslov za kreiranje i korišćenje aplikacija. 1. UVOD U OPERATIVNE SISTEME

Page 7: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 4

Moderni kompjuterski sistemi se sastoje od jednog ili više procesora, memorije, diskova, tastature, displeja i drugih ulazno-izlaznih uređaja, što predstavlja složen sistem (slika 1.1). Pisanje programa koji nadziru ove komponente i pravilno ih koriste je vrlo težak posao. Zbog toga razloga kompjuteri poseduju “sloj” softvera, nazvan operativni sistem, čiji je posao da upravlja svim ovim uređajima i da obezbijedi korisničke programe sa jednostavnijim interfejsom prema hardveru.

Položaj operativnog sistema je prikazan na slici 1.2. Na dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od integrisanih kola, žica, napajanja i slično. Sledeći nivo je mikroarhitekturni nivo u kome su fizički uređaji povezani tako da čine funkcionalne celine, a iznad njega se nalazi mašinski jezik. Mašinski jezik sadrži obično između 50 i 300 instrukcija, uglavnom za pomeranje podataka, aritmetičke operacije i poređenje vrednosti. Na ovom nivou se ulazno –izlazni uređaji (u daljem tekstu I/O uređaji) kontrolišu upisivanjem određenih vrednosti u specijalne uređajne registre. Na primjer, disku se može komandovati da čita upisivanjem vrednosti adrese diska, adrese glavne memorije, broja bajta i smer (upis ili čitanje) u njegove registre. U praksi je potrebno još dosta parametara, i status koji vraća drajv posle operacije je vrlo kompleksan.

Page 8: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 5

Slika 1.2. Kompjuterski sistem se sastoji od hardvera, sistemskih programa

i aplikacionih programa Da bi se sakrila ova složenost koristi se operativni sistem. On se sastoji od sloja softvera koji (delimično) prikriva pravu složenost hardvera i obezbijeđuje programeru pogodniji skup instrukcija za rad. Iznad operativnog sistema se nalazi ostatak sistemskog softvera. Tu imamo komandni interpreter (shell), kompajlere, editore i slične programe nezavisne od aplikacije. Iako se ovi programi isporučuju zajedno sa operativnim sistemom oni nisu deo operativnog sistema. Operativni sistem je (obično) onaj deo softvera koji radi u kernel modu ili supervizor modu i koji je hardverom zaštićen od neovlašćenog upada korisnika. Kompajleri i editori rade u korisničkom modu. Ako se korisniku ne sviđa određeni kompajler, on ga sam može napisati. S druge strane, korisnik ne može napisati svoj clock interrupt handler jer je on deo operativnog sistema i kao takav je zaštićen hardverom od pokušaja korisnika da ga promene. Konačno, iznad sistemskih programa dolaze aplikacioni programi. To su napisani ili kupljeni programi koji služe za rešavanje određenih problema, kao što je obrada teksta, rad sa tabelama, inženjerski proračuni, skladištenje informacija u bazama podataka i slično.

1.1 ŠTA JE OPERATIVNI SISTEM ? Teško je tačno reći šta je operativni sistem. Deo problema leži u činjenici da operativni sistem obavlja dve, u osnovi različite funkcije: proširenje mašine i upravljanje resursima. Pogledajmo obe funkcije operativnog sistema.

OPERATIVNI SISTEM KAO PROŠIRENA MAŠINA

Arhitektura (skup instrukcija, organizacija memorije, I/O i struktura magistrale) većine kompjutera na nivou mašinskog jezika je primitivna i teška za programiranje, naročito za I/O. Ako se kao primjer uzme rad sa flopi diskom videćemo da je za osnovne komande read i write potrebno voditi računa o velikom broju parametara koji određuju pojedinosti kao što su adresa bloka diska koji treba pročitati ili gde treba upisati, broj sektora po stazi, mod snimanja korišćen na fizičkom medijumu, veličina slobodnog prostora između pojedinih sektora i slično. Mora se voditi računa o tome da li je motor uključen ili nije. Ako nije uključen, onda se mora uključiti (sa određenim zaletnim zakašnjenjem) pre nego se podaci mogu zapisati ili pročitati. Uzimajući sve ovo, a i dosta drugih pojedinosti u obzir, jasno je da prosečan programer ne želi da se previše intimizuje sa programiranjem flopi diska (ili hard diska, što je jednako

Page 9: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 6

kompleksno i potpuno različito). Umjesto toga, ono što programer želi je da radi sa jednostavnom apstrakcijom visokog nivoa. U slučaju diskova tipična apstrakcija je ta da disk sadrži skup imenovanih fajlova koji se mogu otvoriti, u njih se može upisivati ili iz njih čitati, i konačno zatvoriti. Program koji sakriva istinu o hardveru od programera i prezentuje lepu i jednostavnu sliku imenovanih fajlova u koje se mogu upisivati ili iz kojih se mogu čitati podaci je operativni sistem. Osim toga, operativni sistem sakriva dosta neprijatnog posla koji se tiče interrupt-a, brojača, rada sa memorijom i drugih pojedinosti nižeg nivoa. Ovako posmatrajući, uloga operativnog sistema ja da korisniku predstavi proširenu mašinu ili virtuelnu mašinu koju je dosta lakše programirati od postojećeg hardvera.

OPERATIVNI SISTEM KAO UPRAVLJAČ RESURSIMA Moderni kompjuteri se sastoje od procesora, memorija, brojača, diskova, miševa, mrežnih interfejsa, štampača, kao i dosta drugih uređaja. U slučaju kada više različitih programa žele da istovremeno koriste neki od resursa na scenu stupa operativni sistem koji treba da obezbijedi uređenu i kontrolisanu alokaciju procesora, memorija i I/O uređaja između tih programa. Ovako posmatrajući, glavni zadatak operativnog sistema je da vodi računa o tome ko koristi koji resurs, da dozvoli korišćenje određenog resursa, prati upotrebu istih i da posreduje između konfliktnih zahtjeva različitih korisnika ili programa. Upravljanje resursima uključuje multipleksiranje (podelu) resursa na dva načina: u vremenu i u prostoru. Vremensko multipleksiranje se javlja u slučaju kad se različiti programi smenjuju u korišćenju resursa. Prvo jedan program koristi određeni resurs, zatim drugi i tako dalje. Operativni sistem određuje koji je program sledeći i koliko dugo će on koristiti resurs. Primjer vremenskog multipleksiranja je deoba štampača. Kada se javi više zahtjeva za štampanje mora se doneti odluka koji se dokument štampa sledeći. Za razliku od vremenskog multipleksiranja, gde se korisnici smenjuju, kod prostornog multipleksiranja svaki korisnik dobija deo resursa. Na primjer, glavna memorija je podeljena između nekoliko programa. Pod pretpostavkom da ima dovoljno prostora za više programa efikasnije je držati nekoliko programa u memoriji odjedanput nego davati čitavu memoriju jednom programu, naročito kad multipleksiranje je potreban samo mali deo. Drugi resurs koji je prostorno multipleksiran je hard disk. Tipičan zadatak operativnog sistema je alokacija prostora na disku i vođenje računa o tome ko koristi koje blokove diska. 1.2 ZADATAK OPERATIVNOG SISTEMA

Operativni sistem je program koji objedinjuje u skladnu celinu raznorodne djelove računara i sakriva od korisnika one detalje funkcionisanja ovih delova koji nisu bitni za korišćenje računara.Znači, operativni sistem ima dvostruku ulogu. S jedne strane, on upravlja delovima od kojih se sastoji računar (procesor, I/O kontroleri, radna memorija), sa ciljem da oni budu što celishodnije upotrebljeni. S druge strane, operativni sistem stvara za krajnjeg korisnika računara pristupačno radno okruženje, tako što pretvara računar od mašine koja rukuje bitima, bajtima i blokovima u mašinu koja rukuje datotekama i procesima.

Page 10: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 7

1.3 POJAM FAJLA – DATOTEKE (FILE)

Za pojam fajla su vezani sadržaj i atributi. Sadržaj fjla obrazuju korisnički podaci. U atribute fajla spada, na primjer, veličina ili vreme njegovog nastanka. Atributi fajla se čuvaju u deskriptoru fajla. Datoteke omogućuju korisnicima da organizuju podatke u skladu sa svojim potrebama.

OZNAČAVANJE DATOTEKA

Svaka datoteka poseduje ime koje bira korisnik. Poželjno je da ime datoteke ukazuje na njen konkretan sadržaj, ali i na vrstu njenog sadržaja (radi klasifikacije datoteka po njihovom sadržaju). Zato su imena datoteka dvodelna, tako da prvi deo imena datoteke označava njen sadržaj, a drugi deo označava vrstu njenog sadržaja, odnosno njen tip. Ova dva dela imena datoteke obično razdvaja tačka. Tako, na primjer: godina1.txt može da predstavlja ime datoteke, koja sadrži podatke o studentima prve godine studija. Na to ukazuje prvi deo imena godina1, dok drugi deo imena txt ove datoteke govori da je datoteka tekstualna (da sadrži samo vidljive ASCII znakove). Upravljanje datotekom obuhvata ne samo upravljanje njenim sadržajem, nego i upravljanje njenim imenom. Tako, na primjer, stvaranje datoteke podrazumijeva i zadavanje njenog sadržaja, ali i zadavanje njenog imena (što se dešava u toku editiranja, kompilacije, kopiranja i slično). Takođe, izmjena datoteke može da obuhvati ne samo izmjenu njenog sadržaja, nego i izmjenu njenog imena (što se dešava, na primjer, u editiranju).

ORGANIZACIJA DATOTEKA (FILE SYSTEM) Datoteke se grupišu u skupove datoteka. Na primjer, prirodno je da datoteke sa podacima o studentima pojedinih godina studija istog smjera pripadaju jednom skupu datoteka. Skupu datoteka pristaje naziv direktorijum (directory, folder), ako se prihvati gledište da skup datoteka sadrži imena svih datoteka koje su obuhvaćene pomenutim skupom. Radi razlikovanja direktorijuma, svaki od njih poseduje ime koje bira korisnik. Za direktorijume su dovoljna jednodjelna imena, jer nema potrebe za klasifikacijom direktorijuma (pogotovo ne po njihovom sadržaju). Tako, na primjer: smjer može da predstavlja ime direktorijuma, koji obuhvata datoteke sa podacima o studentima svih godina studija istog smjera.

Razvrstavanjem datoteka u direktorijume nastaje hijerarhijska organizacija datoteka, u kojoj su na višem nivou hijerarhije direktorijumi, a na nižem nivou se nalaze datoteke, koje pripadaju pomenutim direktorijumima (odnosno, čija imena su sadržana u ovim direktorijumima). Ovakva hijerarhijska organizacija povlači za sobom i hijerarhijsko označavanje datoteka. Hijerarhijsku oznaku ili putanju (path name) datoteke obrazuju ime direktorijuma kome datoteka pripada i ime datoteke. Djelove putanje obično razdvaja znak / (ili znak \). Tako, na primjer:

Page 11: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 8

smjer1/godina1.txt predstavlja putanju datoteke, koja sadrži podatke o studentima prve godine studija sa prvog smjera.

Hijerarhijska organizacija datoteka ima više nivoa, kada jedan direktorijum obuhvata, pored datoteka, i druge direktorijume (odnosno sadrži, pored imena datoteka, i imena drugih direktorijuma). Obuhvaćeni direktorijumi se nalaze na nižem nivou hijerarhije. Na primjer, direktorijum fakultet obuhvata direktorijume pojedinih smjera. Na vrhu hijerarhijske organizacije datoteka se nalazi korenski direktorijum (root).

U slučaju više nivoa u hijerarhijskoj organizaciji datoteka, putanju datoteke obrazuju imena direktorijuma sa svih nivoa hijerarhije (navedena u redosledu od najvišeg nivoa na dole), kao i ime datoteke. Na primjer:

/fakultet/smjer1/godina1.txt predstavlja putanju datoteke godina1.txt, koja pripada direktorijumu smjer1. Ovaj direktorijum pripada direktorijumu fakultet, a on pripada korenskom direktorijumu (koji nema imena). Na prethodno opisani način se obrazuje i putanja direktorijuma. Tako, na primjer: /fakultet/smjer1 predstavlja putanju direktorijuma smjer1, koji pripada direktorijumu fakultet iz korenskog direktorijuma.

Hijerarhijska organizacija datoteka dozvoljava da postoje datoteke sa istim imenima (odnosno, da postoje direktorijumi sa istim imenima), pod uslovom da pripadaju raznim direktorijumima. Na primjer, na slici 1.3 je prikazana hijerarhijska organizacija datoteka, u kojoj se nalaze datoteke sa istim imenima i direktorijumi sa istim imenima. fakultet1 fakultet2

smjer1 smjer2 smjer1 smjer2

godina1.txt . . . godina1.txt . . .

Slika 1.3 Grafička predstava hijerarhijske organizacije fajlova U hijerarhijskoj organizaciji datoteka (prikazanoj na slici 1.3) korijenskom direktorijumu pripadaju direktorijumi fakultet1 i fakultet2. Svaki od njih sadrži direktorijume smjer1 i smjer2. Pri tome, oba direktorijuma sa imenom smjer1 sadrže datoteku godina1.txt. Putanje omogućuju razlikovanje istoimenih direktorijuma, odnosno istoimenih datoteka. Tako, putanje: /fakultet1/smjer1 /fakultet2/smjer1

Page 12: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 9

omogućuju razlikovanje direktorijuma sa imenom smjer1, a putanje: /fakultet1/smjer1/godina1.txt /fakultet2/smjer1/godina1.txt omogućuju razlikovanje datoteka sa imenom godina1.txt.

Zahvaljujući hijerarhijskoj organizaciji datoteka, moguće je upravljanje celim direktorijumima, kao što je, na primjer, kopiranje celog direktorijuma (odnosno kopiranje svih datoteka i direktorijuma, koji mu pripadaju). Navođenje potpune putanje datoteke (odnosno, direktorijuma) je potrebno kad god je moguć nesporazum, zbog datoteka sa istim imenima (odnosno, zbog direktorijuma sa istim imenima). Ali, ako postoji mogućnost određivanja nekog direktorijuma kao radnog (working directory), tada se njegova putanja podrazumijeva i ne mora se navoditi. Na primjer, ako se podrazumijeva da je:

/fakultet1/smjer1 radni direktorijum, tada: godina1.txt označava datoteku, koja pripada direktorijumu smjer1 iz direktorijuma fakultet1.

ZAŠTITA FAJLOVA

Fajlovi su namjenjeni za trajno čuvanje podataka. Za uspešnu upotrebu podataka neophodna je zaštita fajlova, koja obezbijeđuje da podaci, sadržani u fajlu, neće biti izmjenjeni bez znanja i saglasnosti njihovog vlasnika, odnosno, koja obezbijeđuje da podatke, sadržane u fajlu jednog korisnika, bez njegove dozvole drugi korisnici ne mogu da koriste. Podaci, sadržani u fajlu, ostaju neizmjenjeni, ako se onemogući pristup fajlu i radi pisanja (radi izmjene njegovog sadržaja). Takođe, podaci, sadržani u datoteci, ne mogu biti korišćeni, ako se onemogući pristup datoteci, radi čitanja (radi preuzimanja njenog sadržaja). Na ovaj način uvedeno pravo pisanja i pravo čitanja datoteke omogućuju da se za svakog korisnika jednostavno ustanovi koja vrsta upravljanja datotekom mu je dozvoljena, a koja ne. Tako, korisniku, koji ne poseduje pravo pisanja datoteke, nisu dozvoljena upravljanja datotekom, koja izazivaju izmjenu njenog sadržaja. Ili, korisniku, koji ne poseduje pravo čitanja datoteke, nisu dozvoljena upravljanja datotekom, koja zahtjevaju preuzimanje njenog sadržaja.

Za izvršne datoteke uskraćivanje prava čitanja je prestrogo, jer sprečava ne samo neovlašteno uzimanje tuđeg izvršnog programa, nego i njegovo izvršavanje. Zato je uputno, radi izvršnih datoteka, uvesti posebno pravo izvršavanja programa, sadržanih u izvršnim datotekama. Zahvaljujući posedovanju ovog prava, korisnik može da pokrene izvršavanje programa, sadržanog u izvršnoj datoteci, i onda kada nema pravo njenog čitanja.

Pravo čitanja, pravo pisanja i pravo izvršavanja datoteke predstavljaju tri prava pristupa datotekama, na osnovu kojih se za svakog korisnika utvrđuje koje vrste upravljanja datotekom su mu dopuštene. Da se za svaku datoteku ne bi evidentirala prava pristupa za svakog korisika pojedinačno, uputno je sve korisnike razvrstati u klase i za svaku od njih vezati pomenua prava pristupa. Iskustvo pokazuje da su dovoljne tri klase korisnika. Jednoj pripada vlasnik datoteke, drugoj njegovi saradnici, a trećoj ostali korisnici. Nakon razvrstavanja korisnika u tri klase,

Page 13: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 10

evidentiranje prava pristupa datotekama omogućuje matrica zaštite (protection matrix) koja ima tri kolone (po jedna za svaku klasu korisnika) i onoliko redova koliko ima datoteka. U preseku svakog reda i svake kolone matrice zaštite navode se prava pristupa datoteci iz datog reda za korisnike koji pripadaju klasi iz date kolone. Na slici 1.3 je prikazan primjer matrice zaštite.

owner group other

file1 r w x r - x - - x file2 - w x - - x - - x file3 r w - - w - - - - file4 r w x - - - r - -

Slika 1.4 Matrica zaštite

U primjeru matrice zaštite sa slike 1.4 vlasnik (owner) datoteke file1 ima sva prava

pristupa, njegovi saradnici (group) nemaju pravo pisanja, a ostali korisnici (other) imaju samo pravo izvršavanja (pretpostavka je da je reč o izvršnoj datoteci). Ima smisla uskratiti i vlasniku neka prava, na primjer, da ne bi nehotice izmjenio sadržaj datoteke file2, ili da ne bi pokušao da izvrši datoteku koja nije izvršna (file3). Primijetite i malu nelogičnost za file4.

Za uspeh izloženog koncepta zaštite datoteka neophodno je onemogućiti neovlašteno menjanje matrice zaštite. Jedino vlasnik datoteke sme da zadaje i menja prava pristupa (sebi, svojim saradnicima i ostalim korisnicima). Zato je potrebno znati za svaku datoteku ko je njen vlasnik. Takođe, potrebno je i razlikovanje korisnika, da bi se među njima mogao prepoznati vlasnik datoteke. To se postiže tako što svoju aktivnost svaki korisnik započinje svojim predstavljanjem. U toku predstavljanja korisnik predočava svoje ime (username) i navodi dokaz da je on osoba za koju se predstavlja, za šta je, najčešće, dovoljna lozinka (pasword). Predočeno ime i navedena lozinka se porede sa spiskom imena i (za njih vezanih) lozinki registrovanih korisnika. Predstavljanje je uspešno, ako se u spisku imena i lozinki registrovanih korisnika pronađu predočeno ime i navedena lozinka.

Predstavljanje korisnika se zasniva na pretpostavci da su njihova imena javna, ali da su im lozinke tajne. Zato je i spisak imena i lozinki registrovanih korisnika tajan, znači, direktno nepristupačan korisnicima. Jedina dva slučaja, u kojima ima smisla dozvoliti korisnicima posredan pristup ovom spisku, su:

(1) radi njihovog predstavljanja i (2) radi izmjene njihove lozinke.

Za predstavljanje korisnika uvodi se posebna operacija, koja omogućuje samo provjeru da li zadani par ime i lozinka postoji u spisku imena i lozinki registrovanih korisnika. Slično, za izmjenu lozinki uvodi se posebna operacija, koja omogućuje samo promenu lozinke onome ko zna postojeću lozinku. Sva druga upravljanja spiskom imena i lozinki registrovanih korisnika (kao što su ubacivanje u ovaj spisak parova imena i lozinki, ili njihovo izbacivanje iz ovog spiska) nalaze se u nadležnosti poverljive osobe, koja se naziva administrator (superuser. root, admin, ...). Zaštita datoteka potpuno zavisi od odgovornosti i poverljivosti administratora, odnosno od tačnosti pretpostavke da on neće odavati lozinke, niti ih koristiti, radi pristupa korisničkim datotekama. Zbog prirode njegovog posla, administratora ima smisla potpuno izuzeti iz zaštite datoteka, s tim da on tada svoje nadležnosti mora vrlo oprezno da koristi.

Nakon prepoznavanja korisnika (odnosno, nakon njegovog uspešnog predstavljanja), uz pomoć matrice zaštite moguće je ustanoviti koja prava pristupa korisnik poseduje za svaku

Page 14: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 11

datoteku. Da bi se pojednostavila provjera korisničkih prava pristupa, uputno je, umjesto imena korisnika, uvesti njegovu numeričku oznaku. Radi klasifikacije korisnika zgodno je da ovu numeričku oznaku obrazuju dva redna broja. Prvi od njih označava grupu kojoj korisnik pripada, a drugi od njih označava člana grupe. Podrazumijeva se da su svi korisnici iz iste grupe međusobno saradnici. Prema tome, redni broj grupe i redni broj člana grupe zajedno jednoznačno određuju vlasnika. Saradnici vlasnika su svi korisnici koji imaju isti redni broj grupe kao i vlasnik. U ostale korisnke spadaju svi korisnici čiji redni broj grupe je različit od rednog broja grupe vlasnika. Posebna grupa se rezerviše za administratore.

Numerička oznaka korisnika pojednostavljuje provjeru njegovog prava pristupa datoteci. Ipak, da se takva provjera ne bi obavljala prilikom svakog pristupa datoteci, umesno je takvu provjeru obaviti samo pre prvog pristupa. Zato se uvodi posebna operacija otvaranja datoteke, koja prethodi svim drugim operacijama (kao što su pisanje ili čitanje datoteke). Pomoću operacije otvaranja se saopštava i na koji način korisnik namerava da koristi datoteku. Ako je njegova namera u skladu sa njegovim pravima, otvaranje datoteke je uspešno, a pristup datoteci je dozvoljen, ali samo u granicama iskazanih namera. Pored operacije otvaranja, potrebna je i operacija zatvaranja datoteke, pomoću koje korisnik saopštava da završava korišćenje datoteke. Nakon zatvaranja datoteke, pristup datoteci nije dozvoljen do njenog narednog otvaranja. Numerička oznaka vlasnika datoteke i prava pristupa korisnika iz pojedinih klasa predstavljaju atribute datoteke.

1.4 POJAM PROCESA (PROCESS) Za pojam procesa su vezani aktivnost (izvršenje), slika i atributi.

• Aktivnost procesa odgovara angažovanju procesora na izvršavanju korisničkog programa. • Slika procesa pokriva adresni prostor procesa sa naredbama izvršavanog programa,

stekom i podacima koji se obrađuju u toku izvršavanja programa. • U atribute procesa spadaju, na primjer, stanje procesa i njegov prioritet. Atributi procesa

se čuvaju u deskriptoru procesa.

STANJA I PRIORITET PROCESA Stanja procesa su:

• aktivan (running), • čeka (blocked) i • spreman (ready).

Proces je aktivan kada procesor izvršava program. On čeka kada nisu ispunjeni neophodni preduslovi za obradu podataka. Proces je spreman kada samo zauzetost procesora onemogućuje izvršavanje programa.

Od prioriteta procesa zavisi kada će spreman proces da postane aktivan. Podrazumijeva se da je aktivan uvek proces sa najvišim prioritetom, jasno pod pretpostavkom da se razmatra jednoprocesorski računar (sa jednim procesorom namjenjenim za izvršavanje korisničkih programa). Ako postoji nekoliko procesa najvišeg prioriteta, tada je interesantna ravnomerna raspodela procesorskog vremena između aktivnog i spremnih procesa najvišeg prioriteta. Ona se postiže ako aktivni proces prepušta procesor spremnom procesu najvišeg prioriteta čim istekne unapred određeni vremenski interval, koji se naziva kvantum (quantum). Trenutke isticanja kvantuma označavaju prekidi sata. Obrada prekida sata izaziva prevođenje aktivnog procesa u

Page 15: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 12

stanje spreman i preključivanje procesora na onaj od ostalih spremnih procesa najvišeg prioriteta koji je najduže u stanju spreman.

ULOGA PROCESA

Procesi omogućuju bolje iskorišćenje računara (procesora) i njegovu bržu reakciju

nadešavanje vanjskih događaja. Istovremeno postojanje više procesa omogućuje da se procesor preključi sa aktivnog procesa na spreman proces čim aktivni proces pređe u stanje čeka. Na taj način procesor ostaje iskorišćen dok god ima spremnih procesa.

Bržu reakciju na dešavanje vanjskih događaja omogućuje proces najvišeg prioriteta. Dok ovakav hitni proces čeka da se desi spoljnji događaj, aktivan je neki drugi manje prioritetan proces. Kada se desi spoljnji događaj, obrada odgovarajućeg prekida prevodi hitni proces iz stanja čeka u stanje spreman. To dovodi do preključivanja procesora sa prekinutog procesa na hitni proces. Hitni proces u toku svoje aktivnosti odreaguje na dešavanje vanjskog događaja. Nakon toga on prepušta procesor prekinutom procesu, jer se vraća u stanje čeka dok se ne desi novi vanjski događaj, jasno, ako se u međuvremenu nisu desili novi vanjski događaji. Ako su se takvi događaji desili, njihova dešavanja se registruju u obradama odgovarajućih prekida (za šta je potrebno da su prekidi omogućeni u toku aktivnosti hitnog procesa). Tada, nakon reakcije na prvi događaj, hitni proces ne prelazi u stanje čeka dok ne odreaguje na sve u međuvremenu registrovane događaje.

POJAM NITI (THREAD)

Aktivnost procesa karakteriše redosled u kome se izvršavaju naredbe programa. Ovaj

redosled se naziva trag (trace) procesa. Trag procesa može da se prikaže kao nit (thread) koja povezuje izvršene naredbe u redosledu njihovog izvršavanja. Ako se za proces veže jedna nit, tada ona ima atribute procesa, znači njegovo stanje i njegov prioritet. U toku aktivnosti niti izvršavaju se naredbe koje ona povezuje.

Vezivanje za proces jedne niti je posledica pretpostavke da proces odgovara izvršavanju sekvencijalnog programa. Za sekvencijalni program se podrazumijeva da se naredbe izvršavaju jedna za drugom u unapred zadanom redosledu, koji je zavisan od obrađivanih podataka. Ovakve naredbe obrazuju sekvencu naredbi.

Praksa pokazuje da je korisno za procese vezati više od jedne niti. U tom slučaju stek, prioritet i stanje se ne vezuju za proces, nego za njegove niti. Znači, svaka od niti procesa ima svoj stek, svoj prioritet i svoje stanje, odnosno svoj deskriptor. Na primjer, za editiranje teksta su važne, između ostalog, dve aktivnosti. Prva je posvećena interakciji sa korisnikom, a druga je zadužena za periodično smeštanje unesenog teksta na masovnu memoriju (radi sprečavanja gubljenja teksta). Ako je za editorski proces vezana jedna nit, tada se pomenute aktivnosti odvijaju jedna za drugom (sekvencijalno). Znači, za vreme trajanja druge aktivnosti nije moguća interakcija sa korisnikom, što je ozbiljan nedostatak. On se može otkloniti, ako se za editorski proces vežu dve niti raznih prioriteta. Prioritetnija (hitna) nit se pridružuje prvoj aktivnosti, a manje prioritetna (pozadinska) nit se pridružuje drugoj aktivnosti. Pod pretpostavkom da hitna nit čeka na interakciju sa korisnikom, pozadinska nit može biti aktivna sve dok, na primjer, pritisak dirke na tastraturi ne najavi početak interakcije sa korisnikom. Tada obrada odgovarajućeg prekida prevodi hitnu nit u stanje spremna, pa se procesor preključuje sa prekinute pozadinske niti na hitnu nit. U toku svoje aktivnosti hitna nit obavi interakciju sa korisnikom i vrati se u stanje čeka, što dovodi do preključivanja procesora na prekinutu pozadinsku nit. Zahvaljujući

Page 16: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 13

preključivanju procesora sa pozadinske niti na hitnu nit, u toku editiranja nema perioda bez odziva. Procesi sa više niti odgovaraju izvršavanju konkurentnih programa u kojima istovremeno postoji više relativno nezavisnih sekvenci naredbi. 1.5 STRUKTURA OPERATIVNOG SISTEMA Unutrašnji izgled ili struktura operativnog sistema se može lakše sagledati ako se zauzme stanovište da je zadatak operativnog sistema da upravlja fizičkim i logičkim delovima računara. Pošto fizički delovi računara obuhvataju procesor, kontrolere i radnu memoriju, a logički delovi računara obuhvataju fajlove i procese, sledi da se operativni sistem može raščlaniti na module namijenjene upravljanju:

• procesorom, • kontrolerima I/O, • radnom memorijom, • fajlovima i • procesima.

MODUL ZA UPRAVLJANJE PROCESOROM

Zadatak modula za upravljanje procesorom je da preključuje procesor sa jedne niti na

drugu. Pri tome ove niti mogu pripadati istom ili raznim procesima. Sa stanovišta modula za upravljanje procesorom ključna razlika između niti koje pripadaju istom procesu i niti koje pripadaju raznim procesima je da su prve niti u adresnom prostoru istog procesa, dok su druge niti u adresnim prostorima raznih procesa. Zato, u toku preključivanja procesora između niti istog procesa ne dolazi do izmjene adresnog prostora procesa, pa je ovakvo preključivanje brže (kraće) nego preključivanje procesora između niti raznih procesa. Modul za upravljanje procesorom ostvaruje svoj zadatak tako što uvodi operaciju preključivanja. Pozivi te operacije dovode do preključivanja procesora.

MODUL ZA UPRAVLJANJE KONTROLERIMA I/O UREĐAJA

Zadatak modula za upravljanje kontrolerima je da upravlja raznim ulaznim i izlaznim

uređajima koji su zakačeni za kontrolere. U ovakve ulazno/izlazne uređaje spadaju tastatura, miš, ekran, štampač, odnosno uređaji masovne memorije kao što su diskovi, diskete, CD/DVD ROM-ovi, .... Pošto upravljanje I/O uređajima zavisi od vrste uređaja, modul za upravljanje kontrolerima se sastoji od niza komponenti, nazvanih drajveri. Svaki od drajvera je specijalizovan da opsluži jednu klasu ulazno/izlaznih uređaja i ima zadatak da konkretan ulazno/izlazni uređaj predstavi u apstraktnom obliku sa jednoobraznim i pravilnim načinom korišćenja. Tako, na primjer, drajver diska stvara predstavu apstraktnog diska. Za razliku od stvarnog diska, apstraktni disk, umjesto staza i sektora, sadrži niz blokova koji su označeni rednim brojevima. Drajver diska, preslikavajući blokove u staze i sektore, omogućuje pristup blokovima apstraktnog diska, radi ulaza (preuzimanja podataka), odnosno radi izlaza (pohranjivanja podataka).

Modul za upravljanje kontrolerima ostvaruje svoj zadatak tako što uvodi (drajverske) operacije ulaza i izlaza. Pozivi ovih operacija dovode do prenosa podataka na relaciji između radne memorije i ulazno/izlaznih uređaja. U okviru ovih operacija se zaustavlja aktivnost niti za

Page 17: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 14

čiji račun se operacije obavljaju ako, zbog sporosti ulazno/izlaznog uređaja, nije moguće odmah obaviti zatraženi ulaz ili izlaz. Tada se poziva operacija preključivanja. Do nastavaka aktivnosti niti može doći čim ulazno/izlazni uređaj javi, posredstvom mehanizma prekida, da je moguće obavljanje zatražene operacije ulaza ili izlaza. Obradu ovakvih prekida preuzimaju obrađivači prekida, koji, takođe, ulaze u sastav drajvera. Oni omogućuju nastavak aktivnosti niti. Radi toga se, opet, poziva operacija preključivanja. Pošto pozivi operacija preključivanja mogu biti posledica dešavanja prekida, trenutak preključivanja je u opštem slučaju nepredvidiv kao što su nepredvidivi i trenuci dešavanja prekida.

MODUL ZA UPRAVLJANJE RADNOM MEMORIJOM

Zadatak modula za upravljanje radnom memorijom je da vodi evidenciju o slobodnoj

radnoj memoriji radi zauzimanja zona slobodne radne memorije, odnosno radi oslobađanja prethodno zauzetih zona radne memorije. Kada podržava virtuelnu memoriju, ovaj modul se brine i o prebacivanju sadržaja stranica između radne i masovne memorije. To znači da se iz modula za upravljanje radnom memorijom pozivaju operacije ulaza i izlaza. Modul za upravljanje radnom memorijom ostvaruje svoj zadatak tako što uvodi operacije zauzimanja i oslobađanja. Pozivi tih operacija dovode do zauzimanja i oslobađanja zona radne memorije.

MODUL ZA UPRAVLJANJE FAJLOVIMA

Zadatak modula za upravljanje fajlovimaa je da omogući otvaranje i zatvaranje fajlova, odnosno čitanje i pisanje njihovog sadržaja. Radi toga ovaj modul vodi evidenciju o blokovima (masovne memorije) u kojima se nalaze sadržaji fajlova. On se, takođe, brine i o prebacivanju delova sadržaja fajlova između radne i masovne memorije. To znači da se iz modula za upravljanje fajlovima pozivaju operacije ulaza i izlaza. Pošto su za pomenuto prebacivanje delova sadržaja fajlova potrebni baferi, iz modula za upravljanje fajlovima se poziva i operacija zauzimanja, radi rezervisanja dovoljno velikog baferskog prostora. Modul za upravljanje fajlovima ostvaruje svoj zadatak tako što uvodi operacije otvaranja, zatvaranja, čitanja i pisanja. Pozivi poslednje dve operacije dovode do prenosa sadržaja fajlova na relaciji između radne i masovne memorije.

MODUL ZA UPRAVLJANJE PROCESIMA

Zadatak modula za upravljanje procesima je da omogući stvaranje i uništavanje procesa, kao i stvaranje i uništavanje njihovih niti. Na taj način postaje moguće da istovremeno postoji više procesa (višeprocesni režim rada, multiprocessing), odnosno više niti (multithreading), a to je preduslov za:

1. za bolje iskorišćenje procesora, 2. za istovremenu podršku većeg broja korisnika (višekorisnički režim rada, multiuser

environment) i 3. za bržu reakciju računara na vanjske događaje. Iz modula za upravljanje procesima se poziva operacija čitanja, radi preuzimanja sadržaja

izvršnih fajlova, koji su potrebni za svaranje slike procesa. Pošto je za stvaranje slike procesa potrebna radna memorija, iz modula za upravljanje procesima se pozivaju i operacije zauzimanja, odnosno oslobađanja. Modul za upravljanje procesima ostvaruje svoj zadatak tako

Page 18: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 15

što uvodi operacije stvaranja i uništavanja. Pozivi tih operacija dovode do stvaranja i uništavanja procesa, odnosno niti.

1.6 PODJELA OPERATIVNIH SISTEMA PREMA STRUKTURI

SLOJEVITI OPERATIVNI SISTEM Prethodno opisani moduli operativnog sistema formiraju hijerarhiju, sastavljenu od 5 slojeva. Svaki od slojeva je predodređen da sadrži jedan od modula operativnog sistema. Raspodjelu modula po slojevima diktira pravilo koje nalaže da se iz svakog sloja pozivaju samo operacije uvedene u nižim slojevima hijerarhije. Primjena pomenutog pravila dovodi do smeštanja modula za upravljanje procesima u sloj na vrhu hijerarhije. U prvi niži sloj dospeva modul za upravljanje fajlovima, dok je sledeći niži sloj namjenjen modulu za upravljanje radnom memorijom. Predposlednji sloj hijerarhije sadrži modul za upravljanje I/O kontrolerima, a u poslednjem sloju nalazi se modul za upravljanje procesorom. Na ovaj način je obrazovan slojeviti operativni sistem, prikazan na slici 1.5

modul za upravljanje procesima modul za upravljanje fajlovima

modul za upravljanje radnom memorijom modul za upravljanje kontrolerima modul za upravljanje procesorom

Slika 1.5 Slojeviti operativni sistem

Svrha predstavljanja operativnog sistema kao hijerarhije slojeva je motivisana željom da

se zadatak operativnog sistema raščlani na više jednostavnijih međusobno nezavisnih zadataka i zatim svaki od njih objasni zasebno.

Sistemski pozivi Slojeviti operativni sistem dozvoljava pozivanje (odnosno korišćenje) operacija stvaranja

i uništavanja (procesa) samo iz sloja, smeštenog iznad hijerarhije njegovih slojeva. Prema tome, postojanje procesa je isključivo vezano za ovaj, korisnički sloj.

Iako su svi procesi locirani u korisničkom sloju, oni su međusobno jasno razdvojeni zahvaljujući činjenici da svaki od procesa poseduje zaseban adresni prostor, koji se naziva korisnički prostor (user space). Na istom principu se zasniva i razdvajanje procesa od operativnog sistema. Ali, razdvojenost korisničkih prostora od adresnog prostora operativnog sistema, koji se naziva sistemski prostor (kernel space), sprečava da se pozivi operacija operativnog sistema zasnivaju na korišćenju poziva potprograma. Zato je neophodno uvođenje posebnog mehanizma sistemskih poziva koji omogućuje prelazak iz korisničkog prostora u sistemski prostor radi poziva operacija operativnog sistema. Sistemski pozivi zahtjevaju korišćenje specifičnih asemblerskih naredbi i zbog toga se sakrivaju unutar sistemskih

Pozivi operacija

Page 19: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 16

potprograma. Neki od sistemskih potprograma, pored sistemskih poziva, sadrže i specifične obrade podataka, kao što je, na primjer, pretvaranje brojeva iz znakovnog u binarni oblik i obrnuto kod formatiranog ulaza ili izlaza. Svaki od sistemskih potprograma je namjenjen za pozivanje jedne od operacija operativnog sistema, namjenjenih korisničkom sloju. Ovakve operacije se nazivaju sistemske operacije, da bi se razlikovale od ostalih (internih) operacija operativnog sistema, namjenjenih samo za koiršćenje unutar operativnog sistema. Sistemski potprogrami obrazuju sistemsku biblioteku. Prema tome, pozivanje sistemskih operacija se svodi na pozivanje potprograma iz sistemske biblioteke. Sistemska biblioteka se isporučuje uz operativni sistem da bi se koristila u postupku linkovanja. U toku linkovanja njeni potprogrami se vezuju za objektni oblik korisničkog programa radi stvaranja izvršnog oblika korisničkog programa, koji tako postaje spreman za saradnju sa operativnim sistemom.

Zahvaljujući sistemskim potprogramima, odnosno sistemskoj biblioteci, operativni sistem predstavlja deo korisničkog programa, iako nije za njega direktno linkovan. Zato se može smatrati da obavljanje sistemskih operacija predstavlja sastavni deo izvršavanja korisničkog programa, odnosno pripada aktivnosti procesa, vezanog za ovo izvršavanje. To, uz istovremeno postojanje više procesa i nepredvidivost preključivanja, uzrokuje da je moguće da istovremeno postoji više procesa, koji su započeli, a nisu završili svoju aktivnost u okviru operativnog sistema (odnosno, čija aktivnost je zaustavljena unutar operativnog sistema).

Interakcija korisnika i operativnog sistema Dok sistemska biblioteka omogućuje korišćenje operativnog sistema na programskom

nivou, komande komandnog jezika omogućuju korišćenje operativnog sistema na interaktivnom nivou. Komande komandnog jezika precizno opisuju upravljanja procesima i datotekama. One tako lišavaju korisnika potrebe da poznaje mehanizme, koji se pokreću unutar operativnog sistema radi upravljanja procesima i fajlovima. Za preuzimanje i interpretiranje komandi komandnog jezika zadužen je poseban proces iz korisničkog sloja, koji se naziva interpreter komandnog jezika (shell). Interpreter komandnog jezika posreduje između korisnika i operativnog sistema. U opštem slučaju u posredovanju obično učestvuju i procesi koje stvara interpreter komandnog jezika, da biim prepustio izvršavanje prepoznatih komandi.

MONOLITSKI SISTEMI

Iako je raslojavanje operativnog sistema u hijerarhiju slojeva moguće uspešno primjeniti i prilikom pravljenja operativnog sistema, u praksi se uglavnom sreću monolitni (monolithic) operativni sistemi. Monolitni operativni sistemi nemaju pravilnu strukturu kao slojeviti operativni sistemi, jer se sastoje od modula čija saradnja nije ograničena pravilima kao kod slojevitih operativnih sistema. To znači da se iz svakog od modula monolitnih operativnih sistema mogu slobodno pozivati operacije svih ostalih modula. Ovo je dosad najviše korišćena organizacija i može se sa punim pravo nazvati “Velika zbrka”. Struktura je takva da uopšte nema strukture. Operativni sistem je napisan kao skup procedura, od kojih svaka može pozvati bilo koju drugu proceduru kad god joj zatreba. Što se tiče sakrivanja informacija, to ovde uopšte ne postoji, tj. svaka procedura je vidljiva u odnosu na bilo koju drugu proceduru, za razliku od strukture koja sadrži module ili pakete, u kojoj je većina informacija sakrivena unutar modula, tako da se samo u određenim tačkama mogu pozvati van modula. Čak je i u monolitskim sistemima moguće postići malo strukturnosti:

Page 20: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 17

1. Glavni program koji priziva zahtjevanu uslužnu proceduru. 2. Skup uslužnih procedura koje izvršavaju pozive sistema. 3. Skup korisničkih procedura koje pomažu uslužnim procedurama.

U ovom modelu, za svaki poziv sistema postoji jedna uslužna procedura koja odrađuje taj

poziv. Korisničke procedure rade stvari koje su potrebne nekolicini uslužnih procedura, kao što je uzimanje podataka iz korisničkih programa i slično.

VIRTUELNE MAŠINE Ovaj sistem se razvio iz potrebe mnogih korisnika prvih operativnih sistema, pre svega OS/360, za vremenskim multipleksiranjem. Prvi oficijalni IBM-ov operativni sistem koji je podržavao vremensko multipleksiranje bio je TSS/360. Ovaj sistem je bio previše velik i spor, a kasnije je napušten jer se pokazalo da je za njegov razvoj utrošena prevelika svota novca. Međutim, grupa u IBM-ovom naučnom centru u Kembridžu kasnije razvija drugačiji operativni sistem, koji je vrlo brzo prihvaćen i koji se i danas koristi u preostalim mainframe-ovima (prve mašine koje koriste tranzistore umjesto vakuumskih cevi). Ovaj sistem, prvo nazvan CP/CMS a kasnije preimenovan u VM/370, je zasnovan na zapažanju da sistem sa vremenskim multipleksiranjem obezbijeđuje (1) multiprogramiranje i (2) proširenu mašinu sa pogodnijim interfejsom od samog hardvera. Suština VM/370 je da potpuno razdvoji ove dve funkcije. Srce sistema, poznato kao monitor virtuelne mašine, radi na čistom hardveru i obavlja multipleksiranje, obezbijeđujući ne jednu, već nekoliko virtuelnih mašina na sledećem, višem nivou, kao što je prikazano na slici 1.6. Za razliku od drugih operativnih sistema ove virtuelne mašine nisu proširene mašine, sa fajlovima i ostalim apstrakcijama, već predstavljaju čiste kopije hardvera, uključujući kernel/korisnički mod, I/O, interrupt-e i sve što ima realna mašina.

Slika 1.6. Struktura VM/370 sa VMS-ovima

Zbog te svoje osobine na svakoj od njih može da radi bilo koji operativni sistem, kao što bi na čistom hardveru. Na nekima rade potomci OS/360, a na drugima interaktivni jednokorisnički sistem zvani CMS (Konverzacioni monitor sistem) za interaktivno multipleksiranje. Kada CMS program izvršava poziv sistema, taj poziv upada u operativni sistem sopstvene virtuelne mašine, a ne u VM/370. CMS onda poziva normalne hardverske I/O instrukcije. Te instrukcije hvata VM/370 i izvršava ih kao deo svoje simulacije pravog hardvera. Kompletnim razdvajanjem funkcija multiprogramiranja i obezbijeđivanja proširene mašine, svaki od delova može biti jednostavniji, fleksibilniji i lakši za održavanje.

Page 21: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 18

Danas se ideja virtuelne mašine puno koristi i to u različitim kontekstima. Možda najčešća upotreba je izvršavanje MS-DOS programa na Pentium-ima. Pošto su uvideli potrebu korisnika za upotrebom starog sofvera na novom hardveru, dizajneri softvera za Pentium su obezbijedili virtuelni 8086 mod na Pentium-u. U tom modu se mašina ponaša kao 8086, uključujući 16-bitno adresiranje i ograničenje na 1 MB. Ovaj mod koriste Windows i drugi operativni sistemi za izvršavanje MS-DOS programa. Od drugih upotreba naglasićemo samo JAVA programe koji se izvršavaju pomoću virtuelnih mašina.

EXOKERNEL-i Kod VM/370 svaki korisnički proces je dobijao kopiju pravog kompjutera. Sa virtuelnim 8086 modom na Pentium-u svaki korisnički proces je dobijao kopiju različitog kompjutera. Idući korak dalje, napravljen je sistem koji svakom korisniku daje kopiju kompjutera, ali ne sa svim resursima, već samo sa jednim delom. Tako jedna virtuelna mašina može dobiti blokove diska od 0 do 1023, druga od 1024 do 2047, itd. U najnižem sloju softvera je program zvani exokernel, koji se izvršava u kernel modu. Njegov zadatak je da alocira resurse za virtuelne mašine i onda provjerava njihove pokušaje za korišćenje tih resursa, da bi se uverio da nijedna mašina ne pokušava da koristi resurs tuđe mašine. Svaka virtuelna mašina može imati svoj operativni sistem kao kod VM/370, s tim što je ograničena na korišćenje samo onog dela resursa kojeg zahtjeva i koji je alociran za nju. Prednost ovoga dizajna je u tome što druge virtuelne mašine misle da poseduju čitav disk, sa blokovima od 0 do nekog maksimuma, tako da monitor virtuelne mašine mora vršiti remapiranje adresa diska (i svih drugih resursa). Kod exokernel-a je to remapiranje nepotrebno i on samo vodi računa o tome kojoj mašini je dodeljen koji deo resursa.

KLIJENT–SERVER VM/370 dobija u jednostavnosti premeštanjem velikog dela koda tradicionalnog operativnog sistema (implementirajući proširenu mašinu) na viši nivo, CMS. Ipak, VM/370 je i dalje kompleksan program zbog simulacije velikog broja 370-ica, što uopšte ne predstavlja jednostavan posao. Trend u modernim operativnim sistemima je premeštanje koda u više nivoe, na taj način ga otklanjajući iz kernel moda, ostavljajući minimalni mikrokernel. To se obično radi implementiranjem većeg dela sistema u korisničke procese. Da bi dobio uslugu, korisnički proces (sad proces klijent) šalje zahtjev procesu serveru, koji odrađuje posao i vraća odgovor. U ovom modelu sve što kernel radi je komunikacija između klijenta i servera.

Slika 1.7 Klijent-server model

Page 22: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 19

Ovakvom podelom sistema na delove, od kojih se svaki bavi jednim aspektom sistema, kao što je fajl servis, proces servis, terminal servis ili servis memorije, svaki deo postaje mali i upravljiv. Štaviše, pošto svi serveri rade kao procesi u korisničkom modu oni nemaju direktan pristup hardveru. U slučaju da se pojavi bag u fajl serveru, taj server može pasti, ali to obično ne znači da će pasti čitava mašina. Druga prednost ovoga modela je prilagodljivost upotrebi u distributivnim sistemima. Naime, ako klijent komunicira sa serverom šaljući mu poruke, on ne mora da zna da li je ta poruka prihvaćena i odrađena u okviru iste mašine ili je poslata preko mreže serveru na udaljenoj mašini. Što se klijenta tiče, ista stvar se dešava u oba slučaja: zahtjev je poslat i odgovor je stigao.

Page 23: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 20

2. SLOJEVI OPERATIVNOG SISTEMA 2.1 SLOJ ZA UPRAVLJANJE PROCESIMA Osnovni zadaci sloja za upravljanje procesima su stvaranje i uništenje procesa. Stvaranje procesa obuhvata stvaranje njegove slike i njegovog deskriptora, kao i pokretanje njegove aktivnosti. Uništenje procesa obuhvata uništenje njegove slike i njegovog deskriptora, kao i zaustavljanje njegove aktivnosti. Pored sistemskih operacija stvaranja i uništenja procesa, potrebne su i sistemske operacije za izmjenu atributa deskriptora procesa (na primjer, za izmjenu radnog direktorijuma procesa).

Slika procesa obuhvata niz lokacija radne memorije sa uzastopnim (logičkim) adresama u kojima se nalaze izvršavane mašinske naredbe, promenljive i stek. Slika procesa je prikazana na slici 2.1

mašinske naredbe

najniža adresa

promenljive

slobodna radna memorija procesa

stek

najviša adresa

Slika 2.1 Grafička predstava slike procesa

Podrazumijeva se da slika procesa započinje od lokacije radne memorije sa najnižom

adresom, od koje započinju mašinske naredbe, a završava na lokaciji radne memorije sa najvišom adresom, na kojoj započinje stek. Pri tome se podrazumijeva da se stek širi (puni) u smeru nižih adresa. Iza mašinskih naredbi dolaze statičke promenljive (i to prvo inicijalizovane, pa neinicijalizovane). Između ovih promenljivih i steka se nalazi slobodna radna memorija procesa. Ona je na raspolaganju procesu za stvaranje dinamičkih promenljivih, ali i za širenje (punjenje) steka. Svi dinamički zahtjevi za zauzimanjem radne memorije, postavljeni u toku aktivnosti procesa, se zadovoljavaju samo na račun slobodne radne memorije procesa.

Ovakva organizacija slike procesa uslovljava da proces prvo ugrozi svoju aktivnost, kada njegovi zahtjevi za radnom memorijom nadmaše njegovu raspoloživu slobodnu radnu memoriju. Na primjer, ako, prilikom širenja steka, ne postoji način da se automatski ustanovi da su zahtjevi za radnom memorijom nadmašili slobodnu radnu memoriju procesa, tada dolazi do preklapanja

Page 24: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 21

steka i promenljivih, sa fatalnim ishodom po aktivnost procesa. Pored slike, za aktivnost procesa je vazan i deskriptor procesa, koji sadrži atribute

procesa. Ovi atributi karakterišu aktivnost procesa. Oni obuhvataju: 1. stanje procesa (spreman, aktivan, čeka) 2. sadržaje procesorskih registara (zatečene u njima prije poslednjeg preključivanja procesora sa procesa) 3. numeričku oznaku vlasnika procesa 4. oznaku procesa stvaraoca 5. trenutak pokretanja aktivnosti procesa 6. ukupno trajanje aktivnosti procesa (odnosno, ukupno vreme angažovanja procesora) 7. podatke o slici procesa (njenom položaju u radnoj memoriji i njenoj veličini) 8. podatke o fajlovima koje proces koristi 9. podatak o radnom direktorijumu procesa 10. razne podatke neophodne za upravljanje aktivnošću procesa (poput prioriteta procesa ili položaja sistemskog steka procesa koga koristi operativni sistem u toku obavljanja sistemskih operacija). SISTEMSKE OPERACIJE ZA STVARANJE I UNIŠTENJE PROCESA

Za stvaranje procesa potrebno je pristupiti odgovarajućoj izvršnoj datoteci sa inicijalnom

slikom procesa, koja, između ostalog, sadrži mašinske naredbe i početne vrednosti (inicijalizovanih) statičkih promenljivih odgovarajućeg programa, ali i podatak o veličini (pojedinih djelova) slike procesa. Takođe, potrebno je zauzeti deskriptor procesa, kao i dovoljno veliku zonu radne memorije za sliku procesa. Sve to, kao i pravljenje slike procesa na osnovu njegove inicijalne slike, odnosno popunjavanje atributa njegovog deskriptora, spada u nadležnost sistemske operacije stvaranja procesa.

Ovu operaciju poziva proces stvaralac i ona se obavlja u toku njegove aktivnosti. U okviru poziva sistemske operacije stvaranja procesa kao argument se navodi putanja odgovarajuće izvršne datoteke. Svi atributi deskriptora stvaranog procesa ne moraju biti navođeni u okviru poziva sistemske operacije stvaranja procesa, jer se jedan njihov dio nasleđuje iz deskriptora procesa stvaraoca (na primjer, numerička oznaka vlasnika procesa, podatak o radnom direktorijumu procesa ili njegov prioritet), a jedan deo nastaje u toku stvaranja procesa (na primjer, podaci o slici procesa). Kada se, u okviru stvaranja procesa, stigne do pokretanja njegove aktivnosti, moguće je preključivanje procesora sa procesa stvaraoca na stvarani proces. To se desi, ako je prioritet stvaranog procesa viši od prioriteta procesa stvaraoca. U tom slučaju, proces stvaralac dospeva među spremne procese. Inače tamo dospeva stvarani proces.

Razlozi za stvaranje novog procesa su : • nova grupa zadataka • prijavljivanje na sistem • potreba OS da omogući neki servis • potreba tekućeg procesa za novim procesom

Za uništenje procesa potrebno je osloboditi njegov deskriptor i zonu radne memorije sa

njegovom slikom. Ovo spada u nadležnost sistemske operacije uništenja procesa. Nju automatski poziva proces na kraju svoje aktivnosti, čime izaziva svoje samouništenje. Uništenje procesa se

Page 25: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 22

završava preključivanjem procesora sa uništavanog na neki od spremnih procesa. U okviru poziva sistemske operacije uništenja procesa uputno je predvideti argument, posredstvom koga uništavani proces može da saopšti svom stvaraocu svoje završno stanje, odnosno informaciju da li je aktivnost uništavanog procesa bila uspešna ili ne. Jasno, da bi proces stvaralac mogao iskoristiti ovakvu povratnu informaciju od stvorenog procesa, on mora da, u okviru poziva sistemske operacije stvaranja procesa, posebnim argumentom zatraži zaustavljanje svoje aktivnosti (i tako omogući preključivanje procesora na stvarani proces). U ovom slučaju, proces stvaralac ne dospeva među spremne procese, nego među procese u stanju čekanja, jer čeka kraj aktivnosti stvorenog procesa. Takođe, u ovom slučaju sistemska operacija uništenja stvorenog procesa ima i zadatak da prevede proces stvaralac među spremne procese i tako omogući nastavak njegove aktivnosti.

Razlozi za uništenje procesa su : • Uspješno završenje procesa • Prekoračenje vremenskog limita yza izvršavanje • Nedostupnost radne memorije • Pokušaj pristupa nedozvoljenoj memorijskoj lokaciji • Greška u zaštiti procesa • Aritmetička greška • Predugo čekanje na neki događaj • Greška sa I/O • Loša instrukcija • Privilegovana instrukcija • Nedostatak podataka • Intervencija operatera ili OS • Završetak procesa stvaraoca • Zahtjev stvaraoca

Sistemska operacija uništenja procesa se automatski poziva, kada se desi nepopravljiv

prekid (izuzetak) u toku aktivnosti procesa. ZAMJENA SLIKA PROCESA

Najveći mogući broj slika procesa, koje mogu da istovremeno postoje u radnoj memoriji,

se naziva stepen multiprogramiranja (degree of multiprogramming). Što je stepen multiprogramiranja viši, to je i veća vjerovatnoća da je procesor zaposlen (jer je veća vjerovatnoća da postoji spreman proces). Stepen multiprogramiranja zavisi od veličine radne memorije. Kada broj istovremeno postojećih procesa dostigne stepen multiprogramiranja, stvaranje novih procesa postaje problematično. U ovoj situaciji moguće rešenje je da se slika nekog od (manje prioritetnih) postojećih procesa privremeno izbaci u masovnu memoriju i tako oslobodi prostor u radnoj memoriji za sliku novog procesa (predloženi pristup podrazumijeva da je broj deskriptora procesa veći od stepena multiprogramiranja i da su svi deskriptori stalno prisutni u radnoj memoriji, što ne predstavlja problem, jer deskriptori procesa ne zauzimaju mnogo radne memorije). Prethodno opisani način oslobađanja prostora za sliku procesa u radnoj memoriji uzrokuje da, uz sliku procesa u radnoj memoriji, obavezno postoji i njena kopija u masovnoj memoriji. Pošto se, u toku aktivnosti procesa, mijenja samo dio njegove slike u radnoj memoriji (jer se mijenjaju samo vrijednosti njegovih promenljivih i njegov stek), prilikom

Page 26: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 23

izbacivanja slike procesa potrebno je samo njen izmijenjeni dio prebacivati u kopiju slike u masovnoj memoriji. Ali, pri vraćanju slike u radnu memoriju, prebacuje se cijela njena kopija (da bi se u radnoj memoriji obnovila cijela slika procesa). Do vraćanja slike procesa u radnu memoriju dolazi, kada se tamo oslobodi prostor, pa je vraćanje slike jednog procesa vezano za uništavanje drugog procesa (kada se oslobađa prostor u radnoj memoriji).

Podaci o kopiji slike procesa (koja nastaje istovremeno sa slikom procesa, ili prilikom njenog prvog izbacivanja, a nestaje istovremeno sa slikom procesa) se čuvaju u deskriptoru procesa, zajedno sa podacima o slici procesa. Prilikom izbacivanja slike procesa, u deskriptoru procesa se naznačava da se njegova slika ne nalazi vise u radnoj memoriji.

Da procesi, čije su slike izbačene van radne memorije, ne bi bili dugo zapostavljeni, uputno je periodično vršiti zamjenu slika procesa (swapping), znači izbacivati sliku jednog procesa, radi ubacivanja slike drugog procesa. Za to je potrebna posebna operacija za zamjenu slika procesa. Ona ne spada obavezno u sistemske operacije. U nadležnosti ove operacije je dugoročno raspoređivanje (long term scheduling), u okviru koga se odabira proces, čija slika se izbacuje, kao i proces, čija slika se ubacuje. Važno je uočiti da se dugoročno raspoređivanje razlikuje od običnog ili kratkoročnog raspoređivanja (short term scheduling), koje među spremnim procesima odabira proces na koga se preključuje procesor.

NAČIN IZVRŠAVANJA PROCESA

Većina procesora podržava makar 2 načina izvršavanja: u kernel i korsničkom načinu rada (modu). Postoji bit u PSW registru (Program Status Word) koji označava u kom modu se izvršava proces. Kernel (system, control) mode – ovo je “privilegovani” način izvršenja instrukcija, što podrazumjeva čitanje CONTROL registra, osnovne ulazno-izlazne instrukcije, instrukcije koje se odnose na upravljanje memorijom, i pristup određenim memorijskim lokacijama. U ovom modu softver ima punu kontrolu nad procesorom i svim njegovim instrukcijama, registrima i memorijom. Korisničkim programima ovaj nivo kontrole nije potreban a iz sigurnosnih razloga nije ni poželjan. User mode - manje privilegovan mod se naziva korisnički ili USER mod zato što se korisnički programi obično izvršavaju u njemu. Ova dva moda su uvedena zbog toga što je potrebno zaštititi operativni sistem i ključne tabele operativnog sistema od korisničkih programa. Stanja procesa Procesi se mogu nalaziti u stanjim: aktivan (running), blokiran (blocked) i spreman (ready). To je model 5 stanja prikazan na slici 2.2. Prelazak iz ovih stanja se dešava ostvarenjem nekih od uslova koji su dati na slici 2.2. Ovaj model se proširuje sa dodatna 3 stanja: suspendovan (suspended), suspendovan-speman (suspended-ready) i suspendovan-blokiran (suspended-blocked). Ovaj model je mnogo bliži modernim operativnim sistemima jer uzima u obzir uvođenje virtualne memorije odnosno proširenje operativne memorije. Na slici 2.3 je dat prošireni model stanja procesa. Dodatna stanja procesa su:

- suspend - proces je obustavljen i nalazi se u sekundarnoj memoriji (swap), - blocked/suspend - proces je u sekundarnoj memoriji i čeka izvršenje neke operacije (I/O) i

Page 27: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 24

- ready/suspend - proces je u sekundarnoj memoriji ali je spreman za izvršavanje čim se učita u glavnu memoriju.

New Ready Running EXIT

Blocked

Dispatch

Time-out

Event

Wait

Event

Occurs

Admit Release

NEW

Proces još nijeucitan u

memoriju

READY

Proces jespreman zaizvršavanje

RUNNING

Proces se izvršava

BLOCKED

Proces jeblokiran do

izvršenja nekeoperacije ( I/O)

EXIT

Proces jezavršen (ili

ukinut)

New Ready Running EXIT

Blocked

Dispatch

Time-out

Event

Wait

Event

Occurs

Admit Release

NEW

Proces još nijeucitan u

memoriju

READY

Proces jespreman zaizvršavanje

RUNNING

Proces se izvršava

BLOCKED

Proces jeblokiran do

izvršenja nekeoperacije ( I/O)

EXIT

Proces jezavršen (ili

ukinut)

Slika 2.2 Model 5 stanja procesa

New

Ready Running EXIT

Blocked

Dispatch

Time-out

Event

Wait

Event

Occurs

Admit

Release

Blocked Suspend

Suspend

ActivateReady Suspend

Activate

Suspend

Event

Occurs

SuspendNew

Ready Running EXIT

Blocked

Dispatch

Time-out

Event

Wait

Event

Occurs

Admit

Release

Blocked Suspend

Suspend

ActivateReady Suspend

Activate

Suspend

Event

Occurs

Suspend

Slika 2.3 Prošireni model 5 stanja procesa

Prelaz između stanja procesa se obavljaju nakon ostvarenja nekog događaja. U većini modernih operativnih sistema ovi prelazi se dešavaju najčešće iz sledećih razloga:

- BLOCKED -> BLOCKED-SUSPENDED - ako nema spremnih procesa onda makar jedan BLOCKED proces mora da se premjesti u sekundarnu memoriju da bi oslobodio prostou za drugi proces koji nije blokiran.

- BLOCKED-SUSPENDED -> READY-SUSPENDED - ovaj prelaz desava se kada se desi događaj koji je proces čekao.

- READY-SUSPENDED -> READY - kada nema spremnih procesa u memoriji ili kada je neki READY-SUSPENDED proces većeg prioriteta od drugog READY procesa.

- READY -> READY-SUSPENDED - naravno da bi bolje bilo umjesto nekog READY procesa da se suspenduje BLOCKED proces ali ovaj prelaz je potreban ako se jedino suspendovanjem READY procesa može osloboditi dovoljno menmorije ili ako je neki

Page 28: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 25

READY proces manjeg prioriteta nego BLOCKED proces tada će OS prije suspendovati READY nego BLOCKED proces ako procijeni da bi događaj na koji BLOCKED proces ceka mogao brzo da se desi.

- NEW -> READY-SUSPENDED (READY) - kada se neki proces kreira on ne mora da ide pravo u READY stanje vec moze i u READY-SUSPENDED .

- BLOCKED-SUSPENDED -> BLOCKED - ovo se dešava samo kada je neki BLOCKED-SUSPENDED proces većeg prioriteta od READY-SUSPENDED procesa a događaj na koji čeka bi mogao brzo da se desi.

- RUNNING -> READY-SUSPENDED- OS može proces iz RUNNING stanja da prebaci i u READY-SUSPENDED i u READY stanje u zavisnosti od prioriteta ostalih READY i BLOCKED procesa.

Radi ilustracije na slici 2.4 je dat grfički prikaz dijela izvršenja 3 procesa. Instrukcije procesa A (slika) su smještene u glavnu memoriju od 5000 adrese, procesa B od 8000, a procesa C od 12000. Raspoređivač procesa je na adresama od 100. Procesor obrađuje po 6 instrukcija jednog procesa prije nego pređe na novi, jer je pretpostavka da su procesi istog prioriteta. Vidimo da je razlog prelaska sa jednog procesa na drugi: redovna smjena procesa (time out) ili nedostatak nekog podatka koji proces B pretvara u blokiran (I/O request). Na ovaj način se ostavaruje multiprocesing kod OS.

1 5000 27 120042 5001 28 120053 5002 ----------------------Time out4 5003 29 1005 5004 30 1016 5005 31 102------------------Time out 33 1037 100 34 1048 101 35 50069 102 36 500710 103 37 500811 104 38 500912 105 39 501013 8000 40 501114 8001 --------------------Time out15 8002 41 10016 8003 42 101----------------------I/O request 4310217 100 44 10318 101 45 10419 102 46 10520 103 47 1200621 104 48 1200722 105 49 1200823 12000 50 1200924 12001 51 1201025 12002 52 1201126 12003 -----------------Time out

Main Memory0

100

5000

8000

12000

Dispatcher

Process A

Process B

Process C

Slika 2.4 Praćenje izvršenja 3 procesa

UPRAVLJANJE NITIMA

Kao što smo vidjeli u prethodnoj glavi procesi mogu da se satoje iz jedne i više niti, a istovremeno procesor može da izvršava jedan ili više procesa. Na slici 2.5 je prikazano upoređenje poznatih OS sa stanovišta procesa i niti.

Page 29: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 26

Slika 2.5 Procesi i niti u raznim OS

Osnovni razlozi za korišćenje niti su: 1. Izbjegavanje uskih grla u izvršavanju programa (pristup disku, mrežna komunikacija,

prikaz audio/videa, ...) 2. Organizacija izvršavanja programa (paralelno izvršavanje više funkcija, dodjela

prioriteta prilikom izvršavanja, ...) 3. Multiprocesiranje (iskorištavanje mogoćnosti izvršavanja na više procesora

istovremeno) Prednosti korišćenje niti su: 1. Brže se kreira nit nego proces 2. Brže se prekida izvršavanje niti 3. Prebacivanje izvršavanja sa niti na nit je brže 4. Komunikacija izmedju niti je efikasnija nego komunikacija izmedju procesa (koriste

isti adresni prostor tj. memoriju, fajlove)

Slika 2.6 Modeli procesa sa jednom ili više niti

MS-DOS

Tradicionalni UNIX

Java

W2K, Linux, Solaris, ...

Page 30: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 27

Stanja niti su ista kao i stanja procesa. Upravljanje nitima može, ali i ne mora, biti u

nadležnosti sloja za upravljanje procesima. Kada je upravljanje nitima povjereno sloju za upravljanje procesima, tada operativni sistem nudi sistemske operacije za upravljanje nitima, koje omogućuju stvaranje, uništavanje i sinhronizaciju niti. U ovom slučaju, deskriptori i sistemski stek niti se nalaze u sistemskom prostoru, dok se sopstveni stek niti nalazi u korisničkom prostoru (unutar slike procesa). Na slici 2.6 su dati modeli procesa sa jednom ili više niti.

U slučaju kada upravljanje nitima nije u nadležnosti operativnog sistema, brigu o nitima potpuno preuzima konkurentna biblioteka. Pošto ona pripada slici procesa, u ovom slučaju upravljanje nitima se potpuno odvija u korisničkom prostoru (u kome se nalaze i deskriptori niti, kao i stekovi niti).

Osnovna prednost upravljanja nitima van operativnog sistema je efikasnost (jer su pozivi potprograma konkurentne biblioteke brži od poziva sistemskih operacija). Ali, kada operativni sistem ne rukuje nitima, tada poziv blokirajuće sistemske operacije iz jedne niti dovodi do zaustavljanja aktivnosti procesa kome ta nit pripada, jer operativni sistem može da pripiše sve pozive sistemskih operacija samo procesima (posto ne registruje postojanje niti). Na taj način se sprečava konkurentnost unutar procesa (jer zaustavljanje aktivnosti procesa sprečava aktivnost njegovih spremnih niti). Ova mana upravljanja nitima van operativnog sistema ozbiljno umanjuje praktičnu vrednost ovakvog pristupa.

Slika 2.7 Primjer realizacije više niti na jednom procesoru

Na slici 2.7 je dat primjer OS koji obavlja više procesa (1 i 2) “istovremeno”, a pri tome

su procesi podijeljeni na niti i ima na raspolaganju jedan procesor. Jasno je da je na ovaj način procesor maksimalno iskorišđen, a procesi se realizuju na efikasan način.

Sa stanovišta ostalih slojeva operativnog sistema nema suštinske razlike između procesa i niti, pa se u nastavku izlaganja pominju samo procesi.

Page 31: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 28

OSNOVA SLOJA ZA UPRAVLJANJE PROCESIMA

Sloj za upravljanje procesima se oslanja na sloj za upravljanje fajlovima, radi pristupa sadržaju izvrsnog fajla, ali i radi upravljanja kopijama slika procesa, jer se za njih rezerviše poseban fajl. Pored toga, sloj za upravljanje procesima se oslanja i na sloj za upravljanje radnom memorijom, radi zauzimanja i oslobađanja zona radne memorije, potrebnih za smještanje slika procesa. Na kraju, sloj za upravljanje procesima se oslanja i na sloj za upravljanje procesorom, jer do preključivanja dolazi prilikom stvaranja i uništenja procesa.

2.2 SISTEMSKI PROCESI

Za obavljanje pojedinih zadataka operativnog sistema prirodno je koristiti procese. Ovakvi procesi se nazivaju sistemski (daemon), jer su u sluzbi operativnog sistema.

NULTI PROCES

Tipičan primjer sistemskog procesa je nulti ili beskonačni (idle) proces, na koga se

procesor preključuje, kada ne postoji drugi spreman proces. Znači, beskonačan proces ima zadatak da zaposli procesor, kada nema mogućnosti za korisnu upotrebu procesora. U toku aktivnosti beskonačnog procesa izvršava se beskonačna petlja, sto znači da je beskonačan proces uvijek ili spreman ili aktivan (on ne prelazi u stanje čekanja). Njegov prioritet je niži od prioriteta svih ostalih procesa, a on postoji za sve vreme aktivnosti operativnog sistema.

PROCES DUGOROČNI RASPOREĐIVAČ

Drugi primjer sistemskog procesa je proces dugoročni raspoređivač (swapper), koji se

brine o zamjeni slika procesa (jasno, kada za to ima potrebe). On se periodično aktivira, radi pozivanja operacije za zamjenu slika procesa. Nakon toga, ovaj proces se uspava (odnosno, njegova aktivnost se zaustavlja, dok ne nastupi trenutak za njegovo novo aktiviranje). Da bi se proces uspavao (odnosno da bi se njegova aktivnost zaustavila do nastupanja zadanog trenutka), neophodna je odgovarajuća sistemska operacija. Ona pripada sloju za upravljanje kontrolerima, jer proticanje vremena registruje drajver sata. I proces dugoročni raspoređivač postoji za sve vreme aktivnosti operativnog sistema (jasno, ako ima potrebe za dugoročnim raspoređivanjem).

PROCESI IDENTIFIKATOR I KOMUNIKATOR

U sistemske procese spadaju i procesi identifikatori (login process), koji podržavaju

predstavljanje korisnika. Svaki proces identifikator opslužuje po jedan terminal, da bi posredstvom svog terminala stupio u interakciju sa korisnikom u toku njegovog predstavljanja, radi preuzimanja njegovog imena (koje se prikazuje na ekranu) i njegove lozinke (koja se ne prikazuje na ekranu). Po preuzimanju imena i lozinke, proces identifikator provjerava njihovu ispravnost i, ako je prepoznao korisnika, tada stvara proces komunikator, koji nastavlja interakciju sa korisnikom. Pri tome, proces identifikator prepušta svoj terminal stvorenom procesu komunikatoru i zaustavlja svoju aktivnost. Ona se nastavlja tek nakon završetka aktivnosti procesa komunikatora. Tada proces identifikator opet preuzima opsluživanje svog terminala, da bi podržao novo predstavljanje korisnika. Prema tome, i procesi identifikatori postoje za sve vreme aktivnosti operativnog sistema.

Page 32: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 29

Iz funkcije procesa komunikatora sledi da on ostvaruje interaktivni nivo komunikacije korisnika i operativnog sistema. Ipak, proces komunikator ne spada nužno u sistemske procese, jer njemu ne mora da odgovara samo interpreter komandnog jezika, nego i drugi programi, poput tekst editora, na primjer. U svakom slučaju, proces komunikator prihvata sve komande, koje dolaze sa terminala i tretira ih kao komande prepoznatog korisnika (koga je prepoznao proces identifikator). U skladu s tim, proces komunikator koristi prava prepoznatog korisnika za pristupe fajlovima (jer je ovaj korisnik vlasnik procesa komunikatora).

Za provjeru ispravnosti imena i lozinke korisnika, neophodno je raspolagati spiskom imena i lozinki registrovanih korisnika. Ovaj spisak se čuva u posebnoj datoteci lozinki (password file). Svaki slog ove datoteke sadrži:

1. ime i lozinku korisnika, 2. numeričku oznaku korisnika, 3. putanju korisničkog direktorijuma i 4. putanju izvršne datoteke.

Proces identifikator koristi putanju izvršne datoteke (sa inicijalnom slikom korisničkog

procesa komunikatora) u toku stvaranja procesa komunikatora. Tom prilikom on upotrebi numeričku oznaku prepoznatog korisnika kao numeričku oznaku vlasnika stvaranog procesa komunikatora, a putanju direktorijuma prepoznatog korisnika upotrebi kao (početni) radni direktorijum otvaranog procesa komunikatora.

Slogovi datoteke lozinki se, zbog jednoznačnosti, međusobno razlikuju obavezno po imenima i po numeričkim oznakama korisnika, a zbog sigurnosti i po lozinkama. Međutim, oni se mogu razlikovati po putanjama korisničkih (početnih radnih) direktorijuma, pa i po putanjama izvršnih datoteka (sa inicijalnim slikama korisničkih procesa komunikatora). Zahvaljujući tome, svaki korisnik može da ima poseban (sopstveni) radni direktorijum, ali i poseban (sopstveni) proces komunikator. Za procese komunikatore, koji su prilagođeni posebnim potrebama pojedinih korisnika (znači, kojima ne odgovara standardni interpreter komandnog jezika), se ne smatra da su sistemski procesi, jer oni ne predstavljaju sastavni deo operativnog sistema, iako obavljaju ulogu sloja za spregu sa korisnikom. Zbog ovakvih procesa komunikatora, moguće je zauzeti stanovište da sloj za spregu sa korisnikom i nije deo operativnog sistema, nego da pripada višem (korisničkom) sloju, kome, između ostalog, pripadaju i sistemski programi, kao sto su tekst editor ili kompajler.

Za proces komunikator (kao i za svaki drugi proces) prava pristupa datotekama se određuju na osnovu numeričke oznake njegovog vlasnika. Procesi, koje stvara proces komunikator (radi izvršavanja pojedinih komandi korisnika) imaju ista prava kao i proces komunikator, jer se podrazumijeva da stvoreni procesi nasleđuju numeričku oznaku vlasnika procesa stvaraoca. Prema tome, dok je u interakciji sa procesom komunikatorom, njegov vlasnik nema mogućnosti za narušavanje zaštite datoteka. Ali, ako, umjesto vlasnika, u interakciju sa procesom komunikatorom stupi neki drugi korisnik, zaštita datoteka se narušava, jer ovaj drugi korisnik dobija priliku da uživa tuđa prava pristupa datotekama (koja pripadaju vlasniku procesa komunikatora). Zato, nakon predstavljanja, korisnik ne sme prepustiti svoj terminal drugom korisniku, pre nego sto zavri aktivnost svog procesa komunikatora. Radi toga, među komandama procesa komunikatora, obavezno postoji posebna komanda, namjenjena baš procesu komunikatoru, a koja izaziva njegovo uništenje. Znači, svaki korisnik započinje rad prijavom, u toku koje se predstavi i pokrene aktivnost svog procesa komunikatora, a završi rad odjavom, u toku koje okonča aktivnost svog procesa komunikatora (komanda za zaustavljanje aktivnosti procesa komunikatora pripada komandama za upravljanje procesima).

Page 33: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 30

Za zaštitu datoteka ključno je onemogućiti neovlaštene pristupe datoteci lozinki. Prirodno je da njen vlasnik bude administrator i da jedino sebi dodeli pravo čitanja i pisanja ove datoteke. Pošto su procesi identifikatori sistemski procesi, koji nastaju pri pokretanju operativnog sistema, nema prepreke da njihov vlasnik bude administrator. Iako na taj način procesi identifikatori dobijaju i pravo čitanja i pravo pisanja datoteke lozinki, to pravo korisnici ne mogu da zloupotrebe, jer, posredstvom procesa identifikatora, jedino mogu provjeriti da li su registrovani u datoteci lozinki. Pri tome je bitno da svoja prava proces identifikator ne prenosi na proces komunikator (pa zato proces komunikator ne nasleđuje numeričku oznaku vlasnika procesa identifikatora, koji je njegov stvaralac).

Administrator bez problema pristupa datoteci lozinki, radi izmjene njenog sadržaja, jer je on vlasnik svih procesa, nastalih radi obavljanja njegovih komandi. Pošto korisnici nemaju načina da pristupe datoteci lozinki, javlja se problem kako omogućiti korisniku da sam izmjeni svoju lozinku. Taj problem se može riješiti po uzoru na proces identifikator, koga koriste svi korisnici, iako nisu njegovi vlasnici. Prema tome, ako je administrator vlasnik izvrsne datoteke sa inicijalnom slikom procesa za izmjenu lozinki, dovoljno je naznačiti da on treba da bude vlasnik i procesa nastalog na osnovu ove izvrsne datoteke. U tom slučaju, nema smetnje da korisnik, koji izazove stvaranje procesa za izmjenu lozinke, pristupi datoteci lozinki. Pri tome, proces za izmjenu lozinki dozvoljava korisniku samo da izmjeni sopstvenu lozinku, tako sto od korisnika primi njegovo ime, važeću i novu lozinku, pa, ako su ime i važeća lozinka ispravni, on važeću lozinku zameni novom.

Datoteka lozinki je dodatno zaštićena, ako su lozinke u njoj u kriptovanom (encrypted) obliku (jer tada administrator može da posmatra sadržaj datoteke lozinki na ekranu, ili da ga štampa, bez straha da to može biti zloupotrebljeno). Da bi se sprečilo pogađanje tuđih lozinki, proces identifikator (ili proces za izmjenu lozinki) treba da reaguje na vise uzastopnih neuspešnih pokušaja predstavljanja, obaveštavajući o tome administratora, ili odbijajući neko vreme da prihvati nove pokušaje predstavljanja. Takođe, korisnici moraju biti oprezni da sami ne odaju svoju lozinku lažnom procesu identifikatoru. To se može desiti, ako se njihov prethodnik ne odjavi, nego ostavi svoj proces da opsluzuje terminal i da, pri tome, oponasa proces identifikator. Ovakvi procesi se nazivaju trojanski konji (trojan horse).

Na kraju, važno je uočiti da, zbog istovremenog postojanja više procesa i nepredvidivosti preključivanja, postoji nezanemarljiva mogućnost da više procesa istovremeno pokuša da pristupi datoteci lozinki. Ako su to samo procesi identifikatori, to i nije problematično, jer oni samo preuzimaju njen sadržaj. Ali, ako ovoj datoteci (ili bilo kojoj drugoj) istovremeno pokušaju pristupiti procesi koji menjaju njen sadržaj, ili procesi koji preuzimaju i/ili menjaju njen sadržaj, rezultat pristupa je nepredvidiv, znači zavisan od redosleda pristupa i različit od rezultata potpuno sekvencijalnog pristupa. Nepredvidivost rezultata pristupa je posledica činjenice da preključivanja mogu da učine vidljivim samo delimično izmijenjen sadržaj datoteke, što je nemoguće u slučaju potpuno sekvencijalnog pristupa (kada su vidljive samo cjelovite izmjene sadraja datoteke). Vidljivost djelimično izmijenjenog sadržaja datoteke uzrokuje da ukupna izmjena može da bude posledica delimičnih izmjena, napravljenih u toku aktivnosti raznih procesa, što je neprihvatljivo. Iz istog razloga moguće je preuzimanje dela novog (izmjenjenog) i dela starog (neizmjenjenog) sadržaja datoteke, što je, takođe, neprihvatljivo. Zato je potrebno sinhronizovati procese koji pristupaju sadržaju iste datoteke.

POJAM KRIPTOGRAFIJE (CRYPTOGRAPHY)

Cilj kriptovanja teksta (kao sto je, na primjer, lozinka) je da tekst nakon kriptovanja

Page 34: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 31

ostane nerazumljiv (nečitljiv) za neupućenu osobu. Kriptovanje menja tekst po unapred dogovorenom algoritmu kriptovanja, uz korišćenje zadatog ključa kriptovanja. Tako, na primjer, ako algoritam kriptovanja vrši zamjenu znakova teksta dvocifrenim brojevima, tada ključ kriptovanja ima oblik niza dvocifrenih brojeva, koji korespondiraju znakovima (pretpostavka je da je redosled znakova unapred zadan). U ovom primjeru ključeva kriptovanja ima koliko i različitih nizova dvocifrenih brojeva koji korespondiraju znakovima. Da bi kriptovani tekst postao razumljiv, potrebno ga je dekriptovati (decrypt), odnosno vratiti u prvobitni oblik. To omogućuju algoritam dekriptovanja i ključ dekriptovanja. Ako algoritam dekriptovanja direktno i jednoznačno sledi iz algoritma kriptovanja, a ključ dekriptovanja iz ključa kriptovanja, tada je reč o simetričnoj kriptografiji (symmetric-key cryptography, secret-key cryptography). Tako, iz prethodno pomenutog primjera algoritma kriptovanja sledi da se algoritam dekriptovanja sastoji od zamene dvocifrenih brojeva odgovarajućim znakovima, a da ključ dekriptovanja ima oblik niza znakova koji korespondiraju dvocifrenim brojevima (pretpostavka je da je redosled dvocifrenih brojeva unapred zadan).

Osobina simetrične kriptografije je da poznavanje ključa kriptovanja omogućuje i dekriptovanje. Zato, kod simetrične kriptografije, ključ kriptovanja predstavlja tajnu, pa njega, na primjer, u slučaju kriptovanja i dekriptovanja lozinke zna samo administrator.

Algoritmi kriptovanja i dekriptovanja ne predstavljaju tajnu, jer je praksa pokazala da se takva tajna ne može sačuvati. Prema tome, tajnost kriptovanja teksta se zasniva na činjenici da komplikovanost algoritama kriptovanja i dekriptovanja, velika dužina ključeva kriptovanja i dekriptovanja, kao i veliki broj ovih ključeva čine praktično neizvodljivim pokušaj da se dekriptuje kriptovani tekst probanjem, jednog po jednog, svih mogućih ključeva dekriptovanja.

Simterična kriptografija nije podesna za kriptovanje poruka, jer tada ključ kriptovanja mora znati svaki pošiljalac poruke, što ga dovodi u poziciju da može da dekriptuje poruke drugih pošiljalaca. To nije moguće u asimetričnoj kriptografiji (public-key cryptography), jer je njena osobina da se iz ključa kriptovanja ne može odrediti ključ dekriptovanja, pa poznavanje ključa kriptovanja ne omogućuje dekriptovanje. Ovakav ključ kriptovanja se zove javni ključ (public key), jer je on dostupan svima. Njemu odgovarajući ključ dekriptovanja (private key) je privatan (tajan), jer je dostupan samo osobama ovlašćenim za dekriptovanje. Prema tome, svaki pošiljalac poruke raspolaže javnim ključem, da bi mogao da kriptuje poruke, dok privatni ključ poseduje samo primalac poruka, da bi jedini mogao da dekriptuje poruke. Asimetrična kriptografija se temelji na korišćenju jednostavnih algoritama kriptovanja kojima odgovaraju komplikovani algoritmi dekriptovanja. Zato je asimterična kriptografija mnogo sporija od simetrične.

2.3 SLOJ ZA UPRAVLJANJE FAJLOVIMA

Zadatak sloja za upravljanje fajlovima je da ozbezbedi punu slobodu upravljanja podacima, sadržanim u fajlovima. Ovakva sloboda podrazumijeva mogućnost proizvoljnog dodavanja podataka u datoteku, ili njihovog izbacivanja iz datoteke, kao i direktnog pristupa svakom podatku u datoteci. Punu slobodu upravljanja podacima nudi predstava sadržaja datoteke kao niza bajta, pod uslovom da se ovaj niz može, po potrebi, produžavati ili skraćivati, kao i da se bajtima iz niza može pristupati u proizvoljnom redosledu (korišćenjem rednog broja bajta za njegovu identifikaciju). Ovakva predstava datoteke dozvoljava da se iznad nje izgrade različiti pogledi na datoteku, na primjer, da se datoteka posmatra kao skup slogova iste ili različite dužine, koji se identifikuju pomoću posebnih indeksa. Oblikovanje ovakvih specijalizovanih pogleda na datoteke izlazi van okvira operativnog sistema, koji sadržaj datoteke predstavlja kao niz bajtova.

Page 35: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 32

KONTIUNALNI FAJLOVI

Sadržaji datoteka se nalaze u blokovima masovne memorije. Za bilo kakvo upravljanje ovim sadržajem neophodno je da on dospe u radnu memoriju. Zato je upravljanje bajtima sadržaja datoteke neraskidivo povezano sa prebacivanjem blokova sa ovim bajtima između radne i masovne memorije. Pri tome se bajti prebacuju iz radne u masovnu memoriju radi njihovog trajnog čuvanja, a iz masovne u radnu memoriju radi obrade. Da bi ovakvo prebacivanje bilo moguće, neophodno je da sloj za upravljanje datotekama uspostavi preslikavanje rednih brojeva bajta u redne brojeve njima odgovarajućih blokova. Ovakvo preslikavanje se najlakše uspostavlja, ako se sadržaj datoteke nalazi u susednim blokovima (čiji redni brojevi su uzastopni). Ovakve datoteke se nazivaju kontinualne (contiguous). Kod kontinualnih datoteka redni broj bloka, u kome se nalazi neki bajt, se određuje kao količnik rednog broja bajta i veličine bloka (izražene brojem bajta, koje sadrži svaki blok). Pri tome, ostatak deljenja ukazuje na relativni položaj bajta u bloku.

Kontinualne datoteke zahtjevaju od sloja za upravljanje datotekama da za svaku datoteku vodi evidenciju ne samo o njenom imenu, nego i o rednom broju početnog bloka datoteke, kao i o dužini datoteke. Ova dužina može biti izražena brojem bajta, ali i brojem blokova, koga obavezno prati podatak o popunjenosti poslednjeg bloka. Pojava da poslednji blok datoteke nije popunjen do kraja se naziva interna fragmentacija (internal fragmentation). Ova pojava je važna, jer nepopunjeni poslednji blok datoteke predstavlja neupotrebljen (i potencijalno neupotrebljiv) deo masovne memorije.

Sloj za upravljanje fajlovima obavezno vodi i evidenciju slobodnih blokova masovne memorije. Za potrebe kontinualnih datoteka bitno je da ova evidencija olakša pronalaženje dovoljno dugačkih nizova susednih blokova. Zato je podesna evidencija u obliku niza bita (bit map), u kome svaki bit odgovara jednom bloku i pokazuje da li je on zauzet (0) ili slobodan (1). U slučaju ovakve evidencije, pronalaženje dovoljno dugačkih nizova susednih blokova se svodi na pronalaženje dovoljno dugačkog niza jedinica u nizu bita koji odslikava zauzetost masovne memorije. Ovakvo pronalaženje je neizbježno pri stvaranju kontinualnih datoteka, čija veličina se zadaje prilikom njihovog stvaranja (znači, mora biti unapred poznata).

Upravljanje slobodnim blokovima masovne memorije zahtjeva sinhronizaciju (međusobnu isključivost procesa), da bi se, na primjer, izbjeglo da više procesa, nezavisno jedan od drugog, zauzme iste slobodne blokove masovne memorije.

Pojava iscepkanosti slobodnih blokova masovne memorije u kratke nizove susednih blokova otežava upravljanje kontinualnim datotakama. Ta pojava se zove eksterna fragmentacija (external fragmentation). Ona nastaje kao rezultat višestrukog stvaranja i uništenja datoteka u slučajnom redosledu, pa iza uništenih datoteka ostaju nizovi slobodnih susednih blokova, međusobno razdvojenih blokovima postojećih datoteka. Problem eksterne fragmentacije se povećava, kada se, prilikom traženja dovoljno dugačkog niza susednih blokova, pronađe niz duži od potrebnog, jer se tada zauzima (allocation) samo deo blokova u pronađenom nizu. To dovodi do daljeg drobljenja (skraćenja) nizova slobodnih susednih blokova, jer preostaju sve kraći nizovi slobodnih susednih blokova.

Eksterna fragmentacija je problematična, jer posredno izaziva neupotrebljivost slobodnih blokova masovne memorije. Na primjer, eksterna fragmentacija onemogućuje stvaranje kontinualne datoteke, čija dužina je jednaka sumi slobodnih blokova, kada oni ne obrazuju niz susednih blokova. Problem eksterne fragmentacije se može riješiti sabijanjem (compaction) svih datoteka, tako da svi slobodni blokovi budu potisnuti iza datoteka i da tako obrazuju niz susednih blokova (mana ovog postupka je njegova dugotrajnost).

Page 36: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 33

U opštem slučaju produženje kontinualne datoteke je komplikovano, jer zahtjeva stvaranje nove, veće kontinualne datoteke, prepisivanje sadržaja produžavane datoteke u novu datoteku i uništavanje produžavane datoteke (sve ovo je potrebno, jer se ne može očekivati da se neposredno iza produžavane datoteke uvek nađe dovoljno dugačak niz susednih slobodnih blokova).

RASUTI FAJLOVI

Upotrebnu vrednost kontinualnih datoteka značajno smanjuju problem eksterne fragmentacije, potreba da se unapred zna veličina kontinualnih datoteka i teškoće sa njihovim produžavanjem. Zato se umjesto kontinualnih koriste rasute (noncontiguous) datoteke, čiji sadržaj je smješten (rasut) u nesusjednim blokovima masovne memorije. Kod rasutih datoteka redni brojevi bajta se preslikavaju u redne brojeve blokova pomoću posebne tabele pristupa (file allocation table). Njeni elementi sadrže redne brojeve blokova, dok indekse ovih elemenata određuje količnik rednog broja bajta i veličine bloka. Iz prethodnog sledi da dužnu rasutih datoteka ograničava veličina tabele pristupa. Zato se veličina tabele pristupa dimenzionira tako da nadmaši i najveće praktične zahtjeve u pogledu dužine rasutih datoteka.

deskriptor rasutog fajla tabela pristupa

Slika 2.8 Grafički prikaz bitnih elemenata organizacije rasute datoteke

...

...

...

... ...

... ... blok drugog stepena indirekcije

blok prvog stepena indirekcije

p

b

b

b

b

b

0 p-1 p

p+b-1 p+b

p+b+b2-1 p+b+b2

p+b+b2 +b3-1

Page 37: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 34

Tabele pristupa se čuvaju u blokovima masovne memorije (kao, uostalom, i sadržaji datoteka). Radi manjeg zauzeća, važno je da se u blokovima masovne memorije ne čuva uvijek cijela tabela pristupa, nego samo njen neophodan (stvarno korišćen) deo. Zato se tabela pristupa dijeli u odsječke. Početni odsječak (sa p elemenata tabele pristupa) je uvijek prisutan. On je manji od bloka masovne memorije. Dodatni odsječci su prisutni samo kad su neophodni. Svaki dodatni odsječak je jednak bloku masovne memorije i može da sadrži b elemenata tabele pristupa (b > p). Prema tome, svaka rasuta datoteka zauzima jedan blok (ili njegov deo), u kome se nalazi početni odsječak tabele pristupa sa p njenih elemenata. Za ovu tabelu se, po potrebi, zauzima jos jedan blok sa dodatnim odsečkom, u kome se nalazi narednih b elemenata tabele pristupa. Kada zatreba još dodatnih odsječaka, za tabelu pristupa se zauzima poseban blok prvog stepena indirekcije. On sadrži do b rednih brojeva blokova sa dodatnim odsječcima. U svakom od njih se nalazi b novih elemenata tabele pristupa. Na kraju, po potrebi, za ovu tabelu se zauzima poseban blok drugog stepena indirekcije. On sadrži do b rednih brojeva blokova prvog stepena indirekcije. Svaki od njih sadrži do b rednih brojeva blokova sa dodatnim odsječcima, a u svakom od njih se nalazi b novih elemenata tabele pristupa. Prema tome, ukupno ima 1+b+b2 dodatnih odsečaka (svaki sa b elemenata tabele pristupa).

Podaci, kao što su sadržaj početnog odsječka tabele pristupa i redni broj njenog prvog dodatnog odsječka, kao i redni brojevi blokova prvog i drugog stepena indirekcije, obrazuju deskriptor rasute datoteke. Pored toga, ovaj deskriptor obuhvata i dužinu rasute datoteke, jer i kod nje poslednji blok njenog sadržaja ne mora biti popunjen do kraja. Slika 2.8 sadrži grafički prikaz bitnih elemenata organizacije rasute datoteke.

Ideja, korišćena za organizaciju tabele pristupa, može da se upotrebi i za organizaciju evidencije slobodnih blokova masovne memorije. U tom slučaju ova evidencija ima oblik liste slobodnih blokova. Svaki od njih, pored rednog broja narednog slobodnog bloka iz ove liste, sadrži do b-1 rednih brojeva slobodnih blokova, koji nisu uvezani u listu. Ovakva evidencija slobodnih blokova je usklađena sa tabelom pristupa, jer se, pri uništenju datoteke, blokovi, koji odgovaraju dodatnim odsječcima, direktno uključuju u listu slobodnih blokova. Alternativna organizacija evidencije slobodnih blokova je u obliku niza bita. Ovakva organizacija ima za posledicu dugotrajnije uključivanje slobodnih blokova u evidenciju, ali njena prednost je da olakšava pronalaženje susjednih slobodnih blokova.

Evidencija slobodnih blokova masovne memorije u obliku liste slobodnih blokova je prikazana na slici 2.9.

Slika 2.9 Grafička predstava evidencije slobodnih blokova u obliku liste

...

...

b-1 rednih brojeva slobodnih blokoa koji nijesu vezani u listu

...

b-1 rednih brojeva slobodnih blokoa koji nijesu vezani u listu

Page 38: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 35

KONZISTENTNOST FAJL SISTEMA

Iza upravljanja datotekama krije se upravljanje blokovima masovne memorije, u kojima se nalaze i sadržaj i deskriptor i, eventualno, dodatni odsječci tabele pristupa svake rasute datoteke. Upravljanje ovim blokovima usložnjava činjenica da se međusobno zavisni podaci nalaze u raznim blokovima. Pošto se blokovi modifikuju u radnoj memoriji, a trajno čuvaju u masovnoj memoriji, prirodno je da u pojedinim trenucima postoji razlika između blokova u masovnoj memoriji i njihovih kopija u radnoj memoriji. Probleme izaziva gubitak kopija blokova u radnoj memoriji (na primjer, zbog nestanka napajanja), prije nego su sve kopije blokova, sa međusobno zavisnim podacima, prebačene u masovnu memoriju. Tako, na primjer, produženje rasute datoteke zahtjeva izmjenu evidencije slobodnih blokova (radi isključivanja pronađenog slobodnog bloka iz ove evidencije), kao i izmjenu tabele pristupa produžavane rasute datoteke (radi smještanja rednog broja novog bloka u element ove tabele). Izmjena evidencije slobodnih blokova dovodi do promjene jedne od kopija njenih blokova u radnoj memoriji. Isti efekat ima i izmjena tabele pristupa produžavane rasute datoteke. Ako obje izmjenjene kopije budu prebačene u masovnu memoriju, tada je produženje rasute datoteke uspješno obavljeno. Ako ni jedna od kopija ne dospije u masovnu memoriju, tada produženje rasute datoteke nije obavljeno, jer nije registrovano u masovnoj memoriji. Ali, ako samo jedna od promenjenih kopija dospe u masovnu memoriju, tada se javljaju problemi konzistentnosti sistema datoteka. U jednom slučaju, kada samo promijenjena kopija bloka evidencije slobodnih blokova dospije u masovnu memoriju, blok isključen iz ove evidencije postaje izgubljen (jer njegov redni broj nije prisutan niti u ovoj evidenciji, a niti u tabeli pristupa neke od rasutih datoteka). U drugom slučaju, kada samo promenjena kopija bloka tabele pristupa dospe u masovnu memoriju, blok, pridružen ovoj tabeli, ostaje i dalje uključen u evidenciju slobodnih blokova. Prvi slučaj je bezazlen, jer se izgubljeni blokovi mogu pronaći (pronalazenje izgubljenih blokova se zasniva na traženju blokova koji nisu prisutni ni u evidenciji slobodnih blokova, ni u tabelama pristupa rasutih datoteka). Za razliku od prvog slučaja, drugi slučaj je neprihvatljiv, jer može da izazove istovremeno uključivanje istog bloka u vise rasutih datoteka (čime se narušava njihova konzistentnost). Zato je neophodno uvijek prebacivati u masovnu memoriju prvo promijenjenu kopiju bloka evidencije slobodnih blokova, pa tek iza toga i promenjenu kopiju bloka tabele pristupa. Znači, potrebno je paziti na redosled u kome se izmjenjene kopije blokova prebacuju u masovnu memoriju.

Nakon izmjene kopije bloka u radnoj memoriji, važno je što pre izmijenjenu kopiju prebaciti u masovnu memoriju, radi smanjenja mogućnosti da se ona izgubi (na primjer, kao posledica nestanka napajanja). To je naročito važno, ako izmjena nije rezultat automatske obrade, nego ljudskog rada (na primjer, editovanja), jer se tada ne može automatski rekonstruisati.

BAFERSKI PROSTOR

Pristupi sadržaju datoteke mogu zahtjevati prebacivanje više blokova u radnu memoriju

(na primjer, jednog bloka sa deskriptorom datoteke, pa, eventualno, jednog ili više dodatnih blokova tabele pristupa i, na kraju, bloka sa traženim bajtima sadržaja). Pošto je, sa stanovišta procesora, prenos blokova na relaciji radna i masovna memorija, spor (dugotrajan), dobra ideja je zauzeti u radnoj memoriji prostor za više bafera, namjenjenih za čuvanje kopija korišćenih blokova (block cache, buffer cache). Pošto je radna memorija mnogo manja od masovne, njeni baferi mogu istovremeno da sadrže mali broj kopija blokova masovne memorije. Zato je važno da baferi sadrže kopije blokova, koje će biti korišćene u neposrednoj budućnosti (jer se samo tako značajno ubrzava obrada podataka). Problem se javlja kada su svi baferi napunjeni, a potrebno je

Page 39: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 36

pristupiti bloku masovne memorije, čija kopija nije prisutna u nekom od bafera. U tom slučaju neizbežno je oslobađanje nekog od bafera, da bi se u njega smjestila kopija potrebnog bloka. Iskustvo pokazuje da je najbolji pristup osloboditi bafer, koji sadrži kopiju čija referenca je starija od referenci svih ostalih kopija, prisutnih u baferima (Least Recently Used - LRU). Najstariju referencu ima kopija kojoj je poslednji put pristupano u trenutku, starijem od trenutaka poslednjih pristupanja svim ostalim kopijama. Pri oslobađanju bafera, njegov dotadašnji sadržaj se poništava, kada bafer sadrži neizmijenjenu kopiju bloka (jer je ona identična bloku masovne memorije). U suprotnom slučaju, neophodno je sačuvati izmjeene, pa se kopija prebacuje u masovnu memoriju. U oslobođeni bafer se prebacuje kopija potrebnog bloka masovne memorije. Da bi se znalo koja od kopija ima najstariju referencu, baferi se uvezuju u listu. Na početak ovakve liste se uvek prebacuje bafer sa upravo korišćenom kopijom (sa najnovijom referencom), pa na njen kraj nužno dospeva bafer sa kopijom čija referenca je najstarija.

Baferovanje izmjenjenih kopija blokova u radnoj memoriji zahtjeva da se odredi trenutak u kome se izmjenjena kopija prebacuje u masovnu memoriju. Ako se izmjenjena kopija prebacuje u masovnu memoriju odmah nakon svake izmjene, tada se usporava rad, a ako se izmjenjena kopija prebacuje u masovnu memoriju tek pri oslobađanju bafera, tada se povećava mogućnost gubljenja izmjene (na primjer, zbog nestanka napajanja). Rješavanje ovoga problema se može posredno prepustiti korisniku, ako se uvede posebna operacija (sync) za izazivanje prebacivanja sadržaja bafera (sa izmjenjenim kopijama blokova) u masovnu memoriju. U tom slučaju izmjenjene kopije dospevaju u masovnu memoriju ili kada se baferi oslobađaju ili kada to zatraži korisnik. Potreba da se kopija bloka što brže nakon izmjene prebaci u masovnu memoriju je u suprotnosti sa nastojanjem da se blokovi što ređe prenose između radne i masovne memorije.

Na brzinu prebacivanja podataka između radne i masovne memorije važan uticaj ima i veličina bloka, jer, sto je blok veći, u prosjeku se potroši manje vremena na prebacivanje jednog bajta između radne i masovne memorije. Međutim, što je blok veći, veća je i interna fragmentacija. Ta dva suprotna zahtjeva utiču na izbor veličine bloka, koja se kreće od 512 bajta do 8192 bajta.

DESKRIPTOR FAJLA

Deskriptor fajla, pored atributa koji omogućuju preslikavanje rednih brojeva bajta u redne

brojeve blokova, sadrži: 1. numeričku oznaku vlasnika fajla, 2. prava pristupa fajlu za njenog vlasnika, za njegove saradnike i za ostale korisnike, 3. podatak da li je fajl zaključan ili ne, 4. podatak da li numerička oznaka vlasnika fajla postaje numerička oznaka vlasnika procesa stvorenog na osnovu sadržaja fajla (važi samo za izvršne fajlove), kao i 5. datum poslednje izmjene fajla. Činjenica, da deskriptor fajla sadrži prava pristupa fajlu, podrazumijeva da je sadržaj

masovne memorije fizički zaštićen (tako da nema načina za neovlašteni pristup masovnoj memoriji). To podrazumijeva da se centralni djelovi računara (procesor, radna i masovna memorija, kontroleri i sabirnica) nalaze u zaštićenoj (sigurnoj) prostoriji, a da su samo periferni djelovi računara (kao što su terminali ili štampači) direktno na raspolaganju korisnicima.

Podatak da li je fajl zaključan ili ne je uveden radi ostvarenja međusobne isključivosti procesa u toku pristupa datoteci. Pri tome se podrazumijeva da su aktivnosti ovih procesa

Page 40: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 37

međusobno isključive u toku obavljanja operacije zaključavanja datoteke, u kojoj se provjerava da li je datoteka zaključana i eventualno obavi njeno zaključavanje. Sinhronizacija procesa u toku obavljanja ove operacije je neophodna, da bi se spriječilo da dva ili više procesa istovremeno zaključe da je ista datoteka otključana i da, nezavisno jedan od drugog, istovremeno zaključaju pomenutu datoteku. Pomenuta sinhronizacija obezbjeđuje da uvek najviše jedan proces zaključa datoteku, jer samo on pronalazi otključanu datoteku, dok svi preostali istovremeno aktivni procesi pronalaze zaključanu datoteku. Ako je za nastavak aktivnosti ovih preostalih procesa neophodno da pristupe datoteci, tada se njihova aktivnost zaustavlja do otključavanja datoteke. Zbog ovakvih procesa potrebna je operacija otključavanja datoteke. Njeno izvršavanje omogućuje nastavak aktivnosti samo jednog od procesa, čija aktivnost je zaustavljena do otključavanja datoteke. Ako takav proces postoji, datoteka se i ne otključava, nego se samo prepusta novom procesu. Inače, datoteka se otključava. I operacija otključavanja datoteka zahtijeva sinhronizaciju procesa.

Prethodno opisana sinhronizacija procesa predstavlja primjer uslovne sinhronizacije, jer je aktivnost jednog procesa zaustavljena dok se ne ispuni uslov (da datoteka bude otključana), što se obezbjeđuje u toku aktivnosti drugog procesa. U slučaju zaključavanja datoteke, uslovna sinhronizacija nije uvek obavezna, jer je moguće da proces nastavi svoju aktivnost i nakon neuspešnog pokušaja zaključavanja datoteke (jasno, tada se podrazumijeva da on neće pristupati pomenutoj datoteci). Prema tome, operacija zaključavanja datoteke je blokirajuća, kada, radi uslovne sinhronizacije, u toku njenog obavljanja dolazi do zaustavljanja aktivnosti procesa, dok se ne stvore uslovi za međusobno isključive pristupe zaključanoj datoteci. Ova operacija je neblokirajuća, kada njena povratna vrednost ukazuje na neuspješan pokušaj zaključavanja datoteke i na nemogućnost pristupa datoteci, koju je zaključao neki drugi proces.

Sinhronizaciju procesa moraju da obezbijede ne samo operacije zaključavanja i otključavanja datoteke, nego i sve druge operacije za upravljanje deskriptorima datoteka. Jedino tako se može obezbijediti očuvanje konzistentnosti deskriptora (i njima odgovarajućih datoteka).

DIREKTORIJUMI

Ime fajla je prirodno vezano za njegov deskriptor. Pošto se ime datoteke nalazi u

direktorijumu, uz njega bi, u direktorijum, mogao da bude smješten i deskriptor datoteke. Međutim, tipičan način korišćenja direktorijuma je njihovo pretraživanje, radi pronalaženja imena direktorijuma ili imena fajla, navedene u datoj putanji. Ovakvo pretraživanje prirodno prethodi pristupu sadržaju datoteke, odnosno sadržaju direktorijuma. Brzina tog pretraživanja je veća što su direktorijumi kraći, jer se tada manje podataka prebacuje između radne i masovne memorije. Zato je uputno da direktorijumi sadrže samo imena datoteka i direktorijuma, a ne i njihove deskriptore, pogotovo ako su oni veliki. Da bi se uspostavila veza između imena datoteka, odnosno imena direktorijuma sa jedne strane i njihovih deskriptora sa druge strane, u direktorijumima se, uz imena datoteka, odnosno uz imena direktorijuma, navode i redni brojevi njihovih deskriptora (koji jednoznačno određuju ove deskriptore). Na taj način se ime datoteke, odnosno ime direktorijuma, povezuje sa odgovarajućim deskriptorom. Prema tome, direktorijum odgovara tabeli, čiji elementi sadrže imena datoteka (odnosno, imena direktorijuma) i redne brojeve njihovih deskriptora. Da bi se iz rednog broja deskriptora mogao odrediti redni broj bloka masovne memorije, u kome se deskriptor nalazi, izvjestan broj susjednih blokova se rezerviše samo za smještanje deskriptora. Pod pretpostavkom da blok sadrži cijeli broj deskriptora, količnik rednog broja deskriptora i ukupnog broja deskriptora u bloku određuje redni broj bloka sa deskriptorom. Pri tome se podrazumijeva da je deskriptor sa rednim brojem 0 rezervisan za

Page 41: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 38

korijenski direktorijum. Zahvaljujući ovoj pretpostavci, moguće je uvek pronaći deskriptor korijenskog direktorijuma i od njega započeti pretraživanje direktorijuma, što obavezno prethodi pristupu sadržaju datoteke. Tako, na primjer, za pristup sadržaju datoteke sa putanjom:

/fakultet/smjer1/godina1.txt

potrebno je prebaciti u radnu memoriju blok sa deskriptorom korijenskog direktorijuma, koji je poznat, zahvaljujući činjenici da je redni broj (0) deskriptora korenskog direktorijuma unapred zadan. U ovom deskriptoru se nalaze redni brojevi blokova sa sadržajem korijenskog direktorijuma. Nakon prebacivanja ovih blokova u radnu memoriju, moguće je pretražiti sadržaj korijenskog direktorijuma, da bi se ustanovilo da li on sadrži ime fakultet. Ako sadrži, uz ovo ime je i redni broj deskriptora odgovarajućeg direktorijuma, iz koga se može odrediti redni broj bloka u kome se nalazi ovaj deskriptor. Po prebacivanju ovog bloka u radnu memoriju, u pomenutom deskriptoru se pronalaze redni brojevi blokova sa sadržajem direktorijuma fakultet. Nakon prebacivanja ovih blokova u radnu memoriju moguće je pretražiti sadržaj i ovog direktorijuma, da bi se ustanovilo da li on sadrži ime smjer1. Ako sadrži, uz ovo ime je i redni broj deskriptora odgovarajućeg direktorijuma, iz koga se može odrediti redni broj bloka u kome se nalazi ovaj deskriptor. Po prebacivanju ovog bloka u radnu memoriju, u pomenutom deskriptoru se pronalaze redni brojevi blokova sa sadržajem direktorijuma smjer1. Nakon prebacivanja ovih blokova u radnu memoriju moguće je pretražiti sadržaj i ovog direktorijuma, da bi se ustanovilo da li on sadrži ime datoteke godina1.txt. Ako sadrži, uz nju je i redni broj deskriptora odgovarajuće datoteke, iz koga se može odrediti redni broj bloka u kome se nalazi ovaj deskriptor. Po prebacivanju ovog bloka u radnu memoriju, u pomenutom deskriptoru se pronalaze redni brojevi blokova sa sadržajem datoteke godina1.txt. Tek tada je moguć pristup ovom sadržaju.

U toku pristupa direktorijumima, neophodno je njihovo zaključavanje, radi obezbijeđenja međusobne isključivosti pristupa raznih procesa istom direktorijumu (čime se obezbijeđuje očuvanje konzistentnosti direktorijuma).

SISTEMSKE OPERACIJE SLOJA ZA UPRAVLJANJE FAJLOVIMA

Prethodno opisano pretraživanje direktorijuma se dešava u okviru izvršavanja sistemske operacije otvaranja datoteke (open). Zato je putanja datoteke obavezni argument poziva ove operacije. Rezultat njenog izvršavanja je prebacivanje kopije deskriptora datoteke u radnu memoriju. Ova kopija se ne uključuje u deskriptor procesa, u toku čije aktivnosti je inicirano njeno prebacivanje, jer ista datoteka može istovremeno biti otvorena u toku aktivnosti više procesa. Da bi svaki od njih koristio istu kopiju deskriptora datoteke, u deskriptoru svakog procesa postoji tabela otvorenih datoteka. Njeni elementi sadrže adresu kopije deskriptora odgovarajuće datoteke. Indeks elementa tabele otvorenih datoteka (u kome je adresa kopije deskriptora otvorene datoteke) predstavlja povratnu vrijednost poziva sistemske operacije otvaranja datoteke. Ovaj indeks otvorene datoteke se koristi kao argument u pozivima drugih sistemskih operacija sloja za upravljanje fajlovima. On određuje datoteku na koju se pomenuti poziv odnosi. Od veličine tabele otvorenih datoteka zavisi najveći mogući broj istovremeno otvorenih datoteka nekog procesa.

Kao dodatni argumenti poziva sistemske operacije otvaranja datoteke mogu se javiti oznaka namjeravane vrste pristupa otvaranoj datoteci (da li se datoteka otvara samo za čitanje, ili za pisanje, što podrazumijeva i njeno čitanje), kao i naznaka zaključavanja datoteke. U toku

Page 42: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 39

izvršavanja sistemske operacije otvaranja datoteke se provjerava da li proces (u toku čije aktivnosti se ova operacija obavlja) poseduje pravo nameravanog pristupa otvaranoj datoteci (za ovo se koristi numerička oznaka vlasnika procesa iz njegovog deskriptora, numerička oznaka vlasnika otvarane datoteke, kao i prava pristupa datoteci za njenog vlasnika, za njegove saradnike i za ostale korisnike, što je navedeno u deskriptoru otvarane datoteke). Takođe, u toku obavljanja sistemske operacije otvaranja datoteke, pokušava se zaključati otvarana datoteka (za šta se, takođe, pristupa njenom deskriptoru). Otvaranje datoteke je uspješno samo ako proces posjeduje pravo namjeravanog pristupa datoteci i ako je moguće njeno zaključavanje (ovo poslednje je bitno samo ako je zatraženo zaključavanje datoteke). Tada poziv sistemske operacije otvaranja datoteke vraća indeks otvorene datoteke. Inače, on vraća kod greške. Kod greške sadrži obavestenje o neuspjehu pri zaključavanju datoteke, kada je operacija otvaranja datoteke neblokirajuća (kada se oslanja na neblokirajuću operaciju zaključavanja datoteka). Ako je operacija otvaranja datoteke blokirajuća (ako se oslanja na blokirajuću operaciju zaključavanja datoteka), tada se, do zaključavanja datoteke, zaustavlja aktivnost procesa, kome je potebno otvaranje datoteke (po obavljanju blokirajuće operacije otvaranja datoteke, datoteka je zaključana, pa je uvek obezbijeđena međusobna isključivost pristupa datoteci).

Oznaka vrste nameravanog pristupa datoteci se čuva u polju odgovarajućeg elementa tabele ovorenih datoteka (koji sadrži i polje sa adresom kopije deskriptora otvorene datoteke), radi naknadne provjere ispravnosti pristupa datoteci.

Pokušaj otvaranja nepostojeće datoteke dovodi do njenog stvaranja (ako se tako navede u argumentima poziva sistemske operacije otvaranja datoteke). Međutim, moguće je da postoji i posebna sistemska operacija za stvaranje datoteke.

Korišćenje datoteke se završava pozivom sistemske operacije zatvaranja datoteke (close). Ona, eventualno, otključava datoteku, čisti odgovarajući element tabele otvorenih datoteka procesa, koji je pozvao ovu sistemsku operaciju, i prebacuje, eventualno, kopiju deskriptora i baferovane kopije blokova sadržaja zatvarane datoteke u masovnu memoriju (što je neophodno samo ako je ona izmjenjena). Kopija deskriptora zatvarane datoteke ostaje u radnoj memoriji, ako, pored procesa koji zatvara datoteku, postoje i drugi procesi koji joj pristupaju (zato kopija deskriptora datoteke sadrži broj procesa koji pristupaju datoteci). Obavezni argument poziva sistemske operacije zatvaranja datoteke je indeks otvorene datoteke.

Važno je uočiti da u periodu dok je datoteka otvorena (znači, između uzastopnih poziva sistemskih operacija otvaranja i zatvaranja datoteke), proces nije pod uticajem izmjena prava pristupa otvorenoj datoteci (jer izmjena prava pristupa postaje delotvorna tek pri narednom otvaranju datoteke, pošto se tek tada ova prava ponovo provjeravaju).

Korisna praksa je da se, na kraju aktivnosti procesa, automatski zatvore sve otvorene datoteke.

Nakon otvaranja, sadržaj datoteke se može čitati pozivom sistemske operacije čitanja datoteke (read) i pisati (ako je to u skladu sa namerama, izraženim u otvaranju datoteke) pozivom sistemske operacije pisanja datoteke (write). Obavezni argumenti ovih poziva su indeks otvorene datoteke i broj bajta (koji se čitaju ili pišu). Pored toga, poziv sistemske operacije čitanja sadrži, kao argument, adresu zone radne memorije u koju se smještaju pročitani bajtovi, a poziv sistemske operacije pisanja sadrži, kao argument, adresu zone radne memorije iz koje se preuzimaju bajti za pisanje. Oba poziva vraćaju vrednost, koja ukazuje na uspješan poziv ili na grešku. Podrazumijeva se da sistemske operacije pisanja i čitanja nude sekvencijalne pristupe datotekama. To znači, da, ako jedan poziv sistemske operacije čitanja (pisanja) pročita (upiše) prvi bajt datoteke, naredni takav poziv datoteke će da pročita (upiše) drugi bajt datoteke. Radi podrške sekvencijalnom pristupu, svaki element tabele otvorenih datoteka sadrži (pored polja sa

Page 43: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 40

adresom kopije deskriptora otvorene datoteke i polja sa oznakom vrste nameravanog pristupa ovoj datoteci) i polje pozicije datoteke (sa rednim brojem bajta od koga se primjenjuje naredno čitanje ili pisanje). Svako čitanje ili pisanje pomjera poziciju na prvi naredni nepročitani (neupisani) bajt. Da bi bili mogući direktni pristupi bajtima datoteke (u proizvoljnom redosledu), postoji sistemska operacija izmjene pozicije datoteke (seek). Obavezni argumenti njenog poziva su indeks otvorene datoteke i podatak o novoj poziciji, dok povratna vrednost ovog poziva ukazuje da li je poziv bio uspješan ili ne. Tako, na primjer, ako se želi pisati na kraj datoteke, neophodno je prvo pozvati sistemsku operaciju izmjene pozicije datoteke, radi pozicioniranja iza poslednjeg bajta datoteke, i zatim pozvati sistemsku operaciju pisanja. Prvi poziv izmjeni poziciju datoteke u odgovarajućem elementu tabele otvorenih datoteka. Drugi poziv, na osnovu ove pozicije i kopije deskriptora datoteke, odredi redni broj bloka (ako on postoji) i prebaci njegovu kopiju u radnu memoriju (ako ona već nije bila prisutna u radnoj memoriji). U ovu kopiju se smjeste dopisivani bajti i ona se prebaci (odmah ili kasnije, zavisno od strategije baferovanja) u masovnu memoriju. Ako blok ne postoji, ili ako se upisivanje proteže na više blokova, upisivanju bajta prethodi zauzimanje blokova. Radi toga se mijenja (proširuje) tabela pristupa datoteke (što znači da produžavanje datoteke dovodi do izmjene njenog deskriptora). Nakon toga se u radnoj memoriji oblikuje novi sadržaj blokova i oni se prebacuju u masovnu memoriju.

Sloj za upravljanje datotekama nudi posebne sistemske operacije za izmjenu atributa datoteke, sadržanih u njenom deskriptoru (kao sto su numerička oznaka vlasnika datoteke, prava pristupa datoteci za njenog vlasnika, za njegove saradnike i za ostale korisnike, ili podatak da li numerička oznaka vlasnika datoteke postaje numerička oznaka vlasnika procesa, stvorenog na osnovu sadržaja datoteke). Obavezni argumenti poziva ovih sistemskih operacija su putanja datoteke i nova vrednost menjanog atributa datoteke, a njihova povratna vrednost ukazuje na uspješnost poziva. U okviru izvršavanja ovih sistemskih operacija pretražuju se direktorijumi, radi prebacivanja u radnu memoriju kopije deskriptora datoteke. Zatim se provjerava da li je ove sistemske operacije pozvao vlasnik datoteke (jer jedino on ima pravo da mijenja atribute datoteke). Ako jeste, tada se mijenja zadani atribut i blok sa izmjenjenom kopijom deskriptora vraća u masovnu memoriju. U sistemske operacije za izmjenu atributa datoteke spada i sistemska operacija za izmjenu imena datoteke. Iako se u okviru ove operacije ne mijenja deskriptor datoteke, nego njen direktorijum, i ovde je neophodan pristup deskriptoru datoteke, radi provjere da li je ovu operaciju pozvao vlasnik datoteke (kao i pristup deskriptoru njenog direktorijuma).

Za uništenje datoteke (delete) neophodna je posebna sistemska operacija. Obavezni argument njenog poziva je putanja uništavane datoteke, a povratna vrednost ovog poziva ukazuje na njegovu uspješnost. U okviru sistemske operacije uništenja datoteke, pretražuju se direktorijumi, radi prebacivanja u radnu memoriju kopije deskriptora uništavane datoteke. Zatim se provjerava da li je ovu sistemsku operaciju pozvao vlasnik datoteke i, ako jeste, oslobađaju se blokovi datoteke i njen deskriptor. Na kraju se uništava ime datoteke u odgovarajućem direktorijumu (što predstavlja izmjenu njegovog sadržaja). Povratna vrijednost ove operacije ukazuje da li je ona uspješno obavljena (na primjer, uništenje nepostojeće datoteke ne može biti uspješno obavljeno).

Prethodno opisane sistemske operacije omogućuju pristup svim datotekama, znači i direktorijumima. Ali za pristupe direktorijumima je potrebno poznavati njihovu organizaciju (koliko bajta je rezervisano za imena datoteka i direktorijuma, a koliko za redne brojeve njihovih deskriptora, da li ima oznaka sa posebnim značenjem, kao sto su oznake, koje se odnose na prethodni i naredni direktorijum u hijerarhiji i slično). Potreba za poznavanjem organizacije direktorijuma se izbegava, ako se ponude posebne sistemske operacije za upravljanje

Page 44: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 41

direktorijumima. SPECIJALNI FAJLOVI

Važno svojstvo pojma fajla je da je on primjenljiv i za opisivanje ulaznih i izlaznih

uređaja. Tako, ulazni uređaj, kao sto je tastatura, odgovara datoteci, čiji sadržaj se može samo čitati, a sastoji se od bajta, koji stižu sa tastature. Slično, izlazni uređaj, kao sto je ekran, odgovara datoteci, čiji sadržaj se može samo pisati, a sastoji se od bajta, koji se upućuju na ekran. Takođe, ulazno izlazni uređaj, kao sto je disk, odgovara datoteci, čiji sadržaj se može i pisati i čitati, a sastoji se od bajta iz pojedinih blokova diska. Datoteke, koje predstavljaju pojedine ulazne ili izlazne uređaje, se nazivaju specijalne datoteke (special file). Specijalne datoteke se dijele na:

• znakovne (one odgovaraju uređajima kao sto su tastatura, ekran, stampač ili mrežni kontroler) i na

• blokovske (one odgovaraju, na primjer, diskovima). Znakovne specijalne datoteke podržavaju sekvencijalno čitanje ili pisanje znakova (koji

dolaze sa odgovarajućeg urađaja, ili odlaze na odgovarajući uređaj). Za ove datoteke izmjena pozicije nema smisla. Blokovske specijalne datoteke podržavaju čitanje ili pisanje blokova. Za njih izmjena pozicije omogućuje određivanje rednog broja bloka na koga se primjenjuje naredna operacija.

Blokovske specijalne datoteke omogućuju direktno pristupe blokovima diska, što je važno, na primjer, kod pronalaženja izgubljenih blokova, kod sabijanja datoteka, ili kod pripremanja disk jedinica za korišćenje. U poslednjem slučaju se određuje namjena pojedinih blokova diska. To prikazuje slika 2.10.

blok 0 prvi (boot) blok blok 1 drugi (super) blok blok 2 blokovi namijenjeni za deskriptore

... blok n blokovi namijenjeni za sadržaj fajlovai za tabele pristupa

... ...

Slika 2.10 Namjena pojedinih blokova diska

Prvi (boot) blok (sa slike 2.10) je rezervisan za podatke, koji su potrebni za pokretanje računara (operativnog sistema), a drugi (super) blok sadrži:

1. podatke o nizu susednih blokova, koji su namjenjeni za smještanje deskriptora datoteka (ovi podaci obuhvataju redni broj prvog bloka iz ovog niza, kao i ukupan broj blokova u ovom nizu), 2. podatke o slobodnim mjestima za deskriptore datoteka i 3. podatke potrebne za evidenciju (preostalih) slobodnih blokova (u ovu evidenciju se uključuju svi blokovi, koji nisu upotrebljeni za smještanje sadržaja datoteka ili za tabele pristupa). Prije korišćenja specijalnih datoteka, neophodno je njihovo otvaranje, radi provjere prava

pristupa (čime se provjerava pravo pristupa uređaju, koga datoteka predstavlja), ili radi zaključavanja (čime se zaključava uređaj, koga datoteka predstavlja). Nakon korišćenja, slijedi

Page 45: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 42

zatvaranje specijalne datoteke. Za podršku otvaranja i zatvaranja specijalnih datoteka, neophodno je da one posjeduju svoje deskriptore. Deskriptori specijalnih datoteka obuhvataju atribute, kao što su, na primjer numerička oznaka vlasnika datoteke, prava pristupa datoteci za njenog vlasnika, za njegove saradnike i za ostale korisnike, ili podatak da li je datoteka zaključana ili ne. Međutim, pošto za čitanje ili pisanje specijalnih datoteka nije bitno preslikavanje rednih brojeva bajta u redne brojeve blokova masovne memorije, nego pozivanje odgovarajućih operacija drajevera uređaja, koje ove datoteke predstavljaju, u deskriptorima specijalnih datoteka se ne nalaze podaci o tabeli pristupa, nego podaci o odgovarajućem drajveru i primjerku uređaja, koga on opslužuje. Za jednoznačno identifikovanje drajvera uvodi se njegov redni broj (major number), koji služi kao indeks posebne tabele drajvera. Polja indeksiranog elementa ove tabele sadrže adrese operacija dotičnog drajvera. Prema tome, ako se redni broj drajvera čuva u deskriptoru specijalne datoteke, na osnovu njega je moguće pronaći adrese operacija ovog drajvera (uz konsultovanje odgovarajućeg elementa tabele drajvera). U pomenutom deskriptoru se čuva i redni broj (minor number) uređaja (koga predstavlja specijalna datoteka), da bi se na njega mogla usmeriti odabrana operacija drajvera.

Za izmjenu atributa specijalnih datoteka primjenljive su sistemske operacije, koje su uvedene s tom namerom za obične datoteke. Isto važi i za sistemske operacije za izmjenu imena datoteke i za njeno uništenje (pri čemu, kod uništenja specijalne datoteke, nema oslobađanja blokova, nego se oslobađa samo njen deskriptor). Sistemske operacije prave razliku između običnih i specijalnih datoteka na osnovu odgovarajuće oznake, navedene u deskriptoru datoteke.

STANDARDNI ULAZ I STANDARDNI IZLAZ

Pojmovi datoteke i procesa su čvrsto povezani, jer je aktivnost procesa posvećena obradi

podataka, sadržanih u datotekama. Pri tome je tipično da obrađivani podaci stižu u proces iz jedne, ulazne datoteke, a da obrađeni podaci napuštaju proces, završavajući u drugoj, izlaznoj datoteci. Ovakav model obrade podataka je dovoljno čest, da opravda uvođenje naziva standardni ulaz (standard input) za ulaznu datoteku i standardni izlaz (standard output) za izlaznu datoteku. Pri tome se podrazumijeva da se u toku stvaranja procesa otvore i njegov standardni ulaz i njegov standardni izlaz. Zahvaljujući tome, bez otvaranja se može čitati standardni ulaz i pisati standardni izlaz. Kao podrazumijevajući standardni ulaz služi specijalna datoteka, koja predstavlja tastaturu, a kao podrazumijevajući standardni izlaz služi specijalna datoteka, koja predstavlja ekran. U slučaju da proces stvaralac zaustavlja svoju aktivnost, dok traje aktivnost stvorenog procesa, tada je prirodno da stvoreni proces nasledi standardni ulaz i standardni izlaz od procesa stvaraoca i da tako, preuzimajući opsluživanje terminala, nastavi interakciju sa korisnikom. Kao indeks otvorene datoteke, koja odgovara standardnom ulazu, služi vrednost 0, a kao indeks otvorene datoteke, koja odgovara standardnom izlazu, služi vrednost 1.

SPAŠAVANJE FAJLOVA

U nadležnosti sloja za upravljanje fajlovima nalazi se i podrška spašavanju (saving) fajlova, čiji cilj je da se redovno prave kopije postojećih (svih, ili samo u međuvremenu izmijenjenih, odnosno stvorenih) datoteka. Na osnovu ovakvih kopija moguće je rekonstruisati sadržaj oštećenih datoteka. Do oštećenja datoteka dolazi na razne načine, na primjer, pojavom loših (neispravnih) blokova. Kada se otkriju, loši blokovi se izbacuju iz upotrebe. Jedan način da se to postigne je da se, na primjer, formira datoteka loših blokova.

Page 46: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 43

OSNOVA SLOJA ZA UPRAVLJANJE FAJLOVIMA

Sloj za upravljanje fajlovima se oslanja na operacije drajvera iz sloja za upravljanje kontrolerima. On može da koristi i operacije sloja za upravljanje radnom memorijom, radi zauzimanja bafera, namjenjenih za smještanje kopija blokova, ili kopija deskriptora, na primjer.

PRIMJERI FAJL SISTEMA U ovom poglavlju razmotrićemo neke od postojećih fajl sistema.

MS-DOS fajl sistem

MS-DOS radi samo na Intelovim platformama i ne podržava multiprogramiranje. Prva verzija DOS-a bila je ograničena na rad sa samo jednim direktorijumom. Od verzije MS-DOS 2.0, funkcionalnost fajl sistema se umnogome proširila. Najveće unapređenje je bilo uvođenje hijerarhijskog fajl sistema po kome su direktorijumi mogli biti ugnježdavani u dubinu. Ovo znači da je root direktorijum (koji je i dalje imao fiksnu maksimalnu veličinu) mogao sadržati poddirektorijume, a oni opet svoje poddirektorijume i tako u nedogled. Uobičajeno je da svaka različita aplikacija u root-u kreira svoj direktorijum iz koga će da startuje i u kome će biti svi njoj potrebni fajlovi, tako da različite aplikacije ne dolaze u konflikt. Ne postoji ograničenje u broju direktorijuma ili fajlova koji mogu biti kreirani. Ovjde ne postoji koncept više različitih korisnika. Ulogovani korisnik ima pristup svim fajlovima. Iako direktorijumi kod MS-DOS-a imaju promjenljivu veličinu, oni koriste upise fiksne dužine od 32 bajta. Format upisa u direktorijum kod MS-DOS-a prikazan je na slici 2.11. On sadrži ime fajla, atribute, vrijeme i datum kreiranja, početni blok i tačnu veličinu fajla. Ime fajla kraće od 8+3 karaktera je poravnato u lijevu stanu sa prazninama u nastavku, za svako polje pojedinačno. Polje za atribute je novo i sadrži bitove koji pokazuju da li je fajl read-only, potreban za arhiviranje, sakriven ili je sistemski fajl. Read-only fajlovi se ne mogu mijenjati. Arhiv bit nema neke sistemske funkcije. Hidden bit skriva fajl tako da ne bude vidljiv u listingu direktorijuma. Sistem bit takođe skriva fajl i onemogućuje brisanje komandom del koja može biti i slučajno pritisnuta. Upis u direktorijum takođe sadrži datum i vrijeme kada je fajl kreiran ili zadnji put izmjenjen.

Slika 2.11 Upis u MS-DOS direktorijum

Page 47: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 44

MS-DOS prati blokove fajla preko tabele za alokaciju fajlova koja se nalazi u glavnoj memoriji. Upis u direktorijum sadrži broj prvog bloka fajla. Ovaj broj se koristi kao indeks kod 64K upisa FAT (File Allocation Table) u glavnu memoriju. Prateći lanac, svi blokovi se mogu pronaći. Za MS-DOS, fajl sistem se pojavljuje u tri verzije: FAT-12, FAT-16 i FAT-32, zavisno od toga koliko bita sadrži adresa na disku. Za sve FAT-ove, blok diska može biti setovan na multipl od 512 bajtova, sa setom dozvoljenih veličina blokova različitih za svaku varijantu. Prva verzija MS-DOS-a koristila je FAT-12 sa blokovima od 512 bajtova, dajući tako maksimalnu veličinu particije od 212 x 512 bajtova. Sa ovim parametrima, maksimalna veličina particije diska bila je 2 MB a veličina FAT tabele u memoriji bila je 4096 upisa od 2 bajta svaki. Microsoft je kasnije dodao veličine blokova od 1KB, 2 KB i 4 KB. Onda su mogle da postoje i particije od 16 MB. Tada je MS-DOS mogao da podrži 4 particije po disku što znači da je FAT-12 mogao da radi sa diskovima do 64 MB. Nakon toga došlo je do predstavljanja FAT-16, sa 16-bitnim disk pointerima. Dozvoljene su i veličine blokova od 8 KB, 16 KB i 32 KB. Tabela za FAT-16 sada je stalno zauzimala 128 KB glavne memorije. Najveće particije na disku sada su bile 2 GB, a veličina diska 8 GB sa maksimum 4 particije po disku. Počev od druge verzije Windowsa 95, uveden je FAT-32 fajl sistem sa njegovim 28-bitnim adresama, a verzija MS-DOS-a je bila prilagođena da podrži FAT-32. U ovim sistemima particija je ograničena na 2 TB (2048 GB). Maksimalna veličina particije za različite veličine blokova i za sva tri tipa FAT-a je prikazana na slici 2.12.

Slika 2.12. Maksimalna veličina particije za različite veličine bloka. Prazna polja prikazuju zabranjene kombinacije.

FAT-32 fajl sistem ima dvije prednosti u odnosu na FAT-16 gledajući podršku velikim diskovima. Prvo, kod FAT-32, disk od 8 GB može da bude jedna particija. Kod FAT-16 mogu da postoje maksimalno 4 particije. Druga prednost je ta da za datu veličinu particije diska, može da se koristi manja veličina bloka. Na primjer, za particiju diska od 2 GB, FAT-16 mora da koristi blokove od 32 KB, jer inače sa samo 64 K dostupnih adresa diska, ne može pokriti cijelu particiju. FAT-32 može koristiti blok od 4 KB za particiju od 2 GB. Mnogi fajlovi su kraći od 32 KB, pa je prednost manje veličine bloka očigledna. Efikasnost iskorišćenja prostora na disku je velika jer je izgubljenog prostora jako malo. MS-DOS koristi FAT da bi pratio i slobodne blokove diska. Svaki blok koji se trenutno ne koristi, označava se posebnim kodom. Kada je MS-DOS-u potreban novi blok, on pretražuje FAT tragajući za tim kodom. Na ovaj način ni bitmape ni slobodne liste nisu potrebne.

Page 48: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 45

Windows 98 fajl sistem

Počev od druge verzije Windowsa 95, imena fajlova duža od 8+3 karaktera su postala dozvoljena. Uveden je FAT-32, najviše zbog toga da bi dozvolio formiranje velikih particija većih od 2 GB na diskovima većim od 8 GB koji su se tada pojavili. Kod Windowsa 98 i duga imena i FAT-32 su se koristili u istoj formi kao i kod druge verzije Windowsa 95. Problem u prelasku Microsofta ka stvaranju fajl sistema gdje bi bila podržana duga imena fajlova bio je taj što je trebalo omogućiti korisnicima koji upravo prelaze sa jedne na drugu verziju Windowsa da mogu pristupiti svojim fajlovima sa različitih sistema. Microsoft je donio političku odluku a to je da se omogući da se fajlovima kreiranim u Windowsu 98 može pristupati i iz Windowsa 3.x. Ovo je u stvari značilo da je struktura direktorijuma Windowsa 98 morala biti kompatibilna sa MS-DOS strukturom direktorijuma. Zapis u direktorijum kod Windowsa 98 imao je oblik prikazan na slici 2.13.

Slika 2.13 Prošireni MS-DOS upis u direktorijum koji se koristi kod Windowsa 98

Promjene se sastoje od dodavanja pet novih polja na mjestu gdje su bile 10 neiskorišćenih bajtova. Polje NT je tu najviše zbog kompatibilnosti sa Windowsom NT kada je u pitanju pravilno prikazivanje imena fajlova. Polje ″Sec″ rešava problem nemogućnosti smještanja dnevnog vremena u 16-bitno polje. Ono daje dodatne bitove tako da je novo ″Creation time″ polje precizno do 10 msec. Još jedno novo polje je ″Last access″, koje smješta datum (ali ne i vrijeme) poslednjeg pristupa fajlu. Najzad, prelazak na FAT-32 fajl sistem znači da su brojevi blokova sada 32-bitni, pa je potrebno polje od dodatnih 16 bita za smještanje najgornjih 16 bita broja početnog bloka. Sad dolazimo na srce fajl sistema Windowsa 98. Kako su duga imena predstavljena tako da budu kompatibilna sa MS-DOS-om. Rešenje je bilo da se svakom fajlu dodijele dva imena: (potencijalno) dugo ime fajla, i 8+3 ime za kompatibilnost sa MS-DOS-om. Fajlu se može pristupiti preko oba imena. Kada dođe do kreiranja fajla čije ime nije 8+3 karaktera, Windows 98 stvara MS-DOS ime za njega pomoću određenog algoritma. Osnovna ideja je da se uzmu prvih šest karaktera imena fajla, da se ona predstave velikim slovima i da im se doda ~1 formirajući tako bazno ime fajla. Ako takvo ime već postoji onda se dodaje ~2 i tako redom. Specijalni karakteri se pretvaraju u ″_″ znak, a praznine se brišu. Format svakog dugačkog imena je dat na slici 2.14.

Page 49: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 46

Slika 2.14 Upis za dugačko ime fajla (dio njega) u Windowsu 98 Postavlja se pitanje kako Windows 98 zna da li upis u direktorijum sadrži MS-DOS ime fajla ili (dio) dugačko ime fajla. Odgovor leži u polju ″Attributes″. Za upis dugačkog imena ovo polje ima vrijednost 0x0F, što predstavlja još jednu od nemogućih kombinacija atributa. Stari MS-DOS programi će ovo samo ignorisati kao nevažeće. Djelovi imena su sekvencirani koristeći prvi bajt zapisa. Zadnji dio dugačkog imena je označen dodavanjem broja 64 sekvenci. S obzirom da se samo 6 bita koristi u sekvenci, teoretski maksimum za dugačka imena fajlova je 63x13=819 karaktera. U stvari taj broj je iz istorijskih razloga ograničen na 260. Svaki zapis dugačkog imena fajla sadrži i polje Checksum da bi se izbjegao sledeći problem. Prvo, Windows 98 kreira fajl dugačkog imena. Drugo, računar je restartovan i podešen da radi u MS-DOS-u ili Windowsu 3. Treće, stari program pod MS-DOS-om briše MS-DOS ime fajla, ali ne briše njegovo dugačko ime jer ni ne zna za njega. ^etvrto, neki program stvara novi fajl koji ponovo zauzima maloprije oslobođeni zapis. Sada imamo situaciju da postoji važeća sekvenca zapisa dugačkih imena koji prethode zapisu fajla u MS-DOS-u a koji nemaju ništa sa tim fajlom. Polje Cheksum omogućava Windowsu 98 da detektuje ovakvu situaciju verifikujući da MS-DOS ime fajla koje prati dugačko ime, zaista njemu i pripada. Implementacija FAT-32 fajl sistema konceptualno je slična implementaciji FAT-16 fajl sistema. Ovjde sada ukoliko se koristi milion blokova, tabela će konceptualno imati milion upisa. Da bi se izbjeglo da sva budu u memoriji odjednom, Windows 98 održava prozor u tabeli i čuva samo pojedine djelove u memoriji odjednom.

NTFS i drugi fajl sistemi

Windowsa 2000 podržava: NTFS (New Technology File System), podržava FAT32 (File Alocation Table) i FAT16 particionisane diskove. FAT16 je MS-DOS fajl sistem i omogućava korišćenje disk particija do 2 GB. FAT32 bolje organizuje disk prostor i particije mogu biti veličine do 2 TB. NTFS je novija vrsta fajl sistema koju koriste Windows NT 4.0 i Windows 2000. Ovaj fajl sistem koristi 64 bit-ne adrese i teoretski radi sa particijama do 264 bajta. Korišćenje NTFS tehnologije znači veću sigurnost, tj. zaštitu i veću toleranciju (i korekciju) greški. Kada govorimo o zaštiti, ovdje mislimo na EFS sistem enkripcje fajlova. Tolerancija greške se odnosi na činjenicu da NTFS fajl sistem automatski otklanja greške ne prikazujući pri tome poruke o greškama. On lokalizuje loše klustere i vrši tzv. Cluster Remapping što znači da onemogućava ponovno korišćenje tih losih klustera. Proces otkrivanja ovih greški se ovdje radi tako što prije upisa podataka na disk, Windows 2000 pravi kopiju podataka koje će privremeno

Page 50: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 47

držati u memoriji. Dalje, on pokušava da podatke smjesti na disk i odmah poslije toga upoređuje te podatke sa podacima u memoriji. Ako ovi podaci u ovom trenutku nijesu identični, znači da se radi o greški na disku pa se radi Cluster Remapping i traži se drugo mjesto na disku za smještanje ovih podataka sa privremene memorije.

Kada se prave particije, postavlja se pitanje koje su optimalne veličine tih particija? Veće particije s jedne strane dovode do sporijeg pristupa disku jer se mnogo toga može odjednom pisati na tom disku. S druge strane, kod multimedijalnih zapisa, velikih baza podataka i slicno, potrebne su veće paritcije. Optimalno riješenje je napraviti particije određene namjene tako da svaka od njih ne bude veća od veličine koja je neophodna za određenu namjenu.

Ono što korisnik može u radu sa fajlovima NTFS sistema primjetiti, je da imena fajlova mogu imati maksimalno 255 karaktera, da su putanje (engl. paths) limitirane na 32767 karaktera, da su imena fajlova Unicode što znači da je dozvoljeno koristiti npr. grčko pismo ili neko drugo nelatinsko pismo, da su imena fajlova Case Sensitive što znači da pravi razliku malih i velikih slova u imenu fajla (ali rijetko se može primjeniti zbog toga što su većina programa pravljeni isključivo za FAT32 koji inače nije Case Sensitive), itd. NTFS fajl sistem omogućava automatsko prepoznavanje prečica u slučaju da se izvorno mjesto fajla dislocira.

Kao što je poznato, disk drajv može da ima više particija. Svaka particija predstavlja linearni niz blokova koji, po memorijskoj veličini, mogu biti od 512 bajta do 64 KB. Najčešće su ovi blokovi veličine 4KB i njima se pristupa preko 64-bitno adresiranog ofseta. Način pristupa je takav da se daje početni blok i ofset koji ukazuje broj narednih blokova kojima treba pristupiti.

Veoma važnu ulogu u objašnjavanju fajl sistema Windowsa 2000, ima tzv. Master File Table (MFT). MFT je linearni niz zapisa od po 1 KB od kojih svaki opisuje po jedan fajl. Oni sadrže atribute fajlova kao i adrese blokova na disku gdje su ti fajlovi memorisani. MFT je u stvari jedan fajl koji može da se povećava teoretski sve do 248 zapisa. Svaki MFT zapis (1KB) sadrži zaglavlje zapisa poslije kojeg dolaze dvije vrijednosti: zaglavlje atributa i vrijednost atributa. Dalje se niz nastavlja na zaglavlje drugog atributa i na vrijednost drugog atributa, itd. Zaglavlje atributa identifikuje određeni atribut. Obično poslije njega dolazi vrijednost atributa ali to ne mora biti pravilo. Naime, postoje fajlovi ili direktorijumi ciji su atributi veliki pa se moraju podijeliti na dva ili više bloka na disku. Takvi atributi se nazivaju nerezidentnim atributima. Zaglavlja atributa za rezidentne atribute su veličine 24 bajta dok su za nerezidentne veća jer oni sadrže i informacije o tome kako naći atribut na disku. NTFS definiše 13 atributa koji se mogu pojaviti na MFT zapisima. Važna kategorija zapisa su tzv. metadata fajlovi koji su u stvari prvih 16 zapisa MFT. Svaki od ovih zapisa je običan MFT podatak koji sadrži atribute za fajlove na disku, s’tim što ovo nijesu obični fajlovi vec fajlovi koji ukazuju ja informacije o samom fajl sistemu. Tako, npr. ako pravimo novi direktorijum ili brišemo neki direktorijum, ova se radnja loguje u drugom zapisu MFT fajla ($LogFile). Inače, svi metadata zapisi počinju znakom $.

Od atributa, najinteresantniji je atribut data koji predstavlja mjesto na disku (blokove) gdje je određeni fajl fizicki memorisan. Ako je neki fajl mali (reda nekoliko stotina bajtova), on se može smjestiti citav u MFT zapis i takav fajl se naziva direktnim (engl. immediate) fajlom. Obično je, ipak, atribut data, nerezidentan atribut. U ovim slučajevima potrebno je “skakati” sa jednog bloka na drugi, unutar disk prostora. Ovdje se kao argumenti daju početni blokovi na koje se “skace” i dužina hoda, tj. broj blokova u nizu počevsi od navedenog početnog bloka (engl. run length). Primjer fajla koji je zadržan u 9 blokova i koji ima 3 “skoka” ( run) je dat na slici.2.15

Page 51: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 48

Slika 2.15 Ovdje npr. imamo prvi run koji ukazuje na blokove 20, 21, 22 i 23, itd. Svi ovi Run-ovi

su upisani u MFT kao podaci. Koliko ce biti Run-ova zavisi od efikasnosti Disk Block Alocator-a u trenutku kreiranja fajlova kada se njegova efikasnost mjeri sposobnošću da broj Run-ova što više reducira, tj. da ih smjesti što blize jedno drugom. Parovi adresa-broj blokova, rekli smo da se sastoje od 64-bitnih brojeva, što znači da zauzimaju 2x8 bajtova ili 16 bajtova. Kompresijom se danas u praksi veličina ovih parova svodi na 4 bajta.

NTFS particije se mogu kreirati na dva načina: direktan način (odmah poslije formatizacije diska) i pretvaranjem sa FAT sistema. Pokazuje se da je mnogo efikasniji način direktnog stvaranja NTFS particije jer se u tom slučaju MFT kreira na početku diska (gdje bi izvorno i trebalo da postoji) dok se u drugom slučaju smješta bilo bilo gdje na disku gdje ima slobodnog prostora što često završava sa lošom fragmentacijom.

UNIX V7 fajl sistem

Fajl sistem V7 kod UNIX-a je u formi ″drveta″ počev od root direktorijuma sa dodacima

u obliku linkova. Imena fajlova su do 14 karaktera i mogu sadržati bilo koji ASCII karakter osim / (zato jer je / separator između komponenti u ″putu″) i NUL (zato jer se koristi da označi imena kraća od 14 karaktera).

Svaki upis u direktorijum kod UNIX-a V7 fajl sistema je jako jednostavan zato jer on koristi šemu i-čvorova. Upis u direktorijum sadrži samo dva polja: ime fajla (14 bajtova) i broj i-čvorova za taj fajl (2 bajta), kao što je prikazano na slici 2.16. Ovi parametri ograničavaju broj fajlova po fajl sistemu na 64K.

Slika 2.16. Upis u direktorijum kod UNIX-a V7

Kod UNIX-a i-čvorovi sadrže neke atribute. Atributi sadrže veličinu fajla, vremena

kreiranja, poslednjeg pristupa i poslednje izmjene, vlasnika, grupu, informacije o zaštiti i broj

Page 52: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 49

upisa u direktorijum koji pokazuju na i-čvor. Kadgod je novi link usmjeren na i-čvor, brojač u i-čvoru se povećava. Kada se link otkloni, brojač se smanjuje. Kada dođe na nulu, i-čvor se ponovo vraća natrag a blokovi diska se stavljaju na slobodnu listu. Praćenje blokova diska se vrši na osnovu generalizacije. kako bi se rukovalo sa veoma velikim fajlovima. Prvih 10 adresa na disku je smješteno u sami i-čvor, tako da za male fajlove, sve potrebne informacije se nalaze u i-čvoru koji se zahvata i prebaca sa diska u glavnu memoriju kada se fajl otvori. Za velike fajlove, jedna od adresa u i-čvoru je adresa bloka diska koja se zove single indirektni blok. Ovaj blok sadrži dodatne adrese diska. Ukoliko ovo još uvijek nije dovoljno, još jedna adresa u i-čvoru, zvana double indirektni blok, sadrži adresu bloka koji opet sadrži listu single indirektnih blokova. Svaki od ovih single indirektnih blokova ukazuje na nekoliko stotina blokova podataka. Ukoliko ni ovo nije dovoljno, može se koristiti i triple indirektni blok. Potpuna ilustracija data je na slici 2. 17.

Slika 2.17. UNIX i-čvor

Pratićemo jedan primjer kod UNIX-a, mada je algoritam uglavnom isti kod svih

hijerarhijskih sistema direktorijuma. Pogledajmo kako se vrži traženje puta /usr/ast/mbox. Prvo fajl sistem locira root direktorijum. Njegov i-čvor je lociran uvijek na fiksnom mjestu na disku. Polazeći od tog i-čvora, lociramo root direktorijum koji može biti bilo gdje na disku, ali recimo da je u našem slučaju u pitanju blok 1.

Page 53: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 50

Slika 2.18. Koraci pri traženju /usr/ast/mbox

Zatim čita root direktorijum i traži prvu komponentu puta, usr, u root direktorijumu da bi našao broj i-čvora fajla /usr. Lociranje i-čvora na osnovu njegovog broja je pravolinijsko, s obzirom da svaki ima fiksnu lokaciju na disku. Iz ovog i-čvora, sistem locira direktorijum /usr i traži sledeću komponentu, ast, u njemu. Kada je pronašao upis za ast, onda on ima i-čvor za direktorijum /usr/ast. Iz ovog čvora pronalazi sam direktorijum i traži mbox. I-čvor za ovaj fajl se onda učitava u memoriju i drži tamo sve dok se fajl ne zatvori. Ovaj proces je predstavljen na slici 2.18.

Imena relativnih puteva se traže na isti način samo se pretraga počinje u trenutnom radnom direktorijumu a ne u root-u.

2.4 SLOJ ZA UPRAVLJANJE RADNOM MEMORIJOM

Zadatak sloja za upravljanje radnom memorijom je da omogući zauzimanje zona (susednih lokacija, sa uzastopnim adresama) sistemske slobodne radne memorije, kao i da omogući oslobađanje prethodno zauzetih zona sistemske radne memorije. Radi toga ovaj sloj nudi operacije zauzimanja i oslobađanja (sistemske radne memorije). Iako ove operacije može da koristi i sloj za upravljanje datotekama, one su, prije svega, podrška sloju za upravljanje procesima, a pozivaju se prilikom stvaranja i uništenja slike procesa. Argument poziva operacije zauzimanja je dužina zauzimane zone (broj njenih lokacija), a povratna vrednost ovog poziva je adresa zauzete zone (adresa prve od njenih lokacija), ili indikacija da je operacija zauzimanja završena neuspešno. Argumenti poziva operacije oslobađanja su adresa oslobađane zone (adresa prve od njenih lokacija) i njena dužina (broj njenih lokacija).

KONTINUALNA RADNA MEMORIJA

Sistemsku slobodnu radnu memoriju obrazuju lokacije radne memorije, koje ne koristi

operativni sistem. OS obično zauzima lokacije sa početka i, eventualno, sa kraja adresnog

Page 54: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 51

prostora, a između njih se nalaze lokacije sistemske slobodne radne memorije. Na početku adresnog prostora su, najčesće, lokacije, namijenjene za tabelu prekida. Iza njih slijede lokacije sa naredbama i promenljivim operativnog sistema (koje obuhvataju i prostor za smeštanje deskriptora procesa i njihovih sistemskih stekova). Na kraju adresnog prostora su, najčesće, lokacije, koje odgovaraju registrima kontrolera. Sloj za upravljanje radnom memorijom obavezno vodi evidenciju o sistemskoj slobodnoj radnoj memoriji. Ova evidencija može da bude u obliku niza bita (bit map), u kome svaki bit odgovara grupi susjednih lokacija. Podrazumijeva se da je broj lokacija u ovakvoj grupi unaprijed zadan. On ujedno predstavlja jedinicu u kojoj se izražava dužina zauzimane i oslobađane zone. Ako je grupa lokacija slobodna, njoj odgovarajući bit sadrži 1. Inače, on sadrži 0. Mana ovakve evidencije je da su i operacija zauzimanja i operacija oslobađanja dugotrajne, jer prva pretražuje evidenciju, radi pronalaženja dovoljno dugačkog niza jedinica, a druga postavlja takav niz jedinica u evidenciju. Zato se češće evidencija sistemske slobodne radne memorije pravi u obliku liste slobodnih odsječaka sistemske radne memorije. Na početku rada operativnog sistema ovakva lista sadrži jedan odsječak, koji obuhvata cijelu sistemsku slobodnu radnu memoriju. Ovakav odsječak se drobi u više kraćih odsječaka, kao rezultat višestrukog stvaranja i uništavanja procesa u slučajnom redosledu. Novonastali kraći odsječci se nalaze na mjestu slika uništenih procesa, a između njih su slike postojećih procesa. Na početku svakog odsječka su njegova dužina i adresa narednog odsječka. Broj lokacija, potrebnih za smještanje dužine dotičnog odsječka i adrese narednog odsječka, određuje najmanju dužinu odsječka i predstavlja jedinicu u kojoj se izražavaju dužine odsječaka (odnosno, dužine zauzimanih i oslobađanih zona). Odsječci su uređeni u rastućem redosledu adresa njihovih početnih lokacija. To, prilikom oslobađanja zone, olakšava operaciji oslobađanja:

1. da pronađe dva susedna odsječka, koji mogu da se spoje u jedan, kada se između njih ubaci oslobađana zona, ili 2. da pronađe odsječak, kome može da se doda (spreda ili straga) oslobađana zona, ili 3. da pronađe mjesto u listi u koje će oslobađana zona biti uključena kao poseban odsječak. Listu slobodnih odsječaka pretražuje i operacija zauzimanja, radi pronalaženja dovoljno

dugačkog odsječka. Pri tome se zauzima samo deo odsječka, u koji se može smjestiti zauzimana zona, dok preostali deo odsječka ostaje u listi kao novi odsječak. Na ovaj način se odsječci dalje usitnjavaju. To dovodi do eksterne fragmentacije. Ona posredno uzrokuje neupotrebljivost odsječaka, jer onemogućuje zauzimanje zone, čija dužina je veća od duzine svakog od postojećih odsječaka, bez obzira na činjenicu da je suma dužina postojećih odsječaka veća od dužine zauzimane zone. Iskustvo pokazuje da se eksterna fragmentacija povećava, ako se, umjesto traženja prvog dovoljno dugačkog odsečka (first fit), pokušava naći najmanji dovoljno dugačak odsječak (best fit), ili najveći dovoljno dugačak odsečak (worst fit). Poboljšanje ne nudi ni ideja da lista odsječaka bude ciklična i da se pretražuje ne od početka, nego od tačke u kojoj je zaustavljeno poslednje pretraživanje (next fit). Ideje da dužina zauzimanih zona bude uvijek jednaka stepenu broja 2 (quick fit, buddy system) i da postoji posebna lista odsječaka za svaku od mogućih dužina takođe nisu najbolje, jer, pored eksterne, uvode i internu fragmentaciju (pošto se na ovaj način u prosjeku zauzimaju duže zone od stvarno potrebnih, čime nastaje neupotrebljiva radna memorija).

Važno je uočiti da upravljanje evidencijom sistemske slobodne radne memorije zahtjeva sinhronizaciju procesa, u toku čije aktivnosti se istovremeno obavljaju operacije zauzimanja i oslobađanja, radi ostvarenja međusobne isključivosti obavljanja ovih operacija (jer se jedino tako može očuvati konzistentnost pomenute evidencije).

Upravljanje radnom memorijom se zasniva na pretpostavci postojanja logičkog i fizičkog

Page 55: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 52

adresnog prostora i automatskog pretvaranja logičkih adresa u fizičke. Time se obezbijeđuje, ne samo zaštita operativnog sistema od korisničkih procesa i međusobna zaštita korisničkih procesa, nego i dinamička relokacija. Ona je značajna, jer predstavlja preduslov za zamjenu slika procesa (swapping), odnosno za sabijanje slika procesa (compaction), radi eliminisanja eksterne fragmentacije. Automatsko pretvaranje logičkih adresa u fizičke omogućuju granični i bazni registar (sadržaj prvog određuje najvišu dozvoljenu logičku adresu procesa, a sadržajem drugog se uvećava ispravna logička adresa, radi formiranja korespondentne fizičke adrese). Sadržaji ovih registara se razlikuju za razne procese, pa se zato čuvaju u njihovim deskriptorima.

Za zauzimanje i oslobađanje zona sistemske radne memorije potrebno je da operativni sistem neograničeno pristupa svim lokacijama radne memorije. Da mehanizam zaštite (koji se zasniva na korišćenju graničnog registra) ne bi sputavao operativni sistem, neophodan je privilegovani režim rada procesora, u kome je moguće mijenjati sadržaj graničnog (i baznog) registra, ili u kome je mehanizam zaštite isključen. Pozivanje sistemskih operacija, kao što su operacije zauzimanja ili oslobađanja, automatski prevodi procesor u privilegovani režim rada (dok je, za vreme aktivnosti korisničkih procesa van operativnog sistema, procesor u neprivilegovanom režimu rada). U privilegovanom režimu rada operativni sistem koristi sistemski stek aktivnog procesa.

SEGMENTACIJA

Upravljanje radnom memorijom ima zadatak da zauzme dovoljno veliku zonu radne memorije, sa lokacijama koje imaju uzastopne fizičke adrese, da bi u njih sistemska operacija stvaranja procesa smjestila sliku stvaranog procesa. Međutim, pošto se slika procesa sastoji od tri segmenta (segmenta mašinskih naredbi, segmenta promenljivih i segmenta steka), nema stvarne potrebe da cijela slika procesa bude u lokacijama sa uzastopnim fizičkim adresama. Dovoljno je da to važi samo za svaki od njenih segmenata. Pri tome, jasno, za svaki od segmenata mora biti vezan poseban par graničnih i baznih registara. Ova tri para graničnih i baznih registara obrazuju tabelu segmenata, tako da svaki od elemenata ove tabele sadrži dva polja. Jedno, granično polje odgovara graničnom registru, a drugo, bazno polje odgovara baznom registru. Posto se sadržaji parova graničnih i baznih polja razlikuju od procesa do procesa, deskriptor svakog od njih sadrži kopiju tabele segmenata. To znači da, prilikom preključivanja procesora sa procesa na proces, u deskriptor procesa, sa koga se procesor preključuje, dospeva kopija tabele segmenata, a zatim se u tabelu segmenata prebacuje njena kopija iz deskriptora procesa, na koga se procesor preključuje. Prema tome, upravljanje tabelom segmenata produžava (usporava) preključivanje.

Razbijanje slike procesa u tri segmenta, smještena u razdvojene zone radne memorije, utiče na način interpretiranja logičke (virtualne) adrese, jer njen jedan deo mora da ukaže na segment, a drugi na lokaciju u segmentu. Tako prvi deo (najznačajnija dva bita) logičke adrese predstavlja adresu segmenta i služi kao indeks za tabelu segmenata. Drugi deo (preostali biti) logičke adrese predstavlja adresu lokacije u segmentu. Adresa lokacije u segmentu se poredi sa sadržajem graničnog polja iz elementa tabele segmenata, koga indeksira adresa segmenta i, ako nije veća, na nju se dodaje sadržaj baznog polja iz pomenutog elementa tabele segmenata, čime nastaje fizička adresa. Za ovakvo pretvaranje logičke adrese u fizičku adresu neophodan je poseban segmentacioni hardver (koji automatski na opisani način interpretira bite logičke adrese).

Važna posledica segmentacije je mogućnost korišćenja istog segmenta u slikama raznih

Page 56: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 53

procesa, čime se postiže racionalnije korišćenje radne memorije. Tako, slike svih procesa, nastalih na osnovu iste izvršne datoteke, mogu da dele isti segment naredbi. To znači da kopija tabele segmenata svakog od ovih procesa ima element sa istim sadržajima graničnog i baznog polja segmenta mašinskih naredbi. Sem uštede radne memorije, segmentacija ubrzava zamjenu slika procesa (swapping), jer se segment naredbi ne mora izbacivati (ako je ranije već izbačen u masovnu memoriju), niti ubacivati (ako već postoji u radnoj memoriji). Jasno, upravljanje procesima mora voditi posebnu evidenciju segmenata, prisutnih u radnoj memoriji (da bi moglo otkriti kada je moguće iskoristiti isti segment u slikama raznih procesa). Ovakva evidencija obuhvata oznaku segmenta (koja jednoznačno identifikuje segment), podatak o broju slika procesa u koje je segment uključen, dužinu segmenta (odnosno, sadržaj njegovog graničnog polja), kao i fizičku adresu njegove početne lokacije (odnosno, sadržaj njegovog baznog polja). Radi očuvanja konzistentnosti evidencije segmenata, operacije za upravljanje ovom evidencijom moraju obezbijediti sinhronizaciju procesa.

Prethodno opisana (osnovna) segmentacija se razvija u punu segmentaciju, ako se dozvoli da svakom potprogramu ili promenljivoj odgovara poseban segment. U tom slučaju, stvaraju se uslovi za dinamičko linkovanje (povezivanje) potprograma za program (koje se ne dešava u toku pravljenja izvršne datoteke, nego u trenutku prvog poziva potprograma, kada se pronalazi njegov segment i, eventualno, ubacuje u radnu memoriju). Puna segmentacija dozvoljava i deljenje promenljivih između raznih procesa (ako se segment iste promenljive uključi u slike više procesa). Jasno, ovakav način ostvarenja saradnje procesa zahtjeva njihovu sinhronizaciju, radi očuvanja konzistentnosti dijeljenih promenljivih. Za segmente sa deljenim promenljivim su važna i prava pristupa segmentu, jer nekim od procesa treba dozvoliti samo da čitaju deljenu promenljivu, a drugima treba dozvoliti i da pišu u deljenu promenljivu. Zato se elementi tabele segmenata proširuju trećim poljem, koje sadrži oznaku prava pristupa segmentu. U pogledu prava pristupa, segmenti se ne razlikuju od datoteka. Prema tome, prava pristupa segmentu obuhvataju pravo čitanja, pravo pisanja i pravo izvršavanja segmenta (prva dva prava se primjenjuju na segmente, koji sadrže promenljive, a treće pravo se primjenjuje na segment sa mašinskim naredbama programa ili potprograma).

Na pokušaj narušavanja prava pristupa segmentu reaguje segmentacioni hardver, generisanjem prekida (izuzetka), što dovodi do uništenja aktivnog procesa. Upravljanje segmentima se obavlja posredstvom sistemskih programa, kao što su kompajler ili linker.

Uspjeh segmentacije zavisi od efikasnosti pretvaranja logičke adrese u fizičku (što je za punu segmentaciju teško ostvariti, zbog toga što tabela segmenata postaje prevelika). Inače, segmentacija se oslanja na već opisane operacije zauzimanja i oslobađanja, koje se posebno pozivaju prilikom stvaranja i uništavanja svakog od segmenata slike procesa.

VIRTUELNA MEMORIJA

Prethodno opisano upravljanje radnom memorijom nije u stanju da riješi problem, koji se

javlja, ako su slika procesa, ili njen segment veći od ukupno raspoložive sistemske slobodne radne memorije (ili njenih odsječaka). Za rešavanje ovog problema važno je uočiti da je za izvršavanje bilo koje mašinske naredbe neophodno da u radnoj memoriji budu samo bajti njenog mašinskog formata, kao i bajti njenih operanada. To znači da u radnoj memoriji mora da bude samo kopija trenutno potrebnog dijela slike procesa, dok se cijela slika može da nalazi u masovnoj memoriji. Prema tome, veličinu slike procesa ne ograničava veličina radne memorije, nego veličina masovne memorije. Zahvaljujući tome, logički (virtuelni) adresni prostor može biti mnogo veći od fizičkog adresnog prostora, pod uslovom da se kopije neophodnih djelova slike

Page 57: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 54

procesa, kada zatreba, automatski prebacuju iz masovne memorije u radnu memoriju i obrnuto. Do prebacivanja u obrnutom smjeru dolazi, kada je potrebno osloboditi lokacije radne memorije sa kopijama delova slika procesa, koje su u međuvremenu izmijenjene. Ovo prebacivanje se obavlja, da bi se oslobodila radna memorija i, istovremeno, obezbijedilo da masovna memorija uvijek sadrži ažurnu sliku procesa. Da bi se znalo koja kopija je izmijenjena, neophodno je automatski registrovati svaku izmjenu svake od kopija djelova slike procesa.

Prethodno opisani način obezbijeđenja mnogo većeg logičkog adresnog prostora od raspoloživog fizičkog adresnog prostora je poznat pod nazivom virtuelna memorija (virtual memory). Ostvarenje ideje virtuelne memorije je u nadležnosti sloja za upravljanje virtuelnom memorijom (koji predstavlja specijalizovani oblik sloja za upravljanje radnom memorijom).

Za virtuelnu memoriju je neophodno uspostaviti korespondenciju logičkih (virtuelnih) i fizičkih adresa, radi stvaranja uslova za automatsko pretvaranje logičkih adresa u fizičke. Zbog toga, virtuelna memorija dijeli logički i fizički adresni prostor u stranice (page). Svaka stranica obuhvata isti broj lokacija, jednak nekom stepenu broja 2. Logički adresni prostor se sastoji od logičkih stranica,.smještenih u masovnoj memoriji, a fizički adresni prostor sačinjavaju fizičke stranice, smještene u radnoj memoriji. Kada zatreba, kopija logičke stranice se prebacuje u fizičku stranicu, a samo izmjenjena kopija se vraća iz fizičke stranice u logičku stranicu. Pošto stranica predstavlja jedinicu prenosa na relaciji masovna i radna memorija, prirodno je da ona obuhvata cijeli broj blokova masovne memorije.

Podjela logičkog i fizičkog adresnog prostora u stranice znači da se adresa svake lokacije sastoji od adrese stranice i od adrese lokacije u stranici (ofset). Činjenica da svaka i logička i fizička stranica obuhvata isti broj lokacija (jednak nekom stepenu broja 2) znači da se adresa lokacije (ofset) u stranici ne mijenja pri pretvaranju logičke adrese u fizičku (Slika 2.19). Pri tome, adresu lokacije u stranici određuje n manje značajnih bita i u logičkoj i u fizičkoj adresi, ako stranica obuhvata 2n bajta. Preostali, značajniji biti logičke, odnosno fizičke adrese određuju adresu logičke, odnosno fizičke stranice. Pošto je logički adresni prostor veći od fizičkog (pa sadrži više stranica nego fizički), adresa logičke stranice sadrži više bita od adrese fizičke stranice. Iz prethodnog slijedi da se problem pretvaranja logičke (virtuelne) adrese u fizičku svodi na problem pretvaranja adrese logičke stranice u adresu fizičke stranice. Ovaj problem se rešava pomoću tabele stranica. Pri tome se podrazumijeva da svaka logička stranica odgovara jednom elementu tabele stranica (i to onom, koga indeksira adresa ove stranice). Takođe se podrazumijeva da se adresa fizičke stranice, sa kopijom neke logičke stranice, smješta u element tabele stranica, koga indeksira adresa ove logičke stranice. Zahvaljujući tome, pretvaranje adrese logičke stranice u adresu fizičke stranice (sa kopijom ove logičke stranice) se svodi na čitanje elementa tabele stranica, koga indeksira adresa pomenute logičke stranice (Slika 2.20). Svaki element tabele stranica, pored polja za adresu fizičke stranice, sadrži i polje prisustva adrese fizičke stranice. Ovo polje pokazuje da li je dotični element tabele stranica u upotrebi. Element tabele stranica je u upotrebi, ako je u njemu prisutna adresa fizičke stranice (sa kopijom logičke stranice, čija adresa indeksira dotični element). Uz pomenuta dva polja, svaki element tabele stranica sadrži i polje izmjene, u kome se registruje izmjena kopije logičke stranice (čija adresa indeksira dotični element). I za polje prisustva i za polje izmjene dovoljan je jedan bit.

Page 58: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 55

Slika 2.19. Primjer preslikavanja virtaelnog adresnog prostora u fizički

Tabela stranica se razlikuje od procesa do procesa, pa deskriptor svakog od njih sadrži

kopiju tabele stranica. To produžava (usporava) preključivanje, jer se u toku preključivanja kopija tabele stranica prebacuje u deskriptor jednog procesa, a zatim se tabela stranica puni svojom kopijom iz deskriptora drugog procesa.

Za virtuelnu memoriju je važno pitanje dužine stranice. Za dugačke stranice postaje izražen problem interne fragmentacije (jer sve stranice nijesu uvek potpuno iskorišćene, pa se u njima javljaju neupotrebljive lokacije). Za kratke stranice postaje izražen problem veličine tabele stranica (jer tada logički adresni prostor ima više stranica, pa zato i tabela stranica ima više elemenata). Praksa je veličinu stranice smjestila između 512 i 8192 bajta.

Pretvaranje logičke adrese virtuelne memorije u fizičku adresu obavlja poseban stranični hardver. On izdvaja adresu logičke stranice, radi indeksiranja tabele stranica. Nakon što u indeksiranom elementu tabele stranica pronađe odgovarajuću adresu fizičke stranice, stranični hardver zamijeni tom adresom adresu logičke stranice i tako formira fizičku adresu. Ako polje prisustva indeksiranog elementa pokazuje da on nije u upotrebi, tada to znači da se u radnoj memoriji ne nalazi kopija odgovarajuće logičke stranice, pa nije moguće pretvaranje logičke adrese u fizičku (jer ne postoji fizička stranica sa kopijom dotične logičke stranice). U toj situaciji stranični hardver mora da aktivira sloj za upravljanje virtuelnom memorijom, radi prebacivanja potrebne kopije logičke stranice u neku fizičku stranicu. To se ostvaruje pomoću mehanizma prekida (izuzetka). Stranični hardver izaziva stranični prekid (page fault), na koga reaguje obrađivač straničnog prekida sloja za upravljanje virtuelnom memorijom. Njegov zadatak je da prebaci kopiju potrebne logičke stranice u neku fizičku stranicu. Obrađivač straničnog prekida, pri tome, ažurira odgovarajući element tabele stranica. Tom prilikom on postavlja polje sa adresom fizičke stranice i polje prisustva odgovarajućeg elementa tabele stranica, a čisti polje izmjene (polje izmjene automatski postavlja stranični hardver, nakon svake izmjene kopije logičke stranice).

Page 59: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 56

Slika 2.20. Primjer preslikavanja virtaelne adrese u fizički

Važno je uočiti da se kopije logičkih stranica prebacuju na zahtjev (demand paging), a ne

unapred (prepaging), jer u opštem slučaju ne postoji način da se predvidi redosled korišćenja logičkih stranica.

Koncept virtuelne memorije omogućuje da se, umjesto cijele slike procesa, u radnoj memorijin nalaze kopije samo neophodnog podskupa njenih logičkih stranica. Prema tome, svakom procesu je pridružen skup fizičkih stranica, u kojima se nalaze kopije logičkih stranica, neophodne za aktivnost procesa. Kada se, u toku aktivnosti procesa, desi stranični prekid (koji zahtijeva prebacivanje kopije nove logičke stranice u radnu memoriju), prije zahtijevanog prebacivanja neophodno je razriješiti dilemu da li uvećati skup fizičkih stranica procesa novom fizičkom stranicom i u nju smjestiti kopiju nove logičke stranice, ili u postojećem skupu fizičih stranica procesa zamijeniti sadržaj neke od njih kopijom nove logičke stranice. Uvećanje skupa fizičkih stranica procesa ima smisla samo ako to dovodi do smanjivanja učestanosti straničnih prekida (njihovog prosječnog broja u jedinici vremena). Znači, kada je, u toku aktivnosti procesa, učestanost straničnih prekida iznad neke (iskustveno određene) gornje granice, tada ima smisla uvećanje skupa fizičih stranica procesa, da bi se učestanost straničnih prekida svela na prihvatljiv nivo. To je važno, jer obrada svakog prekida troši procesorsko vrijeme, pa veliki broj obrada straničnih prekida može u potpunosti da angažuje procesor i da tako vrlo uspori, ili potpuno spriječi njegovu bilo kakvu korisnu aktivnost (trashing). Međutim, ako je učestanost straničnih prekida ispod neke (iskustveno određene) donje granice, tada ima smisla smanjenje skupa fizičkih stranica procesa, jer i sa manjim skupom fizičkih stranica učestanost straničnih prekida ostaje u prihvatljivom rasponu (u opstem slučaju učestanost straničnih prekida ne pada na nulu, ako sve kopije logičkih stranica procesa ne mogu stati u radnu memoriju). Smanjenje skupa fizičkih stranica procesa je važno, jer se tako omogućuje neophodni rast skupova stranica drugih procesa, odnosno jer se time podiže stepen multiprogramiranja. U slučaju da je učestanost straničnih prekida između pomenute dve granice, tada nema potrebe za izmjenom broja fizičkih stranica u skupu fizičkih stranica aktivnog procesa. U ovom slučaju skup fizičkih stranica

Page 60: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 57

(odnosno, njima odgovarajući skup logičkih stranica) obrazuje radni skup (working set). Radni skup procesa nije statičan. U prosjeku, on se sporo mijenja u toku aktivnosti

procesa (iako su, povremeno, moguće značajne kratkotrajne varijacije radnog skupa). Važno je uočiti da se u toku aktivnosti procesa obavezno javlja trashing, kada njegov radni skup ne može da stane u radnu memoriju. U ovom slučaju pomaže izbacivanje (swapping) procesa, dok se ne oslobodi dovoljan broj fizičkih stranica (ovaj pristup ima smisla samo ako je radni skup procesa manji od ukupne sistemske slobodne radne memorije).

Stepen multiprogramiranja kod virtuelne memorije zavisi od broja radnih skupova, koji se istovremeno mogu smjestiti u raspoloživu radnu memoriju. Za uspeh koncepta virtuelne memorije važno je da se stalno prate radni skupovi istovremeno postojećih procesa i da se povremeno izbacuju procesi, čim radna memorija postane pretijesna za sve radne skupove (load control). Na ovaj način se oslobađaju fizički blokovi za preostale procese, neophodni za smještanje njihovih radnih skupova. Prilikom kasnijeg ubacivanja procesa, uputno je ubacivati kopije svih logičkih stranica, koje obrazuju njegov radni skup.

Pored radnog skupa, procese karakteriše i minimalni skup. Broj fizičkih stranica u minimalnom skupu zavisi od procesora. Na primjer, za procesor, čije naredbe imaju najviše dva operanda, minimalni skup sadrži šest fizičkih stranica, jer se, u ekstremnom slučaju, i bajti mašinske naredbe, kao i bajti oba njena operanda, mogu nalaziti u različitim susjednim fizičkim stranicama. Pošto se naredba može izvršiti samo kada su u radnoj memoriji prisutni svi bajti njenog mašinskog formata i svi bajti njenih operanada, prethodno pomenuti ekstremni slučaj uslovljava da je pridruživanje minimalnog skupa procesu preduslov bilo kakve njegove aktivnosti.

Pad učestanosti straničnih prekida ispod donje granice ukazuje na mogućnost smanjenja radnog skupa. U ovoj situaciji je potrebno odlučiti koju logičku stranicu izbaciti iz radnog skupa. Za izbacivanje iz radnog skupa kao kandidat se nameće logička stranica, koja neće biti referencirana do kraja aktivnosti procesa, ili će biti referencirana iza svih ostalih logičkih stranica iz radnog skupa (pod referenciranjem se podrazumijeva pristup bilo kojoj lokaciji stranice, radi preuzimanja ili izmjene njenog sadržaja). Međutim, u opštem slučaju nema načina da se precizno ustanovi da li će i kada neka logička stranica biti referencirana. Ipak, zahvaljujući lokalnosti referenciranja, odnosno zapažanju da se pristupi lokacijama sa bliskim adresama dešavaju u bliskim trenucima, moguće je sa priličnom pouzdanošću zaključivati o referenciranju stranica u neposrednoj budućnosti na osnovu njihovog referenciranja u neposrednoj prošlosti. Prema tome, najmanju vjerovatnoću da bude referencirana u neposrednoj budućnosti ima stranica, čije poslednje referenciranje je najstarije, odnosno prethodi referenciranju svih ostalih stranica iz radnog skupa. Za pronalaženje stranice sa najstarijom referencom (Least Recently Used - LRU) neophodno je registrovanje starosti referenciranja. To je moguće, ako postoji brojač, koji se automatski uvećava za jedan nakon izvršavanja svake naredbe. Ako se njegova zatečena vrednost automatski pridružuje logičkoj stranici prilikom njenog svakog referenciranja, tada je stranici sa najstarijom referencom pridružena najmanja vrednost ovog brojača. Opisani pristup ima samo teoretsko značenje, jer se oslanja na hardver, koji u opštem slučaju nije raspoloživ. Međutim, ovaj pristup je moguće softverski simulirati (Not Frequently Used - NFU). Ovakva simulacija se zasniva na postojanju podatka o referenciranju svake logičke stranice. Zato se u elemente tabele stranica dodaje i polje referenciranja, veliko 1 bit. Za ovo polje se podrazumijeva da ga stranični hardver automatski postavlja prilikom svakog referenciranja stranice. Takođe, elementima tabele stranica se dodaje i polje starosti referenciranja. Ono sadrži n bita, po jedan bit za svaku od vrijednosti polja referenciranja u poslednjih n trenutaka. Polje starosti referenciranja se periodično ažurira, tako što se iz njega periodično izbacuje najstariji bit referenciranja. Radi toga

Page 61: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 58

se periodično (u trenucima sa pravilnim vremenskim razmacima) aktivira obrađivač vremenskog prekida (kao posledica dešavanja posebnog vremenskog prekida). On pomera u desno za jedan bit polje starosti referenciranja svake od logičkih stranica iz radnog skupa aktivnog procesa i dodaje s leva (u upražnjenu bitnu poziciju ovog polja) zatečeni sadržaj polja referenciranja dotične logičke stranice, a zatim očisti ovo polje. Na ovaj način polje starosti referenciranja sadrži najmanju vrednost za logičku stranicu, koja je najranije referencirana u prethodnih n trenutaka.

Polje starosti referenciranja se može iskoristiti i za određivanje radnog skupa. Kriterijum može biti postavljenost nekog od k najznačajnijih bita iz polja starosti referenciranja (k < n). Po tom kriterijumu radnom skupu pripadaju sve logičke stranice, koje imaju bar jedan bit postavljen u najznačajnijih k bita svog polja starosti referenciranja.

Povećanje učestanosti straničnih prekida preko gornje granice ukazuje na potrebu proširenja radnog skupa. U ovom slučaju, potrebno je procesu pridružiti novu fizičku stranicu, da bi se u nju smjestila kopija potrebne logičke stranice. Ako nema slobodnih fizičkih stranica, tada se oslobađa (kada je to moguće) fizička stranica, koja je pridružena nekom drugom procesu (što znači da se radni skup ovog drugog procesa smanjuje). U oslobođenoj fizičkoj stranici zatečenu kopiju zamenjuje (replacement) kopija potrebne logičke stranice. Do ovakve zamjene dolazi i kada se javi potreba za ubacivanjem kopije nove stranice, a učestanost straničnih prekida je između gornje i donje granice, pa se radni skup aktivnog procesa ne proširuje, nego se oslobađa jedna od fizičkih stranica iz njegovog radnog skupa. U oba prethodna slučaja kandidat za zamjenu je fizička stranica, koja sadrži kopiju logičke stranice sa najstarijom referencom. Znači i ovde se može primjeniti softverska simulacija pristupa pronalaženja najmanje korišćene stranice. Još je jednostavniji pristup u kome se traži stranica koja nije korišćena u nekom prethodnom periodu (Not Recently Used - NRU). Za ovaj pristup je dovoljno posmatrati dvobitni broj, čiji značajniji bit odgovara bitu polja reference, a manje značajan bit odgovara bitu polja izmjene. Pri tome se podrazumijeva da segmentacioni hardver automatski postavlja ove bite nakon svakog referenciranja kopije logičke stranice, odnosno nakon svake njene izmjene, a da obrađivač vremenskog prekida čisti bit reference (oba bita se čiste i prilikom zauzimanja fizičke stranice, odnosno prilikom zamjene njenog sadržaja). Prema tome, pomjenuti dvobitni broj sadrži 00, kada kopija logičke stranice nije korišćena nakon nekog od poslednjih vremenskih prekida (znači, niti referencirana niti izmijenjena). Pomenuti dvobitni broj sadrži 01, kada kopija logičke stranice nije referencirana nakon nekog od poslednjih vremenskih prekida (ali je prethodno izmijenjena). Ovaj broj sadrži 10, kada kopija logičke stranice nije izmijenjena, ali je referencirana nakon poslednjeg vremenskog prekida. Pomenuti dvobitni broj sadrži 11, kada je kopija logičke stranice izmijenjena i, uz to, referencirana nakon poslednjeg vremenskog prekida. Kandidati za zamjenu su stranice, čiji dvobitni broj je najmanji.

Prethodno opisani algoritmi zamjene (odnosno, načini određivanja fizičke stranice, čiji sadržaj se zamjenjuje) obezbijeđuju smanjenje učestanosti straničnih prekida nakon proširenja radnog skupa (znači, obavljanje liste istih zahtjeva za pristupe logičkim stranicama dovodi do pojave manje straničnih prekida nakon proširenja radnog skupa, nego pre toga). Ovo je važno istaći, jer svi algoritmi zamjene ne dovode obavezno do smanjenja učestanosti straničnih prekida nakon proširenja radnog skupa. To je karakteristično, na primjer, za algoritam zamjene, kod koga se za zamjenu odabira fizička stranica, čiji sadržaj je najstariji (First In First Out - FIFO), bez obzira da li je on skoro referenciran. Ovaj algoritam zamjene ima tendenciju da u radnom skupu čuva stranice, čiji sadržaj je svježiji (čak i ako one neće biti uskoro referencirane). Međutim, mana ovog algoritma zamjene se otklanja, ako se on modifikuje, tako da se za zamjenu prvo traži fizička stranica sa najstarijim nereferenciranim sadržajem, a ako su sadržaji svih fizičkih stranica

Page 62: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 59

referencirani, tek tada se odabira fizička stranica sa najstarijim sadržajem (second chance i clock algoritmi zamene). U sva tri poslednje pomenuta algoritma zamene (FIFO, second chance i clock) fizičke stranice iz radnog skupa procesa su uvezane u listu, pri čemu položaj u listi ukazuje na starost sadržaja fizičke stranice (u clock algoritmu zamjene ovakva lista je kružna, a poseban pokazivač, kao kazaljka na satu, pokazuje na stranicu sa najstarijim sadržajem).

Virtuelna memorija pokazuje najbolje rezultate, kada uvijek ima slobodnih fizičkih stranica. To se može postići, ako se uvede poseban stranični sistemski proces, koji se periodično aktivira, da bi oslobodio izvjestan broj fizičkih stranica. On, pri tome, odabira fizičke stranice za oslobađanje po nekom od prethodno opisanih algoritama zamjene. Zadatak straničnog sistemskog procesa je i da u masovnu memoriju prebacuje izmjenjene kopije logičkih stranica (i da tako čuva ažurnost masovne memorije).

Sloj za upravljanje virtuelnom memorijom sadrži, pored operacija zauzimanja i oslobađanja (namijenjenih slojevima iznad ovog sloja), stranični sistemski proces i obrađivače vremenskog i straničnog prekida. Obrađivač straničnog prekida se aktivira, kada je referencirana logička stranica, čija kopija nije prisutna u radnoj memoriji (odnosno, u nekoj od njenih fizičkih stranica). Ako je, greškom, referencirana logička stranica, koja uopšte ne postoji u slici procesa, obrađivač straničnog prekida završava aktivnost prekinutog procesa (uz odgovarajuću poruku). Inače, ovaj obrađivač odabira slobodnu fizičku stranicu i prema njoj usmjerava prenos kopije potrebne logičke stranice sa masovne memorije. Kada se taj prenos završi, obrađivač straničnog prekida ažurira polja odgovarajućeg elementa tabele stranica i omogućuje nastavak aktivnosti prekinutog procesa. Kada nema slobodne fizičke stranice, ovaj obrađivač oslobađa neku od fizičkih stranica. Ako ona sadrži izmjenjenu kopiju logičke stranice, on pokreće prenos ove kopije u masovnu memoriju, radi ažuriranja odgovarajuće logičke stranice. Po završetku ovoga prenosa, obrađivač straničnog prekida usmjerava ka oslobođenoj fizičkoj stranici prenos kopije potrebne logičke stranice, a, nakon završetka ovog prenosa i ažuriranja polja odgovarajućeg elementa tabele stranica, on omogućava nastavak aktivnosti prekinutog procesa. Za uspješno obavljanje posla, obrađivaču straničnog prekida je potrebna evidencija o položaju logičkih stranica u masovnoj memoriji. On, takođe, koristi i evidenciju slobodnih fizičkih stranica. Nju koriste i operacija zauzimanja i operacija oslobađanja, pa upravljanje ovom evidencijom mora obezbijediti sinhronizaciju procesa (i to onemogućenjem prekida). Ova evidencija može da ima oblik niza bita (bit map). Pri tome, svaki od ovih bita pokazuje stanje odgovarajuće fizičke stranice. Evidencija slobodnih fizičkih stranica može da ima i oblik liste, u koju su uvezane sve slobodne fizičke stranice (ovaj pristup je efikasniji). Operacija zauzimanja omogućuje zauzimanje bar minimalnog skupa, radi stvaranja procesa, a operacija oslobađanja oslobađa sve fizičke stranice iz radnog skupa unišavanog procesa.

Posmatrano iz ugla pozivanja operacija i obrađivanja prekida, sloj za upravljanje virtuelnom memorijom ima gornji i donji dio. Gornji dio sačinjavaju operacije zauzimanja i oslobađanja, jer se pozivaju iz slojeva iznad ovog sloja. Donji dio ovog sloja sačinjavaju njegovi obrađivači prekida, jer ih poziva mehanizam prekida, znači, hardver, koji je ispod najnižeg sloja operativnog sistema.

STRANIČNA SEGMENTACIJA

Koncept virtuelne memorije može da se primijeni na celu sliku procesa, ali i na pojedine njene segmente. U ovom drugom slučaju reč je o straničnoj segmentaciji (paging segmentation). Za straničnu segmentaciju je karakteristično da tabela stranica nije vezana za proces, nego za njegove segmente (znači, za svaki segment postoji posebna tabela stranica). U tom slučaju

Page 63: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 60

logička adresa se sastoji od adrese segmenta, od adrese logičke stranice segmenta i od adrese lokacije u ovoj stranici. Pri tome se mijenja namjena graničnog i baznog polja iz elemenata tabele segmenata. Tako se u graničnom polju nalazi podatak o broju stranica dotičnog segmenta (odnosno, podatak o najvišoj dozvoljenoj adresi logičke stranice tog segmenta), a u baznom polju se nalazi adresa tabele stranica dotičnog segmenta (uz ova dva polja i dalje je prisutno i polje sa pravima pristupa segmentu).

Kod stranične segmentacije, prilikom pretvaranja logičke adrese u fizičku, iz logičke adrese se izdvajaju adresa segmenta i adresa logičke stranice segmenta. Izdvojena adresa segmenta indeksira element tabele segmenata. Sadržaj graničnog polja ovog elementa se poredi sa izdvojenom adresom logičke stranice segmenta. Ako ova adresa nije veća od sadržaja pomenutog graničnog polja, tada se sadržaj baznog polja istog elementa tabele segmenata koristi kao adresa tabele stranica dotičnog segmenta. Pri tome, izdvojena adresa logičke stranice segmenta indeksira element pomenute tabele stranica. Ako se u ovom elementu nalazi adresa fizičke stranice, ona se spaja sa adresom lokacije u stranici, da bi se formirala fizička adresa. Inače se izaziva stranični prekid i dalji postupak je kao kod virtuelne memorije. Prethodno opisano pretvaranje logičke adrese u fizičku se nalazi u nadležnosti stranično segmentacionog hardvera.

Prednost stranične segmentacije je da ona omogućava dinamičko proširenje segmenata (dodavanjem novih stranica), što je važno za segmente promenljivih i steka. Na ovoj osnovi je moguće i otvorenim datotekama dodeljivati posebne segmente i na taj način ponuditi koncept memorijski preslikane datoteke (memory mapped file). Pristup ovakvoj datoteci ne zahtijeva sistemske operacije za čitanje, pisanje ili pozicioniranje, jer se direktno pristupa lokacijama sa odgovarajućim sadržajem datoteke. Mana koncepta memorijski preslikane datoteke je da se veličina datoteke izražava cijelim brojem stranica (jer nema načina da operativni sistem odredi koliko je popunjeno bajta iz poslednje stranice). Takođe, problem je i što logički adresni prostor segmenta može biti suviše mali za pojedine datoteke.

Stranična segmentacija pati od interne fragmentacije i izaziva produžavanje (usporavanje) preključivanja procesa.

OSNOVA SLOJA ZA UPRAVLJANJE VIRTUELNOM MEMORIJOM

Sloj za upravljanje virtuelnom memorijom se oslanja na operacije sloja za upravljanje kontrolerima I/O uređaja, da bi obezbijedio prenos kopija logičkih blokova na relaciji masovna i radna memorija i da bi smjestio adrese svojih obrađivača prekida u odgovarajuće elemente tabele prekida. 2.5 SLOJ ZA UPRAVLJANJE KONTROLERIMA I/O UREĐAJA Ulazni i izlazni uređaji (I/O) računara se dijele na:

• blokovske i • znakovne uređaje.

Ovakva podjela je uslovljena razlikama između ove dvije vrste ulaznih i izlaznih uređaja u pogledu: - jedinice pristupa,

Page 64: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 61

- načina pristupa i - upravljanja. Tako je za blokovske uređaje jednica pristupa blok, a za znakovne uređaje jedinica pristupa je znak. Dalje, dok značajan broj blokovskih uređaja dozvoljava direktan pristup, znakovni uređaji podržavaju samo sekvencijalni pristup. Na kraju, za razliku od blokovskih uređaja, znakovni uređaji dozvoljavaju dinamičko podešavanje njihovih pojedinih funkcionalnih karakteristika, kao što je, na primjer, brzina prenosa znakova od računara i ka računaru. Prethodne razlike utiču na oblikovanje drajvera, zaduženih za upravljanje kontrolerima.

Važno je uočiti da klasifikacija uređaja na znakovne i blokovske ne obuhvata sve uređaje. Na primjer, sat ili miš ne spadaju ni u znakovne ni u blokovske uređaje. Zato se drajveri ovakvih uređaja razlikuju od drajvera znakovnih i blokovskih uređaja.

DRAJVERI

Zajedničko svojstvo drajvera je da je svaki od njih namjenjen za upravljanje određenom klasom uređaja. Pri tome, obično, jedan drajver može da opsluži više primjeraka uređaja iste klase. Drajveri se nalaze u tijesnoj saradnji sa kontrolerima ulaznih i izlaznih uređaja i kriju sve detalje i posebnosti funkcionisanja ovih kontrolera. Van drajvera su vidljive samo operacije, kao što su, na primjer, operacije ulaza ili izlaza, koje omogućuju jednoobrazno korišćenje ulaznih i izlaznih uređaja. Tipične operacije drajvera blokovskih uređaja su:

1. operacija inicijalizacije (koja se poziva samo u toku pokretanja operativnog sistema) i 2. operacije ulaza i izlaza blokova (koje koristi sloj za upravljanje datotekama).

Tipične operacije drajvera znakovnih uređaja su:

1. operacija inicijalizacije (koja se poziva samo u toku pokretanja operativnog sistema), 2. operacije ulaza i izlaza znakova (koje koristi sloj za upravljanje datotekama), kao i 3. upravljačka operacija (koja omogućuje dinamičko podešavanje funkcionalnih karakteristika znakovnih uređaja, na primjer, njihove brzine prenosa znakova).

Za adresu svake od ovih operacija predviđeno je posebno polje u elementu tabele drajvera. Podrazumijeva se da redni broj drajvera indeksira element ove tabele, koji sadrži polja sa adresama pojedinih operacija ovog drajvera. Pri tome, polja, namijenjena za adrese operacija, koje dotični drajver ne podržava, sadrže adresu posebne (lažne) operacije, čije obavljanje nema efekta. To važi, na primjer, za upravljačku operaciju kod drajvera diska, ili za operaciju ulaza kod drajvera štampača.

Tabela drajvera nudi standardan način za povezivanje sloja za upravljanje datotekama i sloja za upravljanje ulaznim i izlaznim uređajima, radi vezivanja operacija običnih i specijalnih datoteka za operacije drajvera ulaznih i izlaznih uređaja. Zahvaljujući ovoj tabeli, moguće je u operativni sistem dodavati (statički i dinamički) nove drajvere (uslov za to je, ne samo dopunjavanje tabele drajvera adresama operacija novog drajvera, nego i dodavanje objektnog oblika novog drajvera objektnom obliku operativnog sistema).

U sklopu opsluzivanja kontrolera, drajveri moraju da reaguju i na prekide, koji stižu od kontrolera. Prekidi, na primjer, objavljuju da je završen prenos podataka ka kontroleru, ili od kontrolera. U ovakvom slučaju, obrada prekida obuhvata ili preuzimanje podatka, pristiglih od kontrolera, ili pripremu prenosa novih podataka ka kontroleru. Za ovakve obrade su zaduženi obrađivači prekida drajvera. Za razliku od operacija drajvera, koje se pozivaju iz slojeva iznad

Page 65: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 62

sloja za upravljanje ulaznim i izlaznim uređajima (pa zato predstavljaju gornji deo drajvera), obrađivače prekida poziva mehanizam prekida, znači hardver ispod operativnog sistema (pa zato oni predstavljaju donji deo drajvera). Uslov, da hardverski mehanizam prekida pozove nekog od obrađivača prekida, je da adresa ovog obrađivača dospe u odgovarajući element tabele prekida. To se ostvaruje u okviru drajverske operacije inicijalizacije.

DRAJVERI BLOKOVSKIH UREĐAJA

Aktivnost svakog drajvera započinje inicijalizacijom njegovog kontrolera (što se obavi

pozivanjem drajverske operacije inicijalizacije u toku pokretanja operativnog sistema). Nakon toga, aktivnost drajvera blokovskih uređaja se svodi na prenos blokova ka ovim uređajima i od njih. Zato su za drajverske operacije ulaza i izlaza blokova obavezni argumenti redni broj prenošenog bloka i adresa bafera (sloja za upravljanje datotekama) u koji, ili iz kog se prenosi blok. Pri tome, drajversku operaciju ulaza bloka poziva sistemska operacija čitanja sloja za upravljanje datotekama. Ako se ova sistemska operacija odnosi na običnu datoteku, ona, kao prvi argument u pozivu drajverske operacije ulaza bloka, navodi izračunati redni broj bloka. U slučaju da se pomenuta sistemska operacija čitanja odnosi na specijalnu datoteku, ona, kao prvi argument u pozivu drajverske operacije ulaza bloka, navodi sadržaj polja pozicije ove datoteke (ovo polje je prisutno u elementu tabele otvorenih datoteka procesa pozivaoca pomenute sistemske operacije). U svakom slučaju, kao drugi argument pozivane drajverske opercije koristi se adresa nekog od slobodnih bafera sloja za upravljanje datotekama.

Drajversku operaciju izlaza bloka poziva sistemska operacija pisanja sloja za upravljanje datotekama. Ako se ova sistemska operacija odnosi na običnu datoteku, ona, kao prvi argument u pozivu drajverske operacije izlaza bloka, navodi izračunati redni broj bloka (u koji se smještaju pisani bajti). U slučaju da se pomenuta sistemska operacija pisanja odnosi na specijalnu datoteku, ona, kao prvi argument u pozivu drajverske operacije izlaza bloka, navodi sadržaj polja pozicije ove datoteke (ovo polje je prisutno u elementu tabele otvorenih datoteka procesa pozivaoca pomenute sistemske operacije). U svakom slučaju, kao drugi argument pozivane drajverske opercije koristi se adresa nekog od slobodnih bafera sloja za upravljanje datotekama, u kome je pripremljen novi sadržaj upisivanog bloka.

Drajverska operacija izlaza bloka se poziva i kada je potrebno izmijenjene sadržaje bafera sloja za upravljanje datotekama sačuvati na disku. Ovo se dežava prilikom oslobađanja bafera, koji sadrži izmjenjenu kopiju bloka, ali i periodično, radi smanjenja mogućnosti gubljenja izmjena ovakvih kopija. Za periodično pisanje ovakvih sadržaja bafera može biti zadužen poseban sistemski proces.

Za drajverske operacije ulaza ili izlaza bloka je prirodno da se oslone na mehanizam direktnog memorijskog pristupa (DMA), ako to omogućuje kontroler. U ovom slučaju, postavlja se pitanje sta učiniti sa aktivnošću procesa pozivaoca jedne od ovih operacija, nakon pokretanja mehanizma direktnog memorijskog pristupa, radi prenosa bloka. Ako je za nastavak aktivnosti pomenutog procesa neophodno da prenos bloka bude završen, tada je, nakon pokretanja mehanizma direktnog memorijskog pristupa, neizbježno zustavljanje aktivnosti pomenutog procesa, dok se zatraženi prenos bloka ne obavi. Drajverske operacije ulaza ili izlaza bloka, koje zaustavljaju aktivnost svog procesa pozivaoca, dok se ne obavi zatraženi prenos bloka, spadaju u klasu blokirajućih operacija. Zaustavljanje aktivnosti jednog procesa u okviru drajverske operacije ulaza ili izlaza bloka prirodno dovodi do preključivanja procesora na drugi proces. Ako se u toku aktivnosti ovog drugog procesa javi potreba za prenosom bloka i ako se, u okviru drajverske operacije ulaza ili izlaza bloka, ustanovi da se zatraženi prenos ne može pokrenuti, jer

Page 66: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 63

je ulazni ili izlazni uređaj zauzet već pokrenutim prenosom bloka za potrebe prvog procesa, neizbježno je zaustavljanje aktivnosti i drugog procesa. Pri tome, mora ostati trag o zahtjevu za prenosom novog bloka, da bi se taj prenos pokrenuo, čim se završi već pokrenuti prenos. Sticaj okolnosti može dovesti do toga da postoji viđ ovakvih zahtjva, jer je rad ulaznog ili izlaznog uređaja sporiji od rada procesora. Zato je moguće da se, u toku prenosa jednog bloka, procesor više puta preključi na razne procese, čije aktivnosti se, jedna za drugom, zaustavljaju zbog zahtjeva za prenosom novih blokova. Uvezivanje svih istvoremeno postojećih zahtjeva za prenosom blokova u listu zahtjeva omogućuje ne samo registrovanje svih zahtjeva, nego i registrovanje redosleda njihovog obavljanja. Pri tome, svaki zahtjev u ovakvoj listi zahtjeva mora da sadrži:

1. smjer zahtjevanog prenosa bloka, 2. redni broj ovog bloka, 3. adresu bafera koji učestvuje u prenosu, kao i 4. adresu deskritpora procesa, čija aktivnost se zaustavlja do obavljanja zahtjevanog prenosa bloka.

Drajverske operacije ulaza ili izlaza bloka započinju pripremanjem zahtjeva za prenos bloka i njegovim ubacivanjem u listu zahtjeva. Time se, ujedno, zaustavlja aktivnost procesa pozivaoca ovakve operacije, ako nije moguće pokrenuti zahtjevani prenos bloka, jer je drugi prenos u toku. U suprotnom, pokreće se mehanizam direktnog memorijskog pristupa, radi obavljanja zahtjevanog prenosa bloka, i opet se zaustavlja aktivnost procesa pozivaoca. Nastavak ove aktivnosti omogućuje odgovarajući obrađivač prekida (interrupt handler). Njega pozove kontroler, izazivajući prekid nakon obavljanja zahtjevanog prenosa bloka. Pomenuti obrađivač prekida prvo izbaci iz liste zahtjeva upravo opsluženi zahtjev, pamteći, pri tome, adresu deskriptora procesa, čija aktivnost se može nastaviti. Pre omogućavanja nastavljanja ove aktivnosti, obrađivač prekida pokreće prenos novog bloka, ako lista zahtjeva nije prazna. Važno je uočiti da upravljanje listom zahtjeva u toku drajverskih operacija ulaza ili izlaza bloka mora biti pod onemogućenim prekidima, da bi obrađivač prekida uvek zaticao tu listu u ispravnom (konzistentnom) stanju.

Drajver blokovskog uređaja mora da poznaje karakteristike uređaja koga opslužuje. Na primjer, kada opslužuje magnetni disk, drajver mora da zna koliko sektora ima u stazi, koliko staza ima u cilindru i koliko cilindara ima na disku (glave za čitanje i pisanje diska opisuju staze iznad njegovih rotirajućih površina sa magnetnim premazom, a cilindri se sastoje od staza, koje istovremeno opisuju razne glave diska iznad raznih rotirajućih površina). Na osnovu tih podatka, drajver preračunava redni broj bloka u redne brojeve cilindara, staza i sektora (jer jedan blok može da sadrži više sektora), da bi izazvao pozicioniranje glava diska na potrebni cilindar i usmjerio prenos podataka na odgovarajuće staze i sektore (preračunavanje rednog broja bloka u redne brojeve cilindara, staza i sektora može biti i u nadležnosti kontrolera).

U nadležnosti drajvera blokovskog uređaja je i određivanje načina preslikavanja blokova u sektore (mada i to može obavljati kontroler). Ovo preslikavanje je bitno, jer od njega zavisi propusnost (broj blokova koji se mogu preneti u jedinici vremena) ulaznog ili izlaznog uređaja, kao što je (magnetni) disk. Tako, na primjer, moguće je da, zbog dužne prenosa jednog sektora između kontrolera i radne memorije, glava diska pređe preko početka drugog sektora (koji prostorno sledi odmah iza prenosenog sektora) pre nego se pomenuti prenos završi. Tada se pristup drugom sektoru mora odložiti za jedan obrtaj, dok njegov početak ponovo ne dođe ispod glave diska. To znači da je moguć pristup samo jednom bloku u jednom obrtaju, ako se pretpostavi da sektor odgovara bloku i ako se pristupa uzastopnim blokovima, koji su preslikani u prostorno uzastopne sektore. Zato je bolje da uzastopni blokovi ne budu preslikani u prostorno

Page 67: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 64

uzastopne sektore (interleaving). Ako se uzastopni blokovi preslikavaju u sektore, međusobno razdvojene jednim sektorom (interleaving factor 1), i ako se prenos jednog sektora završi prije nego kraj njegovog prostornog sledbenika prođe ispod glave diska, tada se u toku jednog obrtaja može pročitati n/2 uzastopnih blokova (uz pretpostavku da staza sadrži n sektora i da sektor odgovara bloku). Broj sektora (interleaving factor), koji razdvajaju sektore, odgovarajuće uzastopnim blokovima, zavisi od odnosa vremena prenosa bloka (između kontrolera i radne memorije) i vremena za koje sektor prođe ispod glave diska. Ako kontroler automatski prebacuje sve sektore staze (iznad koje se nalazi glava diska) u svoju lokalnu radnu memoriju (track_at_time caching), tada nema smetnje da se uzastopni blokovi preslikaju u prostorno uzastopne sektore.

Propusnost magnetnog diska zavisi i od redosleda usluživanja zahtjeva za prenosom blokova, jer, sem vremena prenosa bloka (transfer time), vremena za koje staza prođe ispod glave diska (rotational delay), na propusnost diska značajno utiče i vreme premeštanja glave diska sa staze na stazu (seek time). Da bi se ovo vreme minimiziralo, potrebno je što manje pokretati glavu diska. To znači, da je bolje da se zahtjevi za prenosom blokova ne uslužuju hronološki, nego u redosledu, koji obezbijeđuje minimalno pokretanje glave diska. Zato se lista ovakih zahtjeva sortira u rastućem redosledu staza (na kojima se nalaze blokovi, čije prenošenje se zahtijeva), a glava diska se pomjera iz početne pozicije samo u jednom smjeru, dok svi zahtjevi u smjeru njenog kretanja ne budu usluženi. Posle toga, ona se vraća u početnu poziciju, radi usluživanja zahtjeva, koji su pristigli nakon što je glava diska prešla preko staza na kojima se nalaze blokovi, čije prenošenje se zahtijeva. Na ovaj način se, pored optimizacije kretanja glave diska, obezbijeđuje i pravedno usluživanje svih zahtjeva (jer nema mogućnosti za nepredvidivo dugo odlaganje usluživanja pojedinih zahtjeva). Prethodno opisani pristup se naziva elevator algoritam (jer se po njemu upravlja kretanjem liftovima u visokim zgradama). O optimizaciji kretanja glave diska može da se brine i kontroler (u ovom slučaju, drajver samo ubacuje zahtjeve u listu zahtjeva, a kontroler se brine o redosledu njihovog usluživanja). To je naročito važno, kada se kontroler brine o zamjeni loših sektora (bad sectors) ispravnim (rezervnim) sektorima (sa posebnih rezervnih staza). Pošto, u ovom slučaju, jedino kontroler zna kojoj stazi stvarno pripada koji sektor, jedino on može da optimizira kretanje glave diska.

Zadatak drajvera je da iskoristi sve mogućnosti kontrolera. Tako, ako kontroler podržava više magnetnih diskova i omogućuje istovremena nezavisna pozicioniranja glava raznih diskova, tada to drajver može da iskoristi za smanjenje srednjeg vremena premještanja sa staze na stazu glave diska.

Drajver može da poveća pouzdanost diska, ako reaguje na prolazne greške u radu diska. na primjer, u slučaju pojave zrnca prašine između glave (magnetnog) diska i (magnetne) površine, ulaz ili izlaz neće biti uspješan. Međutim, višestrukim ponavljanjem operacije, drajver može da otkloni prethodnu grešku (jer je verovatno da će se zrnce prašine pomjeriti u narednim pokušajima ulaza ili izlaza). Na sličan način drajver moše da reaguje i na pozicioniranje glave diska na pogrešnu stazu, kao i na neke druge greške kontrolera. Drajver moše i da smanji trošenje magnetnih disketa (kod kojih glava disketne jedinice klizi po površini sa magnetnim premazom), zaustavljanjem obrtanja diskete, čim nestanu zathevi za prenos blokova na nju i sa nje.

BLOKOVSKI I ZNAKOVNI UREĐAJI KAO SPECIJALNE DATOTEKE

Za blokovske uređaje, poput magnetnog diska, je tipično da ih koriste istovremeno

Postojeći procesi u toku pristupa (raznim) datotekama. Zato je i moguće da se u listi zahtJeva istovremeno zateknu zahtJevi raznih procesa. Blokovskim uređajima se rIJetko pristupa kao

Page 68: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 65

specijalnim datotekama, a kada se to i desi, koristi ih samo jedan proces, čiji je zadatak najčešće provjera ispravnosti blokova, radi pronalaženja izgubljenih ili loših blokova. Za razliku od blokovskih uređaja, za znakovne uređaje je tipično da im procesi pristupaju kao specijalnim datotekama i da ih zaključavaju, da bi obezbijedili međusobnu isključivost u toku njihovog korišćenja. Takav način upotrebe znakovnih uređaja je uobičajen ne samo za terminale, za koje je prirodno da ih opslužuje samo jedan proces, nego i za štampače ili mrežne kontrolere, za koje je prirodno da ih koristi više procesa. Zato se, u slučaju znakovnih uređaja, kao što su štampači ili mrežni kontroleri, uvode posebni sistemski procesi posrednici (spooler), koji posreduju u korišćenju pomenutih uređaja. Svaki od ovih procesa pristupa svom znakovnom uređaju kao specijalnoj datoteci, koju zaključava, da bi obezbijedio međusobnu isključivost u toku njenog korišćenja. Istovremeno, uz svaki od sistemskih procesa posrednika postoji i poseban direktorijum.Kada neki korisnički proces želi da odštampa tekst, ili da pošalje poruku kroz mrežu, on prvo pripremi datoteku sa odgovarajućim sadržajem, a zatim tu datoteku ubaci u pomenuti direktorijum. Odgovarajući sistemski proces posrednik vadi datoteke iz svog direktorijuma (jednu po jednu), da bi njihove sadržaje (jedan po jedan) uputio (posredstvom svoje specijalne datoteke) na željeni uređaj. Pri tome se korisnički procesi (s jedne strane) i sistemski proces posrednik (s druge strane) nalaze u odnosu proizvođač i potrošač (jer prvopomenuti procesi “proizvode” datoteke, koje “troši” drugopomenuti proces). Da bi ovakva saradnja procesa bila uspješna, neophodno je da sloj za upravljanje datotekama obezbijedi sinhronizaciju procesa tokom njihovog pristupa direktorijumima, koji posreduju u razmjeni datoteka.

DRAJVERI ZNAKOVNIH UREĐAJA

Blokovski i znakovni uređaji se razlikuju ne samo po načinu korišćenja, nego i po načinu aktiviranja. Tako, dok blokovske uređaje uvek aktiviraju procesi, aktivnost znakovnih uređaja zavisi i od aktivnosti korisnika. Na primjer, prispeće znakova sa tastature ne zavisi od aktivnosti procesa, nego od aktivnosti korisnika. Slično, upućivanje znakova na ekran zavisi i od aktivnosti korisnika (eho), ali i od aktivnosti procesa. Zato u sastav drajvera znakovnih uređaja obavezno ulaze i baferi, namijenjeni za smještanje znakova, koji su prispjeli sa ovih uređaja (nezavisno od aktivnosti procesa), odnosno, koji su upućeni ka ovim uređajima. U ovakvim baferima znakovi se čuvaju dok ih procesi ili uređaji ne preuzmu. Tako, na primjer, za drajver terminala je potreban par takvih bafera za svaki od terminala (koje drajver opslužuje). Pri tome, jedan, ulazni bafer služi za smještanje znakova, prispelih sa tastature, a drugi, eho bafer služi za smještanje znakova, upućenih ka ekranu. Svaki pritisak dirke sa tastature izaziva prekid, koji aktivira obrađivača prekida tastature. Ako su ulazni i eho baferi puni, obrađivač prekida ignorise prispeli znak. Inače, on ga preuzima i smješta u ulazni bafer. U ulaznom baferu znak čeka da neki proces zatraži njegovo preuzimanje. Preuzimanje znaka iz ulaznog bafera omogućuje drajverska operacija ulaza znaka. U okviru ove operacije se zaustavlja aktivnost njenog procesa pozivaoca, ako je ulazni bafer prazan. Tada nastavljanje ove aktivnosti omogućuje obrađivač prekida tastature, po smještanju znaka u ulazni bafer. U svakom slučaju, drajverska operacija ulaza znaka vraća, kao svoju vrednost, preuzeti znak iz ulaznog bafera.

Obrađivač prekida tastature ima, takođe zadatak da provjeri da li je eho bafer prazan. Ako ovaj bafer nije prazan, tada obrađivač prekida tastature smješta prispeli znak u eho bafer. Inače, obrađivač prekida tastature upućuje prispjeli znak ka ekranu. Nakon prikazivanja znaka, ekran izaziva prekid, koji aktivira obrađivača prekida ekrana. Ako je eho bafer prazan, aktivost obrađivača prekida se odmah završava. Inače, on preuzima naredni znak iz eho bafera i upućuje ga ka ekranu.

Page 69: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 66

Eho bafer je podesan i za čuvanje znakova, koje procesi žele da prikažu na ekranu. Prikazivanje znaka omogućuje drajverska operacija izlaza znaka. Jedini argument njenog poziva je prikazivani znak. U okviru ove operacije se zaustavlja aktivnost njenog procesa pozivaoca, ako je eho bafer pun. Tada nastavljanje ove aktivnosti omogućuje obrađivač prekida ekrana i to nakon pražnjenja jednog znaka (ili više znakova) iz ovog bafera. Ako drajverska operacija izlaza znaka zatekne eho bafer prazan, ona upućuje prikazivani znak ka ekranu. U slučaju da eho bafer nije ni pun ni prazan, drajverska operacija pisanja znaka samo smješta prikazivani znak u eho bafer.

Prethodno opisane drajverske operacije čitanja i pisanja znaka spadaju u blokirajuće operacije. Ove operacije se pozivaju iz sistemskih operacija čitanja i pisanja sloja za upravljanje datotekama, kada se čita, odnosno piše specijalna datoteka. Poziv drajverske operacije ulaza nema argumenata, a njegova povratna vrednost je pročitani znak (njegov kod). Za poziv drajverske operacije izlaza kao jedini argument služi pisani znak (njegov kod). Ovaj poziv nema povratnu vrijednost.

Upravljanje ulaznim i eho baferom, u okviru drajverskih operacija ulaza i izlaza znaka, mora biti pod onemogućenim prekidima, da bi obrađivači prekida tastature i ekrana uvek zaticali bafere u ispravnom (konzistentnom) stanju. Inače, obrađivač prekida tastature i proces pozivalac drajverske operacije ulaza znaka se nalaze u odnosu proizvođač i potrosač. U istom odnosu se nalaze proces pozivalac operacije izlaza znaka i obrađivač prekida ekrana.

Za grafičke (memorijski preslikane) terminale nije potreban eho bafer, niti obrađivač prekida ekrana, jer ovakvi terminali posjeduju video memoriju jer se njen sadržaj periodično prikazuje prilikom osvježavanja ekrana. Zato je, kod grafičkog terminala, za prikazivanje znaka na ekranu dovoljno smjestiti znak u odgovarajuću lokaciju video memorije. U slučaju da se želi podržati više prozora (window) na ekranu grafičkog terminala, za svaki od prozora je potreban poseban ulazni bafer. Znak prispio sa tastature se smješta u ulazni bafer aktivnog prozora, a prikazivani znak se upućuje u dio video memorije prozora na kome znak treba da se pojavi (o aktivnom prozoru se brine upravljač prozorima).

Drajver terminala, pored operacije inicijalizacije (namijenjene za inicijalizaciju kontrolera terminala) i operacija ulaza i izlaza znakova, nudi i upravljačku operaciju. Argumenti njenog poziva utiču ne samo na funkcionisanje, na primjer, terminala, nego i na funkcionisanje drajvera terminala. Upravljačka operacija omogućuje da se drajveru terminala saopšti da li da interpretira znakove, koji dolaze sa tastature (cooked mode), ili ne (raw mode). U prvom slučaju, u nadležnosti drajvera terminala se nalazi editovanje znakova prispjelih sa tastature. U sklopu toga, drajver terminala mora, na primjer, da omogući brisanje poslednjeg znaka koji je prispio. Znači, kada primi odgovarajući upravljački znak (delete), drajver terminala (odnosno, njegov obrađivač prekida tastature) mora da prethodno prispeli znak izbaci iz ulaznog i iz eho bafera, kao i da obezbijedi brisanje tog znaka sa ekrana, ako je on već prikazan. Takođe, drajver terminala se brine o interpretaciji upravljačkih znakova “prelazak na novu liniju” (line feed), “prelazak na početak linije” (carriage return), kao i drugih upravljačkih znakova (escape, return ili enter i slično). U slučaju kada ne interpretira znakove, drajver terminala samo prosleđuje dalje znakove pristigle u njegov ulazni bafer.

Eho znaka, pristiglog sa tastature, nije uvek poželjan (na primjer, kod zadavanja znakova lozinke). Zato upravljačka operacija omogućuje da se drajveru terminala saopšti da li da vrši eho pristiglih znakova, ili ne. Kada vrši eho, drajver terminala mora da razdvoji znakove koji su rezultat eha od ostalih prikazivanih znakova na ekranu terminala (koje na ekran šalju procesi). Drajver terminala može da interpretira i znakove, pristigle za prikazivanje, omogućujući tako pomeranje kursora, pomeranje linija, kao i druga upravljanja ekranom (uključujući tu i upravljanje prozorima).

Page 70: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 67

DRAJVER SATA

U nadležnosti sloja za upravljanje kontrolerima se nalazi i praćenje proticanja vremena.

Praćenje proticanja vremena se zasniva na brojanju periodičnih prekida (clock), koje u pravilnim vremenskim intervalima generise sat (kristalni oscilator sa pravilnom frekvencijom i brojačem, koji se umanjuje u svakoj oscilaciji, a čije anuliranje izaziva prekid). Obrađivač prekida sata broji prekide sata, a njihov zbir predstavlja sistemsko vreme (lokalno vreme u računaru). Ovaj obrađivač prekida predstavlja donji deo drajvera sata. Gornji deo ovog drajvera predstavljaju sistemske operacije za preuzimanje ili izmjenu sistemskog vremena i za uspavljivanje procesa (odnosno, za odlaganje njegove aktivnosti, dok ne istekne zadani vremenski interval).

Sistemsko vrijeme se može predstaviti kao broj prekida sata ili kao broj sekundi i broj prekida sata u tekućoj sekundi (druga predstava zahtjeva manje prostora). Sistemsko vrijeme može da se računa u odnosu na neki nepromenljivi trenutak u prošlosti, ili u odnosu na trenutak poslednjeg pokretanja operativnog sistema.

Kvantum se predstavlja kao cijeli broj prekida sata. Važno je uočiti da, dok je sistemsko vrijeme precizno (jer je sat precizan), dotle

pripisivanje procesorskog vremena procesima (odnosno, mjerenje trajanja aktivnosti procesa) ne mora biti precizno. Kada postoji ovakva nepreciznost, nju izaziva nemogućnost mjerenja dužine vremenskih intervala, koji su kraći od perioda prekida sata, a njih ima u toku aktivnosti procesa. Na primjer, trajanje obrade prekida je obično kraće od perioda prekida sata i pripisuje se prekinutom procesu, iako pomenuta obrada prekida ne mora biti sa njim povezana (inače, obrada prekida obično predstavlja dio aktivnosti prekinutog procesa, jer se u obradi prekida, zbog brzine, izbjegava preključivanje sa prekinutog procesa, odnosno preključivanje na prekinuti proces). Slično, ako se u toku jednog perioda prekida sata desi više preključivanja, cijeli period se pripisuje kvantumu poslednjeg aktivnog procesa, koga je prekinuo prekid sata. Pomenute nepreciznosti se mogu izbjeći, ako procesor broji svoje cikluse i njihovu sumu čuva u posebnom registru. Pomoću razlike sadržaja ovog registra, preuzetog na početku i preuzetog na kraju perioda aktivnosti procesora koji je kraći od perioda sata, može se ustanoviti koliko ciklusa je potrošeno u ovom periodu i iz toga odrediti trajanje pomenutog preioda aktivnosti procesora. Procesorsko vreme troši i obrađivač prekida sata, jer se u njegovoj nadležnosti nalazi više poslova, kao sto su:

1. održavanje sistemskog vremena, 2. praćenje isticanja kvantuma aktivnog procesa, 3. praćenje ukupnog korišćenja procesorskog vremena aktivnog procesa, 4. provjera da li je nastupilo vreme buđenja uspavanog procesa (čija aktivnost se nastavlja tek kada istekne zadani vremenski interval), ili 5. skupljanje statistika o aktivnosti procesa (koje se svodi na registrovanje sadržaja

programskog brojača, radi otkrivanja učestanosti izvršavanja pojedinih delova programa).

UPRAVLJANJE TABELOM PREKIDA

Sloj za upravljanje kontrolerima omogućuje i smještanje adresa obrađivača prekida u tabelu prekida, čime dozvoljava da viši slojevi operativnog sistema mogu da reaguju na prekide. Za operaciju smještanja adresa obrađivača prekida u tabelu prekida nije uputno da bude sistemska operacija, jer ona pruža mogućnost da se ugrozi funkcionisanje operativnog sistema i naruši

Page 71: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 68

njegov mehanizam zaštite.

OSNOVA SLOJA ZA UPRAVLJANJE KONTROLERIMA

Sloj za upravljanje kontrolerima se oslanja na sloj za upravljanje procesorom, jer su preključivanja sastavni deo aktivnosti drajvera. Za operacije sloja za upravljanje kontrolerima (odnosno za drajverske operacije) je zajedničko da se obavljaju pod onemogućenim prekidima što je prihvatljivo, jer je reč o kratkotrajnim operacijama).

2.6 SLOJ ZA UPRAVLJANJE PROCESOROM

Osnovni zadatak upravljanja procesorom je preključivanje procesora sa aktivnog procesa na neki od spremnih procesa. O izboru spremnog procesa, na koga se preključuje procesor, brine raspoređivanje. Ovaj izbor zavisi od cilja raspoređivanja. Za interaktivno kori[ćenje računara cilj raspoređivanja je da ravnomerno rasporedi procesorsko vreme između istovremeno postojećih procesa, odnosno, između njihovih vlasnika (korisnika, koji istovremeno koriste računar). Ovakav cilj se ostvaruje kru\nim raspoređivanjem (round robin scheduling), koje svakom od istovremeno postojećih procesa dodeljuje isti vremenski interval, nazvan kvantum. Po isticanju kvantuma, aktivni proces prepu[ta procesor spremnom procesu, koji najdu\e čeka na svoj kvantum. Neophodan preduslov za primjenu kružnog raspoređivanja je da se preključivanje vezuje za trenutak u kome se završava tekući kvantum. Zato je neophodno da se preključivanje poziva iz obrađivača prekida sata.

Kružno raspoređivanje se uspješno primjenjuje i u situaciji kada hitnost svih procesa nije ista, pa se, zbog toga, procesima dodeljuju razni prioriteti. Pri tome se podrazumijeva da kružno raspoređivanje važi u okviru grupe procesa sa istim prioritetom. Procesor se preključuje na procese sa nižim prioritetom samo kada se završi (zaustavi) aktivnost i poslednjeg od procesa sa višim prioritetom. Procesor se preključuje na proces sa višim prioritetom (preemptive scheduling) odmah po pojavi ovakvog procesa, odnosno odmah po omogućavanju nastavka aktivnosti prioritetnijeg procesa.

Dinamička izmjena prioriteta procesa doprinosi ravnomernosti raspodele procesorskog vremena između procesa, ako se uspostavi obrnuta proporcionalnost između prioriteta procesa i obima u kome je on iskoristio poslednji kvantum. Pri tome se periodično provjerava iskorišćenje poslednjeg kvantuma svakog od procesa i, u skladu s tim, procesima se dodeljuju novi prioriteti. Takođe, dinamička izmjena prioriteta procesa doprinosi ravnomjernosti raspodele procesorskog vremena između korisnika, ako se uspostavi obrnuta proporcionalnost između prioriteta procesa, koji pripadaju nekom korisniku, i ukupnog udjela u procesorskom vremenu tog korisnika u toku njegove interakcije sa računarom (što je ukupan udio korisnika više ispod željenog prosjeka, to prioritet njegovih procesa više raste).

Ravnomerna raspodjela procesorskog vremena se može postići i bez izmjena prioriteta, ako se uvede lutrijsko raspoređivanje (lottery scheduling). Ono se zasniva na dodeli procesima lutrijskih lozova. Nakon svakog kvantuma izvlači se (na slučajan način) broj loza i procesor se preključuje na proces koji poseduje izvučeni loz. Tako, ako ukupno ima m lozova, proces, koji poseduje n od m lozova, u prosjeku koristi n/m kvantuma procesorskog vremena.

Od dužine kvantuma zavisi odziv računara (brzina kojom on reaguje na korisničku akciju posredstvom terminala), ali i iskorišćenje procesora. Pri tome, skraćenje kvantuma (do određene granice) doprinosi poboljšanju odziva, ali i smanjenju iskorišćenja procesora (jer se na preključivanje troši procesorsko vreme). Suviše kratak kvantum može da ugrozi i odziv, ako se

Page 72: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 69

prevelik procenat procesorskog vremena troši na preključivanje. Sa stanovišta iskorišćenja procesora prihvatljiva su samo neophodna preključivanja (kada nije moguć nastavak aktivnosti procesa), ili, bar značajno smanjivanje učestanosti preključivanja. S tom idejom na umu moguće je opet iskoristiti dinamičku izmjenu prioriteta procesa za istovremeno održavanje i dobrog odziva za procese, koji su u interakciji sa korisnicima, i dobrog iskorišćenja procesora za pozadinske (background) procese, koji nijesu u (čestoj) interakciji sa korisnicima. Pri tome se interaktivnim procesima dodeljuje najviši prioritet i najkraći kvantum. Pozadinskim procesima, koji su vrlo dugo aktivni bez ikakve interakcije sa korisnikom, se dodeljuje najniži prioritet i najduži kvantum. Procesu automatski opada prioritet i produžava se kvantum što je on duže aktivan i ima manju interakciju sa korisnikom. Povećanje interakcije sa korisnikom dovodi do porasta prioriteta procesa i smanjenja njegovog kvantuma. I u ovom slučaju, dinamička izmjena prioriteta se obavlja periodično.

Prethodno izloženo ukazuje na veliku važnost postojanja mogućnosti za uticanje na prioritet procesa, jer je to način da se upravlja ponašanjem računara.

Za operacije sloja za upravljanje procesorom je zajedničko da se obavljaju pod onemogućenim prekidima (što je prihvatljivo, jer je reč o kratkotrajnim operacijama). To je naročito značajno za operacije koje rukuju deskriptorima procesa, jer jedino onemogućenje prekida osigurava ispravnost upravljanja listama u koje se uključuju i iz kojih se isključuju deskriptori procesa u toku ovih operacija (odnosno, osigurava konzistentnost ovih listi). U ovakve operacije spadaju operacija preključivanja (i operacije raspoređivanja), sistemska operacija za izmjenu prioriteta procesa, ili sistemske operacije za sinhronizaciju procesa.

Operacije raspoređivanja obuhvataju bar dvije operacije. Jedna uključuje proces među spremne procese, tako što, na primjer, njegov deskriptor ubacuje na kraj liste deskriptora spremnih procesa, koja odgovara prioritetu dotičnog procesa (u ovom slučaju se podrazumijeva da za svaki prioritet postoji posebna lista deskriptora spremnih procesa, na koju se primjenjuje kružno raspoređivanje). Druga od ove dve operacije vadi iz listi deskriptora spremnih procesa deskriptor najprioritetnijeg spremnog procesa.

U nadležnosti sloja za upravljanje procesorom obično se nalazi i inicijalizacija operativnog sistema (ili bar njen deo). Ključni korak u ovoj inicijalizaciji je stvaranje uslova za preključivanje. Ono obuhvata pripremu listi deskriptora spremnih procesa, kao i pripremu deskriptora procesa, koji odgovara delu programa, zaduženog za inicijalizaciju operativnog sistema. Na taj način izvršavanje ovog dijela programa prerasta u proces. Pri tome, pripremljeni deskriptor odgovara beskonačnom procesu, ako se dio programa, zadužen za inicijalizaciju operativnog sistema, završava beskonačnom petljom (koja, tada, opisuje aktivnost beskonačnog procesa). Dio posla inicijalizacije operativnog sistema može da preuzme i poseban inicijalizacioni proces, koji nastane pošto se stvore uslovi za preključivanje. Tada se procesor preključuje sa beskonačnog procesa na inicijalizacioni proces.

Page 73: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 70

3. MRTVA PETLJA

Mrtva petlja (deadlock) opisuje situaciju u kojoj je trajno zaustavljena aktivnost procesa. Na primjer, to se desi kada dva procesa žele da u režimu međusobne isključivosti pristupaju dvema datotekama. Ako prvi od njih otvori prvu datoteku, a zatim drugi od njih otvori drugu datoteku, tada nema mogućnosti za nastavak aktivnosti tih procesa, bez obzira da li je sistemska operacija otvaranja blokirajuća ili ne. U slučaju blokirajućih sistemskih operacija otvaranja (sa zaključavanjem), pokušaj prvog procesa da otvori drugu datoteku dovodi do trajnog zaustavljanja njegove aktivnosti. Isto se dešava sa drugim procesom prilikom njegovog pokušaja da otvori prvu datoteku. Zaustavljanje aktivnosti ova dva procesa je trajno, jer je svaki od njih zauzeo (zaključao) datoteku, koja treba i drugom procesu za nastavak njegove aktivnosti, i nema nameru da tu datoteku oslobodi (otključa). U slučaju neblokirajuće sistemske operacije otvaranja (sa zaključavanjem), procesi upadaju u beskonačnu petlju (starvation), pokušavajući da otvore datoteku, koju je isključivo za sebe već otvorio (zaključao) drugi proces. Ovakav oblik međusobne zavisnosti procesa se naziva i ziva petlja (livelock). Ona se, po svom ishodu, suštinski ne razlikuje od mrtve petlje.

Pojava mrtve petlje je vezana za zauzimanje resursa, kao što su, na primjer, prethodno pomenute datoteke. Pri tome, za pojavu mrtve petlje je potrebno da budu ispunjena četiri uslova:

1. zauzimani resursi se koriste u režimu međusobne isključivosti, 2. resursi se zauzimaju jedan za drugim, tako da proces, nakon zauzimanja izvjesnog broja resursa, mora da čeka da zauzme preostale resurse, 3. resurse oslobađaju samo procesi koji su ih zauzeli i 4. postoji cirkularna međuzavisnost procesa (prvi proces čeka oslobađanje resursa koga drži drugi proces, a on čeka oslobađanje resursa koga drži treći proces, i tako redom do poslednjeg procesa iz lanca procesa, koji čeka oslobađanje resursa koga drži prvi proces).

Postoje četiri pristupa rješavanja problema mrtve petlje:

1. sprečavanje (prevention) pojave mrtve petlje (onemogućavanjem važenja nekog od četiri neophodna uslova za njenu pojavu), 2. izbegavanje (avoidance) pojave mrtve petlje pažljivom alokacijom resursa 3. otkrivanje (detection) pojave mrtve petlje i oporavak (recovery) od nje i 4. ignorisanje problema mrtve petlje (Nojev algoritam). Kod sprečavanja pojave mrtve petlje, važenje prvog uslova nije moguće spriječiti, ako je

neophodno korišćenje resursa u režimu međusobne isključivosti. Važenje drugog uslova se može spriječiti, ako se unaprijed zna koliko treba resursa i ako se oni svi zauzmu pre korišćenja. Pri tome, neuspjeh u zauzimanju bilo kog resursa dovodi do oslobađanja prethodno zauzetih resursa (što je moguće, jer nije započelo njihovo korišćenje). Važenje trećeg uslova se može spriječiti, ako postoji način da se zauzeti resurs privremeno oduzme procesu. I konačno, važenje četvrtog uslova se može spriječiti, ako se resursi uvek zauzimaju u unapred određenom redosledu (koji isključuje mogućnost cirkularne međuzavisnosti procesa).

Izbegavanje pojave mrtve petlje se zasniva na ideji da se, na osnovu poznavanja: 1. maksimalno mogućih zahtjeva za resursima, 2. ukupno postavljenih zahtjeva za resursima i 3. stanja resursa,

udovoljava samo onim zahtjevima za koje se (provjerom) ustanovi da, nakon njihovog usvajanja, postoji redosled zauzimanja i oslobađanja resursa u kome se mogu zadovoljiti maksimalno

Page 74: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 71

mogući zahtjevi svih procesa. Praktična vrijednost ovoga pristupa nije velika, jer se obično unaprijed ne znaju maksimalno mogući zathevi procesa za resursima, a to je neophodno za provjeru da li se može udovoljiti pojedinim zahtjevima. Sem toga, ovakva provjera je komplikovana, a to znači i neefikasna.

Otkrivanje pojave mrtve petlje se zasniva na sličnom pristupu kao i izbegavanje pojave mrtve petlje. U ovom slučaju se provjerava da li postoji proces, čijim zahtjevima se ne može udovoljiti ni za jedan redosled zauzimanja i oslobađanja resursa. Pored komplikovanosti ovakve provjere, problem je i šta učiniti, kada se i otkrije pojava mrtve petlje. Ako se resursi ne mogu privremeno oduzeti od procesa, preostaje jedino uništavanje procesa, radi oslobađanja resursa koje oni drže, a to nije uvek prihvatljiv zahvat. Zbog toga ni ovaj pristup nema veliki praktični značaj.

Ignorisanje problema mrtve petlje je pristup koji je najčesće primjenjen u praksi, jer se ovaj problem ne javlja tako često da bi se isplatilo da ga rešava operativni sistem. Prema tome, kada se mrtva petlja javi, na korisniku je da se suoči sa ovim problemom i da ga riješi na način, koji je primjeren datim okolnostima.

Page 75: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 72

4. KOMUNIKACIJA SA OPERATIVNIM SISTEMOM 4.1 PROGRAMSKI NIVO KOMUNIKACIJE SA OPERATIVNIM SISTEMOM

Komunikacija sa operativnim sistemom na programskom nivou se ostvaruje pozivanjem sistemskih operacija. Jedan način dobijanja usluga od operativnog sistema podrazumijeva da se za svaku uslugu poziva odgovarajuća sistemska operacija. Na primjer, da bi se preuzeo znak sa tastature, u korisničkom programu je neophodno navesti poziv odgovarajuće sistemske operacije. Međutim, postoji i drugi način dobijanja usluga od operativnog sistema. On se zasniva na vezivanju funkcija korisničkog programa za događaje koje prepoznaje operativni sistem. Vezivanje funkcije korisničkog programa za neki događaj se ostvaruje posredstvom poziva sistemske operacije. Kada se takav događaj desi, operativni sistem poziva funkciju korisničkog programa koja je prethodno vezana za dotični događaj. Tako, ako se neka korisnička funkcija veže za događaj kao što je pritisak dirke na tastaturi, tada, po dešavanju takvog događaja, operativni sistem poziva pomenutu korisničku funkciju, da bi se, u okviru njenog izvršavanja, preuzeo znak sa tastature.

4.2 INTERAKTIVNI NIVO KOMUNIKACIJE SA OPERATIVNIM SISTEMOM

Interaktivni nivo korišćenja operativnog sistema se ostvaruje pomoću komandi komandnog jezika, koje omogućuju upravljanje datotekama, odnosno procesima. Najjednostavniju komandu komandnog jezika predstavlja putanja izvršne datoteke sa izvršnim oblikom programa, čije izvršavanje izaziva željeno upravljanje. Operand ovakve komande je, na primjer, putanja datoteke kojom se rukuje. Prema tome, na prethodni način oblikovana komanda započinje operatorom u obliku putanje izvršne datoteke, koja opisuje upravljanje, a završava operandom (ili operandima) u obliku putanja datoteka, kojima se rukuje. Tako:

kopiraj godina1.txt godina2.txt

predstavlja primjer prethodno opisane komande znakovnog komandnog jezika, uz pretpostavku da radni direktorijum obuhvata izvršnu datoteku sa imenom kopiraj.bin (pri čemu se podrazumijeva da tip bin odgovara izvršnoj datoteci). Takođe, pretpostavka je da radni direktorijum obuhvata i tekst datoteku godina1.txt. Na kraju, podrazumijeva se da izvršavanje programa iz izvršne datoteke kopiraj.bin dovodi do stvaranja datoteke godina2.txt, koja je po sadržaju identična datoteci godina1.txt i koja pripada radnom direktorijumu (prethodna komanda opisuje korisnu operaciju, ako svi studenti prve godine studija upisuju drugu godinu studija).

Komandni jezik može olakšati zadavanje komandi, ako omogući korisniku da operator komande bira u spisku operatora (menu), umjesto da ga pamti i u cjelosti navodi. Spisak operatora se prikazuje na ekranu, a izbor operatora se vrši pomoću namjenskih dirki tastature ili miša. Nakon izbora operatora sledi, po potrebi, dijalog u kome korisnik navodi (ili opet bira) operand (operande) komande. Ovakvi, grafički komandni jezici (menu driven user interface, graphical user interface) još više pojednostavljuju zadavanje komandi, ako korisniku omogućuju da ne bira operator, nego samo operande komandi (izbor operanda se svodi na izbor nekog od, na ekranu prikazanih, imena datoteka). Pri tome se operator podrazumijeva ili na osnovu tipa odabrane datoteke, ili, eventualno, na osnovu upotrebljene namjenske dirke.

U svakom slučaju, zadatak komandnog jezika je da omogući korisniku da zada komandu,

Page 76: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 73

koja precizno određuje i vrstu upravljanja i objekat upravljanja, a zadatak interpretiranja komande je da pokrene proces, u okviru čije aktivnosti usledi upravljanje, zatraženo komandom.

ZNAKOVNI KOMANDNI JEZICI

Izgled, način rada i mogućnosti interpretera znakovnog komandnog jezika (command

language interpreter, shell) zavise od ciljeva, koje komandni jezik treba da ostvari. Ciljevi znakovnih komandnih jezika obuhvataju:

1. omogućavanje izvršavanja pojedinih (korisničkih) programa, 2. omogućavanje kombinovanja izvršavanja više (korisničkih) programa i 3. omogućavanje pravljenja komandnih datoteka (command file, shell script). Interpreter znakovnog komandnog jezika ostvaruje prethodne ciljeve tako što sa

standardnog ulaza prima niz znakova, koji obrazuju komandu, prepoznaje u tom nizu znakova operator komande (i, eventualno, njene operande) i preduzima zahtjevanu akciju. Rezultat svoje akcije ovaj interpreter prikazuje na standardnom izlazu.

Prilikom preduzimanja zahtjevane akcije, interpreter znakovnog komandnog jezika se oslanja na sistemske operacije. Pri tome, on koristi djelove komandi (njen operator i njene operande) kao argumente sistemskih operacija. Na primjer, do izvršavanja pojedinih korisničkih programa dolazi tako što interpreter znakovnog komandnog jezika poziva sistemsku operaciju stvaranja procesa, a kao njene argumente upotrebi operator i operande komande (putanju izvršne datoteke i putanje datoteka sa obrađivanim podacima). Stvoreni proces može da preuzme pomenute argumente sistemske operacije i da ih koristi u svojoj aktivnosti.

Interpreter znakovnog komandnog jezika obavlja obradu znakova komande, prijee nego što ih iskoristi kao argumente neke sistemske operacije. Zahvaljujući tome, u okviru komandi se mogu javiti magični znakovi-džoker znaci (magic character, wild cards), kao što je, na primjer, znak *. Njegova upotreba je vezana, pre svega, za imena datoteka i namjenjena je za skraćeno označavanje grupa datoteka. Tako, na primjer: *.obj označava sve objektne datoteke u radnom direktorijumu, a d*1.txt označava sve tekst datoteke u radnom direktorijumu, čiji prvi deo imena započinju znakom d, a završava cifrom 1. Zahvaljujući magičnim znakovima, moguće je, na primjer, jednom komandom uništiti sve objektne datoteke iz radnog direktorijuma: uništi *.obj ili odštampati sve tekst datoteke iz radnog direktorijuma, čiji prvi deo imena započinje znakom d, a završava znakom 1: štampaj d*1.txt (za obavljanje ovakvih akcija, neophodno je pretraživanje direktorijuma i provjera imena

Page 77: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 74

datoteka). Zahvaljujući obradi znakova komande, moguće je interpreteru znakovnog komandnog

jezika saopštiti i da preusmeri (redirect) standardni ulaz i standardni izlaz sa tastature i ekrana na proizvoljno odabrane datoteke. Ovo je važno za pozadinske procese, koji nijesu u interakciji sa korisnikom. Zahvaljujući preusmeravanju, pozadinski proces ne ometa interaktivni rad korisnika, jer, umjesto tastature i ekrana, koristi odabrane datoteke. Međutim, da bi se korisnik upozorio na greške u toku aktivnosti pozadinskog procesa, uz standardni izlaz se uvodi i standardni izlaz greške. Pošto je standardni izlaz greške namjenjen, pre svega, za prikazivanje poruka o greškama, kao podrazumijevajući standardni izlaz greške služi specijalna datoteka, koja odgovara ekranu (ova datoteka se otvara za vrijeme stvaranja procesa, a kao njen indeks otvorene datoteke služi vrijednost 2). I standardni izlaz greške se može preusmeriti na proizvoljnu datoteku, čiji sadržaj tada ukazuje na eventualne greške u toku aktivnosti pozadinskog procesa.

Uobičajeno je da preusmeravanje standardnog ulaza najavljuje znak <, a da preusmeravanje standardnog izlaza (kao i standardnog izlaza greške) najavljuje znak >. Tako, na primjer, komanda:

kompiliraj < program.c > program.obj saopštava interpreteru znakovnog komandnog jezika da stvori proces na osnovu izvršne datoteke kompiliraj.bin, pri čemu kao standardni ulaz procesa sluzi datoteka program.c, a kao njegov standardni izlaz datoteka program.obj (u ovom primjeru ekran i dalje služi kao standardni izlaz greške). Izvršavanje prethodne komande omogućuje kompilaciju C programa, sadržanog u datoteci program.c. Rezultat kompilacije se smjesta u datoteku program.obj, a eventualne poruke o greškama kompilacije se prikazuju na ekranu.

Preusmeravanje standardnog ulaza i izlaza predstavlja osnovu za kombinovanje izvršavanja više korisničkih programa. Važnost pomenutog kombinovanja se može pokazati na primjeru uređivanja (sortiranja) riječi iz nekog rečnika po kriteriju rimovanja. Nakon sortiranja riječi po ovom kriteriju, sve riječi, koje se rimuju, nalaze se jedna uz drugu. Umjeesto pravljenja posebnog programa za sortiranje riječi po kriteriju rimovanja, jednostavnije je napraviti program za obrtanje redosleda znakova u riječima (tako da prvi i poslednji znak zamijene svoja mjesta u riječi, da drugi i pretposlednji znak zamijene svoja mjesta u reči i tako redom) i kombinovati izvršavanje ovog programa sa izvršavanjem postojećeg programa za sortiranje: obrni < recnik.txt > obrnuti_recnik.txt sortiraj < obrnuti_recnik.txt > sortirani_obrnuti_recnik.txt obrni < sortirani_obrnuti_recnik.txt > rime.txt

Umjesto preusmeravanja standardnog ulaza i standardnog izlaza, moguće je nadovezati standardni izlaz jednog procesa za standardni ulaz drugog procesa i tako obrazovati tok procesa (pipe). Nadovezivanje u tok se označava pomoću znaka |. Za prethodni primjer ovakav tok bi izgledao: obrni < recnik.txt | sortiraj | obrni > rime.txt

U ovom primjeru su u tok nadovezana tri procesa. Prvi je nastao na osnovu komande:

Page 78: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 75

obrni < recnik.txt drugi je nastao na osnovu komande sortiraj a treći je nastao na osnovu komande: obrni > rime.txt

Ako bi se riječi zadavale sa tastature, a po rimama sortirani rečnik prikazivao na ekranu, prethodni tok bi izgledao:

obrni | sortiraj | obrni

Razmjena podataka između dva procesa, koji su povezani u tok, se ostvaruje posredstvom privremene datoteke, koja predstavlja za prvog od ovih procesa standardni izlaz, a za drugog od njih standardni ulaz (prvi proces samo pi[e u ovu datoteku, a drugi samo čita iz nje). Prilikom obrazovanja toka procesa, interpreter znakovnog komandnog jezika stvara procese, koji se povezuju u tok (pri tome on koristi istu privremenu datoteku kao standardni izlaz i ulaz za svaki od parova ovih procesa). Zatim interpreter znakovnog komandnog jezika čeka na kraj aktivnosti poslednjeg od ovih procesa.

Pozadinski procesi se razlikuju od običnih (interaktivnih) procesa po tome što interpreter znakovnog komandnog jezika, nakon stvaranja pozadinskog procesa, ne čeka kraj njegove aktivnosti, nego nastavlja interakciju sa korisnikom. Zato su pozadinski procesi u principu neinteraktivni. Na primjer, komanda:

kompiliraj < program.c > program.obj & omogućuje stvaranje pozadinskog procesa, koji obavlja kompilaciju programa, sadržanog u datoteci program.c, i rezultat kompilacije smješta u datoteku program.obj (a eventualne greške u kompilaciji prikazuje na ekranu). U prethodnom primjeru znak & sa kraja komande je naveo interpreter znakovnog komandnog jezika na stvaranje pozadinskog procesa.

Svaka komanda, upućena interpreteru znakovnog komandnog jezika, ne dovodi do stvaranja procesa. Komande, koje se često koriste (pa je važno da budu brzo obavljene), interpreter znakovnog komandnog jezika direktno (sam) obavlja. Međutim, kada stvori proces i sačeka kraj njegove aktivnosti, interpreter znakovnog komandnog jezika dobije od stvorenog procesa, kao povratnu informaciju, završno stanje stvorenog procesa. Ovo stanje, koje se obično kodira cijelim brojem, interpreter znakovnog komandnog jezika može da protumači kao logičku vrijednost (0 - tačno, različito od 0 - netačno) i da tako omogući uslovno izvršavanje programa. Tako, na primjer, komanda:

IF kompiliraj < program.c > program.obj THEN linkuj < program.obj > program.bin označava da do linkovanja (povezivanja) dolazi samo nakon uspješne kompilacije. Pri tome su IF

Page 79: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 76

i THEN rezervisane reči za interpreter znakovnog komandnog jezika. Prva najavljuje komandu, na osnovu koje interpreter znakovnog komandnog jezika stvori proces, za vreme čije aktivnosti uslijedi kompilacija programa, sadržanog u datoteci program.c. Ako kompilacija prođe bez grešaka, stvoreni proces vraća interpreteru znakovnog komandnog jezika vrednost 0 kao svoje završno stanje. U ovom slučaju, interpreter znakovnog komandnog jezika interpretira komandu iza rezervisane reči THEN i stvara proces, čija aktivnost dovodi do linkovanja datoteke program.obj sa potprogramima iz sistemske biblioteke (čije ime se ne navodi, jer se podrazumijeva). U suprotnom slučaju (ako je bilo grešaka u kompilaciji, pa je završno stanje procesa, zaduženog za kompilaciju, bilo veće od vrednosti 0), interpreter znakovnog komandnog jezika ne interpretira komandu iza rezervisane reči THEN i ne stvara proces zadužen za linkovanje.

Pored prethodno opisanog načina za uslovno izvršavanje programa, interpreteri znakovnih komandnih jezika podržavaju i ponavljanje izvršavanja programa, ali i druge mogućnosti, tipične za procedurne programske jezike (upravljanje promenljivim, konstantama, ulazom, izlazom i slično). To dozvoljava pravljenje komandnih datoteka. One opisuju okolnosti pod kojima se izvršavaju korisnički programi, a njihov sadržaj preuzima i interpretira interpreter znakovnog komandnog jezika. Zato komandne datoteke imaju poseban tip (da bi ih interpreter znakovnog komandnog jezika mogao prepoznati). Zahvaljujući tome, ime svake komandne datoteke (uostalom, kao i ime svake izvršne datoteke) predstavlja ispravnu komandu znakovnog komandnog jezika. Iako broj i vrste ovakvih komandi nisu ograničene (jer zavise samo od kreativnosti i potreba korisnika), ipak je moguće napraviti njihovu klasifikaciju i navesti neke neizbježne grupe komandi. Najgrublja podela komandi je na:

1. korisničke komande i 2. administratorske komande. Korisničke komande, između ostalog, omogućuju: 1. upravljanje datotekama, 2. upravljanje direktorijumima, 3. upravljanje procesima i 4. razmjenu poruka između korisnika.

Standardne komande za upravljanje datotekama omogućuju izmjenu imena (kao i

atributa) datoteke, poređenje sadržaja datoteka, kopiranje datoteka i uništenje datoteka. U komande za upravljanje direktorijumima spadaju komande za stvaranje i uništenje direktorijuma, komanda za proglašavanje direktorijuma radnim, komanda za pregledanje sadržaja direktorijuma (imena datoteka i imena direktorijuma, sadržanih u njemu), komande za izmjenu imena i ostalih atributa direktorijuma, odnosno komanda za kopiranje direktorijuma.

Administratorske komande omogućuju pokretanje i zaustavljanje rada računara, spasavanje (arhiviranje) i vraćanje (dearhiviranje) datoteka, upravljanje vremenom, sabijanje (compaction) slobodnog prostora na disku, ažuriranje podataka o korisnicima računara i njihovim pravima, generisanje izvještaja o korišćenju računara (o korišćenju procesorskog vremena ili o korišćenju prostora na disku), opisivanje konfiguracije računara (pravljenje spiska uređaja koji ulaze u njegov sastav, kao što su razni ulazni i izlazni uređaji, i navođenje njihovih karakteristika), provjeru ispravnosti rada računara ili pripremu diskova za korišćenje (ovo obuhvata pronalaženje oštećenih blokova i njihovo isključivanje iz upotrebe, pronalaženje izgubljenih blokova i njihovo uključivanje u evidenciju slobodnih blokova, formiranje skupa

Page 80: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 77

datoteka na disku i njegovo uključivanje u skup datoteka računara). GRAFIČKI KOMANDNI JEZICI

Interpreteri grafičkih komandnih jezika omogućuju pozivanje bilo koje od prethodnih

komandi, a da pri tome ne tjeraju korisnike da znaju napamet imena komandi, niti tjeraju korisnike da zadaju komande posredstvom tastature (uz obavezu strogog postovanja sintakse znakovnog komandnog jezika). Umjesto toga, grafički komandni jezici uvode grafičku predstavu komandi (icon), ili spiskove sa imenima komandi (menu), dozvoljavajući korisnicima da pozovu komandu izborom njene grafičke predstave, ili izborom njenog imena sa spiska imena komandi. Grafički komandni jezici dozvoljavaju i da se komanda automatski pokrene izborom nekog od prikazanih imena datoteka, pod uslovom da se podrazumijeva da izabrana datoteka predstavlja mogući operand date komande (obično se korespondencija imena datoteka i komandi ostvaruje pomoću tipa datoteke).

Izbor grafičke predstave komande, ili njenog imena sa spiska imena komandi, ili imena datoteke (koja je podrazumijevajući operand komande) omogućuju pokazivački uređaji kao što je miš. Oni omogućuju pokazivanje tačke ekrana. Zadatak interpretera grafičkog komandnog jezika je da na osnovu pozicije (koordinata) pokazane tačke (i eventualno pritisnute dirke pokazivačkog uređaja) odredi šta zeli korisnik. Ako pokazana tačka pripada skupu tačaka zone ekrana, koja sadrži grafičku predstavu komande, njeno ime, ili ime datoteke, tada pritisak na odgovarajuću dirku pokazivačkog uređaja menja boju pozadine pomenute zone ekrana. Time se pokazuje da je izabrana grafička predstava komande, njeno ime, ili ime datoteke, koja se nalazi u pomenutoj zoni ekrana. Naknadni pritisci na dirku (dužina pritiska, ili broj pritisaka i vremenski razmak između njih) određuju pozivanu komandu. Tako, na primjer, ako je izabrano ime datoteke, tada dva pritiska dirke pokazivačkog uređaja sa kraćim međusobnim vremenskim razmakom dovode do poziva podrazumijevajuće komande (za koju izabrano ime datoteke predstavlja podrazumijevajući operand). U istoj situaciji, dva pritiska na dirku pokazivačkog uređaja sa dužim međusobnim vremenskim razmakom omogućuju izmjenu imena datoteke. Prema tome, iste akcije korisnika u raznim okolnostima imaju različito značenje. Zadatak interpretera grafičkog komandnog jezika je da na ispravan način (u skladu sa kontekstom) protumači korisničke akcije.

Page 81: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 78

5. KLASIFIKACIJA OPERATIVNIH SISTEMA Jedan od mogućih kriterijuma za klasifikaciju operativnih sistema je vrsta računara ili uređaja kojim operativni sistem upravlja. Po tom kriteriju mogu se izdvojiti: 1. operativni sistemi realnog vremena 2. operativni sistemi za ugrađene (embedded) sisteme 3. operativni sistemi za inteligentne kartice (smart card) 4. multiprocesorski operativni sistemi i 5. distribuirani operativni sistemi. 6. mrežni operativni sistemi 5.1 (2) OPERATIVNI SISTEMI REALNOG VREMENA Operativni sistemi realnog vremena (real time operating system) su namijenjeni za primjene računara u kojima je neophodno obezbijediti reakciju na vanjski događaj u unapred zadanom vremenu. Ovakvi operativni sistemi su, zbog toga, podređeni ostvarenju što veće brzine izvršavanja korisničkih programa.

Za operativne sisteme realnog vremena je tipično da su (zajedno sa računarom) ugrađeni (embedded) u sistem, čije ponašanje se ili samo prati, ili čijim ponašanjem se upravlja. Pri tome, njihov zadatak je samo da stvore okruženje za korisničke programe, jer nije neophodna direktna komunikacija operativnog sistema realnog vremena sa krajnjim korisnikom, pošto je to u nadležnosti korisničkih programa. Zato se operativni sistemi realnog vremena obično koriste samo na programskom nivou.

Sloj za upravljanje procesima je podređen potrebi osiguranja brzog stvaranja i uništenja procesa, njihove brze i lake saradnje, kao i brzog preključivanja procesora sa procesa na proces. Zato obično svi procesi dijele isti fizički adresni prostor (što je moguće, jer ne postoji potreba za međusobnom zaštitom procesa, posto imaju istog autora, ili njihovi autori pripadaju istom timu, pa nema mjesta sumnji u njihove namjere).

Sloj za upravljanje datotekama (kada postoji, jer sve primjene realnog vremena ne zahtjevaju masovnu memoriju) obično podržava kontinuirane datoteke (zbog brzine pristupa podacima), što ovde ne predstavlja manu, jer su unapred poznati svi zahtjevi primjene.

Sloj za upravljanje radnom memorijom obično podržava efikasno zauzimanje memorijskih zona (sa susednim lokacijama), čija veličina je predefinisana, da bi se izbegla (ili umanjila) eksterna fragmentacija.

Sloj za upravljanje kontrolerima podržava tipične ulazne i izlazne uređaje i, uz to, omogućava jednostavno uključivanje novih drajvera za specifične uređaje. Pri tome se nude blokirajuće i neblokirajuće sistemske operacije, ali i vremenski ograničene blokirajuće sistemske operacije. Zahvaljujući neblokirajućim sistemskim operacijama, moguće je vremenski preklopiti aktivnosti procesora i kontrolera, a zahvaljujući vremenski ograničenim blokirajućim sistemskim operacijama, moguće je odreagovati na izostanak željenog događaja (odnosno, na izostanak obavljanja pozvane sistemske operacije) u zadanom vremenskom intervalu.

Sloj za upravljanje procesorom mora da obezbijedi efikasno upravljanje vremenom (za šta se često koriste posebni satovi - tajmeri). U sklopu toga, mora se obezbijediti da aktivnost procesa bude završena do graničnog trenutka (deadline scheduling), što se postiže sortiranjem deskriptora spremnih procesa po dužini preostalog vremena do graničnog trenutka (earliest dedline first). Podrazumijeva se da ovo sortiranje dovodi na prvo mjesto deskriptor procesa sa

Page 82: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 79

najkraćim preostalim vremenom do graničnog trenutka, tako da je njegov proces prvi na redu za aktiviranje. Ako je aktivnost procesa periodična sa unapred određenim i nepromenljivim trajanjem aktivnosti u svakom periodu, tada se procesima mogu dodijeliti prioriteti jednaki broju njihovi perioda u jedinici vremena (rate monotonic scheduling). Tako se može obezbijediti da aktivnost procesa bude obavljena pre kraja svakog od njegovih perioda. U svakom slučaju, postavljeni cilj raspoređivanja može da se ostvari samo ako ima dovoljno procesorskog vremena za sve procese.

Sloj za upravljanje procesorom operativnog sistema realnog vremena obično podržava mehanizam semafora, jer je on jednostavan za korišćenje, brz i jer ne zahtjeva izmjene kompajlera.

Predstavnici ovih grupa su VxWorks, QNX, odnosno PalmOS i WindowsCE

5.2 OPERATIVNI SISTEMI ZA INTELIGENTNE KARTICE (smart card) Najmanji računarski sistemi u pogledu gabarita, funkcionalnosti i zahtjeva su veličine kreditne kartice. Obično se cjelokupan sistem (procesor, memorija, I/O uređaj) nalazi u jednom integrisanom kolu i programiran je na izvršavanje malog broja operacija. Najčešće je omogućen rad samo jedne aplikacije sastavljene u jeziku nižeg nivoa. U slučaju mogučnosti obavljanja više poslova, na uređaju mora postojati i najjednostavniji alokator resursa.

5.3 MULTIPROCESORSKI OPERATIVNI SISTEMI

Multiprocesorski operativni sistemi upravljaju računarskim sistemom sa više procesora opšte namjene, koji pristupaju zajedničkoj radnoj memoriji. Podrazumijeva se da ove procesore i radnu memoriju povezuje sabirnica. Specifičnosti multiprocesorskog operativnog sistema su vezane za sloj za upravljanje procesorom i posledica su istovremene aktivnosti više procesa na raznim procesorima. Zato se sinhronizacija procesa u ovakvim okolnostima više ne može zasnivati na onemogućenju prekida, nego na zauzimanju sabirnice, jer je to jedini način da se spriječi da više od jednog procesa pristupa istoj lokaciji radne memorije. Mogućnost istovremene aktivnosti više procesa na raznim procesorima usložnjava raspoređivanje, jer ono mora da odabere ne samo proces, koji će biti aktivan, nego i da odabere procesor, koji će da se preključi na odabrani proces. 5.4 DISTRIBUIRANI OPERATIVNI SISTEMI

Distribuirani operativni sistemi upravljaju međusobno povezanim računarima, koji su prostorno udaljeni. Potrebu za povezivanjem prostorno udaljenih (distribuiranih) računara nameće praksa. S jedne strane, prirodno je da računari budu na mjestima svojih primjena, na primjer, uz korisnike ili uz delove industrijskih postrojenja, koje opslužuju. Na taj način računari mogu biti potpuno posvećeni lokalnim poslovima, koji su vezani za mjesta njihove primjene, pa mogu efikasno obavljati ovakve poslove. S druge strane, neophodno je omogućiti saradnju između prostorno udaljenih korisnika, odnosno obezbijediti usaglašeni rad prostorno udaljenih djelova istog industrijskog postrojenja. Za to je potrebno obezbijediti razmjenu podataka između računara, posvećenih pomenutim korisnicima, odnosno posvećenih pomenutim djelovima industrijskog postrojenja. Radi toga, ovakvi, prostorno udaljeni računari se povezuju komunikacionim linijama, koje omogućuju prenos (razmjenu) podataka, organizovanih u poruke. Na ovaj način nastaje distribuirani računarski sitem (distributed computer system). Za svaki od

Page 83: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 80

računara, povezanih u distribuirani računarski sistem, je neophodno da sadrže procesor, radnu memoriju i mrežni kontroler. Prisustvo masovne memorije i raznih ulaznih i izlaznih uređaja u sastavu ovakvih računara zavisi od mjesta njihove primjene i, u opštem slučaju, nije obavezno, pa zato nema ni potrebe da ih podržava operativni sistem, prisutan na svakom računaru iz distribuiranog računarskog sistema. Ovakav operativni sistem se naziva i mikrokernel (microkernel), jer ima smanjenu funkcionalnost u odnosu na “običan” operativni sistem. Hijerarhijska struktura mikrokernela je prikazana na slici 5.1

modul za upravljanje procesima

modul za razmjennu poruka modul za upravljanje radnom memorijom

modul za upravljanje kontrolerima modul za upravljanje procesorom

Slika 5.1 Hijerarhijska struktura mikrokernela

Mikrokernel ne sadrži sloj za upravljanje fajlovima, jer on nije potreban za svaki od

računara iz distribuiranog računarskog sistema i jer se on, bez problema, može prebaciti u korisnički sloj (iznad mikrokernela), predviđen za korisničke procese.

Sloj za upravljanje procesima se oslanja na sloj za razmjenu poruka, da bi pristupio izvršnoj datoteci (lociranoj na nekom drugom računaru). Sloj za razmjenu poruka se oslanja na sloj za upravljanje radnom memorijom, radi dinamičkog zauzimanja i oslobađanja bafera, namjenjenih za privremeno smještanje poruka. Sloj za razmjenu poruka se oslanja i na sloj za upravljanje kontrolerima, u kome se nalazi drajver mrežnog kontrolera (posredstvom koga se fizički razmjenjuju poruke). Na kraju, sloj za razmjenu poruka se oslanja i na sloj za upravljanje procesorom, da bi se, na primjer, privremeno zaustavila aktivnost procesa do prijema poruke (bez koje nastavak aktivnosti nije moguć), ali i da bi se moglo reagovati na dugotrajni izostanak očekivanog prijema poruke.

Sloj za razmjenu poruka nije samo na raspolaganju sloju za upravljanje procesima. On sadrži sistemske operacije, koje omogućuju razmjenu poruka, odnosno saradnju između procesa, aktivnih na raznim računarima (ali i između procesa, aktivnih na istom računaru). Tipičan oblik saradnje procesa je da jedan proces traži uslugu od drugog procesa. Na primjer, kada jedan proces želi da na svom računaru, koji je bez masovne memorije, stvori novi proces, on se, posredstvom sloja za upravljanje procesima, obraća drugom procesu, aktivnom na računaru sa masovnom memorijom, zahtjevajući od njega, kao uslugu, da mu pošalje sadržaj odgovarajuće izvršne datoteke. Uobičajeni način traženja i dobijanja usluge se sastoji od pozivanja operacije, čijim obavljanjem se pruža tražena usluga. U slučaju, kada pozivana operacija ne odgovara potprogramu, koji se lokalno izvršava u okviru aktivnosti procesa pozivaoca, nego odgovara potprogramu, koji se izvršava u okviru aktivnosti drugog, udaljenog procesa (koji je aktivan na udaljenom računaru), riječ je o pozivu udaljene operacije (Remote Procedure Call - RPC). Pri tome se proces, koji poziva udaljenu operaciju, nalazi u ulozi klijenta (kome se pruža usluga), a proces, koji obavlja udaljenu operaciju, se nalazi u ulozi servera (koji pruža uslugu).

POZIV UDALJENE OPERACIJE

Poziv udaljene operacije liči na poziv (lokalne) operacije. Znači, on ima oblik poziva

Page 84: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 81

potprograma, u kome se navode oznaka (ime) operacije i njeni argumenti. Ovakav potprogram se naziva klijentov potprogram (client stub), jer je klijent njegov jedini pozivalac. U klijentovom potprogramu je sakriven niz koraka, koji se obavljaju, radi dobijanja zahtjevane usluge. U ove korake spadaju:

1. pronalaženje procesa servera, koji pruža zahtjevanu uslugu, 2. pakovanje (marshalling) argumenata (navedenih u pozivu klijentovog potprograma) u poruku zahtjeva, 3. slanje serveru ove poruke zahtjeva, 4. prijem od servera poruke odgovora sa rezultatom pružanja zahtjevane usluge, 5. raspakivanje prispjele poruke odgovora i 6. isporuka rezultata pružanja zahtjevane usluge pozivaocu klijentovog potprograma.

Simetrično klijentovom potprogramu postoje dva serverova potprograma (server stub).

Njih poziva jedino server, a oni kriju više koraka, koji se obavljaju, radi pružanja zahtjevane usluge. Prvi od njih obuhvata:

1. prijem poruke zahtjeva i 2. raspakivanje argumenata iz ove poruke. Drugi od njih obuhvata: 1. pakovanje rezultata usluge (koju je pruzio server) u poruku odgovora i 2. slanje klijentu ove poruke odgovora. Između poziva ova dva serverova potprograma se nalazi lokalni poziv operacije, koja

odgovara zahtjevanoj usluzi, odnosno, programski tekst, koji opisuje aktivnost servera na pružanju zahtjevane usluge.

Oslanjanje na poziv udaljene operacije olakšava posao programeru, jer od njega krije, na prethodno opisani način, detalje saradnje klijenta i servera. Pri tome, klijentov potprogram pripada biblioteci udaljenih operacija. Ova biblioteka sadrži po jedan klijentov potprogram za svaku od postojećih udaljenih operacija. Klijentov potprogram se generiše, zajedno sa serverovim potprogramima, prilikom prevođenja programa, koji odgovara serveru.

PROBLEMI POZIVA UDALJENE OPERACIJE

Uprkos nastojanju da što više liči na poziv lokalne operacije, poziv udaljene operacije se značajno razlikuje od svog uzora. Te razlike su posledica koraka, sakrivenih u pozivu udaljene operacije, koji uzrokuju da se u toku poziva udaljene operacije mogu da pojave problemi, čija pojava nije moguća kod poziva lokalne operacije. Tako je moguće:

1. da se ne pronađe server, koji pruža zahtjevanu uslugu, 2. da se, u toku prenosa, izgube ili poruka zahtjeva ili poruka odgovora, kao i 3. da dođe do otkaza ili servera, ili klijenta u toku njihovog rada. Ako nema servera, tada nije moguće pružanje tražene usluge (što je nemoguća situacija

kod poziva lokalne operacije). Do istog rezultata dovode smetnje na komunikacionim linijama, koje onemogućuju prenos bilo poruke zahtjeva, bilo poruke odgovora. Kada u očekivanom vremenu izostane prijem poruke odgovora (bilo zbog gubljenja poruke zahtjeva, bilo zbog gubljenja poruke odgovora), jedino što se na strani klijenta može uraditi je da se ponovo pošalje (retransmituje) poruka zahtjeva (pri čemu je broj retransmisija ograničen). Ako je izgubljena

Page 85: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 82

poruka zahtjeva, njenom retransmisijom se stvara mogućnost da ona stigne do servera i da on pruži traženu uslugu. Međutim, ako je izgubljena poruka odgovora, tada treba spriječiti da, po prijemu retransmitovane poruke zahtjeva, server ponovi pružanje već pružene usluge. Da bi server razlikovao retransmitovanu poruku od originalne, dovoljno je da svaka originalna poruka ima jedinstven redni broj i da server za svakog klijenta pamti redni broj poslednje primljene poruke zahtjeva od tog klijenta (prijem poruke sa zapamćenim rednim brojem ukazuje na retransmitovanu poruku, koja je već primljena).

Otkaz servera (izazvan kvarom računara) je problematičan, jer, u opštem slučaju, nema načina da se ustanovi da li je do otkaza doslo pre, u toku, ili posle pružanja usluge. Zato poziv udaljene operacije ne može garantovati da će zahtjevana usluga biti pružena samo jednom (kao kod poziva lokalne operacije). Na strani klijenta otkaz servera se odražava kao izostajanje poruke odgovora, a retransmisija poruke zahtjeva može navesti ponovo pokrenutog servera da jož jednom pruži već pruženu uslugu (jer je, u ovom slučaju, server izgubio, zbog otkaza, evidenciju o rednim brojevima poslednje primljenih poruka zahtjeva od klijenata). Kod poziva lokalne operacije ovo se ne može desiti, jer otkaz računara znači i kraj izvršavanja celog programa, bez pokušaja njegovog automatskog oporavka.

Otkaz klijenta znači da server uzaludno pruža zahtjevanu uslugu. Ovo se izbjegava tako što server obustavlja pružanje usluga klijentima, za koje ustanovi da su doživeli otkaz (to klijenti sami mogu da jave serveru, nakon svog ponovnog pokretanja, ili to server može sam da otkrije, periodičnom provjerom stanja klijenata, koje opslužuje).

Poziv udaljene operacije praktično dozvoljava da argumenti budu samo vrednosti, a ne i adrese, odnosno pokazivači, zbog problema kopiranja pokazanih vrednosti sa klijentovog računara na računar servera i u obrnutom smeru. Pored toga, ako su ovi računari različiti, javlja se i problem konverzije vrednosti (jer se, na primjer, predstava realnih brojeva razlikuje od računara do računara).

Činjenica da se u okviru klijentovog potprograma javlja potreba za pronalaženjem servera, ukazuje da u vreme pravljenja izvršnog oblika klijentovog programa nije poznato koji server će usluživati klijenta. U opštem slučaju, može biti više servera iste vrste i svaki od njih može istom klijentu da pruži zatraženu uslugu. Radi toga se uvodi poseban server imena (name server, binder). Njemu se, na početku svoje aktivnosti, obraćaju svi serveri i ostavljaju podatke o sebi (kao sto je, na primjer, podatak o vrsti usluge koje pružaju). Serveru imena se obraćaju i klijenti, radi pronalaženja servera, koji pruža zahtjevanu uslugu. Na ovaj način se ostvaruje dinamičko linkovanje (dynamic binding) klijenta, koji zahtjeva uslugu, i servera, koji pruža zahtjevanu uslugu.

RAZMJENA PORUKA Klijentovi i serverovi potprogrami, pomoću kojih se ostvaruje zamisao poziva udaljene

operacije, se oslanjaju na sistemske operacije sloja za razmjenu poruka. Prva od ovih operacija je sistemska operacija zahtjevanja usluge, a druge dve su sistemske operacije prijema zahtjeva i slanja odgovora. Sistemska operacija zahtjevanja usluge je namjenjena klijentu (poziva se iz njegovog potpograma), a omogućuje slanje poruke zahtjeva i prijem poruke odgovora. Sistemske operacije prijema zahtjeva i slanja odgovora su namjenjene serveru i omogućuju prijem poruke zahtjeva i slanje poruke odgovora (sistemska operacija prijema zahtjeva se poziva iz prvog serverovog potprograma, a sistemska operacija slanja odgovora se poziva iz drugog serverovog potprograma). Ove tri sistemske operacije ostvaruju poseban protokol razmjene poruka (request

Page 86: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 83

reply protocol), koji je prilagođen potrebama poziva udaljene operacije. Sistemske operacije zahtjevanja usluge, prijema zahtjeva i slanja odgovora su blokirajuće.

Prva zaustavlja aktivnost klijenta do stizanja odgovora, ili do isticanja zadanog vremenskog perioda. Druga zaustavlja aktivnost servera do stizanja zahtjeva, a treća zaustavlja aktivnost servera do isporuke odgovora ili do isticanja zadanog vremenskog intervala. Ove tri sistemske operacije su zadužene za prenos poruka. Pored slanja i prijema poruka, one potvrđuju prijem poruka, retransmituju poruke, čiji prijem nije potvrđen, šalju upravljačke poruke, kojima se provjerava i potvrđuje aktivnost servera (čime se omogućuje otkrivanje njegovog otkaza) i slično. U nadležnosti ovih operacija je i rastavljanje poruka u pakete (koji se prenose preko komunikacionih linija), sastavljanje paketa (pristiglih preko komunikacionih linija) u poruke, potvrda prijema paketa i retransmisija paketa, čiji prijem nije potvrđen, kao i prilagođavanje brzine slanja paketa brzini kojom oni mogu biti primani (flow control). Pomenute tri sistemske operacije pozivaju (neblokirajuće) operacije gornjeg dela drajvera mrežnog kontrolera, radi fizičkog prenosa i prijema paketa (u donjem delu ovog drajvera se nalaze obrađivači prekida, zaduženi za registrovanje uspješnog slanja i uspješnog prijema paketa). Ove tri sistemske operacije koriste usluge i sloja za upravljanje preključivanjem i prekidima, radi reagovanja na isticanje zadanih vremenskih intervala, nakon kojih je, na primjer, potrebno ili retransmitovati poruku, ili poslati poruku potvrde.

Sistemske operacije sloja za razmjenu poruka se brinu o baferima, namijenjenim za (privremeno) smještanje poruka. Na primjer, ako server nije pozvao sistemsku operaciju prijema zahtjeva, jer je aktivan na usluživanju prethodno primljenog zahtjeva od jednog klijenta, a pristigla je poruka zahtjeva od drugog klijenta, ova poruka se smješta u slobodan bafer, da bi bila sačuvana i kasnije isporučena serveru. Ako ne postoji slobodan bafer, poruka zahtjeva se odbacuje (uz, eventualno, slanje odgovarajuće upravljačke poruke drugom klijentu).

Svaka od poruka, koje se razmjenjuju između procesa, se sastoji: 1. od upravljačkog dijela poruke i 2. od sadržaja poruke.

Upravljački deo poruke obuhvata: 1. adresu odredišnog procesa (kome se poruka upućuje), 2. adresu izvorišnog procesa (od koga poruka kreće, a kome se, eventualno, kasnije upućuje odgovor) i 3. opis poruke (njenu vrstu, njen redni broj i slično). Adresa (odredišnog ili izvorišnog) procesa sadrži jedinstven redni broj računara, kome

proces pripada (a po kome se razlikuju svi računari), kao i jedinstven redni broj procesa (po kome se razlikuju procesi, koji pripadaju istom računaru). Na osnovu rednog broja računara, mrežni kontroler utvrđuje da li prihvata ili propušta poruku, a na osnovu rednog broja procesa se određuje proces, kome se poruka isporučuje. U toku programiranja, zgodnije je, umjesto ovih rednih brojeva, koristiti imena za označavanje i računara i procesa. Korespondenciju između imena i rednih brojeva uspostavlja već pomenuti server imena (ove podatke o sebi ostavljaju svi serveri, kada se, na početku svoje aktivnosti, obrate serveru imena).

PROBLEMI RAZMJENE PORUKA

Slaba tačka razmjene poruka je sigurnost, jer su komunikacione linije pristupačne svim

Page 87: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 84

korisnicima, pa je svaki od njih u poziciji da preuzima tuđe poruke i da šalje poruke u tuđe ime. Sprečavanje preuzimanja tuđih poruka se zasniva na kriptovanju (encryption) poruka, a sprečavanje slanja poruka u tuđe ime se zasniva na nedvosmislenoj međusobnoj identifikaciji procesa (authentication). U slučaju simetrične kriptografije, da bi klijent i server mogli da razmjenjuju poruke sa šifrovanim sadržajima, oba moraju da znaju i algoritam kriptovanja i svoj interni ključ kriptovanja. Pod pretpostavkom da je algoritam poznat svim procesima, a da interni ključ kriptovanja treba da znaju samo klijent i server, koji razmjenjuju poruke, javlja se problem kako dostaviti interni ključ kriptovanja samo pomenutom klijentu i serveru. U tome može da pomogne poseban server, u koga svi procesi imaju poverenje i koji se, zato, naziva poverenik. Pri tome se podrazumijeva da poverenik posjeduje unapred dogovoren poseban ključ kriptovanja za komunikaciju sa svakim procesom. Zahvaljujući tome, klijent može da pošalje povjereniku poruku, koja sadrži ime klijenta i ime servera sa kojim klijent želi da ostvari sigurnu komunikaciju (sadržaj ove poruke je kriptovan ključem, koji je poznat samo klijentu i povjereniku, tako da je razumljiv samo za povjerenika, a on, na osnovu adrese izvorišnog procesa iz upravljačkog dela ove poruke, može da pronađe ključ za dekriptovanje njenog sadržaja). Poverenik tada odredi interni ključ kriptovanja i pošalje poruku serveru, koja sadrži interni ključ kriptovanja i ime klijenta (sadržaj ove poruke je kriptovan ključem, koji je poznat samo povjereniku i serveru, tako da je razumljiv samo za servera). Takođe, povjerenik šalje poruku i klijentu, koja sadrži interni ključ kriptovanja i ime servera (sadržaj ove poruke je kriptovan ključem, koji znaju samo povjerenik i klijent, tako da je razumljiv samo za klijenta). Na ovaj način, samo klijent i samo server dobiju interni ključ kriptovanja za sigurnu međusobnu komunikaciju i ujedno se obavi njihova međusobna identifikacija (tako da se drugi procesi ne mogu neprimjećeno umiješati u njihovu komunikaciju).

Ako se sigurna razmjena poruka zasniva na asimetričnoj kriptografiji, tada je uloga povjerenika da čuva javne ključeve i tako osigura međusobnu identifikaciju procesa. Znači, kada je potrebno ostvariti sigurnu komunikaciju između dva procesa, oni se obraćaju povjereniku, da bi dobili javni ključ svog komunikacionog partnera. Za komunikaciju sa poverenikom ovi procesi koriste javni ključ povjerenika, a za komunikaciju sa njima povjerenik koristi njihove javne ključeve.

Asimetrična kriptografija omogućuje i digitalno potpisivanje poruka, radi neopozivog pripisivanja poruke njenom pošiljaocu. Digitalni potpis (digital signature) se šalje uz poruku. On sadrži referentni deo poruke, koji je dekriptovan (transformisan) primjenom algoritma dekriptovanja i privatnog ključa. Primalac poruke kriptuje (retransformise) digitalni potpis primjenom algoritma kriptovanja i javnog ključa (pretpostavka je da su algoritmi kriptovanja i dekriptovanja komutativni). Ako se rezultat kriptovanja digitalnog potpisa poklapa sa referentnim delom poruke, tada je poruka nedvosmisleno stigla od pošiljaoca.

Sigurnu komunikaciju klijenta i servera mogu ometati drugi procesi zlonamernim retransmisijama starih poruka, ili izmjenom sadržaja poruka. Ugrađivanjem u sadržaj poruke njenog rednog broja, mogu se otkriti retransmisije starih poruka, a ugrađivanjem u sadržaj poruke kodova za otkrivanje i oporavak od izmjena sadržaja, mogu se otkriti, pa i ispraviti izmjene sadržaja poruka.

RAZLIKA KLIJENATA I SERVERA

Različita uloga, koju klijent i server imaju u toku međusobne komunikacije (saradnje), je

Page 88: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 85

prirodna posledica njihove namjene. Iz toga proizlaze i razlike u njihovoj internoj organizaciji. Dok je za klijenta prihvatljivo da njegova aktivnost bude strogo sekvencijalna, za servera stroga sekvencijalnost njegove aktivnosti znači manju propusnost i sporije pružanje usluga. To je najlakše ilustrovati na primjeru servera datoteka, zaduženog za pružanje usluga, kao što je čitanje ili pisanje datoteke. Strogo sekvencijalna aktivnost ovoga servera bi izazvala zaustavljanje njegove aktivnosti, radi usluživanja jednog klijenta, dok kontroler ne prenese blok sa sadržajem datoteke između masovne i radne memorije. U međuvremenu ne bi bilo usluživanja drugih klijenata, čak i ako bi se njihovi zahtjevi odnosili na blokove datoteka, prisutne u baferima radne memorije. Ovakva sekvencijalnost nije prisutna kod tradicionalnih operativnih sistema, jer nakon zaustavljanja aktivnosti jednog procesa u sloju za upravljanje datotekama, drugi proces može nastaviti aktivnost u istom sloju. Zato je za servere potrebno obezbijediti više niti. Pri tome, svaka od niti (u okviru istog servera) opslužuje različitog klijenta, a broj ovih niti zavisi od broja postavljanih zahtjeva i menja se u vremenu. Postojanje više niti zahtjeva njihovu sinhronizaciju, dok pristupaju globalnim (statičkim) promenljivim servera.

FUNKCIJE DISTRIBUIRANOG OPERATIVNOG SISTEMA

Mikrokerneli stvaraju osnovu za obrazovanje distribuiranog operativnog sistema

(distributed operating system, middleware). Njegov zadatak je da objedini sve računare distribuiranog računarskog sistema, tako da korisnik distribuiranog operativnog sistema ne vidi pojedine računare, nego jedinstven sistem, koji pruža mnoštvo usluga. Sve ove usluge se dobijaju na uniforman način, pri čemu korisnik nije svjestan mjesta na kome se usluge pružaju.

Distribuirani operativni sistem obrazuje (nudi) jedinstven skup datoteka, sa uniformnim načinom označavanja datoteka i sa jedinstvenom hijerarhijskom organizacijom datoteka (koju na isti način vidi svaki korisnik). Ovakav distribuirani skup datoteka se oslanja na više servera direktorijuma i na više servera datoteka. Serveri direktorijuma podržavaju hijerarhijsku organizaciju datoteka, a serveri datoteka podržavaju pristup sadržaju (običnih) datoteka. U direktorijumima (kojima rukuju serveri direktorijuma) uz imena datoteka (odnosno uz imena direktorijuma) ne stoje samo redni brojevi deskriptora datoteka, nego i redni brojevi servera datoteka (odnosno servera direktorijuma), kojima pripadaju pomenuti deskriptori.

U distribuiranom skupu datoteka pristup datoteci podrazumijeva konsultovanje servera imena, radi pronalaženja servera direktorijuma, od koga kreće pretraživanje direktorijuma. Pretraživanje direktorijuma može zahtjevati kontaktiranje različitih servera direktorijuma, dok se ne stigne do servera datoteka sa traženom datotekom.

Serveri direktorijuma i datoteka mogu da ubrzaju pružanje usluga, ako kopiju često korišćenih podataka čuvaju u radnoj memoriji. Ubrzanju pružanja usluga doprinosi i repliciranje datoteka (da bi one bile fizički bliže korisnicima), iako to stvara probleme, kada razni korisnici istovremno mijenjaju razne kopije iste datoteke (jer se tada postavlja pitanje koja od izmjena je važeća).

Za distribuirani skup datoteka zaštita datoteka se česće zasniva na dozvolama (capability), nego na pravima pristupa. To znači da u okviru deskriptora datoteka (odnosno, direktorijuma) ne postoje navedena prava pristupa za pojedine grupe korisnika, nego se za svaku datoteku (odnosno, direktorijum) generišu različite dozvole, koje omogućuju razne vrste pristupa datoteci (odnosno, direktorijumu). Da bi klijent dobio neku uslugu, on mora da poseduje odgovarajuću dozvolu, koju prosleđuje serveru u okviru zahtjeva za uslugom. Dozvola sadrži:

1. redni broj servera, 2. redni broj deskriptora datoteke (odnosno, deskriptora direktorijuma),

Page 89: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 86

3. oznaku vrste usluge i 4. oznaku ispravnosti dozvole.

Sadržaj dozvole je zaštićen kriptovanjem, tako da nije moguće, izmjenom oznake vrste

usluge prepraviti dozvolu. Prije pružanja usluge, server provjerava dozvolu, da ustanovi da li je ispravna i da li se njena oznaka vrste usluge podudara sa zatraženom uslugom. Dozvole dijeli server (na zahtjev klijenata), a čuvaju ih (i po potrebi prosleđuju jedan drugom) klijenti (pri tome se podrazumijeva da klijent, stvaralac datoteke, po njenom stvaranju automatski dobije dozvolu za sve vrste usluga, koja uključuje i uslugu stvaranja drugih, restriktivnijih dozvola). Kada želi da poništi određenu dozvolu, server samo proglasi njenu oznaku ispravnosti nevažećom.

Prednost zasnivanja zaštite datoteka na dozvolama umjesto na pravima pristupa je u tome da prvi pristup ne zahtjeva razlikovanje korisnika, niti njihovo označavanje, što je važno, jer upravljanje jedinstvenim i neponovljivim oznakama korisnika u distribuiranom računarskom sistemu nije jednostavno. Sem toga, dozvole omogućuju veću selektivnost, jer grupišu korisnike po kriteriju posedovanja dozvole određene vrste, a ne na osnovu njihovih unapred uvedenih (numeričih) oznaka.

Pored obrazovanja distribuiranog skupa datoteka, za distribuirani operativni sistem je bitno da obezbijedi automatsko upravljanje svim računarima (procesorima) distribuiranog računarskog sistema, za šta su potrebni posebni serveri procesa. Ovakvo upravljanje se svodi na raspoređivanje procesa po procesorima, radi ostvarenja njihovog najboljeg iskorišćenja, ili radi ostvarenja najkraćeg vremena odziva (najbržeg usluživanja korisnika). Zadatak upravljanja komplikuju razlike između računara, jer tada svaki računar ne može da prihvati svaki izvršni oblik programa (pošto su izvršni oblici programa vezani za procesor, za raspoloživu radnu memoriju i slično). Upravljanje komplikuje i zahtjev za omogućavanje migracije procesa sa računara na računar (da bi se prezaposlen računar rasteretio, a nezaposlen zaposlio). Upravljanje je olakšano, ako su unapred poznate karakteristike opterećenja računara (vrsta i broj procesa, koji ih zaposljavaju). Kod raspoređivanja procesa po procesorima, važno je voditi računa o saradnji procesa i procese, koji tijesno međusobno sarađuju, raspoređivati na isti procesor.

Saradnja procesa, aktivnih na raznim procesorima, zatheva njihovu sinhronizaciju, što se ostvaruje razmjenom poruka. Pri tome, najjednostavniji način za ostvarenje sinhronizacije se zasniva na uvođenju procesa koordinatora. Njemu se obraćaju svi procesi, zainteresovani za sinhronizaciju, a koordinator donosi odluke o njihovoj sinhronizaciji. Tako, ako je potrebno, na primjer, ostvariti međusobnu isključivost procesa u pristupu istoj datoteci, svi procesi traže od koordinatora dozvolu za pristupe, a on dozvoljava uvek samo jednom procesu da pristupi datoteci. Na sličan način se može ostvariti i uslovna sinhronizacija. Za razliku od ovakvog centralizovanog algoritma sinhronizacije, koji se zasniva na uvođenju koordinatora, postoje i distribuirani algoritmi sinhronizacije, koji se zasnivaju na međusobnom dogovaranju procesa, zainteresovanih za sinhronizaciju. Distribuirani algoritmi sinhronizacije zahtjevaju sredstva za grupnu komunikaciju procesa (odnosno, sredstva za efikasan način da jedan proces pošalje poruke svim ostalim procesima iz grupe procesa, zainteresovanih za sinhronizaciju, i da od njih primi odgovore). Pored veće razmjene poruka, distribuirani algoritmi sinhronizacije su komplikovaniji od centralizovanih algoritama, a pri tome ne nude prednosti, tako da je njihov razvoj više od principijelnog, nego od praktičnog značaja.

Za distribuirane operativne sisteme nije samo bitno da omoguće efikasnu sinhronizaciju procesa, nego i da podrže poseban oblik sinhronizacije procesa, koji obezbijeđuje da se obave ili sve operacije iz nekog niza pojedinačnih operacija, ili ni jedna od njih. Ovakav niz operacija se naziva transakcija, a transakcije, koje imaju svojstvo da se obave u cjelosti ili nikako, se nazivaju

Page 90: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 87

atomske transakcije (atomic transaction). Primjer niza operacija, za koje je neophodno da obrazuju atomsku transakciju, je prebacivanje nekog iznosa sa računa jedne banke na račun druge banke. Pri tome, proces klijent (koji u ime korisnika obavlja ovo prebacivanje) kontaktira dva servera (koji reprezentuju dve banke), da bi obavio transfer iznosa sa jednog na drugi račun. Transfer se mora obaviti tako, da drugi klijenti mogu videti oba računa samo u stanju ili pre, ili posle transakcije. Znači, za atomske transakcije je neophodno da budu međusobno isključive (ako pristupaju istim podacima), ali i da njihovi rezultati budu trajni (da se, jednom napravljena izmjena ne može izgubiti).

Aktivnost (saradnja) procesa, aktivnih na raznim procesorima, otvara mogućnost pojave mrtve petlje. Pri tome, u uslovima distribuiranog računarskog sistema, algoritmi za izbegavanje pojave mrtve petlje, odnosno za otkrivanje i za oporavak od pojave mrtve petlje su još neefikasniji i sa jos manjim praktičnim značajem, nego u slučaju centralizovnog (jednoprocesorskog) računara. Zato, u uslovima distribuiranog računarskog sistema, kada nije prihvatljiv pristup ignorisanja problema mrtve petlje, preostaje da se spreči njena pojava (sprečavanjem ispunjenja uslova, neophodnih za pojavu mrtve petlje).

Distribuirani operativni sistem je zamišljen tako da integrise mnoštvo računara u moćan multiračunarski sistem. Na taj način je moguće od više jeftinih i malih računara napraviti multiračunarski sistem, koji je jeftiniji, a moćniji od jednog velikog i skupog računara. Ovakav multiračunarski sistem, uz to, nudi i veću pouzdanost (jer kvar pojedinačnog računara nije fatalan za ceo sistem), kao i mogućnost proširenja (jer je moguće naknadno dodavanje računara u sistem). Pored integrisanja pojedinačnih računara u multiračunarski sistem, distribuirani operativni sistem omogućuje i deljenje skupih resursa ovakvog multiračunarskog sistema između više korisnika, a nudi i prilagodljivost zahtjevima korisnika, željenu raspoloživost i predvidivost odziva, pa, čak, i veću sigurnost (jer korisnici mogu da čuvaju poverljive podatke na svom računaru, koga fizički štite i čije korišćenje mogu da kontrolišu). Slabe tačke distribuiranog operativnog sistema su nesigurnost komunikacionih linija i teško ostvarenje njegove ukupne funkcionalnosti. Zato se u praksi sreću mrežni operativni sistemi, koji se u pojedinim osobinama samo približavaju distribuiranim operativnim sistemima.

5.5 MREŽNI OPERATIVNI SISTEMI

Mrežni operativni sistemi se ne zasnivaju na mikrokernelima, nego nastaju dogradnjom postojećih (različitih) operativnih sistema, s ciljem objedinjavanja njihovih skupova datoteka u jedinstven skup datoteka. Pri tome su korisnici svjesni prisustva i uloge pojedinih računara, koje objedinjuje mrežni operativni sistem, pa o tome vode računa u toku svog rada. Mrežni operativni sistemi objedinjuju skupove datoteka raznih računara, tako sto dozvoljavaju klijentu da u svoj skup datoteka uključi skup datoteka mrežnog servera datoteka (koji je zadužen samo za upravljanje sopstvenim skupom datoteka). Ovo uključivanje se ostvaruje na nivou direktorijuma, pri čemu razni klijenti imaju različit pogled na ukupan skup datoteka mrežnog operativnog sistema, jer direktorijume servera mogu da uključuju u proizvoljno mjesto lokalne hijerarhijske organizacije datoteka. Pokušaj pristupa datoteci iz nekog od uključenih direktorijuma automatski dovodi do komunikacije klijenta i odgovarajućeg servera. Ovakva komunikacija zahtjeva usaglašenost svih računara (koje objedinjuje mrežni operativni sistem) u pogledu formata i značenja poruka. To je neophodna (a često i jedina) dodirna tačka računara, obuhvaćenih mrežnim operativnim sistemom.

Page 91: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 88

DODATAK 1: Windows XP

Sredinom osamdesetih Microsoft i IBM su odlučili da zajednički razviju OS/2-operativni sistem namijenjen procesorima Intel 80286, napisan u asemblerskom jeziku. Microsoft je 1988 godine napravio NT (New Technology) «portabilni» operativni sistem namijenjen i ostalim mikroprocesorskim arhitekturama. Prve verzije NT-a su bile Windows NT 3.1 i Windows NT 3.1 Advanced Server (32- bitne verzije). Windows NT 3.1 je u to vrijeme bio 16 - bitni operativni sistem. Windows NT verzija 4.0 je preuzeo korisnički interfejs Windows-a 95 i ugrađen internet pretraživač i web-server softver. Međutim kasnije su korisnički interfejs i grafički kod premješteni u kernel da bi se poboljšale performanse uz sporedni efekat – smanjenje pouzdanosti. Prethodne verzije NT-a bile su namijenjene raznim mikroprocesorima što nije slučaj sa verzijom Windows 2000 koja podržava samo Intel i kompatibilne arhitekture. Windows 2000 je značajno poboljšan u odnosu na NT:

- dodat je Active Directory - bolja podrška za mreže i prenosive računare (laptop) - podrška za PnP uređaje (Plug and Play) - podrška za više procesora i veću količinu memorije

U Oktobru 2001. godine Microsoft je plasirao na tržište Windows XP kao zamjenu za Windows 95/98 i nadogradnju za Windows 2000. Prednosti Windows-a XP u odnosu na prethodnike su:

- značajno poboljšan grafički interfejs - bolju podršku za mreže - veću pouzdanost i bezbjednost - podrška za nove 64-bitne procesore Intel Ithanium i AMD Athlon.

XP koristi klijent-server arhitekturu kojom postiže kompatibilnost sa aplikacijama namijenjenim drugim operativnim sistemima. Postoje dvije verzije XP-a: Windows XP Professional koji je namijenjen za profesionalnu upotrebu i Windows XP Personal Edition koji nudi pouzdanost i lakoću korišćenja Professionala bez podrške za Active Directory i POSIX aplikacije. Nova severska verzija Windows-a se pojavila krajem 2002. godine –Windows 2003 Server koji se izvršava pomoću istog koda kao Windows XP uz dodatne mogućnosti za rad sa mrežama. Početkom ove godine pojavila se verzija Windows XP 64-bit edition namijenjena 64-bitnim računarima (beta verzija) koja bi trebala da u potpunosti iskoristi snagu novih 64-bitnim procesora. Kao i kod većine probnih verzija postoji dosta problema vezanih uglavnom za hardversku nekompatibilnost – za većinu uređaja ne postoje odgovarajući drajveri.

Dizajn XP-a Microsoft-ovi dizajnerski ciljevi vezani za Windows XP su:

1. bezbjednost 2. pouzdanost 3. kompatibilnost sa Windows i POSIX aplikacijama 4. visoke performanse

Page 92: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 89

5. proširivost 6. prenosivost – nezavisnost od hardvera 7. regionalna podrška

Bezbjednost XP je najbezbjedniji Microsoftov operativni sistem. Pouzdanost Windows XP po svojoj pouzdanosti nadmašuje do sada najpouzdaniji Microsoft-ov operativni sistem Windows 2000. Najveći dio XP-ove pouzdanosti duguje se detaljnoj provjeri izvornog koda , brojnim testiranjima opterećenih sistema i automatskoj detekciji grešaka u drajverima. Windows XP ima ugrađene mogućnosti stalne provjere stanja sistema i skidanje sa interneta (update) takozvanih «zakrpa» i prije nego što korisnik uoči problem. Pouzdanost je poboljšana XP-ovim novim grafičkim korisničkim interfejsom čije su glavne prednosti bolji vizuelni dizajn, intuitivnost uz prostije menije i «lakoća otkrivanja» načina za izvršavanje pojedinih zadataka. Kompatibilnost sa Windows i POSIX aplikacijama Windows 2000 je bio prvenstveno fokusiran na kompatibilnost sa poslovnim aplikacijama. Kompatibilnost Windows-a XP je znatno proširena – uključuje mnoge aplikacije koje rade pod Windows-om 95/98. Kompatibilnost aplikacija je veoma teško postići zato što svaka aplikacija provjerava da li je pokrenuta na predviđenom operativnom sistemu. Windows XP posjeduje «sloj kompatibilnosti» koji se nalazi između aplikacije i Win32 programskog interfejsa aplikacije (API). XP podržava 16-bitne aplikacije tako što se 16-bitni API pozivi prevode u 32-bitne. Slično 64-bitna verzija Windows-a prevodi 32-bitne API pozive u 64-bitne. Podrška za POSIX u Windows-u XP je znatno poboljšana POSIX-ovim podsistemom interix. Visoke performanse Windows XP je projektovan da «izvuče najbolje» iz bilo kojeg računara, bilo kućnog, servera ili višeprocesorskog i višeprogramskog okruženja, što se postiglo različitim tehnikama. Neke od tih tehnika su asinhroni I/O (ulaz-izlaz), optimizovani mrežni protokol, prebacivanje grafike u kernel, sofisticirano keširanje podataka za sistem datoteka. Poboljšanje performansi je postignuto i smanjenjem broja linija programskog koda kod nekih kritićnih funkcija korišćenjem «pametnijih» algoritama. Podsistemi u XP-u komuniciraju efikasno pomoću pozivanja lokalne procedure (LPC – Local Procedure Call), čime se obezbjeđuje brza i sigurna razmjena poruka između njih. Niti u podsistemima Windows-a XP mogu biti zamijenjene nitima višeg prioriteta a i sistem reguje brzo na spoljašnje događaje. XP je dizajniran za simetrični višeprocesorski rad: na višeprocersorskom sistemu više niti se može izvršavati u isto vrijeme. Proširivost Proširivost podrazumijeva mogućnost operativnog sistena da «drži korak» sa novim dostignućima u računarskoj tehnologiji. To je u XP-u omogućeno korišćenjem slojevite arhitekture – izvršni dio radi u kernelu ili u zaštićenom režimu i obezbjeđuje osnovne funkcije sistema.

Page 93: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 90

Na vrhu izvršnog dijela nekoliko serverskih podsistema se izvršava u korisničkom režimu. Među njima su podsistemi okruženja koji emuliraju različite operativne sisteme. Zbog toga programi napisani za DOS, ranije verzije Windows-a i POSIX rade u XP-u u odgovarajućem okruženju. Zbog ovakve modularne strukture mogu se dodati novi podsistemi okruženja bez uticaja na izvršni dio. Windows XP koristi samoučitavajuće drajvere u I/O sistemu tako da se novi sistemi datoteka, I/O uređaja i mrežnih uređaja mogu priključiti dok sistem radi. Portabilnost Operativni sistem je portabilan (prenosiv) ako se može prebaciti sa jedne hardverske arhitekture na drugu sa relativno malim izmjenama. Najveći dio programskog koda za XP je napisan u C i C++ programskom jeziku. Skoro čitav dio koda koji je zavisan od procesora se nalazi u biblioteci dinamičkih linkova (DLL – Dinamic Link Library) koja se naziva sloj apstrakcije hardvera (HAL – Hardware Abstraction Layer). HAL komunicira sa hardverom direktno, odvajajući odstatak XP-a od razlika u hardveru između platformi na kojima se izvršava. Regionalna podrška Windows XP obezbjeđuje podršku za različite lokalizme kroz programski interfejs aplikacije (API) nazvan NLS (National Language Support), koji sardži rutine za formate datuma, vremena i valuta u skladu sa različitim nacionalnim običajima. UNICODE je prirodni kod Windows-a XP. XP podržava ANSI karaktere konvertujući ih u UNICODE prije manipulacije sa njima (8 – 16 bitna konverzija).

Arhitektura XP-a Arhitektura Windows-a XP je slojeviti sistem modula (slika 1). Glavni slojevi su HAL, Kernel i izvršni dio i svi rade u zaštićenom režimu. Tu je još i skup podsistema i servisa koji se izvršavaju u korisničkom režimu. Podsistemi korisničkog režima se dijele u dvije grupe:

- podsistemi okruženja koji emuliraju različite operativne sisteme - sigurnosni podsistemi.

Glavna prednost ovakve arhitekture je u jednostavnosti veza između modula. slika 1.

• Sloj abstrakcije hardvera (HAL) HAL omogućava da različiti računari koriste Windows XP professional, tj. briše razliku između korišćenjaXP-a na računaru sa jednim i sa više procesora (XP Professional podržava do 64 procesora). On takođe generiše interfejs virtuelne mašine koji koriste dispečer kernela, izvršni dio i drajveri uređaja. Jedna od važnih prednosti takvog pristupa je potreba za samo jednim drajverom za svaki uređaj.

Page 94: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 91

Slika 1

• Kernel (Jezgro) Kernel je centralni menadžer, dio koji u svakom trenutku zna koji se procesi izvršavaju u sistemu, koji dio memorije zauzimaju, koji im je prioritet i na šta čekaju ukoliko čekaju i on je objektno orijentisan. Tip objekta je sistemski definisana vrsta podatka koja ima set osobina (vrijednost podataka) i set metoda (npr. funkcije ili operacije). Objekat je primjer tipa objekta. Kernel izvršava zadatke korišćenjem seta kernelskih objekata

Kernel dispečer Zadaci kernel dispečera su raspoređivanje niti, implementacija sinhronizacionih primitiva, upravljanje vremenom, softverski interapti (prekidi).

Niti i raspoređivanje Windows XP koristi koncepte procesa i niti za izvršni kod. Svaki proces ima adresni prostor u virtuelnoj memoriji i informaciju koju koristi da inicijalizuje niti i ima jednu ili više niti. Svaka nit ima sopstveno stanje u rasporedu, uključujući aktuelni portret i informaciju o iskorišćenosti procesora. Šest mogućih stanja niti su: ready (spremno), stand-by,executing (izvršava se), waiting (čeka), transition state (stanje prelaska) i termination (terminacija).

Page 95: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 92

Nit najvišeg prioriteta se prebacuje u stand-by stanje tj. ta nit se sledeća izvršava. Ona se izvršava dok se ne pojavi nit višeg prioriteta, nit se terminiše, njen kvantum istekne ili je blokira objekt dispečer. Objekt dispečer koristi 32-bitnu šemu prioriteta. Pomoću prioriteta dispečer određuje redosled izvršavanja niti. Ukoliko dispečer ne pronađe nit koja je spremna za izvršenje izvršava posebnu nit koja se zove idle, tj. procesor je «nezaposlen». Prioritet niti su podijenjeni u dvije klase:

- promjenljivu klasu - klasu u realnom vremenu

Prioritet niti promjenljive klase se može mijenjati: povećavati i smanjivati. U XP-u postoji strategija da se obezbijedi dobar odziv nitima povezanim sa I/O uređajima npr. nit povezana sa aktivnim grafičkim korisničkim interfejsom (GUI) dobija najviši prioritet da bi se poboljšalo vrijeme odziva.

Izuzeci i interapti Interapt (prekid) je u stvari zahtjev procesora za pažnju. Kada procesor primi interapt prekida tekuću operaciju snima tačku gdje je stao sa radom i poziva rutinu zvanu «manipulator interaptima» (interrupt handler) koja sadrži instrukcije za rad u posebnim situacijama uzrokovanim interaptima. Sam interapt je predstavljen objektom koji sadrži sve informacije potrebne za manipulaciju. Samo korišćenje interapt objekta olakšava pridruživanje rutine interaptu bez potrebe za direktnim pristupom hardweru. Postoje 32 nivoa interapt zahtjeva u Windows XP-u. Kernel koristi 8, a ostala 24 su rezervisana za hardverske interapte kroz HAL. Kernel koristi tabelu raspoređivanje interapta da poveže svaki nivo interapta sa rutinom. Nivoi Windows XP interapta su prikazani u tabeli (slika 2). Windows XP definiše nekoliko izuzetaka nezavisnih od arhitekture: kršenje pristupa memoriji, cjelobrojno (integer) prekoračenje, prekoračenje ili potkoračenje (suviše mali rezultat) kod operacija sa pomičnim zarezom, dijeljenje sa nulom kod operacije sa pomičnim zarezom, nedozvoljenje instrukcije, greške kod razvrstavanja podataka, privilegovane instrukcije, greške pri učitavanju strane, prekoračenje kvote datoteke za straničenje itd. Izuzeci se mogu dogoditi u korisničkom ili kernel – modu. Jedan od najčešćih je takozvano «otimanje memorije» (Memory Acess Violation). Opasnost je manja ako se gornji izuzetak desi u korisničkom modu jer je u tom slučju aplikacija «zatvorena» u dodijeljenom joj memoriji i može oštetiti samo sebe. Ako se opisana greška desi u režimu kernela operativni sistem zaustavlja rad svih aplikacija i prikazuje «plavi ekran».

Page 96: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 93

Slika 2

Menadžer objekata Windows XP je objektno orijentisan operativni sistem. U njemu je sve implementirano kao objekat: datoteka, serijski port, proces, nit itd. Definisanjem tih elemenata kao objekata postiže se jednobrazan način pristupanja svim objektima. U većini drugim operativnih sistema npr. zauzimanje serijskog porta i komunikacija sa njima zahtijeva sasvim drugačiji kod od otvaranja datoteke i njenog čitanja. Iz ove rečenice slijedi da je prva prednost objektno orijentisanih operativnih sistema olakšavanje rada programerima. Druga je bezbjednost - pravljenjem jedne tačke za komunikaciju između programa i perifernih uređaja (drugog programa, datoteke, I/O uređaja) olakšava se praćenje i kontrola pristupa programa objektima i određivanje prava pristupa tj. posao menadžera objekata je praćenje objekta u sistemu, identifikacija korisnika objekata i odlučivanje o pravima pristupa istim. Menadžer objekata stvara interni apstraktni «prostor za imena» (namespace) u Windows-u XP. Poslije svakog novog podizanja sistema namespace se iznova definiše iz informacija o konfiguraciji koje se nalaze u sistemskom registry-ju. Ime objekta može biti stalno ili privremeno. Stalna imena se dodeljuju npr. diskovima dok privremena figurišu samo za vrijeme dok proces pristupa objektu. Imena objekata su struktuirana kao putanje do fajla u DOS-u i UNIX-u. Komponente putanje se odvajaju kosom crtom ulijevo (\). Namespace direktorijumi su predstavljeni direktorijumskim objektima koja sadrže imena svih objekata direktorijuma kao i objekat uređaja koji predstavljaju memorijski prostor koji sadrži sistem datoteka (FAT32, NTFS). Samim objektima se upravlja korišćenjem seta funkcija: create, open, close, delete, querry name, parse i security (kreirati, otvoriti, zatvoriti, brisati, pitati za ime, rastaviti i sigurnost).

Querry name funkcija koristi kada ima «upit» na objekat ali joj treba ime tog objekta. Parse koristi menadžer da traži objekat poznatog imena. Ova procedura se koristi nad manjim brojem objekata koji su dio Windows-ovog GUI, konfiguracionog menadžera (Registry) i objekata uređaja koji predstavljaju sisteme datoteka ( particije, diskovi). Ona locira npr. fajl objekat i inicira i otvara ili kreira I/O operaciju na sistemu datoteka. Ukoliko je prethodni korak uspješan polja fajl objekta se ispunjavaju da bi se opisao fajl.

Page 97: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 94

Security se poziva za izvršavanje sigurnosnih provjera za sve operacije nad objektima, npr. kada proces otvara ili zatvara objekat. Kada prestane potreba za pristupom objektu poziva se rutina za zatvaranje objekta što ne znači i brisanje objekta iz radne memorije. Njegovo brisanje se dešava tek kad kod svih komponenti sistema prestane potreba za objektom – i iz korisničkog moda i od sistemskih komponenti. Kada proces logovanja autentifikuje korisnika (administrator, guest, power user...), oznaka pristupa se «zakači» za proces USER, koje označava korisničko ime, i sadrži privilegije, listu prava pristupa tj. određuje servise i objekte kojima može pristupiti korisnik. Sama oznaka koja kontroliše pristup se pridružuje niti koja pristupa objektu. Sistem određuje sigurnosni ID u oznaci za pristup niti sa listom kontrole pristupa objekta da bi se ustanovilo da li nit ima pristup objektu. Oznaka pristupa ima polje koje kontroliše izmjenu pristupa.

Menadžer virtuelne memorije Menadžer virtuelne memorije (VM) je izvršna komponenta koja upravlja virtuelnim adresnim prostorom, dodjeljivanjem fizičke memorije i straničenjem. Veličina stranice je 4KB za 32-bitne i 8KB za 64-bitne procesore. Kod 32-bitnih procesora svaki proces ima 4GB virtuelnog adresnog prostora. Gornja 2GB su skoro ista za sve procese i koristi ih Windows XP u režimu kernela. Oblasti u kernel režimu koje nijesu iste za sve procese su mapa tabele za straničenje, hiperprostor i prostor sesije. U hiperprostoru se nalazi set informacija o tekućem procesu. Prostor sesije se koristi za dijeljenje Win32k i ostalih specifičnih drajvera između procesa. Donja 2GB adresnog prostora su specifična za svaki proces i mogu im pristupati niti i iz korisničkog i iz kenelskog režima. Neke konfiguracije XP-a rezervišu samo 1GB za operativni sistem. To je povoljno za velike aplikacije kao npr. SQL baze podataka. Menadžer virtuelne memorije dodeljuje memoriju procesu u 2 koraka:

-prvim reguliše dio virtuelnog adresnog prostora, a -drugim dodeljuje tom vitruelnom stvarni memorijski prostor u datotekama za straničenje.

Za 32-bitne procesore svaki proces ima direktorijum za straničenje koji sadrži 1024 unosa - PDE (page directory entries) veličine po 4 bajta. Svaki PDE upućuje na tabelu za stranićenje koja sardži takođe 1024 unosa PTE (page table entries), veličine 4 bajta. Svaki PTE pokazuje na okvir (frame) stranice veličine 4KB u fizičkoj memoriji. Ukupna veličina svih tabela za straničenje po jednom procesu je 4 MB. VM menadžer snima po potrebi na disk pojedine tabele. Ova struktura ilustrovana je na slici 3.

Page 98: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 95

Slika 3

32-bitna adresa virtuelne memorije se dijeli na tri dijela – slika 4.

Slika 4.

Prvih 10 bita se koriste kao indeks u direktrijumu za straničenje. Ova adresa selektuje jedan unos u direktorijumu za straničenje (PDE) koji sadrže fizički okvir stranice tabele za straničenje. Jedinica za upravljanje memorijom (MMU – memory management unit) koristi sledećih 10 bita virtuelne adrese za selekciju unosa u tabelu za straničenje (PTE). PTE određuje okvir stranice u fizičkoj memoriji. Preostalih 12 bita predstavljaju ostatak (offset) i MMU ih koristi za kreiranje pokazivača na specifičan bajt u okviru stranice spajanjem 20 bita PTE i nižih 12 bita virtuelne memorijske adrese (offset-a). Prema tome tih 12 bita se koriste za opis stanja stranice z fizičkoj memoriji. 3 bita su rezervisana za operativni sistem, ostalih 9 bita određuju da li je stranica pristupano ili upisano na nju, atribute keširanja, način pristupa i validnost PTE. Fizička stranica (stranica u fizičkoj memoriji – 4KB za 32 bitne i 8KB za 64 bitne procesore) može biti opisana jednim od šest mogućih stanja: validna, slobodna, nulovana (svih npr. 4KB tj 32000 bita su nule), pripravna (stand-by), modifikovana, u kvaru (bad) ili u prelasku (in transition). Validna stranica je stranica u upotrebi od strane aktivnog procesa. Slobodna stranica je stranica za koju ne postoji upit u PTE. Modifikovana stranica je upisana od strane aktivnog procesa i mora biti snimljena na disk prije nego se dodijeli drugom procesu. Stranica u kvaru (bad page) je neupotrebljiva zbog hardverske greške.

Page 99: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 96

Stranica u prelasku je stranica «na putu» sa diska u okvir stranice koji joj je dodijenjen u fizičkoj memoriji. Na slici 5. prikazana je struktura PTE datoteke za straničenje.

Slika 5.

PTE sadrži 5 bita za zaštitu stranice, 20 bita za ostatak datoteke za straničenje, 4 bita za selekciju datoteke za straničenje i 3 bita za opis stanja stranice. Menadžer drži popis svih stranica fizičke memorije u bazi podataka o okvirima stranica (page-frame database), po jedan unos za svaku stranicu memorije u sistemu. Greška na stranici (page fault) je interapt koji nastaje kada proces pokuša da čita ili upisuje na lokaciju u VM koja ne postoji (označena je sa not present). U task menadžeru to je broj povlačenja podataka sa diska za potrebe nekog procesa zato što ih nije bilo u radnoj memoriji. Windows XP koristi sistem prva unutra- prva napolje (first in-first out, FIFO) za zamjenu stranica kod procesa koji koriste više od radnog minimuma koji iznosi 50 stranica. XP nadgleda greške na stranicama za svaki proces i srazmjerno podešava broj dodijeljenih stranica procesu. VM menadžer zamjenjuje i rasporežuje stranke dodijeljene procesu zavisno od njihove starosti. «Starost» stranice se određuje iz broja ciklusa raspoređivanja (premještanja) bez PTE. Statistika pokazuje da kada nit ili proces koriste jednu stranicu, vrlo vjerovatno da će traćiti i susjedne stranice u bliskoj budućnosti. To svojstvo korist VM menadžer. Tim predviđanjem koja stranica će se tražiti kao sljedeća smanjuje se rizik od grešaka na stranicama.

Menadžer procesa Menadžer procesa u Windows XP-u obezbjeđuje usluge kreiranja, brisanja i korišćenja procesa, niti i zadataka. Svaki proces sadrži jednu ili više niti i mogu se grupisati u objekte zadataka (job objects) koji ograničavaju korišćenje procesora i broj dodijeljenih stanica. Koriste se kod velikih sistema za skladištenje podataka. Kada Win32 aplikacija zatraži kreiranje procesa šalje se poruka Win32 podsistemu da se proces kreira a zatim se poziva API u menadžeru procesa. Proces menadžer poziva menadžera objekata da bi kreirao objekat «proces» i dodeljuje ga Win32 podsistemu koji ponovo poziva menadžer procesa da kreira nit za proces. Menadžer procesa takođe dodeljuje asinhrone pozive procedura APC nitima. APC sistem koristi za inicijalizaciju izvršavanja niti, završavanja I/O, terminaciju niti i procesa. Pozivanje lokalne procedure - LPC

Page 100: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 97

Windows XP je organizovan po modelu klijent-server. Podsistemi oktuženja su serveri koji zamjenjuju osobine pojedinih operativnih sistema. Operativni sistem koristi LPC za proslijeđivanje zahtjeva i rezultata između klijentskih u serverskih procesa u jednom sistemu. LPC je mehanizam za prenos poruka. Da bi klijent i server (aplikacija i podsistem) mogli da komuniciraju stvara se kanal za komunikaciju koji se sastoji od para portova za komunikaciju:

- jedan za poruke od klijenata ka severu - drugi za poruke od servera ka klijentu

Postoje tri tehnike za prenos poruka: • prva tehnika je pogodna za manje poruke – do nekoliko stotina bajta. Poruke se kopiraju

iz jednog procesa u drugi, port se koristi kao prelazno skladište. • druga tehnika je za veće poruke. Za nju je potrebno kreirati objekat- dijeljenu memoriju

(shared memory). Poruke sadrže pkazivač na objekat dijeljena memorija i informaciju o veličini. Pošiljalac smiješta poruku u dijeljenu memoriju i ona je odmah dostupna primaocu.

• treća tehnika koristi programski interfejs aplikacije (API) koji upisuje ili čita direktno u adresni prostor procesa.

I/O Menadžer I/O menadžer je zadužen za sisteme datoteka, drajvere uređaja i mrežne drajvere. Ovaj modul vodi računa o tome koji drajveri uređaja, filter drajveri i sistemi datoteka su učitani i takođe upravlja baferima za I/O zahtjeve.Koordiniran je sa VM menadžerom, kontroliše keš menadžer koji upravlja keširanjem čitavog I/O sistema. Drajveri uređaja su grupisani u stekove (stack – zbog načina na koji se dodaju za svaki uređaj pojedinačno). I/O Menadžer konvertuje zahtjeve koje prima u standardnu formu nazvanu I/O paket zahtjeva (I/O request packet – IRP), zatim prosljeđuje IRP prvom drajver u steku. Obrada IRP-a se završava kada dođe na zadnjem drajveru u steku. Model drajverskog steka je veoma fleksibilan. Kako se stek izgrađuje različiti drajveri imaju mogućnost da postanu dio steka kao filter drajveri. Oni sami imaju mogućnost da ispitaju i modifikuju svaku I/O operaciju (mauntovanje, particionisanje), npr. antivirus aplikacije koriste filter drajvere za detekciju virusa. Drajveri uređaja u Windows XP-u su napisani po WDM (Windows Driver Model) specifikaciji koja propisuje zahtjeve kao npr. Plug and Play, tačna logika za otkazivanje / deinstalaciju. Zbog strogih zahtjeva WDM čini se da je pisanje drajvera po toj specifikaciji prilično veliki posao. Na sreću to ne važi zahvaljujući modelu port/miniport. Slični uređaji (audio, SCSI i eternet kontroleri) dijele prost drajver koji se zove drajver porta i obezbjeđuje neke osnovne funkcije npr. jačina zvuka. Mini port drajver se koristi za specifične funkcije uređaja (npr. 10-kanalni ekvilajzer u slučaju zvučne kartice).

Menadžer keša

Page 101: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 98

Proces privremenog smiještanja u posebnu oblast u memoriji prethodno korišćenih podataka radi lakšeg kasnijeg pristupa tim podacima se naziva keširanje (caching). U mnogim operativnim sistemima to je posao sistema datoteka. U Windows-u XP za to je zadužen menadžer keša koji blisko sarađuje sa VM menadžerom da bi obezbijedio keširanje za sve komponente pod kontrolom I/O menadžera. Sama količina keša se mijenja u zavisnosti od količine slobodne memorije u sistemu. Sjetimo se da je 2 GB adresnog prostora procesa rezervisano za sistem. VM Menadžer može podijeliti najviše polovinu – 1 GB za sistemski keš. Keš je podijeljen u blokove od po 256 KB i svaki blok posjeduje oblast u memoriji koja se naziva VIEW datoteke (vidno polje). Svaki blok keša je opisan kontrolnim blokom virtuelne adrese (virtual adress control block – VACB) u kojem se čuva virtuelna adresa i ofset datoteke kao i broj procesa koji koriste view. Za svaku otvorenu datoteku keš- menadžer obezbjeđuje poseban VACB indeksni niz koji opisuje keširanje za čitav fajl. Ovaj niz ima po jedan unos za svakih 256 KB fajla tako da npr. fajl od 2 MB ima VACB indeksni niz od 8 unosa. Kada I/O menadžer primi zahtjev za čitanje od strane neke datoteke iz korisničkog režima, on šalje IRP (I/O paket zahtjeva) drajverskom steku. Sistem datoteka potražuje zahtijevane podatke menadžeru keša koji upoređuje VACB indeksni niz te datoteke i 8-bitni ofset zahtjeva koja pokazuje na neko vidno polje u kešu (view). Ukoliko nema tog polja menadžer keša mu dodeljuje blok i premješta traženo polje (view) u dodijeljeni mu blok. Posljednji korak je kopiranje podatka iz bloka u bafer podatke koja ih je tražila. Ako kopiranje izostane razlog za to je greška na stanici (page fault) što uzrokuje da VM menadžer šalje zahtjev za čitanje I/O menadžeru. I/O menadžer šalje još jedan zahtjev steku ovaj put za operaciju straničenja, koja zaobilazi menadžer keša i učitava podatke iz fajla direktno na stranici dodijeljenu menadžeru keša. VACB se podešava da pokazuje na tu stranicu. Podaci koji su sada u kešu kopiraju se u bafer datoteke potražioca. Na slici 5.su grafički prikazane prethodno opisane operacije.

Page 102: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 99

Slika 5. Zbog poboljšavnja performansi menadžer keša pravi i čuva istoriju zahtjeva za čitanjem i iz nje pokušava da predvidi buduće zahtjeve. Kada menadžer keša pronađe šablon u prethodna tri zahtjeva premješta podatke u keš prije sljedećeg. Na ovaj način aplikacija pronalazi keširane tražene podatke i ne mora da čeka I/O operaciju sa diskom. Zbog toga što mrežni sistem datoteka premješta podatke između diska i mrežnog intrefejsa, menadžer keša obezbjeđuje DMA (Direct Media Acess – direktni pristup medijumu) interfejs za direktno premještanje podataka. čime se izbjegava kopiranje kroz posredni bafer. Monitor bezbjednosti Kada proces zatraži pristup objektu monitor bezbjednosti (SRM – Security reference monitor) provjerava sigurnosni dodatak procesa i listu za kontrolu pristupa objekta i na osnovu upoređivanja odbija ili dozvoljava pristup procesa objekta. SRM je takođe odgovoran za manipulaciju privilegijama u sigurnosnim dodacima. Posebne privilegije su potrebne korisnicima za operacije backup i restore na sistemu datoteka, izvođenje određenih provjera kao sistem administrator itd. Pošto je SRM zadužen za provjere pristupa onn snima većinu pristupa kritičnim objektima u log datoteku događaja vezanih za bezbjednost (security event log).

Plug And Play menadžer. Menadžer napajanja Windows XP koristi PnP menadžer da bi mogao da prepozna i prilagodi se promjenama hardverske konfiguracije. Da bi PnP mogao da radi i uređaj i drajver uređaji moraju podržavati PnP standard. PnP menadžer automatski prepoznaje instalirane uređaje i detektuje promjene dok je sistem pod napajanjem. Takođe PnP menadžer vodi računa o resursima koje koristi uređaj kao i o resursima koje bi mogao da koristi kao i o učitavanju odgovarajućih drajvera. Ovaj način upravljanja hardverskih resursima (primarno interaptima i I/O memorijskih opsezima) ima za cilj određivanje hardverske konfiguracije u kojoj svi uređaji mogu da rade bez problema. PnP menadžer funkcioniše na sljedeći način: prvo dobija listu uređaja od svakog drajvera magistrale (PCI,USB); učitava instalirani drajver (ili ga instalira ako je potrebno) i šalje zahtjev «dodaj uređaj» (add-device) odgovarajućem drajveru uređaja. PnP dodeljuje resurse uređaju i šalje zahtjev «pokreni uređaj» (start-device) drajveru. Ako je potrebno izvršiti rekonfiguraciju uređaja uređaja PnP menadžer šalje zahtjev querry-stop kojim pita drajver može li privremeno isključiti uređaj. Ako može sve tekuće operacije se završavaju i vrši se prevencija izvršavanja novih. PnP menadžer šalje stop zahtjev da bi mogao rekonfigurisati uređaj sa novim «pokreni urešaj» zahtjevom. PnP menadžer XP-a podržava i druge zahtjeve: querry-remove i surprise-remove. Prvi se koristi kada je korisnik spreman da izbaci pccard uređaj (npr.) i sličan je zahtjevu querry-stop. Surprise-remove (iznenadno uklanjanje) se koristi kod zakazivanja uređaja ili ćešće kada korisnik ukloni (izbaci) uređaj prije zaustavljanja (npr. USB – diska bez disable-ovanja) Windows XP podržava sofisticirano upravljanje napajanjem. Cio sistem i posebni uređaji mogu se prebaciti u stanje niske potrošnje (standby ili sleep režim) kada se ne koriste. Većina potrošnje

Page 103: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 100

je tada usmjerena na čuvanje podataka u fizičkoj memoriji (RAM-u). Sistem se može vratiti u normalno stanje dolaskom paketa podataka preko mreže, pozivom telefonske linije na koju je priključen modem, otvaranjem laptopa ili pritiskom bilo kojeg dugmeta na tastauri ili pomjeranjem miša. Windows XP ima i opciju hibernacije (hibernation) kojom se sadržaj RAM-a upisuje na disk i sistem se isključuje. Podizanje sistema poslije hibernacije traje znatno kraće od procesa booting. Kada je procesor besposlen, Window XP prebacuje sistem u stanje niže potrošnje smanjivanjem procesorskog takta. Registry Windows XP čuva veličinu informacija o konfiguraciji u bazi podataka koja se zove registry. Registry baza podataka se naziva hive (košnica) zbog strukture. Postoje odvojene «košnice» za informacije o sistemu, podešavanja korisnika, instalaciju softvera i bezbjednost. Menadžer registry-ja je komponenta izvršnog dijela. Svaki put kada se sistem uspješno podigne snima hive kao poslednju poznatu ispravnu (last-known-good) konfiguraciju. Ako korisnik instalira softver (drajver) i tom konfiguracijom se ne može podići sistem korisnik to može uraditi koristeći «posljednju poznatu ispravnu». XP ima i opciju system restore, koja periodično snima konfiguracije u slučaju da se poslije neke izmjene sistem može podići ali ne radi kako treba. Podizanje sistema (Booting) Podizanje Windows XP-a počinje kada se uključi napajanje i počne izvršenje BIOS-a iz ROM-a. BIOS identifikuje uređaj sa kojeg se vrši podizanje sistema (booting device). Učitava se NTLDR program iz root direktorijuma pomenutog uređaja (HDD-a,CD-a, FDD-a). NTLDR učitava kernel, HAL i sistemski hive iz registry-ja. Na kraju NTLDR počinje izvršavanje kernela i utvrđuje koji od boot uređaja sadrži operativni sistem. Kernel inicijalizuje sistem i kreira 2 procesa. Sistemski proces sadrži sve interne radne niti i nikad se ne izvršava u korisničkog režimu. Prvi proces u korisničkom režimu je SMSS koji vrši dalju inicijalizaciju sistema uključujući formiranje datoteka za straničenje, učitavanje drajvera uređaja i kreiranje WINLOGON i CSRSS procesa (CSRSS – Win32 podsistem). XP optimizuje podizanje sistema koristeći šablon pristupa pojedinim djelovima diska i preraspoređujući sistemske fajlove da bi se smanjio broj I/O operacija kod narednih podizanja sistema. Takođe, procesi potrebni za podizanje sistema se grupišu u jedan proces. Ove novine drastično smanjuju vrijeme za podizanje sistema. Međutim, mogućnost Windows-a sleep i posebno hibernacija učinili su vrijeme podizanja sistema mnogo manje bitnim nego što je to nekada bilo.

Podsistemi okruženja

Page 104: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 101

Podsistemi okruženja su procesi u korisničkom režimu. Nalaze se u sloju iznad izvršnog dijela u XP-u i omogućavaju izvršavanje programa napisanih za druge operativne sisteme (MS-DOS, 16-bitni Windows, POSIX). Windowss XP koristi Win32 kao glavni podsistem tako da on započinje sve procese. Kada se pokrene aplikacija Win32 poziva VM menadžera da učita izvršni kod aplikacije. Ako se kod ne može izvršiti u Win32 podsistemu pokreće se odgovarajući podsistem okruženja kao proces u korisničkom režimu. Aplikacije u različitim podsistemima su međusobno izolovane tako da npr. Win32 aplikacija ne može pristupiti POSIX podsistemu jer samo jedan podsistem može biti pridružen svakom procesu. Pošto se svaki podsistem izvršava u odvojenom procesu u korisničkom režimu, greška u jednom se ne odražava na drugi proces. Izuzetak je Win32 koji obezbjeđuje tastaturu, miša i grafičke mogućnosti. Ako on «padne» potrebno je reboot-ovati sistem. Win32 dijeli aplikacije na grafičke i karakterno orijentisane i transformiše karaktere u grafičku reprezentaciju u komadnom prozoru (MS-DOS ili POSIX aplikacije). MS-DOS okruženje DOS okruženje u Windows XP-u je omogućeno zahvaljujući Win32 aplikaciji koja se zove VDM (Virtual DOS Machine) koja radi kao proces u korisničkom režimu. VDM posjeduje jedinicu za izvršavanje i emulaciju Intel 486 instrukcija. Takođe su implementirani virtuelni drajveri uređaja za monitor, tastaturu i komunikacioni port. VDM se zasniva na MS-DOS 5.0 izvornom kodu i dodeljuje najmanje 620 KB memorije aplikaciji. Windows XP komandni shell je program koji kreira prozor koji liči na DOS okruženje na 32-bitnim procesorima MS-DOS. Grafičke aplikacije se izvršavaju u full-screen režimu a aplikacije na bazi karaktera u full-screen ili prozoru. Sve MS-DOS aplikacije se ne mogu izvršavati pod VDM jer tu spadaju aplikacije koje pristupaju hardveru direktno. 16-bitno Windows okruženje Win16 aplikacije se u XP-u izvršavaju zahvaljujući VDM i dodatnom softveru koji se naziva WOW32 (za 16-bitne aplikacije). WOW32 obezbjeđuje rutine kernela, menadžera prozora i GDI (Graphical Device Interface) funkcije i takođe prevodi 16-bitne adrese u 32-bitne. Samo jedna Win16 aplikacija može biti aktivna u XP-u zato što Win16 aplikacije zauzimaju isti adresni prostor. Postoji relativno malo 16-bitnih aplikacija koje su potrebne korisnicima sa XP-om. Uprkos tome WOW32 okruženje i dalje postoji iz razloga što neke 32-bitne aplikacije ne mogu biti instalirane u XP-u bez njega. Win32 okruženje Glavni podsistemi u Windows-u XP je Win32 koji pokreće sve Win32 aplikacije i upravlja tastaturom, mišem i monitorom pri čemu je on projektovan kao izuzetno stabilan.

Page 105: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 102

Da bi se postigao visok nivo kompatibilnosti sa Windows 95/98 aplikacija Windows XP omogućuje korisniku da neke «zahtjevne» aplikacije za Win 95/98 pokrene u režimu kompatibilnosti . Time se modifikuje Win32 API bolje aproksimira ponašanje koje se očekuje od aplikacije na njoj odgovarajućem operativnom sistemu. Mane režima kompatibilnosti su slabije performanse i interoperabilnost sa drugim aplikacijama. POSIX podsistem POSIX podsistem namijenjen je izvršavanju POSIX aplikacija i bazira se na UNIX modelu. POSIX aplikacije se mogu startovati od strane Win32 podsistema ili druge POSIX aplikacije i koriste server POSIX podsistema PSXSS.EXE, POSIX biblioteku dinamičnih linkova PSXDLL.DLL i menadžer sesije na POSIX konzoli POSIX.EXE. POSIX aplikacije imaju pristup svakom sistemu datoteka na Windows XP sistemu. Windows XP obezbjeđuje znatno viši stepen kompatibilnosti sa UNIX aplikacijama nego u prethodnim verzijama NT-a. Proces prijavljivanja i sigurnosni podsistemi Prije nego korisnik stekne pravo pristupa objektima u Windows XP-u mora proći provjeru sistema za prijavljivanje WINLOGON koji odgovara na sekvencu CTRL+ALT+DELETE sa tastature. Naziv sekvence je security atention i predvidjena je da spriječi aplikaciju da se ponaša kao «trojanski konj». Sama prijava korisnika zahtijeva korisničko ime i njegovu lozinku, mada se alternativno mogu prijavljivati korišćenjem smart-card kartice i ličnog identifikacionog broja. LSASS podsistem – Local Security Authority Subsystem LSAS je proces koji generiše sigurnosne dodatke (tokens) koji predstavljaju korisnike na sistemu. Ovaj podsistem poziva paket za autentifikaciju da bi izvršio identifikaciju koristeći informacije od podsistema za prijavljivanje ili mrežnog servera. Paket za autentifikaciu traži informaciju o accountu u lokalnoj bazi podataka i provjerava tačnost lozinke. Sigurnosni podsistem tada generiše pristupni dodatak za korisnikov ID koji sadrži odgovarajuće privilegije, limite kvote i grupni ID. Kad god korisnik pokuša da pristupi objektu u sistemu, pristupni dodatak se prosljeđuje do monitora za bezbjednost koji provjerava privilegije i kvote. Windows XP je naslijedio paket za autentifikaciju Kerberos od svog prethodnika Windows-a 2000.

NTFS fajl sistem MS-DOS sistemi su koristili FAT (file allocation table) fajl sistem. FAT (16-bitni) sistem je imao dosta nedostataka:

- internu fragmentaciju - limit od 2 GB - lošu zaštitu pristupa fajlovima.

Page 106: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 103

32-bitni FAT je donekle riješio probleme limita i fragmentacije ali su njegove mogućnosti i dalje ograničene u poređenju sa modernim fajl sistemima. NTFS sistem donosi nove mogućnosti:

- oporavak oštećenih podataka - bezbjednost - tolerancija prema grešci - podrška za velike datoteke - UNICODE imena datoteka - rasute datoteke - šifrovanje - kompresiju

Windows XP nastavlja da koristi FAT16 za pristup flopi disketama i drugim prenosnim medijumima. XP podržava i dodatne sisteme datoteka za pristup CD i DVD medijumima. NTFS unutrašnji raspored Osnovna jedinica u NTFS fajl sistemu je volumen (zapremina, količina) i može zauzimati dio, čitav disk ili više diskova. NTFS ne radi sa pojedinačnim sektorima diska već koristi klaster (cluster) kao jedinicu alokacije diska. Klaster je broj sektora diska koji je eksponent od 2. Veličina klastera kod formatiranja diska je jednaka veličini sektora za volumen:

-do 1 GB – 512 B do 1 KB; -do 2 GB – 2KB; -preko 2 GB – 4KB.

Ove vrijednosti su po default-u tj. mogu se promijeniti. Primjer prednosti NTFS nad 16-bitnim FAT: ako imamo 16000 datoteka i disk od 1.6 GB kod FAT16 sistema biće 400 MB izgubljenog prostora zbog interne fragmentacije a kod NTFS-a samo 17 MB. NTFS koristi logički broj klastera (LCN - Logical Cluster Number) kao adresu na disku i dodeljuje LCN redom od početka ka kraju diska. Datoteka u NTFS-u je struktuiran objekat koji se sastoji od atributa, kao što su ime datoteke, datum kreiranja i sigurnosni deskriptor koji služi za kontrolu pristupa. Svaka datoteka u NTFS sistemu je opisana sa jednim ili više zapisa u niz koji se čuva u posebnoj datoteci koja se zove glavna tabela datoteka ili skraćeno MFT (Master File Table). Veličina zapisa u MFT varira od 1 do 4 KB manji rezidentni atributi se čuvaju u MFT a veći nerezidentni kao neimenovani skup podataka u bliske oblasti na disku a pokazivač na svaku oblast se nelazi u MFT. Ako datoteka ima mnogo atributa ili je jako fragmentirana potrebno joj je više pokazivača i nije joj dovoljan jedan zapis u MFT. U tom slučaju datoteka se opisuje zapisom koji se zove osnovni zapis dadoteke koji sadrži pozivače na preostale zapise u kojima su dodatni pokazivači i atributi. Svaka dadoteka u NTFS-u ima jedinstven 64-bitni ID zvani reference koji se sastoji od 48-bitnog broja fajla i 16-bitnog broja sekvence. Broj sekvence se uvećava za 1 svaki put kada se koristi MFT. NTFS metapodaci – podaci o podacima

Page 107: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 104

Metapodaci o NTFS volumenima čuvaju se u fajlovima. Prvi fajl je MFT. Drugi, koji se koristi za oporavak oštećenih podataka ako je MFT takođe oštećen sadrži kopiju prvih 16 unosa u MFT. Ostale specijalne datoteke su:

- LOG datoteka - volume datoteka - tabela definicija atributa - osnovni direktorijum (root) - bitmap datoteka - boot datoteka - datoteka za loše klastere (bad cluster file)

U log datoteku se snimaju sve promjene metapodataka Volume datoteka sadrži ime volumena, verziju NTFS sistema kojim je volumen formatiran i bit koji pokazuje da je volumen možda oštećen. Tabela definicija atributa prikazuje koji tipovi atributa su korišćeni u volumenu i koje operacije se mogu izvesti nad njima. Osnovni direktorijum je direktorijum najvišeg nivoa u hijerarhiji sistema datoteka. U bitmar datoteci se čuvaju podaci o zauzetim i slobodnim klasterima na volumenu. Boot datoteka sadrži kod za podizanje Windows-a XP i mora biti locirana na posebnoj adresi na disku da bi je BIOS lako pronašao pri podizanju sistema. Boot datoteka takođe sadrži i fizičku adresu MFT. Datoteka za loše klastere vodi računa o oštećenim oblastima na volumenu. NTFS koristi ovu datoteku za ispravljanje grešaka. Oporavak poslije grešaka – NTFS log datoteka U mnogim jedostavnim sistemima datoteka nestanak napona u pogrešno vrijeme može značajno da ošteti strukture podataka sistema datoteka. U NTFS-u prije nego što dođe do izmjene strukture podataka pravi se log zapis koji sadrži undo i redo informacije. Poslije pada sistema strukture podataka sistema datoteka se mogu oporaviti obradom log datoteke čime se ne garantuje oporavak sadržaja korisnikovih datoteka. Metapodaci ostaju neoštećeni tako što se vraćaju u stanje prije pada sistema. Kada se slobodan prostor u log datoteci približi kritičnom nivou, NTFS zaustavlja sve I/O operacije i tekuće upisivanje u datoteku, resetuje je i nastavlja prekinuti upis. Bezbjednost NTFS volumena potiče od objektne orijentisanosti Windows-a XP. Svaka NTFS datoteka je snabdjevena bezbjedonosnim deskriptorom koji sadrži sigurnosni dodatak vlasnika datoteke i listu kontrole pristupa. Za upravljanje volumenom i toleranciju na greške odgovoran je FtDisk. FtDisk je drajver diska «otporan na greške». Obezbjeđuje nekoliko kombinacija više diskova u jedan volume i time poboljšanja performansi, kapaciteta i pouzdanosti. Set volumena predstavlja više diskova povezanih tako da formiraju veliki logički volumen (slika 6.) sadrži najviše 32 particije i može se proširivati dodatnim diskovima bez mijenjanja sistema datoteka. Bitmap metapodaci se jednostavno proširuju da bi pokrili novonastali prostor.

Page 108: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 105

Slika 5.

Trakasti (stripe) set je prikazan na slici broj 7. Ova šema se zove još i RAID nivoa O. FtDisk uzima veličinu trake od 64 KB. Prvih 64 KB logičkih volumena se nalaye na prvoj fizičkoj particiji, sljedećih 64 KB na drugoj itd. Ovakav raspored doprinosi poboljšanju I/O propusnog opsega zbog toga što se podaci prenose paralelno.

Slika 7

Trakasti set sa parnošću je prikazan na slici 8. – ova šema se zove još i RAID nivoa 5. Ako trakasti set ima 8 diskova, za svakih sedam «traka» podataka na sedam odvojenih diskova dolazi po jedna traka parnosti na osmom disku. Ako je bilo koja od ovih osam traka uništena ili oštećena može rekonstruisati podatke izračunavanjem funkcije EX – ILI od preostalih sedam. Ukoliko se sve trake parnosti nalaze na jednom disku na njemu bi se izvršavalo sedam puta više I/O operacija nego na ostalim diskovima. Da bi se izbjeglo ovo «usko grlo» trake parnosti se raspoređuju na sve diskove na način prikazan na slici. Da bi se napravio trakasti set sa parnošću potrebne su minimum 3 particije iste veličine raspoređene na tri posebna diska.

Page 109: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 106

Slika 8

Ogledanje diskova. Set ogledala. RAID i duplex setovi Ogledanje diskova ili RAID nivoa 1 je predstavljeno na slici 9. Sastoji se od dvije particije iste veličine na dva diska takvih da im je sadržaj podataka identičan. Kada aplikacija zapisuje podatke u set ogledala, FtDisk ih zapisuje na obje particije. Ako jedna particija zakaže FtDisk ima njenu kopiju na ogledalu. Ova šema poboljšava i performanse zato što se zahtjevi za čitanje dijele između dva ogledala. Da bi se zaštitili od otkaza kontrolera diska oba diska se priključuju na posebne kontrolere (dupleks set).

Slika 9.

Rezervni sektori i remapiranje klastera

Page 110: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 107

Kada se disk formatira kreira se mapa brojeva logičkih blokova za ispravne sektore na disku. Tehnikom rezervnih sektora, kako joj ime kaže, ostavlja se određeni broj sektora nemapiran kao rezerva. Ako se sektor ošteti FtDisk daje instrukciju disku da ga zamijeni rezervnim. Ova tehnika se zasniva na hardverskim mogućnostima i podržava je većina diskova. Remapiranje klastera je softverska tehnika koju izvodi sistem datoteka. Ako se oblast na disku ošteti, NTFS je zamjenjuje drugom, promjenom pokazivača u MFT označava tu oblast neupotrebljivom da ubuduće ne bi bila dodijeljena nekom fajlu. Kombinovanjem gornjih tehnika sa šemama tolerantnim na greške (ogledala, trakasti setovi) postiže se visoka pouzdanost. Kompresija i šifrovanje podataka Da bi kompresovao fajl NTFS ga dijeli na jedinice kompresije koje predstavljaju blokove od 16 susjednih klastera. Kada se zapiše svaka jedinica kompresije primjenjuje se algoritam za kompresiju. Ako rezultat stane u manje od 16 klastera, rezultat kompresije se snima. Da bi se poboljšale performanse kod čitanja NTFS dekompresuje podatke i prije nego što aplikacija uputi zahtjev za čitanje određenog dijela diska koristeći tehniku predviđanja. NTFS koristi još jednu tehniku za uštedu memorijskog prostora kod fajlova koji sadrže dosta logičkih nula. Klasteri koji sadrđe sve nule se ne snimaju na disk, a u MFT tj. u sekvencu brojeva virtuelnih klastera ostavljaju se praznine. Kod čitanja takvih datoteka NTFS popunjava nulama odgovarajuće djelove bafera tražioca. U NTFS sistemu mogu se šifrovati datoteke i cijeli direktorijumi. Bezbjedonosni sistem upravlja šiframa i obezbjeđuje oporavak kod gubljenja šifre. Mount point je tip simboličkog linka specifičan za direktorijume pod NTFS-om. Obezbjeđuje fleksibilniji način organizovanja disk volumena nego jednostavno dodeljivanje slovnih oznaka. Dnevnik promjena opisuje sve promjene izvršene u sistemu datoteka. Servis za replikaciju datoteka koristi dnevnik promjena za identifikaciju datoteka koje treba replicirati kroz mrežu. Kopija «sjenke» volumena (volume shadow copies) je mogućnost Windows-a XP da povrati volumen u poznato stanje i da tada kreira shadow kopiju koja se može iskoristiti za bekap (backup). Serverska verzija XP-a koristi shadow kopije za čuvanje starijih verzija datoteka na serveru. Ovo omogućava korisnicima da pregledaju dokumente uskladištene na serveru kakvi su bili ranije, prije određenih izmjena. Takođe se ova mogućnost može iskoristiti za oporavak slučajno izbrisanih ili neželjeno izmijenjenih datoteka bez potrebe za bekap diskom.

Page 111: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 108

DODATAK 2: Linux

Ova skripta je namijenjena da služi kao pomagalo za pohađanje kursa linux-a. Nedovoljna je za samostalno učenje linux-a i služi samo kao podsjetnik na najvažnije pojmove sa kursa.

Linux Linux predstavlja modifikovani klon operativnog sistema koji je zaštićen imenom UNIX. Unix je ime proizvoda zaštićeno od strane Bell lab i AT&T korporacija. Linux je pokrenuo Finac, tada student Linus Torvalds. Linux izvorni kod, nadalje (source), može se slobodno naći na internetu i spada u open – source projekte. Znači taj software može biti slobodno distribuiran, mijenjan, dorađivan. Unix je multiuser multitasking operativni sistem visokih performansi i sigurnosti, ali nepristupačniji korisnicima. Za razliku od drugih operativnih sistema Unix je zamišljen i izveden tako da predstavlja skup kvalitetnih programa koji izvršavaju samo jednu stvar, ali je izvršavaju pouzdano i brzo i lako ih je kombinovati. Kombinovanje ovih kockica je jednostavno i veoma korisno iz razloga što programer često nema potrebe da piše gomilu programa, već samo da iskoristi gotove visoko izoptimizirane programe, i dovoljno je da napiše program koji njima upravlja i povezuje ih. Visoke performanse su rezultat velike iskorišćenosti hardware-a. Postoji više Unix proizvoda i to Solaris (Sun), IRIX (SGI), AIX (IBM), SCO UNIX, Linux, OSF (DEC), besplatna BSD familija (free, net, open)... UNIX-i postoje gotovo za sve platforme, od ručnih palm top, preko PC-a, Mac-ova, grafičkih radnih stanica, raznih malih servera do mane frame računara, što omogućuje lako prenošenje programa sa platforme na platformu bez ikakvih izmjena u izvornom kodu. Linux je klon Unix-a koji se besplatno može nabaviti i to u više distribucija (zbirki različitih autora). Linux je jedan od retkih sistema koji je doživeo veliki uspeh i popularnost kao alternativa skupim i nedovoljno stabilnim sistemima. Kod Linux-ovog jezgra (kernel) je dostupan (open source) i izdat pod opštom javnom licencom koja se označava kao GPL (General Public License). Naziv “Linux” se odnosi samo na kernel (core) operativnog sistema. Kernel predstavlja softver koji upravlja pristupom korisničkih programa hardverskim i softverskim resursima. Sami programi koji se koriste na linux sistemima su proizvod GNU (GNU is Not Unix) i drugih nezavisnih open source projekata. Zajedno sa Linux kernelom ti programi čine GNU/Linux operativni sistem. Postojanje više različitih kolekcija Linux kernela i programskih alata (najčešće GNU) rezultovalo je nastankom velikog broja različitih operativnih sistema koji se nazivaju GNU/Linux Distribucije. Primjeri Linux distribucija su: Red Hat Linux, SuSE, Mandrake, Debian GNU/Linux, Knoppix, Slackware itd... Sve ove distribucije su više – manje slične, a zajedničko im je to da sve imaju Linux kernel i različite skupove Linux programa. Neke distribucije imaju akcenat na grafičkom okruženju, druge na boljoj konfiguracionoj strukturi, treći na alatima koji su uključeni u samu distribuciju.. GNU/Linux je multitasking, višekorisnički 32-bitni operativni sistem, prvobitno zamišljen samo za Intel x86 arhitekturu. Iskoristivši besplatno dostupan izvorni kod, veliki broj programera odlučio je da prilagodi Linux i ostalim arhitekturama. Sada Linux radi na Motorolinim 68x00 procesorima, PowerPC i DEC Alpha procesorima i Sun-ovim Sparc procesorima. Razlikuju se stabilne i razvojne verzije Linux kernela. Aktuelna stabilna verzija kernela je 2.6. Nova izdanja stabilnih verzija pojavljuju se zbog ispravljenih grešaka (bug-ova) ali glavni algoritam i struktura podataka ostaju nepromenjeni.

Page 112: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 109

Moderni operativni sistemi smanjuju direktnu interakciju sa hardverskim komponentama. Struktura Linux kernela je monolitna tj. jezgro je integrisano u jedinstven program koji se izvršava u kernel modu (slika). Međutim, mikrokernel arhitektura je osnov razvoja savremenih operativnih sistema, iako su takvi operativni sistemi generalno sporiji od monolitnih. S druge strane mikrokernel operativni sistemi zahtevaju vrlo mali skup funkcija od samog kernela što im daje određene prednosti nad monolitnim.

Grafički prikaz arhitektire Linux-a Da bi mu se smanjila veličina, bez degradacije performansi, kernel Linuxa se sastoji od modula. Modul je objektni fajl čiji kod može biti priključen kernelu u vreme izvršavanja (runtime). Izborom potrebnih modula korisnik utiče na veličinu Linux kernela. Modul, za razliku od eksternih objekata mikrokernel operativnih sistema, ne radi kao poseban proces već se izvršava u kernel modu, kao bilo koja druga statički vezana funkcija kernela. Kao posledica osobine otvorenosti GNU/Linux operativnih sistema, drajveri i softverski alati koji pružaju podršku novim tehnologijama i raznom hardveru su javno dostupni i brzo se razvijaju.

Naredbe Linux-a

• Osnove korišćenja Linux-a (Unix) U ovoj skripti su opisane samo osnove korišćenja komandi. Za više informacija koristite “man” komandu.

o Nalozi

Page 113: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 110

Unix je multiuser operativni sistem i prava korisnika se uređuju putem korisničkih naloga, pa stoga, da bi se išta radilo na Unix-u treba imati korisnički nalog. Postoje dvije opšte kategorije naloga obični i administratorski. Kroz obične naloge korisnik ima pristup samo resursima koji su mu dodijeljeni od strane administratora, dok administrator ima pristup svim resursima, što znači da može da čita svaku datoteku, koristi svaki hardverski uređaj, mijenja konfiguraciju sistema... Svaki korisnički nalog ima unikatni USERNAME i PASSWORD. USERNAME je ime pod kojim se korisnik loguje na sistem, a PASSWORD je tajna riječ koju bi trebalo samo korisnik da zna i koja mu služi da ostali ne mogu da se prijavljuju na sistem pod njegovim nalogom. PASSWORD treba da bude riječ koja se teško pogađa, mješavina slova, brojeva i dozvoljene interpunkcije, i trebala bi da bude periodično mijenjana, što češće, to bolje.

o Logovanje Početak rada počinje logovanjem na sistem (prijavljivanjem). To znači da u odgovarajuća mjesta na terminalu unesete svoje identifikacione podatke (username i password). Ako se logujete preko konzule, ona bi ekran za unos username-a i password-a bio nešto slično ovom:

login: Kada ukucate username i pritisnete <Enter>, onda će vam se pojaviti ''Password:'', i tada unesete password koji se neće vidjeti i takođe pritisnete <Enter>. Ako ste unijeli ispravno username i password, onda idete dalje i ubačeni ste na sistem, čime je logovanje završeno i nalazite se u svom login shell-u.

o Shell-ovi Da biste komunicirali sa operativnim sistemom potrebno je da postoji neki set definisanih komandi, definisano radno okruženje, a to u stvari omogućuju shell-ovi. Shell-su interfejsi između korisnika i operativnog sistema (koji dalje upravlja hardware-om). Shell se po logovanju pokreće i čeka korisnikove komande. Da bi korisnik znao da je shell spreman, shell izbacuje ’’prompt’’ na terminal. To je određeni niz simbola koji najčešće izgleda ovako: [user@comp ~]$ gdje user predstavlja username korisnika, a comp ime računara na kome radi. ~ obavještava da se nalazimo u ‘’home’’ direktorijumu. Svakom korisniku se dodjeljuje jedan direktorijum na file szstem-u, koji će biti samo njemu na raspolaganju i to je home direktorijum. Kada se korisnik uloguije na sistem, rad počinje baš u korisnikovom home direktorijumu.

o Pokretanje programa Program pokrečete jednostavnim ukucavanjem imena programa i pritiskom <Enter> dugmeta kada je shell spreman za primanje komandi. Na pr. komanda ‘’date’’ ispisuje sistemsko vrijeme i datum:

Page 114: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 111

[user@comp ~]$ date Fri Nov 17 16:06:05 CET 2000 [user@comp ~]$ U daljnjem tekstu nećemo ponavljati da na kraju unošenja imena komande ili programa treba pritisnuti <Enter>. Po završetku programa vraća se ponovo u shell i on čeka dalje naše komande. Navešćemo još jedan primjer, a to je komanda ‘’clear’’ koja briše ekran.

o On-line pomoć (man) Za svaku komandu postoji help i ona se dobija komandom ‘’man’’ koja se koristi ovako: Man [# poglavlja] [druge opcije] <ime komande> Za opis sintakse ćemo koristiti Bakusovu notaciju koja se tumači ovako: Sve što je između karaktera [ i ] je neobavezno a | b označava ili a ili b sve između < i > je obavezan parametar sve bez <>, [ ] je ime komande. Znači, da bismo otkucali otkucali help za komandu ‘’date’’ kucamo ‘’man date’’ Iz man-a se izlazi pritiskom na slovo ‘’q’’. Man-om se ide gore – dolje po stranici sa PageUp/PageDown tasterima na tastaturi, dolje po stranu sa <space> tasterom, ili gore – dolje po red, kursorskim tasterima.

• Osnovne naredbe Linux-a

• pwd – informacija o tekućem direktorijumu • cd adresa.direktorijuma – promjena tekućeg direkt. • ls [-a l R] – prikaz sadržaja direktorijuma *d, b, c, l, s, p, - rwx rwx rwx broj vlasnik grupa veličina datum ime

mkdir – kreiranje dir. • rmdir – brisanje praznih dir. • find - pronalaženje fajlova ili dir. • df – prikazuje atribute svih fajl sistema • file – određuje “prirodu” fajla • chmod, chgrp, chown – promjene prava, gr. i vlasn. • umask – definisanje “default” prava vlasnika 777-br

• login - logovanje • telnet ime.hosta – terminalsko povezivanje na host • passwd username – promjena šifre • exit - odjavljivanje • which naredba – određivanje lokacije naredbe

Page 115: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 112

• man naredba –sadržaj UNIX-ovog priručnika o toj naredbi • touch ime.fajla – enja vrijeme pristupa ili ga kreira • rm ime.fajla – brisanje • mv – premještranje ili promjena imena • cp - kopiranje • cat – prikaz sadržaja ili kreiranje • ln – kreiranje linka (-s soft link) • more - prikaz sadržaja ekran po ekran

• vi ime.fajla - editor • grep – pretraživanje fajlova • lp – štampanje fajlova • lpstat – prikaz statusa štampača • cancel – otkazivanje štampe koja je na čekanju • compress ime.fajla– kompresija fajlova • uncompres ime.fajla– raspakivanje fajlova • cpio – kopiranje sa i na uređaje za arhiviranje • date – prikaz i podešavanje datuma i vremena • env – prikaz tekućeg okruženja • stty- prikaz statusa terminala • uname – informacije o operativnom sistemu • vmstat – informacije o procesima, memoriji, CPU, ...

Džoker znaci

* - zamenjuje svaki string (i prazan) ? - zamenjuje svaki karakter [...] - zamenjuje svaki od karaktera u zagradama (može se pisati i [a-d],

što znači "a,b,c, ili d") [^...] - zamenjuje svaki znak osim karaktera u zagradama (može se pisati i

[^a-d], što znači "sve osim a,b,c, ili d") Zaštita fajlova i direktorijuma: Prava: - čitanja (r), - upisivanja ili mijenjanja (w) i - izvršavanja ili prolaska kroz direktorijum (x) Korisnici se svrstavaju u tri kategorije: - vlasnik fajla ili direktorijuma (u), - grupa kojoj fajl pripada (g) i - svi ostali (o). % ls -al total 72676 drwx--x--- 11 pera user 1024 Aug 24 15:12 .

Page 116: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 113

drwxr-xr-x 18 root sys 512 Aug 23 20:12 .. -r-------- 1 pera user 15 Aug 22 19:11 .rhosts -rw------- 1 pera user 44 Aug 22 19:11 .Sgiresources -rw------- 1 pera user 0 Aug 22 19:11 .Xauthority drwxr-xr-x 5 pera user 512 Aug 22 19:11 .desktop-Afrodita -------rw- 1 pera user 80 Aug 22 19:11 x.c Promjena prava pristupa:

chmod grupe promena prava Gde su:

grupe - "u" za vlasnika, "g" za grupu, "o" za ostale, "a" za sve (uključujući i vlasnika i grupu)

promjena - "+" dodaje pravo, "-" oduzima pravo, "=" dodeljuje pravo

prava - "r" za čitanje, "w" za upis/menjanje, "x" za izvršavanje ili prolaz (u slučaju direktorijuma)

% chmod ug+w dat - vlasniku i grupi se dozvoljava modifikacija datoteke "dat" i zadržavaju se ostala prava

% chmod u=r dat - vlasniku se dozvoljava samo čitanje datoteke "dat" dok se ostalima ukidaju sva prava

Postavljanje podrazumijevanih prava vlasnika umask maska – gdje su podrazumijevana prava = 777 – maska (dirktorijum) 666 – maska (fajlov) VI EDITOR Vi (visual)je standardni ekranski editor na UNIX-u (Linux-u). Sintaksa njegovog pozivanja je: % vi [opcije] imefajla

-r - oporavak u slučaju nasilnog prekida poslednje sesije sa "vi" -wn - n je vroj redova teksta na ekranu +R - "read-only"

"Vi" editor radi u tekst modu i komandnom modu. U komandnom modu se otkucani znaci interpretiraju kao komande, dok se u u tekst modu one unose u editovani tekst. Pomoću <Esc> tastera prelazi se iz tekst moda u komandni. Komande za pomjeranje kursora:

<left>, "h", ili <Backspace> - kursor ulevo <right>, "l," ili <Space> - kursor udesno <down>, "j", ili <Enter> - kursor naniže <up>, "k", ili "-" - kursor naviše

Page 117: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 114

"w" - kursor na prvo slovo sledeće reči "e" - kursor na poslednje slovo sledeće reči "b" - kursor na početno slovo prethodne reči "(" - početak tekuće rečenice ")" - početak sledeće rečenice "{" - početak tekućeg paragrafa "}" - početak sledećeg paragrafa "G" - pomeranje na poslednji red datoteke, ukoliko je

otkucano nG, na n-ti red. Npr. 1G za odlazak na početak datoteke

"0" - početak reda "^" - prvi znak reda koji nije belina "$" - poslednji znak reda "f"x - udesno do znaka x "F"x - ulevo do znaka x "t"x - udesno do znaka pre x "T"x - ulevo do znaka iza x ";" - ponavlja "f", "F", "t", "T" u istom smeru "," - ponavlja "f", "F", "t", "T" u suprotnom smeru "H" - početak prvog reda ekrana "M" - početak srednjeg reda ekrana "L" - početak poslednjeg reda ekrana <Ctrl-F> - sledeći ekran <Ctrl-D> - pola ekrana unapred <Ctrl-B> - prethodni ekran <Ctrl-U> - pola ekrana unazad

Pretraživanje: "/"izraz - nalaženje prve sledeće pojave regularnog izraza

Dodavanje i promjena teksta: Sledećim naredbama (osim naredbe "r") se prelazi u tekst mod. Iz tekst moda se izlazi pomoću <Esc> tastera.

"a" - dodavanje iza kursora "A" - dodavanje na kraju reda "i" - dodavanje ispod kursora "I" - dodavanje na početku reda (posle svih "belih" znakova) "o" - u novom redu koji se umeće ispod trenutno aktivnog reda "O" - u novom redu koji se umeće iznad trenutno aktivnog reda "R" - zamenjuje stari tekst novim, znak po znak (tzv. "Replace mode")

Uklanjanje teksta i kopiranje teksta u bafer: "x" - uklanja znak ispod kursora "X" - uklanja znak levo od kursora "d"x - uklanja tekst od tekuće pozicije do pozicije x.

x označava naredbu pozicioniranja i može biti npr: "d" (tekuća linija),

Page 118: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 115

"{" (do početak paragrafa), "G" (do kraja datoteke), "$" (do kraja reda) ili "`b" (do markera "b")

"D" - uklanja tekst od kursora do kraja reda (skraćenica za naredbu "d$") "y"x - kopira tekst u bafer od tekuće pozicije do pozicije x.

x označava naredbu pozicioniranja i može biti npr: "y" (tekuća linija), "}" (do kraja paragrafa), "0" (do kraja reda) ili "`a" (do markera "a")

"Y" - kopira tekst tekućeg reda u bafer Pomjeranje teksta:

"p" - premešta prethodno smešteni tekst u bafer (jednom od naredbi: d, D, x, X, y, Y) u red ispod tekućeg ili desno od kursora (ako je samo deo reda uklonjen)

"P" - premešta prethodno smešteni tekst u bafer (jednom od naredbi: d, D, x, X, y, Y) u red ispod tekućeg ili levo od kursora (ako je samo deo reda uklonjen)

Završetak rada (izlaz iz editora):

"ZZ" - snimanje i izlazak Takođe je moguće završiti sa radom i iz "ex" dela "vi" editora (u koji se prelazi sa :):

":w" - snimanje ":q" - izlazak (ukoliko tekst nije snimljen,

ispisuje se upozorenje (znak ?),kada se može ponoviti "q" ili izvesti snimanje sa "w"

":q!" - izlaz u kome se poništavaju izmene (ako su bile) ":x" ili ":wq" - snimanje i izlazak

Korišćenje "shell script"-a: "Shell" može startovati naredbe navedene u fajlu, to su takozvani "shell script"-ovi. Da bi fajl bio "shell script" mora da: - ima dozvolu za izvršavanje i - da je pisana u jeziku tog "shell-a" (npr "sh", "csh", "tcsh") Dakle procedura za kreiranje "shell script"-e proc je:

% vi proc - pravljenje script-a u editoru "vi"

% chmod u+x proc - dodeljuje pravo izvršavanja "proc" vlasniku % proc - startovanje proc

Linkovanje fajlova Linkovanje je u stvari dodeljivanje više imena istom fajlu, odnosno pristupa iz više direktorijuma. Dobija se ušteda prostora i obezeđena je jedinstvenost sadržaja fajlova. Postoje "hard link"-ovi i "soft link"-ovi (simbolički linkovi). - U slučaju "hard link"-a, fajlu se pridružuje drugo ime (unutar istog "file" sistema). Fajl se fizički briše kad se obriše poslednji "hard link" na njega (oni se “broje”).

Page 119: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 116

- Simbolički linkovi su fleksibilniji i omogućuju da postoji samo ukaz na drugo simboličko ime, te ukazana datoteka fizički ne mora da postoji (kao shortcut). Brisanje simboličkog linka ne utiče na fajl već se samo briše "ukaz" iz direktorijuma. Takođe je simboličkim linkom moguće vršiti ukaz i na datoteku u drugom "file" sistemu za razliku od "hard link"-a koji to ne omogućuje. Primjeri:

% ln dat1 dir\dat2 - "dat1" je postojeći fajl i na nju se linkuje (povezuje) "dat2" u direktorijumu "dir"

% ln -s f1 f2 - simboličko linkovanje za fajl "f1" u fajl "f2" Pristup i mountovanje file sistema: mount -t iso9660 /dev/cdrom /mnt/cdrom - mountovanje cdrom-a i imenovanje imenom cdrom pod /mount direktorijem mount -t msdos /dev/hdd /mnt/ddrive -mountovanje hard diska d kao msdos file i imenovanje imenom ddrive pod /mnt direktorijem. mount -t vfat /dev/hda1 /mnt/cdrive -mountovanje hard diska kao VFAT file sistem i imenovanje imenom cdrive pod /mnt direktorijem. umount /mnt/cdrom -demountovanje cdrom-a eject -demountovanje i vadjenje cdrom-a Formatiranje i korišćenje diskete: - fdformat /dev/fd0h1440 -formatiranje standardne diskete od 1,44 MB - mkfs -t ext3 /dev/fd0h1440 -kreiranje fajl sistema na formatiranoj disketi (Linux FS) - mount /dev/fd0h1440 /mnt/floppy -formatiranje standardne diskete od 1,44 MB /etc/fstab - fajl koji sadrži podatke o automatskom mountovanju Prostor na diskovima Izveštaj o slobodnom prostoru na diskovima sistema (tako da se vrednosti dobijaju u kilobajtima) i o broju slobodnih i-node-a (svaki fajl zauzima jedan i-node ) dobija se sa: % df -k Izveštaj o prostoru zauzetom u podstablu direktorijuma

% du - za tekući direktorijum

% du /tmp - za direktorijum "/tmp" % du bin - za poddirektorijum "bin"

Promjena korisničkog ID-a

Page 120: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 117

su username – promjena korisničkog naloga, ako je samo su - – super-user nalog Kreiranje i brisanje korisničkih naloga adduser – pokretanje procedure za kreiranje novog naloga (može samo root) /etc/passwd - može svak da ga čita i ne sadrži password-e(x), već username, ID, grupni ID, finger informacije, home direktorijum i pripadajući shell /etc/shadow - može samo root da mu pristupi i sadrži kriptovane password-e /etc/group - spisak grup-a i pripadnost njima userdel [-r] username – brisanje korsničkog naloga [i njegovih fajlova] (može samo root) Kreiranje i brisanje korisničkih grupa groupadd groupname – kreuranje korisničke grupe groupname (može samo root) /etc/group - spisak grupa i pripadnost njima /etc/gshadow - bezbjedonosne informacije o grupama groupdel groupname – brisanje prazne grupe groupname (može samo root) Promjena vlasništva nad fajlovima - chown [-R] novi_vlasnik:nova_grupa fajl – promjena vlasništva i grupe nad fajlovima Promjena grupe nad fajlovima - chgrp [-R] nova_grupa fajl – promjena vlasništva i grupe nad fajlovima SAMO root (superuser) može mijenjati vlasništvo i grupe Komprimovanje fajlova - gzip [-r] ime_fajla - komprimovanje fajla pomoću gzip-a - gunzip ime_fajla.gz - dekomprimovanje fajla pomoću gzip-a - bzip2 [-r] ime_fajla - komprimovanje fajla pomoću bzip2-a - bunzip2 ime_fajla.bz2 - dekomprimovanje fajla pomoću bzip2-a - zip [-r] ime_zip_fajla.zip ime_fajla - komprimovanje fajla pomoću zip-a - unzip ime_zip_fajla.zip - dekomprimovanje fajla pomoću unzip-a Arhiviranje fajlova - tar [-cvf] ime_arhive ime_fajla - arhiviranje fajla pomoću tar-a - tar [-xvf] ime_arhive - dearhiviranje fajla pomoću tar-a Procesi: 1. Interaktivni – procesi koji se odvijaju uz aktivno učešće korisnika 2. Batch – procesi pokrenuti od strane neke skripte ili batch procedure 3. Daemon – sistemski procesi koji se mogu i sami startovati (cron) Proces init ima PID 1 i on je “otac” svih procesa

Page 121: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 118

Provjera statusa procesa: % ps st30@PCBozo:~$ ps PID TTY TIME CMD 594 pts/1 00:00:00 bash 633 pts/1 00:00:00 ps Značenja pojedinih podataka su:

PID - identifikacija procesa

TTY - dodeljeni terminal TIME - vreme posvećeno procesu od kad je kucano ps CMD - naredba koja je startovala proces

Opcija ps -e daje informacije o svim procesima, a ne samo o onim koji su dodijeljeni korisniku. Korisnik može pokrenuti više procesa. Oni mogu biti: - "foreground" (interaktivni) ili - "background" (u pozadini). "Foreground" procesi, nažalost, nemaju viši prioritet od "background" proces. Korišćenje pozadinskih procesa:

% komanda & - startovanje procesa (programa "komanda") u "background"-u

<Ctrl+Z> - "suspend" interaktivnog (tj. "foreground") procesa % bg - "resume" suspendovanog procesa i prebacivanje u

"background" % fg - "resume" suspendovanog procesa i prebacivanje u

"foreground"

Prekidanje ("ubijanje") procesa, i slanje signala: % kill 712 - šalje SIGTERM signal procesu sa PID-om 712, što obično

uzrokuje njegovim prevremenim završetkom ako ne hvata ili ignoriše taj signal

% kill -9 712 - šalje SIGKILL signal procesu sa PID-om 712 što uvek uzrokuje njegovim prevremenim završetkom jer se ovaj signal ne može uhvatiti ili ignorisati

% killall ime Dierktorijum /etc/rc.d Fajlovi za inicijalizaciju sistema nalaze se u ovom direktorijumu. Postoje:

- sistem startup fajlovi, - runlevels fajlovi, - fajlovi za inicijalizaciju mreže i - fajlovi za System V kompatibilnost.

Page 122: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 119

- Startup fajlovi Prvi je fajl init i on čita fajle /etc/inittab. Takođe startuje skriptu /etc/rc.d/rc.S koja uključuje virtualnu memoriju, mountuje fajl sisteme, inicijalizuje PNP uređaje, učitava module kernela, konfiguriše PCMCIA uređaje, postavlja serijske portove, čisti log direktorijume, ... Postoji još skripti koje rc.S poziva da bi se završio startup proces:

- rc.modules (učitava kernel module, rc.netdevice) - rc.pcmcia (konfiguriše PCMCIA uređaje – posebno za laptop-ove) - rc.serial (konfiguriše serijskie portove) - rc.sysvinit (System V init skriptaa)

- Runlevels fajlovi Runlevels je nivo na kojem želite da vam računar radi (singleuser, multiuser, bez mreže, bez X windows-a, ...):

- rc.0 (zaustavljanje sistema – runlevel 0) - rc.4 (multiuser startup sa KDM, GDM ili XDM loginom) - rc.6 (reboot sistema) - rc.K (singleuser startup) - rc.M (multiuser –default- startup sa standardnim tekst loginom)

- Fajlovi za inicijalizaciju mreže Runlevels 2, 3 i 4 startuju mrežne servise. Fajlovi odgovorni za inicializaciju mreže su:

- rc.inet1 (kreira se pomoću netconfig-a i sadrži konfiguraciju aktuelnog mrežnog interfejsa)

- rc.inet2 (odradi se nakon rc.inet1 i postavi osnovne mrežne servise) - rc.httpd (startuje Apache web server) - rc.samba (startuje samba server )

Ostali konfiguracioni fajlovi: - rc.cdrom (ako je uključen, skenira CDROM i mount-uje ga ako nadje disk) - rc.gpm (omogućava copy/paste pomoću miša sa konzole) - rc.font (učitava korisnički-podešene ekranske fontove za konzolu) - rc.local (sadrži specifične startup komande koje administrator želi; po default-

u je prazan ) GENERALNO: uključenje skripti se vrši tako što ime se dodijeli pravo izvršavanja sa naredbom chmod, i obrnuto. Manuelno uključenje/isključenje se vrši naredbom - rc.ime start/stop Izbor kernel-a Kernel (jezgro) sadrži podršku za pripadajući hardver, tako da je njegov izbor veoma važan. Slackware podržava oko 60-tak vrsta kernela-a. Može se koristiti neko od postojećih kernel-a ili se može kreirati vlastiti popravkom source-a te njegovim kompajliranjem. U svakom slučaju kernel mora potpuno podržavati vaš hardver. Postojeći kompajlirani kerneli se nalaze na CDROM-u Slackware-a u /kernels ili na Slackware sajtu. Svaki poddirektorijum ima naziv odgovarajućeg kernela i sadrži:

o System.map - system map fajl za taj kernel o bzImage (ili zImage) - image tog kernela o config - konfiguracioni sorce fajl tog kernela

Da bi koristili novi kernel treba: o kopirati System.map (i raspakovati) i config u /boot

Page 123: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 120

o kopirati bzImage u /boot/vmlinuz o startovati /sbin/lilo za instalaciju LILO-a za novi kernel o restartovati računar

Konfigurisanje mreže o ifconfig - pregled mrežne konfiguracije o netconfig - mrežna konfiguracija o pppsetup - dialup konfiguracija

Konfiguracioni /etc fajlovi

- /etc/inetd.conf - konfiguracioni fajl za inetd. On određuje koji će servisi biti dostupni na tom računaru. To se radi prostim uklanjanjem ili postavljanjem komentara (#) ispred linije u konfiguracionom fajlu i restartovanjem inetd-a.

- /etc/resolv.conf – za pronalaženje DNS servera. - /etc/hosts – za lokalno razrešavanje domenskih imena. - /etc/hosts.allow /etc/hosts.deny – zabrana ili dozvola određenim hostovima pristup.

Page 124: skripta- - os.ucg.ac.me · PDF fileNa dnu se nalazi hardver, koji se obično sastoji od 2 ili više nivoa. Najniži nivo sadrži fizičke uređaje koji se sastoje od

Operativni sistemi ______________________________________________________________________________

_____________________________________________________________________________________________________________ 121

LITERATURA [1] M. Hajduković - Operativni sistemi (problemi i struktura), elektronsko izdanje, Novi Sad, 2003. [2] A. S. TANENBAUM: Modern operating systems, Upper Saddle River, NJ: Prentice Hall, 2001. [3] W. STALLINGS: Operating systems, Upper Saddle River, NJ: Prentice Hall, 2000. [4] G. Nutt: Operating systems, Addison Wesley Longman Inc, 2000. [5] A. Silberschatz, P. Galvin, G Gagne: Operating systems concepts, John Wiley&Sons, 2003. [6] B. Ha, T Nguyen: Slackware Linux Unleashed, SAMS, 1999.