Uvod
Istorijat
- UNIX je operativni sistem opšte namene (i serveri i radne stanice) koji je svoj životni put započeo 1969. godine u Bell Labs. Grupa AT&T programera koja je najodgovornija za razvoj UNIX-a (tada se zvao UNICS, ili Uniplexed Operating and Computing System) su Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, i Joe Ossanna. Programski jezik C je konstruisan da bi se napisao UNIX.
- Danas je UNIX zajednički naziv za široku familiju operativnih sistema koji zadovoljavaju propisane standarde. Neka od UNIX izdanja su komercijalna, kao IBM AIX i HP-UX, dok neka izdanja karakteriše otvoreni kod, kao Linux i Free-BSD. Na slici je prikazan uprošćen dijagram razvoja UNIX-olikih sistema.
Distribucija
- Linux distribucija je skup biblioteka i raznorodnih softverskih alata izgrađenih oko Linux kernela. Većina distribucija sastoji se iz tzv. paketa, koji pored fajlova sadrže i međuzavisnosti sa drugim paketima. Većina tog softvera je otvorenog koda, pod GNU ili BSD licencom. Moderne distribucije poseduju i preko 30000 paketa! Neke od Linux distribucija su:
- Komercijalne - Red Hat Enterprise Linux (RHEL), Suse Linux Enterprise Server (SLES).
- Sa komercijalnom podrškom - Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical).
- Razvijene od strane zajednice - Debian, Gentoo, Arch, Slackware.
- Osnovne komponente svake distribucije su:
- User interface - počeo kao command-line interface (CLI) sistem; graphical user interface (GUI) – npr. Mac OS X Aqua, zatim Linux KDE i GNOME interfejsi
- kernel - samo jezgro OS-a (višekorisnički, multitasking, monolitni)
- shell - command line interpreter obezbeđuje komunikaciju korsinika sa OS-om. Neki od najrasprostranjenijih su:
- sh (Bourne shell)
- C shell (csh); TCSH (TENEX C shell)
- Korn shell (ksh); PDKSH (Public Domain Korn shell)
- bash (Bourne Again Shell)
- Z shell
Opšti pregled Linux sistema
Komponente OS-a
Linux je višekorisnički, višeprocesni operativni sistem sa potpunim skupom UNIX kompatibilnih alata, projektovan tako da poštuje relevantne POSIX standarde. Linux sistemi podržavaju tradicionalnu UNIX semantiku i potpuno implementiraju standardni UNIX mrežni model. Linux OS se satoji od:
- KERNELA,
- sistemskog softvera,
- korisničkih aplikacija,
- programskih prevodilaca i njihovih odgovarajućih biblioteka (GCC - GNU C Compiler i C biblioteka za Linux) i
- dokumentacije.
Svi programi, uključujući i sistemske, funkcionišu na nivou iznad kernela, što se naziva (1) korisnički režim rada, dok se sistemske aktivnosti poput pristupa hardveru obavljaju na nivou kernela, odnosno u (2) sistemskom režimu rada (supervisory mode).
Kernel je modularizovan (modularna monolitna arhitektura), odnosno uvedeni su izmenljivi drajverski moduli (loadable kernel modules), a standardizovan je i konfiguracioni interfejs.
Moduli kernela su delovi kernelskog koda koji može da se prevede, napuni u memoriju ili izbaci iz memorije nezavisno od ostatka kernela. Kernelski moduli implementiraju drajvere za hardverske uređaje, novi fajl sistem, mrežne protokole, itd. Moduli omogućavaju raznim programerima da napišu i distribuiraju drajvere koji ne moraju da prođu GPL licencu (karakterističan primer su video drajveri). Potrebni drajveri pune se u memoriju kao moduli kernela. Module Linux kernela čine tri komponente:
- upravljanje modulom - omogućava punjenje modula u kernelsku memoriju i komunikaciju modula sa ostatkom kernela, proveru da li je modul u memoriji i da li se koristi i izbacivanje modula iz memorije (pod uslovom da se modul ne koristi),
- registracija drajvera - omogućava modulu da objavi ostatku kernela da je novi drajver u memoriji i da je raspoloživ za korišćenje. Kernel održava dinamičku tabelu drajvera koji se pomoću posebnog seta programa mogu napuniti ili izbaciti iz memorije u svakom trenutku,
- rezolucija konflikata - mehanizam koji služi da spreči hardverske konflikte tako što omogućava drajveru da rezerviše hardverske resurse (IRQ, DMA1, ports) i time spreči druge drajvere ili autoprobe funkciju da ih koriste.
Komponente kernela
Komponente kernela su sledeće:
- upravljanje procesima - kreira procese i omogućava višeprocesni rad (multitasking)
- upravljanje memorijom - kontroliše dodeljivanje memorije i swap prostora procesima, kernelskim komponentama kao i bafersko keširanje
- upravljanje fajl sistemima (VFS, Virtual File System)
- apstrakcija mrežnih servisa
- podrška za hardverske uređaje, podrška za različite sisteme datoteka, podrška za TCP/IP…
Korisni linkovi