UVOD
Od samog početka nastanka najveće svjedske računarske mreže INTERNETA, većina spojenih računala su podržavala operativni sistem UNIX, komunikacija se odvijala preko skupa TCP/IP. Tako je ostalo i do danas. Najpopularnije mrežne usluge kao što su E-mail, razgovori preko mreže i prjenos podataka s jednog računara na druga (ftp) su sastavni dio UNIX i isporučuje se kao gotovi softveri na svim UNIX računarima. Sjetite se već skoro zaboravljenih velikih računara na kojima smo donedavno radili preko glupih terminala. Unix je vrlo moćan operativni sistem, no katkad se čini teškim za nove korisnike. Ovdje ćemo se upoznati sa nekoliko osnovnih naredbi i okružija u kojem radi UNIX.
Danas su u upotrebi razne vrste Unixa, koje su proizvele velike kompanije, pa su tako u uptrebi SunOs, SCO Unix, HP/UX, IBM – ov AIX, Digital Ultrix, i ostali.
Kernel
Kernel je dio sistema koji se izvršava u zaštićenom (protected) modu hardvera i koji posreduje između korisničkih programa i hardvera. Kernel pruža osnovne funkcije sistema; on kreira, izvršava i upravlja procesima, pruža pristup fajl sistemu i mrežnim protokolima i dr. Ove funkcije se nazivaju sistemski pozivi (system calls) i korisniku su dostupne kroz biblioteku rutina koje može pozivati iz svojih programa. Sistemski pozivi su jedini način na koji procesi mogu da pristupe ovim servisima. Govoreći tradicionalnom terminologijom operativnih sistema, kernel je malo jezgro softvera koje pruža minimalne servise koji su neophodni za implementiranje dodatnih servisa operativnog sistema. U savremenim istraživačkim operativnim sistemima kao što su Chorus, Mach, Tunis i V Kernel, servisi kao što su fajl sistemi, mrežni protokoli i dr. potpuno su izdvojeni iz kernela. No, UNIX kernel je od samog početka bio monolitni, tj. nije bio podeljen u više procesa. Ovakva struktura kernela je odabrana zbog jednostavnosti i performansi. Najveći deo kernela implementira sistemske servise kojima aplikacije pristupaju kroz sistemske pozive. U 4.4BSD (pa tako i u FreeBSD) on obuhvata:
- osnovne servise kernela: manipulisanje tajmerom i sistemskim satovima, deskriptorima i procesima
- upravljanje memorijom: straničenje (paging) i zamena stranica (swapping)
- opšti sistemski interfejsi: I/O, kontrola deskriptora
- fajl sistem: upravljanje fajlovima, direktorijumima, prevođenje putanja fajlova
- manipulisanje terminalima: interfejs terminala i discipline za procesovanje karaktera
- među-procesna komunikacija: pipe i socket
- mrežna komunikacija: komunikacioni protokoli, routing Većina ovih servisa su nezavisni od mašine i mogu se portovati na druge arhitekture. Delovi kernela koji su zavisni od konkretne mašine su izolovani od ovih delova. To su:
- startovanje sistema
- manipulisanje zamkama (trap handling) i greškama (fault handling)
- manipulisanje radnog konteksa procesa (run-time context) procesa
- konfigurisanje i inicijalizovanje hadrverskih uređaja
- radna podrška za ulazno/izlazne (I/O) uređaje Granica između programa koji se izvršavaju u kernel-modu i korisničkom modu se ostvaruje pomoću hardverske podrške ovim servisima. Kernel se izvršava u adresnom prostoru koji je nedostupan korisničkim programima. Privilegovane operacije, kao što su pokretanje ulazno/izlazne operacije ili upravljanje procesorom (CPU) dostupne su samo kernelu. Sistemske pozive koriste korisnički programi (aplikacije) kako bi pristupili ovim operacijama. Sistemski poziv se izvršava sinhronizovano sa aplikacijom koja ga je pozvala; program se ne izvršava dok kernel izvršava akciju koju mu nalaze sistemski poziv. Ukoliko izvršavanje sistemskog pozva traje dugo (npr. upisivanje podataka na disk), izvršavanje aplikacije se može nastaviti i pre nego što se sistemski poziv završi (podaci će biti snimljeni u bafer, pa kasnije snimljeni na disk).
Postoje tri vrste ulaza u kernel: hardverski interapt, hardverska zamka (trap) i softverska zamka (softwer-initiated trap). Hardverske interapte stvaraju spoljni događaji, kao što je ulazno/izlazni uređaj ili sat koji prijavljuje prolazak vremena. Hardverski interapti se javljaju asinhronizovano i nisu vezani za proces koji se
trenutno izvršava. Za manipulisanje hardverskim interaptom odgovoran je odgovarajući device-driver interupt handler u kernelu. Hardverska zamka je vezana za proces koji se trenutno izvršava i može biti ili sinhronizovana ili asinhronizovana. Javljaju se usled neke greške kao npr. deljenje nulom. Proces sazna za grešku ili tako što primi signal, ili tako što bude ugašen. Softverske zamke se koriste da zakažu što skorije izvršavanje nekih događaja (mrežna komunikacija, vremensko planiranje izvršavanja...) i javljaju se sinhronizovano. Za softverske i hardverske zamke odgovoran je deo kernela pod imenom trap handler. Sistemski pozivi su specijalni slučaj softverske zamke i za njih je odgovoran deo kernela pod imenom syscall handler. Nakon izvršavanja sistemskog poziva programu se šalje informacija o tome da li je sistemski poziv uspešno izvršen i identifikator greške ukoliko se javila, posle čega kernel odlučuje koji proces će nastaviti da izvršava.
Svaka aplikacija ima svoj sopstveni adresni prostor koji se razlikuje od adresnog prostora kernela. Kernel određuje koje će procese kada da izvršava, prekine sa izvršavanjem ili suspenduje radi izvršavanja drugog procesa.
Manipulisanje memorijom
Centralni dio operativnog sistema zauzima sistem za manipulisanje memorijom (memory management system). On je zadužen za kontrolisanje memorijskih resursa koji su dostupni mašini. Primarna (glavna) memorija je RAM memorija računara, a sekundarna je svaki drugi medijum za čuvanje podataka (hard disk, cdrom...). Svaki program ima svoj privatni adresni prostor. On se sastoji iz data, text i stack segmenata. Data segment sadrži inicijalizovane i neinicijalizovane podatke programa. Text segment sadrži mašinske instrukcije i dele ga svi procesi koji izvršavaju taj fajl, dok su data i stack segmenti privatni za svaki proces. U stack segmentu se nalazi run-time stack programa i njega kernel automatski proširuje dok se program izvršava. Data segment može biti proširen ili skupljen pozivanjem sistemskog poziva, dok veličina i sadržaj text segmenta mogu jedino biti promenjeni prilikom pozivanja sistemskog poziva execve, kada se postojeća memorijska slika prepisuje nekom drugom i stvara se novi proces. Prilikom započinjanja izvršavanja nekog programa, kernel prvo učita text segment programa na početak adresnog prostora. Posle toga kernel mapira inicijalizovane podatke data segmenta i nulira ostatak adresnog prostora (koji je veličine neinicijalizovanih podataka i stack-a). Iako to nuliranje nije neophodno (čak je i suvišno jer usporava učitavanje programa) rani UNIX sistemi su to ostavili u nasleđe (mnogi programi računaju na to da je početna vrednost promenljive nula). Kopiranje celog text segmenta i inicijalizovanih podataka u memoriju mnogo usporava proces inicijalizovanja programa. 4.4BSD ovo izbegava korišćenjem straničenja na zahtev (demand paging) koje obezbeđuje da se program učitava u malim delovima - stranicama prvi put kada one postanu potrebne. Adresni prostor se deli na stranice jednakih veličina, a kernel vodi računa o adresama stranica koje su učitane. Kada program pokuša da pristupi stranici koja nije učitana javi se page-fault trap u kernelu, page-fault trap handler učita dotičnu stranicu i program nastavlja sa izvršavanjem. Ovako se u memoriju učitavaju samo delovi programa koji se koriste. Usled primene multiprogramiranja neophodno je da operativni sistem efektivno deli memorijske resurse među procesima. Ceo adresni prostor procesa ne mora u svakom trenutku biti prisutan u primarnoj memoriji da bi se proces izvršavao. Ukoliko su memorijski resursi sistema niski, kernel sprovodi neki od mehanizama za oslobađanje resursa. Kernel može izbaciti stranice koje nisu dugo bile upotrebljivane (paging), ili može ceo kontekst procesa prebaciti u sekundarnu memoriju (swapping). Straničenje na zahtev i zamena stranica su transparentni za procese, ali procesi mogu pružiti sistemu informacije o budućim memorijskim zahtevima, radi poboljšanja performansi. Dobra strana memory management-a je to što se omogućava da postoji više procesa nego što može da se smesti u primarnu memoriju, a loša je ta što se izvršavanje procesa usporava. Sistem mora da se pobrine da minimizuje trashing. To je pojava kada sistem više vremena troši da izvrši zamenu stranica, nego što troši na korišćenje tih stranica. Sistem detektuje trashing tako što posmatra količinu slobodne memorije. Ukoliko postoji mali broj slobodnih stranica, a veliki je broj zahteva za alociranje memorije, sistem blokira izvršavanje određenog broja procesa koji zauzimaju dosta resursa i prebacuje ih u sekundarnu memoriju. Kada zagušenje prođe, blokirani procesi se vraćaju u glavnu memoriju i nastavljaju sa izvršavanjem.
Rad u Unix okruženju
Unix okružuje se po mnogo čemu razlikuje od uobičajnog PC okružija i radi s jednokorisnički sustavima, kod kojih je cjelo procerskog vreme na raspolaganju samo jednoj osobi, za razliku od Unix računara koja mogu istodobno posluživati više korisnika, a time pokrenuti i mnogo više procese. za pristup Unix računaru se koristi najčešće običan terminal, koji može biti spojen izravno na računalo, ili pc kao terminal. Ipak Unix je davno prestao raditi preko terminala. danas većina grafičkih radnih stanica s Unixom koriste X – windows okružije, koje omogučava otvaranje više prozora na jednom ekranu i upotrebu razih X – aplikacija.
Da biste mogli početi raditi na Unix računaru potrebno je da znate dije važne informacije, a to korisničko ime i lozinka. To ćete saznati tako da bitate sistem administratora, koji vas je upisao na računar, nakon što uzme vaše osobne podatke. Takvim pristupm se olakšava administracija i kontrola velikog broja korisnika koji osim vas tade na računaru. Nakon što ste napokon uneseni na računar, sistem rezervira samo za vaše potrebe samo određenu količinu prostora na disku. Taj prostor je naravno ograničen kvotom, koju postavlja sistem administratora i iznosi nekoliko megabajta . Ako radite nešto i nijevam dovoljno trenutnih 2 megabjta prostora (prim. diplomski rad), možete zahtjevati i dodatnu količinu prostora. Kvota je korisna kod ograničavanja ubrzanog punjenja diska nepotrebnim dadotekama, ali od vas zahteva da redovno kontrolišete svoje dadoteke i da ih brišete kad vam više netrebaju.
Na djelu diska koji vam je dodijeljen moći ćete spremati svoje dadoteke i pročitanu poštu. Taj prostor je zaštićen od upotrebe ostalih korisnika jer Uxix za razliku od DOS-a pruža mogučnost zaštite podataka, a to znači da niko nema pravo čitati vaše podatke niti pisati po vašem prostoru na disku, ukoliko vi to sami ne dozvolite.
Početak i završetak rada
Da biste mogli započeti rad u Unix okružiju, nakon povezivanja s računalom sijedi postupak provijere vašeg identiteta. Ako se sjećate podataka koja vam dao sistem administrator, vreme je da ih iskoristite. Kod pojave logina upišete korisničko ime i pritisnete tipku Enter, Sljedeći korak je upisivanje lozinke koja se ne ispisuje na ekranu. Primer:
Login: menso
Password:
Last login: Sun Aug 13:18:40 from .zsp.fesb.hr
Ako ste tačno upisali sve podatke, nakon pojave znaka javljanja operativnog sistema možete početi upisivati naredbe. Prije pojave promta na ekranu če se ispisati neke važnije obavjesti za rad na tom računaru, zatim verzija operativnog sistema Unix i vreme kada ste se posljednji put prijavili za rad.
Pogriješite li pri unosu korisničkog imena, ili lozinke dobičete obavijest da se niste uspjeli prijaviti. Ponovite postupak identifikacije i upišite tačne podatke.
Login:menso Password: login: incorrect login:
Jedna od najčešćih naredbi koje se koriste u svom radu je mijenjati lozinke. Lozinke se u Unix jednostavno mijenja naredbom psswd. Prvo morate ukucati staru lozinku. Ukoliko je ona dobra, procedura promjene lozinke se nastavnja unošenjem nove lozinke. Novu lozinku je potrebno utipkati dva puta da ne bi došlo do pogreške tokom ukucavanja, jer se lozinka ne vidi na zaslonu iz sigurnosnih razloga.
jagor>posswd
passwd: Chaging password for celik
Old password: New password:
Re-Enter new password:
Potrebno je što češće mijenjati lozinku na računaru. Na primer, na računarima u SRCU rok trajanja lozinke je 2 mijeseca od posljednje promjene. Nakon tog roka, nećete se više moći prijaviti za rad zbog isteka lozinke. Ipak, sistem vodi brigu o tome da vas upozori na vreme isteka lozinke. Sedam dana prije isteka roka trajanja lozinke nakon što se prijavite za ard, sistem će vas obavijestiti o broju dana do isteka trajanja lozinke. Ako niste nekoliko mijeseci radili na računaru, nemojte se iznenaditi ako se ne uspijete prijaviti za rad. Primerice, na SRCU se svim korisnicima koji se više od 6 mijeseci nisu prijavili za ard onemogućava pristup javnom računaru. U tom slučaju zatražite od sistema administratora da vam promijeni lozinku.