Po čemu se Linux razlikuje od UNIX-a i šta je OS sličan UNIX-u? Karakteristike operativnih sistema UNIX porodice.

Štaviše, svaki od njih može obavljati mnogo različitih računarskih procesa koji će koristiti resurse ovog konkretnog računara.

Druga kolosalna zasluga Unixa je njegova multiplatformska priroda. Jezgro sistema je dizajnirano na takav način da se lako može prilagoditi gotovo svakom mikroprocesoru.

Unix ima i druge karakteristične karakteristike:

  • korištenje jednostavnih tekstualnih datoteka za konfiguraciju i upravljanje sistemom;
  • rasprostranjena upotreba uslužnih programa koji se pokreću iz komandne linije;
  • interakcija sa korisnikom preko virtuelnog uređaja - terminala;
  • predstavljanje fizičkih i virtuelnih uređaja i nekih sredstava međuprocesne komunikacije u obliku datoteka;
  • korištenje cjevovoda iz nekoliko programa, od kojih svaki obavlja jedan zadatak.

Aplikacija

Trenutno se Unix sistemi distribuiraju uglavnom među serverima, a takođe i kao ugrađeni sistemi za različitu opremu, uključujući pametne telefone. Unix sistemi takođe dominiraju superkompjuterima, posebno Linux je instaliran na 100% od TOP500 superračunara.

Prve verzije Unixa bile su napisane na asemblerskom jeziku i nisu imale ugrađeni kompajler jezika visokog nivoa. Otprilike 1969. Ken Thompson, uz pomoć Dennisa Ritchieja, razvio je i implementirao B jezik (B), koji je bio pojednostavljena (za implementaciju na mini računarima) verzija BCPL jezika razvijena u jeziku. Bi, kao i BCPL, bio je interpretirani jezik. Objavljeno 1972 drugo izdanje Unix prepisan u B. Godine 1969-1973 na bazi Bi je razvijen kompajlirani jezik, nazvan C (C).

Podijeliti

Važan razlog za podjelu u Unixu bila je implementacija 1980. steka TCP/IP protokola. Prije toga, komunikacija mašina-mašina u Unixu bila je u povojima - najznačajniji metod komunikacije bio je UUCP (sredstvo za kopiranje datoteka sa jednog Unix sistema na drugi, koji je prvobitno radio preko telefonskih mreža koristeći modeme).

Predložena su dva programska interfejsa za mrežne aplikacije: Berkley utičnice i TLI interfejs transportnog sloja (Transport layer interface).

Interfejs Berkley sockets je razvijen na Univerzitetu Berkeley i koristio je stog TCP/IP protokola razvijen tamo. TLI je kreirao AT&T prema definiciji transportnog sloja OSI modela i prvi put se pojavio u System V verziji 3. Iako je ova verzija sadržavala TLI i streamove, izvorno nije implementirala TCP/IP ili druge mrežne protokole, ali su takve implementacije bile pružene od strane trećih lica..

Implementacija TCP/IP službeno je i definitivno uključena u osnovnu distribuciju System V verzije 4. Ovo je, zajedno sa drugim razmatranjima (uglavnom marketinškim), uzrokovalo konačno razgraničenje između dvije grane Unixa - BSD (Univerzitet Berkeley) i System V (komercijalna verzija kompanije AT&T). Nakon toga, mnoge kompanije, koje su licencirale System V od AT&T-a, razvile su sopstvene komercijalne verzije Unixa, kao što su AIX, CLIX, HP-UX, IRIX, Solaris.

Moderne implementacije Unixa generalno nisu čisti V ili BSD sistemi. Oni implementiraju karakteristike i iz System V i iz BSD-a.

Besplatni operativni sistemi slični Unixu

U ovom trenutku, GNU/Linux i članovi BSD porodice brzo preuzimaju tržište od komercijalnih Unix sistema i istovremeno se infiltriraju kako na desktop računare krajnjih korisnika tako i na mobilne i ugrađene sisteme.

Vlasnički sistemi

Od razdvajanja AT&T-a, zaštitni znak Unixa i prava na originalni izvorni kod su nekoliko puta mijenjali vlasnike, a posebno su dugo pripadali Novell-u.

Uticaj Unixa na evoluciju operativnih sistema

Unix sistemi su od velike istorijske važnosti jer su propagirali neke od danas popularnih operativnih sistema i softverskih koncepata i pristupa. Takođe, tokom razvoja Unix sistema nastao je C jezik.

Široko korišćen u sistemskom programiranju, jezik C, prvobitno kreiran za razvoj Unixa, nadmašio je Unix po popularnosti. C jezik je bio prvi "tolerantni" jezik koji nije pokušao da nametne programerski stil programeru. C je bio prvi jezik visokog nivoa koji je omogućio pristup svim karakteristikama procesora, kao što su reference, tabele, pomaci bitova, inkrementi, itd. standardna C biblioteka funkcionira kao gets i scanf. Rezultirale su mnoge zloglasne ranjivosti, poput one eksploatirane u poznatom Morrisovom crvu.

Rani programeri Unixa doprineli su uvođenju principa modularnog programiranja i ponovne upotrebe u inženjersku praksu.

Unix je omogućio upotrebu TCP/IP protokola na relativno jeftinim računarima, što je dovelo do brzog rasta Interneta. Ovo je zauzvrat doprinijelo brzom otkrivanju nekoliko velikih ranjivosti u Unix sigurnosti, arhitekturi i sistemskim uslužnim programima.

Vremenom su vodeći Unix programeri razvili kulturne norme za razvoj softvera koje su postale važne kao i sam Unix. ( )

Neki od najpoznatijih primjera OS-ova sličnih Unixu su macOS, Solaris, BSD i NeXTSTEP.

Društvena uloga u IT profesionalnoj zajednici i istorijska uloga

Originalni Unix je radio na velikim višekorisničkim računarima, koji su takođe nudili vlasničke operativne sisteme proizvođača hardvera, kao što je RSX-11 i njegov potomak VMS. Uprkos činjenici da prema brojnim mišljenjima [ čiji?] tadašnji Unix je imao nedostatke u odnosu na ove operativne sisteme (na primjer, nedostatak ozbiljnih motora baze podataka), bio je: a) jeftiniji, a ponekad i besplatan za akademske institucije; b) prenet je sa hardvera na hardver i razvijen u prenosivom C jeziku, koji je „odvojio“ razvoj softvera od specifičnog hardvera. Osim toga, pokazalo se da je korisničko iskustvo “odvezano” od opreme i proizvođača - osoba koja je radila sa Unixom na VAX-u lako je radila s njim na 68xxx, itd.

Proizvođači hardvera u to vrijeme često su bili hladni prema Unixu, smatrajući ga igračkom, i nudeći svoj vlasnički OS za ozbiljan rad – prvenstveno DBMS i poslovne aplikacije zasnovane na njima u komercijalnim strukturama. Poznati su komentari o ovome od strane DEC-a u vezi sa svojim VMS-om. Korporacije su to slušale, ali ne i akademsko okruženje, koje je imalo sve za sebe u Unixu, često nije zahtijevalo zvaničnu podršku proizvođača, upravljalo se samostalno i cijenilo je jeftinoću i prenosivost Unixa. Dakle, Unix je bio možda prvi operativni sistem koji se prenosi na drugačiji hardver.

Drugi veliki uspon Unixa bilo je uvođenje RISC procesora oko 1989. godine. I prije toga postojale su tzv. radne stanice su lični računari velike snage za jednog korisnika sa dovoljno memorije, hard diskom i dovoljno naprednim operativnim sistemom (multitasking, zaštita memorije) za rad sa ozbiljnim aplikacijama kao što su CAD. Među proizvođačima ovakvih mašina istakao se Sun Microsystems koji je na njima napravio ime.

Prije pojave RISC procesora, ove stanice su obično koristile Motorola 680x0 procesor, isti kao u Apple računarima (iako pod naprednijim operativnim sistemom od Appleovog). Oko 1989. godine na tržištu su se pojavile komercijalne implementacije procesora RISC arhitekture. Logična odluka brojnih kompanija (Sun i drugih) bila je da prenesu Unix na ove arhitekture, što je odmah dovelo do portiranja čitavog softverskog ekosistema Unixa.

Vlasnički ozbiljni operativni sistemi, kao što je VMS, počeli su da propadaju od tog trenutka (čak i da je bilo moguće preneti sam OS na RISC, sve je bilo mnogo komplikovanije sa aplikacijama za njega, koje su u ovim ekosistemima često razvijane na asembleru ili na vlasničkim jezicima ​​kao što je BLISS), a Unix je postao operativni sistem za najmoćnije računare na svetu.

Međutim, otprilike u to vrijeme, ekosistem je počeo da se kreće prema GUI-u u obliku Windowsa 3.0. Ogromne prednosti GUI-a, kao i, na primjer, objedinjena podrška za sve tipove štampača, cijenili su i programeri i korisnici. Ovo je u velikoj meri podrilo poziciju Unixa na PC tržištu - implementacije kao što su SCO i Interactive UNIX nisu mogle da se nose sa podrškom Windows aplikacija. Što se tiče GUI-ja za Unix, nazvanog X11 (postojale su i druge implementacije, mnogo manje popularne), on nije mogao u potpunosti da radi na računaru običnog korisnika zbog zahtjeva za memorijom – X11 je zahtijevao 16 MB za normalan rad, dok je Windows 3.1 sa dovoljnim performansama za pokrenite i Word i Excel istovremeno u 8 MB (to je bila standardna veličina memorije računara u to vrijeme). Uz visoke cijene memorije, ovo je bio ograničavajući faktor.

Uspjeh Windowsa dao je poticaj internom Microsoft projektu pod nazivom Windows NT, koji je bio kompatibilan sa Windows-om preko API-ja, ali je istovremeno imao sve iste arhitektonske karakteristike ozbiljnog OS-a kao Unix - multitasking, puna zaštita memorije, podrška za višeprocesor mašine, dozvole i direktorijumi datoteka, sistemski dnevnik. Windows NT je takođe predstavio sistem datoteka za dnevnik NTFS, koji je u to vreme premašio sve sisteme datoteka standardno isporučenih sa Unixom u pogledu mogućnosti - Unix analozi su bili samo odvojeni komercijalni proizvodi od Veritasa i drugih.

Iako Windows NT u početku nije bio popularan, zbog visokih zahtjeva za memorijom (istih 16 MB), omogućio je Microsoftu da uđe na tržište serverskih rješenja, kao što je DBMS. Mnogi u to vrijeme nisu vjerovali u sposobnost Microsofta, tradicionalno specijalizovanog za desktop softver, da bude igrač na tržištu softvera za preduzeća, koje je već imalo velika imena kao što su Oracle i Sun. Ovoj sumnji dodala je činjenica da je Microsoftov DBMS - SQL Server - započeo kao pojednostavljena verzija Sybase SQL Servera, licenciran od Sybasea i 99% kompatibilan u svim aspektima rada s njim.

U drugoj polovini 1990-ih, Microsoft je počeo da gura Unix i na tržište korporativnih servera.

Kombinacija gore navedenih faktora, kao i kolaps cijena 3D video kontrolera, koji su postali dom od profesionalne opreme, u suštini je ubio sam koncept radne stanice početkom 2000-ih.

Pored toga, Microsoft sistemima je lakše upravljati, posebno u tipičnim slučajevima upotrebe.

Ali u ovom trenutku, treći nagli uspon Unixa je počeo.

Osim toga, Stallman i njegovi drugovi bili su svjesni da vlasnički razvojni alati nisu prikladni za uspjeh ne-korporativnog softvera. Stoga su razvili skup kompajlera za različite programske jezike (gcc), koji su, zajedno sa GNU uslužnim programima razvijenim ranije (zamjenjujući standardne Unix uslužne programe), činili neophodan i prilično moćan softverski paket za programera.

FreeBSD je u to vrijeme bio ozbiljan konkurent Linuxu, međutim, "katedralni" stil upravljanja razvojem za razliku od "bazarskog" stila Linuxa, kao i mnogo više tehničkog arhaizma u pitanjima poput podrške za višeprocesorske mašine i izvršne datoteke formatima, uvelike je usporio razvoj FreeBSD-a u poređenju sa Linuxom, čineći ga vodećim u svijetu slobodnog softvera.

U budućnosti, Linux je dostizao sve više i više visina:

  • prenošenje ozbiljnih vlasničkih proizvoda kao što je Oracle;
  • IBM-ov ozbiljan interes za ovaj ekosistem kao osnovu za njegova vertikalna rješenja;
  • pojava analoga gotovo svih poznatih programa iz Windows svijeta;
  • odbijanje nekih proizvođača hardvera od obavezne predinstalacije Windowsa;
  • izdavanje netbooka samo sa Linuxom;
  • koristiti kao kernel u Androidu.

Trenutno je Linux zasluženo popularan OS za servere, iako mnogo manje popularan na desktop računarima.

Neke arhitektonske karakteristike Unix OS-a

Unix karakteristike koje razlikuju ovu porodicu od drugih operativnih sistema navedene su u nastavku.

  • Sistem datoteka je u obliku stabla, osjetljiv na velika i mala slova u imenima, vrlo slaba ograničenja na dužinu imena i putanje.
  • Ne postoji podrška za strukturirane datoteke od strane OS kernela; na nivou sistemskih poziva, datoteka je tok bajtova.
  • Komandna linija se nalazi u adresnom prostoru procesa koji se pokreće i ne preuzima se sistemskim pozivom iz procesa interpretatora komandi (kao što se dešava, na primjer, u RSX-11).
  • Koncept "promenljivih okruženja".
  • Pokretanje procesa pozivanjem fork(), odnosno mogućnost kloniranja trenutnog procesa sa svim stanjem.
  • Koncepti stdin/stdout/stderr.
  • I/O samo preko deskriptora datoteka.
  • Tradicionalno vrlo slaba podrška za asinhroni I/O u poređenju sa VMS-om i Windows NT-om.
  • Interpretator komandi je obična aplikacija koja komunicira sa jezgrom običnim sistemskim pozivima (u RSX-11 i VMS-u interpretator komandi je izveden kao posebna aplikacija, smeštena u memoriju na poseban način, koristeći posebne sistemske pozive, sistemski pozivi su bili takođe podržan, dozvoljavajući aplikaciji da pristupi svojim nadređenim komandama tumača).
  • Komanda komandne linije nije ništa drugo do ime programske datoteke, nije potrebna posebna registracija i poseban razvoj programa kao komandi (što je bila uobičajena praksa u RSX-11, RT-11).
  • Ne prihvata se pristup sa programom koji korisniku postavlja pitanja o njegovim načinima rada, već se koriste parametri komandne linije (u VMS, RSX-11, RT-11, programi su radili i sa komandnom linijom, ali u njenom odsustvu, bili su upitani da unesu parametre).
  • Imenski prostor uređaja na disku u direktoriju /dev kojim može upravljati administrator, za razliku od Windows pristupa, gdje se ovaj imenski prostor nalazi u memoriji kernela, a administracija ovog prostora imena (na primjer, postavljanje dozvola) je izuzetno teška zbog nedostatak trajne memorije na diskovima (koja se stvara svaki put kada pokrenete sistem).
  • Opsežna upotreba tekstualnih datoteka za skladištenje postavki, za razliku od baze podataka binarnih postavki, kao što je Windows.
  • Široko rasprostranjena upotreba uslužnih programa za obradu teksta za obavljanje svakodnevnih zadataka pod kontrolom skripti.
  • "Promocija" OS-a nakon učitavanja kernela izvršavanjem skripti sa standardnim interpretatorom komandi.
  • Široka upotreba

Istorija UNIX® počinje 1969. Većina modernih UNIX sistema su komercijalne verzije originalnih UNIX distribucija. Sunov Solaris, Hewlett-Packardov HP-UX, IBM-ov AIX® su najbolji predstavnici UNIX-a, koji također imaju svoje jedinstvene elemente i svoja temeljna rješenja. Na primjer, Sun Solaris je UNIX, ali također sadrži mnogo alata i ekstenzija dizajniranih posebno za Sun radne stanice i servere.

Linux® je razvijen u pokušaju da pruži besplatnu alternativu komercijalnim UNIX okruženjima. Njegova istorija seže do 1991. ili čak 1983. godine, kada je stvoren GNU projekat, čiji je prvobitni cilj bio da obezbedi besplatnu alternativu UNIX-u. Linux radi na mnogo više platformi, kao što je Intel®/AMD x86. Većina UNIX operativnih sistema može raditi samo na jednoj platformi.

Linux i UNIX imaju zajedničke istorijske korene, ali postoje i značajne razlike. Mnogi alati, uslužni programi i besplatne aplikacije koje dolaze standardno uz Linux su prvobitno zamišljene kao besplatne alternative UNIX programima. Linux često pruža podršku za mnoge opcije i aplikacije, posuđujući najbolju ili najpopularniju funkcionalnost od UNIX-a.

Kao administrator ili programer koji je navikao da radi sa Linuxom, UNIX sistem možda neće izgledati baš lak za upotrebu. S druge strane, osnova operativnog sistema nalik UNIX-u (alati, sistem datoteka, API-ji) je prilično standardizovana. Međutim, neki detalji sistema mogu imati značajne razlike. Ove razlike će biti razmotrene kasnije u članku.

Tehničke razlike

Programeri komercijalnih UNIX distribucija oslanjaju se na specifičan skup klijenata i serverskih platformi za svoj operativni sistem. Imaju dobru ideju kakvu podršku i optimizaciju koje aplikacije treba implementirati. Proizvođači UNIX-a daju sve od sebe da osiguraju kompatibilnost između različitih verzija. Osim toga, objavili su standarde svog OS-a.

GNU/Linux razvoj, s druge strane, nije fokusiran na platformu ili klijenta, a GNU/Linux programeri imaju različite pozadine i perspektive. Ne postoji strogi standardni skup alata ili okruženja u Linux zajednici. Da bi se riješio ovaj problem, pokrenut je projekt Linux Standards Base (LSB), ali se nije pokazao učinkovitim koliko bismo željeli.

Ovaj nedostatak standardizacije dovodi do značajnih nedosljednosti unutar Linuxa. Za neke programere, mogućnost da koriste najbolje od drugih operativnih sistema je plus, ali kopiranje UNIX elemenata na Linux nije uvijek zgodno, na primjer, kada se imena uređaja unutar Linuxa mogu preuzeti iz AIX-a, dok su alati sistema datoteka HP- UX orijentisan. Nekompatibilnosti ove vrste se također javljaju između različitih Linux distribucija. Na primjer, Gentoo i RedHat implementiraju različite metode ažuriranja.

Poređenja radi, svako novo izdanje UNIX sistema dolazi sa dobro dokumentiranim opisom novih karakteristika i promjena u UNIX-u. Komande, alati i drugi elementi rijetko se mijenjaju, a često isti argumenti komandne linije za aplikacije ostaju isti u mnogim verzijama tog softvera. Kada dođe do značajnih promjena na ovim elementima, dobavljači komercijalnih UNIX sistema često obezbjeđuju omotač potreban da bi se osigurala kompatibilnost sa ranijim verzijama alata.

Ova kompatibilnost znači da se uslužni programi i aplikacije mogu koristiti na novim verzijama operativnih sistema bez provjere ili promjene njihovog izvornog koda. Stoga, migracija na novu verziju UNIX-a, koja se obično ne razlikuje suštinski od stare verzije, predstavlja mnogo manje napora za korisnike ili administratore od migracije s jedne Linux distribucije na drugu.

Arhitektura hardvera

Većina komercijalnih verzija UNIX-a izgrađena je za jednu ili mali broj hardverskih arhitektura. HP-UX radi samo na PA-RISC i Itanium platformama, Solaris na SPARC i x86, a AIX je samo za POWER procesore.

Zbog ovih ograničenja, proizvođači UNIX-a su relativno slobodni da modifikuju svoj kod za ove arhitekture i iskoriste bilo koju prednost svoje arhitekture. Pošto dobro poznaju uređaje koje podržavaju, njihovi drajveri rade bolje i ne moraju da se suočavaju sa ograničenjima BIOS-a specifičnim za PC.

Linux je, s druge strane, kroz povijest bio dizajniran za maksimalnu kompatibilnost. Linux je dostupan na različitim arhitekturama, a broj I/O uređaja i drugih perifernih uređaja koji se mogu koristiti s OS-om je gotovo neograničen. Programeri ne mogu unaprijed znati koji će određeni hardver biti instaliran u računar i često ne mogu osigurati da se on efikasno koristi. Jedan primjer je upravljanje memorijom na Linuxu. Ranije je Linux koristio model segmentirane memorije prvobitno dizajniran za x86. Sada je prilagođen za korištenje stranicane memorije, ali i dalje zadržava neke zahtjeve za segmentiranom memorijom, što uzrokuje probleme ako arhitektura ne podržava segmentiranu memoriju. Ovo nije problem za UNIX proizvođače. Oni tačno znaju na kom će hardveru raditi njihov UNIX.

Nukleus

Kernel je srce operativnog sistema. Izvorni kod za kernel komercijalnih UNIX distribucija vlasništvo je njihovih programera i ne distribuira se izvan kompanije. Potpuno suprotna situacija sa Linuxom. Procedure za kompajliranje i zakrpe kernela i drajvera su prilično različite. Za Linux i druge operativne sisteme otvorenog koda, zakrpa se može objaviti kao izvorni kod i krajnji korisnik je može instalirati, testirati, pa čak i modificirati. Ove zakrpe obično nisu tako pažljivo testirane kao zakrpe komercijalnih proizvođača UNIX OS-a. Budući da ne postoji potpuna lista aplikacija i okruženja koje je potrebno testirati da bi ispravno radili na Linuxu, Linux programeri ovise o krajnjim korisnicima i drugim programerima kako bi uhvatili greške.

Komercijalni proizvođači UNIX distribucije objavljuju kernele samo kao izvršni kod. Neka izdanja su monolitna, dok vam druga dozvoljavaju da ažurirate samo određeni modul kernela. Ali u svakom slučaju, ovo izdanje je dostupno samo u obliku izvršnog koda. Ako je potrebno ažuriranje, administrator mora čekati da proizvođač objavi binarnu zakrpu, ali može biti utješen činjenicom da će proizvođač pažljivo provjeriti njihovu zakrpu za kompatibilnost unatrag.

Sve komercijalne verzije UNIX-a evoluirale su do određenog stepena u modularni kernel. Drajveri i specifične karakteristike OS-a su dostupne kao zasebne komponente i mogu se učitati ili isprazniti iz kernela po potrebi. Ali otvorena modularna arhitektura Linuxa je mnogo fleksibilnija. Međutim, fleksibilnost i prilagodljivost Linuxa znači stalnu promjenu. Izvorni kod Linuxa se stalno mijenja, a po želji programera, API se može promijeniti. Kada je modul ili drajver napisan za komercijalnu verziju UNIX-a, on će trajati mnogo duže od istog drajvera za Linux.

Podrška za sistem datoteka

Jedan od razloga zašto je Linux postao tako moćan OS je njegova široka kompatibilnost sa drugim operativnim sistemima. Jedna od najočitijih karakteristika je obilje dostupnih sistema datoteka. Većina komercijalnih verzija UNIX-a podržava dva ili tri tipa sistema datoteka. Linux, međutim, podržava većinu modernih sistema datoteka. pokazuje koje sisteme datoteka podržava UNIX. Bilo koji od ovih sistema datoteka može se montirati na Linux, iako svi ovi sistemi datoteka u potpunosti ne podržavaju čitanje i pisanje podataka.

Tablica 1. Sistemi datoteka koji su standardni za UNIX

Većina komercijalnih verzija UNIX-a podržava sisteme datoteka za dnevnik. Na primjer, HP-UX koristi hfs kao svoj standardni sistem datoteka, ali također podržava sistem datoteka vxfs s dnevnikom. Solaris podržava ufs i zfs. Sistem datoteka za vođenje dnevnika je bitna komponenta svakog poslovnog serverskog okruženja. Podrška za sisteme datoteka u dnevniku uvedena je kasno u Linuxu, ali sada postoji nekoliko opcija, od klonova komercijalnih sistema datoteka (xfs, jfs) do sistema datoteka specifičnih za Linux (ext3, reiserfs).

Ostale funkcije sistema datoteka uključuju podršku za kvote, liste kontrole pristupa datotekama, preslikavanje, sistemske snimke i promjenu veličine. Podržavaju ih u jednom ili drugom obliku Linux sistemi datoteka. Većina ovih funkcija nije standardna za Linux. Neke funkcije mogu raditi na jednom sistemu datoteka, dok će za druge biti potreban drugačiji sistem datoteka. Neke od ovih funkcija jednostavno nisu dostupne na određenim Linux sistemima datoteka, dok druge zahtijevaju dodatnu instalaciju alata, kao što je posebna verzija LVM-a ili podrška za diskovni niz (softverski raid paket). Istorijski gledano, kompatibilnost između programskih interfejsa i standardnih alata bilo je teško postići u Linuxu, tako da mnogi sistemi datoteka implementiraju ove karakteristike na različite načine.

Pošto komercijalni UNIX sistemi podržavaju ograničen broj sistema datoteka, njihovi alati i tehnike za rad sa njima su standardizovaniji. Na primjer, pošto je Irix podržavao samo jedan glavni sistem datoteka, postojao je samo jedan način da se postave liste kontrole pristupa. Ovo je mnogo pogodnije za krajnjeg korisnika i za dalju podršku ovog OS-a.

Dostupnost aplikacija

Većina osnovnih aplikacija je ista i na UNIX-u i na Linuxu. Na primjer, naredbe cp, ls, vi i cc dostupne su na UNIX-u i Linuxu i vrlo su slične, ako ne i potpuno identične. Linux verzije ovih alata su bazirane na GNU verzijama ovih alata, dok su UNIX verzije ovih alata bazirane na tradicionalnim UNIX alatima. Ovi UNIX alati imaju dugu istoriju i rijetko se mijenjaju.

Ali to ne znači da se komercijalne verzije UNIX-a ne mogu koristiti sa GNU alatima. U stvari, mnogi komercijalni proizvođači UNIX OS-a uključuju mnoge GNU alate u svoje distribucije ili ih nude kao besplatne dodatke. GNU alati nisu samo standardni alati. Neki od ovih besplatnih uslužnih programa nemaju komercijalne parnjake (emacs ili Perl). Većina proizvođača unaprijed instalira ove programe i oni se ili automatski instaliraju sa sistemom ili su dostupni kao opciona funkcija.

Besplatne i open source aplikacije su gotovo uvijek ugrađene u sve distribucije Linuxa. Postoji velika količina besplatnog softvera dostupnog za Linux, a mnoge od ovih aplikacija su portovane na komercijalne verzije UNIX operativnog sistema.

Komercijalne i/ili aplikacije zatvorenog koda (CAD, finansijski programi, grafički editor) možda nema analoga za Linux. Iako neki proizvođači objavljuju verzije svojih aplikacija za Linux, većina dobavljača ne žuri to učiniti dok se popularnost Linuxa među korisnicima ne poveća.

S druge strane, komercijalne verzije UNIX-a su kroz istoriju podržavale veliki broj aplikacija na nivou preduzeća, kao što su Oracle ili SAP. Linux u velikoj mjeri gubi zbog poteškoća s certificiranjem velikih aplikacija, dok se komercijalne verzije UNIX-a ne mijenjaju mnogo od izdanja do izdanja. Linux se može mnogo promijeniti, ne samo sa svakom novom distribucijom, već ponekad i između izdanja iste distribucije. Stoga je proizvođaču softvera vrlo teško razumjeti u kojem okruženju će se njihova aplikacija koristiti.

Administracija sistema

Iako neke Linux distribucije dolaze sa standardnim skupom alata za sistemsku administraciju, kao što je SUSE-ov YaST, ne postoji zajednički standard za alate za administraciju sistema Linux. Tekstualne datoteke i alati komandne linije su dostupni, ali ponekad njihova upotreba može biti nezgodna. Svaka komercijalna verzija UNIX ima svoj vlastiti interfejs za upravljanje sistemom. Koristeći ovo sučelje, možete upravljati i mijenjati sistemske elemente. U nastavku je primjer System Administration Manager za HP-UX.

Ovaj SAM sadrži sljedeće module:

  • Korisnici ili grupe za upravljanje.
  • Opcije kernela koje se mogu mijenjati.
  • Mrežna konfiguracija.
  • Postavljanje i inicijalizacija diskova.
  • Konfiguracija X servera.

Kvalitet ovog uslužnog paketa je odličan, a uslužni paket dobro radi s tekstualnim datotekama. Ne postoji analog ovog alata za Linux. Čak ni YaST u SUSE-u nema istu funkcionalnost.

Još jedan aspekt u UNIX-u i Linuxu koji izgleda da se mijenja sa skoro svakom verzijom OS-a je lokacija skripti za inicijalizaciju sistema. Srećom, /sbin/init i /etc/inittab su standardni direktoriji. Ali skripte za pokretanje sistema su u različitim direktorijumima. pokazuje lokacije na kojima su pohranjene skripte za inicijalizaciju sistema za različite UNIX i Linux distribucije.

Tablica 2. Lokacija skripti za inicijalizaciju sistema za različite verzije UNIX-a
HP-UX/sbin/init.d
AIX/etc/rc.d/init.d
Irix/etc/init.d
Solaris/etc/init.d
crvena kapa/etc/rc.d/init.d
SUSE/etc/rc.d/init.d
Debian/etc/init.d
Slackware/etc/rc.d

Zbog velikog broja Linux distribucija i gotovo beskonačnog broja dostupnih aplikacija (s obzirom da postoji mnogo verzija ove aplikacije) za ovaj OS, upravljanje programima na Linuxu postaje težak zadatak. Odabir pravog alata ovisi o distribuciji s kojom radite. Dalja neugodnost proizlazi iz činjenice da neke distribucije koriste format datoteke Redhat Package Manager (RPM), dok su njihovi programi nekompatibilni. Ova podjela dovodi do velikog broja opcija za rad sa paketima, a nije uvijek jasno koji se sistem koristi u određenom okruženju.

S druge strane, komercijalne distribucije UNIX-a sadrže standardne menadžere paketa. Iako postoje različite verzije aplikacija i specifični formati za različite verzije UNIX-a, okruženje za upravljanje aplikacijama je isto. Na primjer, Solaris je koristio iste alate za upravljanje paketima aplikacija od svog početka. I najvjerovatnije će načini identifikacije, dodavanja ili uklanjanja softverskih paketa u Solarisu i dalje ostati nepromijenjeni.

Prodavci komercijalnih UNIX distribucija također isporučuju hardver na kojem je njihov OS dizajniran za rad, tako da mogu uvesti nove uređaje u svoj OS, što je mnogo teže učiniti za Linux. Na primjer, u najnovije verzije Linux je pokušao da implementira podršku za komponente koje se mogu zamenjivati ​​u toku rada (sa različitim stepenom uspeha). Komercijalne verzije UNIX-a imaju ovu mogućnost dugi niz godina. Također, u komercijalnim verzijama UNIX-a, nadzor hardvera je bolji nego u Linuxu. Proizvođači mogu napisati drajvere i ugraditi ih u svoj operativni sistem, koji će pratiti zdravlje sistema, kao što je broj grešaka ECC memorije, postavke napajanja ili bilo koje druge hardverske komponente. Ovakva podrška za Linux očekuje se tek u dalekoj budućnosti.

Hardver za komercijalne UNIX sisteme takođe ima naprednije opcije pokretanja. Prije nego što se operativni sistem pokrene, postoji mnogo opcija za prilagođavanje načina pokretanja, provjeru ispravnosti sistema ili podešavanje hardverskih postavki. BIOS standardnog računara ima nekoliko, ako ih ima, ovih opcija.

Podrška

Jedna od najznačajnijih razlika između Linuxa i UNIX-a je cijena. Prodavci komercijalnih UNIX sistema su naplatili visoku cijenu za svoj UNIX, iako se može koristiti samo sa njihovim hardverskim platformama. S druge strane, distribucije Linuxa su relativno jeftine, ako ne i besplatne.

Kada kupite komercijalnu verziju UNIX-a, dobavljači obično pružaju tehničku podršku. Proizvođač OS-a ne podržava većinu korisnika Linuxa. Podršku mogu dobiti samo putem e-pošte, foruma i raznih zajednica korisnika Linuxa. Međutim, ove grupe nisu samo za korisnike Linuxa. Mnogi administratori komercijalnih operativnih sistema UNIX porodice učestvuju u ovim otvorenim grupama podrške kako bi bili u mogućnosti da obezbede pomoć i, ako je potrebno, da je koriste. Mnogi ljudi smatraju da su takve grupe samopomoći još korisnije od sistema podrške koji nudi proizvođač OS-a.

Zaključak

Osnove UNIX-a i Linuxa su vrlo slične. Za korisnika ili administratora sistema, prelazak sa Linuxa na UNIX će dodati neke neprijatnosti u radu, ali će generalno prelazak biti bezbolan. Čak i ako su sistemi datoteka i kerneli različiti i potrebno je neko vrijeme da se naviknete, alati i API-ji ostaju isti. Uglavnom, ove razlike nisu ništa značajnije od razlika između glavnih verzija UNIX-a. Sve grane UNIX-a i Linuxa postepeno se razvijaju i malo će se razlikovati jedna od druge, ali zbog zrelosti UNIX koncepta, osnove OS-a se neće mnogo promijeniti.

Uvod

Šta je Unix?

Gdje nabaviti besplatni Unix?

Koje su glavne razlike između Unixa i drugih OS?

Zašto Unix?

Osnovni Unix koncepti

Sistem podataka

komandni interpreter

Priručnici - man

Uvod

Pisati o Unix operativnom sistemu je izuzetno teško. Prvo, zato što se dosta pisalo o ovom sistemu. Drugo, zato što su ideje i odluke Unixa imale i imaju ogroman uticaj na razvoj svih modernih operativnih sistema, a mnoge od ovih ideja su već opisane u ovoj knjizi. Treće, jer Unix nije jedan operativni sistem, već čitava familija sistema, i nije uvek moguće "pratiti" njihov međusobni odnos, i jednostavno je nemoguće opisati sve operativne sisteme uključene u ovu porodicu. . Međutim, ne pretendujući da smo na bilo koji način iscrpni, pokušaćemo da damo površni pregled "Unix sveta" u onim njegovim oblastima koje nam se čine interesantnim za potrebe našeg tutorijala.

Rođenje Unix operativnog sistema datira s kraja 60-ih godina, a ova priča je već stekla "legende", koje ponekad na različite načine govore o detaljima ovog događaja. Operativni sistem Unix rođen je u istraživačkom centru Bell Telephone Laboratories (Bell Labs), koji je dio AT&T korporacije. U početku je ovaj inicijativni projekat za računar PDP-7 (kasnije - za PDP-11) bio ili sistem datoteka, ili kompjuterska igra, ili sistem za pripremu teksta, ili oboje. Važno je, međutim, da je od samog početka projekat, koji se na kraju pretvorio u OS, zamišljen kao softversko okruženje za kolektivnu upotrebu. Autor prve verzije Unixa je Ken Thompson, međutim, veliki tim zaposlenih (D. Ritchie, B. Kernigan, R. Pike i drugi) je učestvovao u raspravi o projektu, a potom i u njegovoj implementaciji . Po našem mišljenju, nekoliko srećnih okolnosti rođenja Unixa odredilo je uspeh ovog sistema za dugi niz godina.

Za većinu ljudi u timu u kojem je rođen Unix, taj OS je bio "treći sistem". Postoji mišljenje (vidi, na primjer) da sistemski programer postiže visoke kvalifikacije tek kada završi svoj treći projekat: prvi projekat je još uvijek "student", drugi programer pokušava uključiti sve što nije uspjelo u prvom, a kao rezultat toga ispada preglomazna, a tek u trećem se postiže neophodan balans želja i mogućnosti. Poznato je da je prije rođenja Unixa, Bell Labs tim učestvovao (zajedno sa nizom drugih firmi) u razvoju MULTICS OS-a. Konačni proizvod MULTICS-a (Bell Labs nije učestvovao u poslednjim fazama razvoja) nosi sva obeležja "drugog sistema" i nije u širokoj upotrebi. Međutim, treba napomenuti da su mnoge fundamentalno važne ideje i odluke rođene u ovom projektu, a neki koncepti za koje mnogi smatraju da su rođeni u Unixu zapravo potiču iz projekta MULTICS.

Unix operativni sistem je bio sistem koji je napravljen "za mene i za moje prijatelje". Unix nije bio postavljen da osvoji tržište i da se takmiči sa bilo kojim proizvodom. Sami programeri Unix operativnog sistema bili su njegovi korisnici i sami su procenjivali da li sistem odgovara njihovim potrebama. Bez pritiska tržišnih uslova, takva procjena bi mogla biti krajnje objektivna.

Unix je bio sistem koji su napravili programeri za programere. To je odredilo eleganciju i konceptualnu harmoniju sistema - s jedne strane, as druge - potrebu za razumijevanjem sistema za korisnika Unixa i osjećaj profesionalne odgovornosti za programera koji razvija softver za Unix. I nijedan kasniji pokušaj da se napravi "Unix for Dummies" nije uspeo da oslobode Unix OS ove vrline.

Godine 1972-73. Ken Thompson i Dennis Ritchie napisali su novu verziju Unixa. Posebno za tu svrhu, D. Ritchie je kreirao programski jezik C, koji sada više nije potreban. Preko 90% Unix koda je napisano na ovom jeziku, a jezik je postao sastavni dio OS-a. Činjenica da je glavni dio OS-a napisan na jeziku visokog nivoa omogućava njegovo ponovno kompajliranje u kodove bilo koje hardverske platforme i okolnost je koja je odredila široku upotrebu Unixa.

Tokom početka Unixa, američki antimonopolski zakoni spriječili su AT&T da uđe na tržište softvera. Stoga je operativni sistem Unix bio nekomercijalan i slobodno distribuiran, prvenstveno na univerzitetima. Tamo se njegov razvoj nastavio, a najaktivnije se odvijao na Kalifornijskom univerzitetu u Berkliju. Na ovom univerzitetu stvorena je grupa Berkeley Software Distribution, koja se bavila razvojem zasebne grane OS - BSD Unix. Kroz kasniju istoriju, mainstream Unix i BSD Unix su evoluirali paralelno, neprestano obogaćujući jedan drugog.

Kako se Unix operativni sistem širio, komercijalne firme su postajale sve više zainteresovane za njega, koje su počele da izdaju sopstvene komercijalne verzije ovog operativnog sistema. Vremenom je "glavna" grana Unixa iz AT&T-a postala komercijalna, a podružnica Unix System Laboratory je stvorena da ga promovira. BSD Unix grana se račvala u komercijalne BSD i Free BSD. Različiti komercijalni i besplatni sistemi slični Unixu izgrađeni su na vrhu AT&T Unix kernela, ali su uključivali funkcije pozajmljene od BSD Unixa, kao i originalne karakteristike. Uprkos zajedničkom izvoru, razlike između članova Unix porodice su se akumulirale i na kraju učinile prenos aplikacija sa jednog operativnog sistema sličnog Unixu na drugi izuzetno teškim. Na inicijativu korisnika Unixa, došlo je do pokreta za standardizaciju Unix API-ja. Ovaj pokret je podržala Međunarodna organizacija za standarde ISO i doveo je do pojave POSIX (Izvršavanje interfejsa portabl operativnih sistema) standarda, koji se još uvek razvija i koji je najautoritativniji standard za OS. Međutim, pretvaranje POSIX specifikacija u službeni standard je prilično spor proces i ne zadovoljava potrebe dobavljača softvera, što je dovelo do pojave alternativnih industrijskih standarda.

Sa tranzicijom AT&T Unixa u Nowell, naziv ovog operativnog sistema je promijenjen u Unixware, a prava na zaštitni znak Unix prenijeta su na X/Open konzorcijum. Ovaj konzorcijum (sada Open Group) razvio je sopstvenu (širu od POSIX) sistemsku specifikaciju, poznatu kao Single Unix Specification. Drugo izdanje ovog standarda je nedavno objavljeno, mnogo bolje usklađeno sa POSIX-om.

Konačno, brojne kompanije koje proizvode svoje verzije Unixa formirale su konzorcijum Open Software Foundation (OSF), koji je objavio sopstvenu verziju Unixa, OSF/1, zasnovanu na Mach mikrokernelu. OSF je takođe objavio specifikacije sistema OSF/1, koje su služile kao osnova firmama članicama OSF-a da izdaju sopstvene Unix sisteme. Ovi sistemi uključuju SunOS kompanije Sun Microsystems, AIX iz IBM-a, HP/UX iz Hewlett-Packarda, DIGITAL UNIX iz Compaq-a i druge.

U početku su Unix sistemi ovih firmi uglavnom bili bazirani na BSD Unixu, ali sada je većina modernih industrijskih Unix sistema zasnovana na korišćenju (pod licencom) kernela AT&T Unix System V Release 4 (S5R4), iako nasleđuju neke karakteristike BSD Unix. Ne preuzimamo odgovornost za poređenje komercijalnih Unix sistema, jer poređenja ove vrste koja se periodično pojavljuju u štampi često daju potpuno suprotne rezultate.

Nowell je prodao Unix kompaniji Santa Crouse Operations, koja je proizvela vlastiti Unix proizvod, SCO Open Server. SCO Open Server je bio baziran na ranijoj verziji kernela (System V Release 3), ali je bio izvrsno otklonjen i vrlo stabilan. Santa Crouse Operations je integrisao svoj proizvod sa AT&T Unixom i izdao Open Unix 8, ali je potom prodao Unix Calderi, vlasniku "klasičnog" Unixa danas (krajem 2001).

Sun Microsystems je započeo svoje uvođenje u Unix svijet sa SunOS-om, baziranim na BSD kernelu. Međutim, kasnije ga je zamijenio Solaris sistemom baziranim na S5R4. Verzija 8 ovog OS-a se trenutno distribuira (postoji i v.9-beta). Solaris radi na SPARC platformi (RISC procesori proizvedeni prema Sun specifikacijama) i Intel-Pentium.

Hewlett-Packard nudi HP-UX OS. v.11 na PA-RISC platformi. HP-UX je baziran na S5R4, ali sadrži mnoge karakteristike koje otkrivaju njegovo porijeklo iz BSD Unixa. Naravno, HP-UX će biti dostupan i na Intel-Itanium platformi.

IBM izlazi sa AIX OS-om, najnovija verzija do danas je 5L (o tome će biti riječi kasnije). IBM nije objavio "pedigre" AIX-a, to je uglavnom originalni razvoj, ali su prve verzije nosile znakove porijekla iz FreeBSD Unixa. Sada, međutim, AIX više liči na S5R4. AIX je prvobitno bio dostupan na Intel-Pentium platformi, ali kasnije (prema općoj IBM politici) više nije podržan na toj platformi. AIX trenutno radi na IBM RS/6000 serverima i drugim računarskim platformama baziranim na PowerPC (uključujući IBM superračunare).

DEC-ov DIGITALNI UNIX bio je jedina komercijalna implementacija OSF/1. DIGITALNI UNIX OS je radio na DEC-ovim Alpha RISC serverima. Kada je Compaq 1998. preuzeo DEC, Compaq je kupio i Alpha i DIGITAL UNIX servere. Compaq namjerava obnoviti svoje prisustvo na tržištu Alpha servera iu tom smislu intenzivno razvija OS za njih. Trenutni naziv ovog OS-a je Tru64 Unix (trenutna verzija je 5.1A), i dalje je baziran na OSF/1 kernelu i ima mnoge BSD Unix karakteristike.

Iako je većina komercijalnih Unix sistema bazirana na jednom kernelu i usklađena sa POSIX zahtjevima, svaki ima svoj vlastiti dijalekt API-ja, a razlike između dijalekata su kumulativne. Ovo dovodi do činjenice da je prenos industrijskih aplikacija sa jednog Unix sistema na drugi težak i zahteva barem rekompilaciju, a često i korekciju izvornog koda. Pokušaj da se prevaziđe "zabuna" i napravi jedinstven Unix operativni sistem za sve preduzet je 1998. godine od strane saveza SCO, IBM-a i Sequent-a. Ove firme su se udružile u Monterey projektu kako bi stvorile jedan OS zasnovan na Unixware-u, u to vrijeme u vlasništvu SCO, IBM AIX i Sequentovog DYNIX OS-a. (Sequent je lider u proizvodnji NUMA računara - asimetrični multiprocesor - a DYNIX je Unix za takve računare). Monterey OS je trebao raditi na 32-bitnoj Intel-Pentium platformi, 64-bitnoj PowerPC platformi i novoj 64-bitnoj Intel-Itanium platformi. Skoro svi lideri u industriji hardvera i srednjeg softvera su izjavili da podržavaju projekat. Čak su i firme koje imaju svoje Unix klonove (osim Sun Microsystems) najavile da će podržavati samo Monterey na Intel platformama. Činilo se da rad na projektu ide dobro. Monterey OS je bio među prvima koji su dokazali svoje performanse na Intel-Itanium-u (zajedno sa Windows NT i Linuxom) i jedini koji nije emulirao 32-bitnu Intel-Pentium arhitekturu. Međutim, u završnoj fazi projekta dogodio se fatalni događaj: SCO je prodao svoju Unix diviziju. Čak i ranije, Sequent je postao dio IBM-a. "Nasljednik" svih karakteristika Monterey OS-a je IBM AIX v.5L OS. Međutim, ne baš sve. Intel-Pentium platforma nije strateški fokus za IBM i AIX nije dostupan na toj platformi. I pošto drugi lideri u kompjuterskoj industriji ne dijele (ili ne dijele baš) IBM-ovu poziciju, ideja o zajedničkom Unix operativnom sistemu nikada nije došla do realizacije.

Ako ste nedavno počeli da učite Linux i osećate se udobno u ovom ogromnom univerzumu, onda ste verovatno često nailazili na termin Unix. Zvuči vrlo slično Linuxu, ali šta to znači? Vjerovatno se pitate koja je razlika između unixa i linuxa. Odgovor na ovo pitanje zavisi od toga šta razumete pod ovim rečima. Uostalom, svaki od njih se može tumačiti na različite načine. U ovom članku ćemo pogledati pojednostavljenu istoriju Linuxa i Unixa kako bismo vam pomogli da shvatite šta su i kako su povezani. Kao i uvijek, možete postaviti pitanja ili dodati više informacija u komentarima.

Unix je započeo svoju povijest kasnih 1960-ih i ranih 1970-ih u AT&T Bell Labs u Sjedinjenim Državama. Zajedno sa MIT-om i General Electric-om, Bell Labs je započeo razvoj novog operativnog sistema. Neki istraživači su bili nezadovoljni razvojem ovog operativnog sistema. Odmaknuli su se od rada na glavnom projektu i počeli razvijati vlastiti OS. Godine 1970. ovaj sistem je nazvan Unix, a dvije godine kasnije potpuno je prepisan u programskom jeziku C.

Ovo je omogućilo da se Unix distribuira i prenese na njega razni uređaji i računarske platforme.

Kako je Unix nastavio da se razvija, AT&T ga je počeo licencirati za univerzitetsku upotrebu, kao i za komercijalne svrhe. To je značilo da ne mogu svi, kao sada, slobodno mijenjati i distribuirati kod Unix operativnog sistema. Ubrzo su se počela pojavljivati ​​mnoga izdanja i varijante Unix operativnog sistema, dizajnirane za rješavanje raznih problema. Najpoznatiji od njih bio je BSD.

Linux je sličan Unixu po funkcionalnosti i karakteristikama, ali ne i u bazi koda. Ovaj operativni sistem je sastavljen iz dva projekta. Prvi je GNU projekat koji je razvio Richard Stallman 1983. godine, drugi je Linux kernel koji je napisao Linus Torvalds 1991. godine.

Cilj GNU projekta bio je stvoriti sistem sličan Unixu, ali nezavisan od njega. Drugim riječima, operativni sistem koji ne sadrži Unix kod koji bi se mogao slobodno redistribuirati i modificirati bez ograničenja, poput slobodnog softvera. Pošto besplatni Linux kernel nije mogao da radi samostalno, GNU projekat se spojio sa Linux kernelom i nastao je Linux operativni sistem.

Linux je dizajniran pod uticajem sistema Minix, potomka Unixa, ali je sav kod napisan od nule. Za razliku od Unixa, koji se koristio na serverima i velikim velikim računarima raznih preduzeća, Linux je dizajniran da se koristi na kućni računar sa jednostavnijim hardverom.

Danas Linux radi na više platformi nego bilo koji drugi operativni sistem, uključujući servere, ugrađene sisteme, mikroračunare, modeme, pa čak i mobilne telefone. Sada ćemo detaljnije razmotriti razliku između linuxa i unixa.

Šta je Unix

Termin Unix se može odnositi na takve koncepte:

  • Originalni operativni sistem koji je razvio AT&T Bell Labs iz kojeg su razvijeni drugi operativni sistemi.
  • Zaštitni znak, ispisan velikim slovima. UNIX je u vlasništvu The Open Group, koja je razvila Jedinstvenu UNIX specifikaciju, skup standarda za operativne sisteme. Samo oni sistemi koji su u skladu sa standardima mogu se legitimno zvati UNIX. Certifikacija nije besplatna i zahtijeva od programera da plate za korištenje ovog žiga.
  • Svi operativni sistemi su registrovani pod imenom Unix. Zato što ispunjavaju gore navedene standarde. To su AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS i OS X - da, čak i oni koji rade na Apple računarima.

Šta je Linux

Termin Linux odnosi se samo na kernel. Operativni sistem ne bi bio potpun bez desktop okruženja i aplikacija. Pošto je većina aplikacija razvijena i sada se razvija u okviru GNU projekta, puni naziv operativnog sistema je GNU/Linux.

Mnogi ljudi sada koriste termin Linux za sve distribucije bazirane na Linux kernelu. Trenutno je najnovija verzija Linux kernela 4.4, verzija 4.5 je u razvoju. Prenumeracija izdanja kernela sa 3.x na 4.x dogodila se ne tako davno.

Linux je operativni sistem sličan Unixu koji se ponaša kao Unix, ali ne sadrži svoj kod. Operativni sistemi slični Unixu se često nazivaju Un*x, *NIX i *N?X, ili čak Unixoids. Linux nema Unix certifikaciju, a GNU je skraćenica za GNU ne Unix, tako da je Mac OS X više Unix nego Linux u tom pogledu. Ipak, Linux kernel i GNU Linux operativni sistem su po funkcionalnosti veoma slični Unixu, implementirajući većinu principa Unix filozofije. To je kod čitljiv ljudima, koji pohranjuje konfiguraciju sistema u odvojene tekstualne datoteke i koristi male alate komandne linije, grafičku ljusku i menadžer sesije.

Važno je napomenuti da nisu svi sistemi slični Unixu dobili UNIX certifikat. U određenom kontekstu, svi operativni sistemi zasnovani na UNIX-u ili njegovim idejama nazivaju se UNIX-ovim, bez obzira da li imaju UNIX sertifikat ili ne. Osim toga, mogu biti komercijalne i besplatne.

Nadam se da je sada postalo jasnije po čemu se unix razlikuje od linuxa. Ali idemo još dalje i sumiramo.

Glavne razlike

  • Linux je besplatan operativni sistem otvorenog koda, ali originalni Unix nije, osim nekih njegovih derivata.
  • Linux je klon originalnog Unixa, ali ne sadrži njegov kod.
  • Glavna razlika između unixa i linuxa je u tome što je Linux samo kernel, dok je Unix bio i jeste punopravni operativni sistem.
  • Linux je dizajniran za personalne računare. A Unix je prvenstveno fokusiran na velike radne stanice i servere.
  • Danas Linux podržava više platformi od Unixa.
  • Linux podržava više tipova sistema datoteka od Unixa.

Kao što vidite, zabuna obično dolazi od činjenice da linux i unix mogu značiti potpuno različite stvari. Bez obzira na značenje, ostaje činjenica da je Unix došao prvi, a Linux kasnije. Linux je rođen iz želje za slobodom softvera i prenosivosti, inspirisan Unix pristupom. Može se sa sigurnošću reći da smo svi dužni pokretu slobodnog softvera, jer bi svijet bez njega bio mnogo gore mjesto.

MINISTARSTVO PROSVETE I NAUKE RUSKOG

FEDERACIJA

FEDERALNA AGENCIJA ZA OBRAZOVANJE

DRŽAVNA OBRAZOVNA USTANOVA

VISOKO STRUČNO OBRAZOVANJE

Taganrog State Radio Engineering University

Disciplina "Informatika"

"UNIX operativni sistem"

Završio: Orda-Zhigulina D.V., gr. E-25

Provjereno: Vishnevetsky V.Yu.

Taganrog 2006


Uvod

Šta je Unix 3

Gdje dobiti besplatni Unix 7

Glavni dio. (Opis Unixa)

1. Osnovni koncepti Unixa 8

2. Sistem datoteka 9

2.1 Tipovi datoteka 9

3. Komandni tumač 11

4. UNIX 12 kernel

4.1 Opća organizacija tradicionalnog UNIX kernela 13

4.2 Glavne funkcije kernela 14

4.3 Principi interakcije sa jezgrom 15

4.4 Principi rukovanja prekidima 17

5. I/O kontrola 18

5.1 Principi sistemskog I/O baferovanja 19

5. 2 Sistemska poziva za I/O kontrolu 21

6. Interfejsi i ulazne tačke drajvera 23

6.1 Blok drajveri 23

6.2 Drajveri karaktera 24

6. 3 Stream Driveri 25

7. Komande i pomoćni programi 25

7. 1 Timska organizacija u UNIX OS 26

7.2 I/O preusmjeravanje i cjevovod 26

7. 3 Ugrađene, bibliotečke i korisničke komande 26

7.4 Programiranje na komandnom jeziku 27

8. GUI alati 27

8.1 Korisnički ID-ovi i korisničke grupe 30

8.2 Zaštita datoteka 32

8.3 Obećavajući operativni sistemi koji podržavaju okruženje UNIX OS 33

Zaključak

Glavne razlike između Unixa i ostalih OS 36

Aplikacije Unixa 37


Uvod

Šta je Unix

Termin Unix i ne baš ekvivalentni UNIX koriste se u različitim značenjima. Počnimo sa drugim pojmom, kao jednostavnijim. Ukratko, UNIX (u tom obliku) je registrovani zaštitni znak prvobitno u vlasništvu AT&T Corporation, koji je promijenio vlasnika tokom godina i sada je vlasništvo organizacije koja se zove Open Group. Pravo na korištenje naziva UNIX ostvaruje se svojevrsnom "provjerom uši" - polaganjem testova usklađenosti sa specifikacijama nekog referentnog OS-a (Single Unix Standard - što se u ovom slučaju može prevesti kao Jedinstveni standard na Unixu). Ova procedura je ne samo komplikovana, već je i veoma skupa, pa je zbog toga samo nekoliko operativnih sistema od sadašnjih prošlo kroz nju, a svi su vlasnički, odnosno vlasništvo su određenih korporacija.

Među korporacijama koje su stekle pravo na naziv UNIX, zatim programeri/testeri i krv (tačnije, dolar) vlasnika, možemo navesti sljedeće:

Sun sa svojim SunOS-om (u svijetu poznatijim kao Solaris);

IBM, koji je razvio AIX sistem;

Hewlett-Packard je vlasnik HP-UX sistema;

IRIX je SGI-jev operativni sistem.

Osim toga, ispravno UNIX ime se primjenjuje na sisteme:

True64 Unix, koji je razvio DEC, čijom je likvidacijom prešao na Compaq, a sada je zajedno sa ovim postao vlasništvo istog Hewlett-Packarda;

UnixWare je u vlasništvu SCO (proizvod spajanja Caldera i Santa Cruz Operation).

Budući da su vlasnički, svi ovi sistemi se prodaju za mnogo novca (čak i po američkim standardima). Međutim, to nije glavna prepreka širenju samog UNIX-a, jer njihova zajednička karakteristika je vezivanje za određene hardverske platforme: AIX radi na IBM serverima i radnim stanicama sa Power procesorima, HP-UX - na vlastitom HP-PA (Precision Architecture ) mašine, IRIX - na grafičkim stanicama od SGI, nose MIPS procesore, True64 Unix - dizajniran za Alpha procesore (nažalost, u Bose pokojnom) Samo UnixWare je fokusiran na "demokratsku" PC platformu, a Solaris postoji u verzijama za dvije arhitekture - sopstveni, Sparc, i dalje isti PC, koji, međutim, nije mnogo doprineo njihovoj rasprostranjenosti - zbog relativno slabe podrške za nove PC periferije.

Dakle, UNIX je prvenstveno pravni koncept. Ali termin Unix ima tehnološko tumačenje. Ovo je uobičajeno ime koje IT industrija koristi za čitavu porodicu operativnih sistema, bilo izvedeno od "originalne" UNIX kompanije AT & T, ili reprodukuje njene funkcije "od nule", uključujući besplatne operativne sisteme kao što su Linux, FreeBSD i drugim BSD-ovima, nikakva verifikacija usklađenosti sa jedinstvenim Unix standardom nikada nije bila izložena. Zbog toga se često nazivaju Unix-sličnima.

Široko se koristi i termin "POSIX-kompatibilni sistemi", koji je blizak po značenju, koji objedinjuje porodicu operativnih sistema koji odgovaraju istoimenom skupu standarda. Sami standardi POSIX (Portable Operation System Interface baziran na uniX-u) razvijeni su na osnovu praksi usvojenih u Unix sistemima, i stoga su potonji svi, po definiciji, POSIX-kompatibilni. Međutim, ovo nisu u potpunosti sinonimi: kompatibilnost sa POSIX standardima traže operativni sistemi koji su samo indirektno povezani sa Unixom (QNX, Syllable), ili nisu uopšte povezani (do Windows NT/2000/XP).

Da bismo razjasnili pitanje odnosa između UNIX-a, Unixa i POSIX-a, moramo malo zaroniti u istoriju. Zapravo, istorija ovog pitanja je detaljno razmotrena u odgovarajućem poglavlju knjige "Free Unix: Linux, FreeBSD i drugi" (uskoro BHV-Petersburg) iu člancima o istoriji Linux i BSD sistema.

Unix operativni sistem (tačnije, njegovu prvu verziju) razvili su zaposleni u Bell Labs-u (odjel AT & T) 1969-1971. Njeni prvi autori - Ken Thompson i Dennis Ritchie - učinili su to isključivo u svoje svrhe, posebno kako bi se mogli zabaviti uz svoju omiljenu StarTravel igru. I iz brojnih pravnih razloga, sama kompanija ga nije mogla koristiti kao komercijalni proizvod. Međutim, vrlo brzo je pronađena praktična primjena Unixa. Prvo, korišten je u Bell Labs-u za pripremu raznih vrsta tehničke (uključujući patentnu) dokumentaciju. I drugo, komunikacioni sistem UUCP (Unix to Unix Copy Program) bio je zasnovan na Unixu.

Još jedno područje u kojem se Unix koristio 70-ih i ranih 80-ih godina prošlog stoljeća pokazalo se prilično neobičnom. Naime, u izvornim tekstovima distribuiran je među naučnim institucijama koje se bave radom u oblasti računarstva. Svrha takvog širenja (nije bilo potpuno besplatno u sadašnjem smislu, ali se u stvari pokazalo vrlo liberalnim) bila je: obrazovanje i istraživanje u navedenoj oblasti znanja.

Najpoznatiji je BSD Unix sistem, kreiran na Univerzitetu Berkli u Kaliforniji. Koji je, postepeno oslobađajući se vlasničkog koda originalnog Unixa, na kraju, nakon dramatičnih uspona i padova (opisanih detaljno) doveo do modernih besplatnih BSD sistema - FreeBSD, NetBSD i drugih.

Jedan od najvažnijih rezultata rada univerzitetskih hakera bilo je (1983.) uvođenje podrške za TCP/IP protokol u Unix, na kojem se temeljio tadašnji ARPANET (i koji je postao temelj savremenog Interneta). Ovo je bio preduslov za dominaciju Unixa u svim oblastima vezanim za World Wide Web. I ovo se pokazalo kao sljedeća praktična primjena ove porodice operativnih sistema - do tada više nije bilo potrebe da se govori o jednom Unixu. Zato što je, kao što je ranije pomenuto, razdvojio svoje dve grane – poreklom od originalnog UNIX-a (s vremenom je dobio naziv System V) i sistema Berklijevog porekla. S druge strane, System V je formirao osnovu za razne vlasničke UNIX-ove koji su, u stvari, imali zakonsko pravo da traže ovo ime.

Posljednja okolnost - grananje nekada jedinstvenog OS-a na nekoliko linija koje postepeno gube kompatibilnost - došla je u sukob s jednim od kamena temeljaca Unix ideologije: prenosivost sistema između različitih platformi i njegove primjene s jednog Unix sistema na sistem. drugi. Što je oživjelo aktivnosti raznih vrsta organizacija za standardizaciju, koje su na kraju završile stvaranjem seta standarda POSIX, o čemu je već bilo riječi.

Linus Torvalds se oslanjao na POSIX standarde, stvarajući "od nule" (tj. bez korištenja prethodno postojećeg koda) svoj operativni sistem - Linux. A ona je, brzo i uspješno savladavši tradicionalna područja primjene Unix sistema (razvoj softvera, komunikacije, internet), na kraju otvorila za njih novu - desktop korisničke platforme opšte namjene. To je ono što ga je učinilo popularnim među ljudima - popularnost koja nadmašuje sve ostale Unix sisteme zajedno, i vlasničke i besplatne.

Dalje ćemo govoriti o radu na Unix sistemima u najširem smislu te riječi, ne uzimajući u obzir bilo kakvu vrstu žigova i druge pravne probleme. Iako će glavni primjeri vezani za metode rada preuzeti iz područja njihovih besplatnih implementacija - Linuxa, u manjoj mjeri FreeBSD-a, a još manje - iz drugih BSD sistema.

Gdje nabaviti besplatni Unix?

FreeBSD baza podataka - www.freebsd.org;

Možete otići na www.sco.com


Glavni dio. (Opis Unixa)

1. Osnovni koncepti Unixa

Unix je baziran na dva osnovna koncepta: "proces" i "file". Procesi su dinamička strana sistema, oni su subjekti; a fajlovi - statični, to su objekti procesa. Gotovo cijelo sučelje između procesa koji su u interakciji sa kernelom i međusobno izgleda kao pisanje/čitanje datoteka. Iako trebate dodati stvari kao što su signali, zajednička memorija i semafori.

Procesi se mogu grubo podijeliti u dvije vrste - zadatke i demone. Zadatak je proces koji radi svoj posao, nastojeći ga što prije završiti i završiti. Daemon čeka događaje koje treba obraditi, obrađuje događaje koji su se dogodili i ponovo čeka; obično se završava redosledom drugog procesa, najčešće ga ubije korisnik davanjem komande "kill process_number". U tom smislu, ispada da je interaktivni zadatak koji obrađuje korisnički unos više kao demon nego zadatak.

2. Sistem datoteka

U starim Unix-ovima je imenu bilo dodijeljeno 14 slova, u novim je ovo ograničenje uklonjeno. Pored naziva datoteke, direktorij sadrži svoj inode identifikator - cijeli broj koji određuje broj bloka u kojem se nalazi Zapisuju se atributi datoteke Među njima: korisnički broj - vlasnik datoteke, grupe brojeva Broj referenci na datoteku (vidi dolje) Datum i vrijeme kreiranja, posljednje izmjene i posljednjeg pristupa datoteci Atributi pristupa Atributi pristupa sadrže datoteku tip (vidi dolje), prava promjene atributa pri pokretanju (vidi dolje) i dozvole pristupa njemu za vlasnika, kolege i druge za čitanje, pisanje i izvršavanje. imenik.

Svaka datoteka (ali ne i direktorij) može biti poznata pod nekoliko imena, ali moraju biti na istoj particiji. Sve veze ka fajlu su jednake; datoteka se briše kada se ukloni posljednja veza do datoteke. Ako je datoteka otvorena (za čitanje i/ili pisanje), tada se broj veza do nje povećava za još jednu; ovo je koliko programa koji otvore privremeni fajl odmah ga izbrišu tako da ako se sruše, kada operativni sistem zatvori datoteke koje je proces otvorio, operativni sistem će ovu privremenu datoteku izbrisati.

Postoji još jedna zanimljiva karakteristika sistema datoteka: ako nakon kreiranja datoteke pisanje u nju nije bilo u nizu, već u velikim intervalima, tada se za te intervale ne dodjeljuje prostor na disku. Dakle, ukupni volumen datoteka na particiji može biti veći od volumena particije, a kada se takav fajl izbriše, oslobađa se manje prostora od njegove veličine.

2.1 Tipovi datoteka

Fajlovi su sljedećih tipova:

redovni fajl direktnog pristupa;

direktorij (datoteka koja sadrži nazive i identifikatore drugih datoteka);

simbolička veza (niz sa imenom druge datoteke);

blok uređaj (disk ili magnetna traka);

serijski uređaj (terminali, serijski i paralelni portovi; diskovi i trake također imaju sučelje serijskog uređaja)

imenovani kanal.

Posebne datoteke dizajnirane za rad s uređajima obično se nalaze u direktoriju "/dev". Evo nekih od njih (u nominaciji FreeBSD):

tty* - terminali, uključujući: ttyv - virtuelnu konzolu;

ttyd - DialIn terminal (obično serijski port);

cuaa - DialOut linija

ttyp - mrežni pseudo-terminal;

tty - terminal s kojim je zadatak povezan;

wd* - tvrdi diskovi i njihovi pododjeljci, uključujući: wd - tvrdi disk;

wds - particija ovog diska (ovdje se zove "slice");

wds - pregrada;

fd - disketa;

rwd*, rfd* - isto kao wd* i fd*, ali sa sekvencijalnim pristupom;

Ponekad je potrebno da program koji je pokrenuo korisnik nema prava korisnika koji ga je pokrenuo, već neka druga. U ovom slučaju, atribut prava promjene je postavljen na prava korisnika - vlasnika programa. (Kao primer daću program koji čita fajl sa pitanjima i odgovorima i na osnovu onoga što je pročitao testira učenika koji je pokrenuo ovaj program. Program mora imati pravo da čita fajl sa odgovorima, ali učenik ko ga je pokrenuo ne bi trebao.) Na primjer, radi program passwd sa kojim korisnik može promijeniti svoju lozinku. Korisnik može pokrenuti program passwd, može napraviti promjene u sistemskoj bazi podataka - ali korisnik ne može.

Za razliku od DOS-a, gdje je puno ime datoteke "drive:pathname" i RISC-OS, što je "-filesystem-drive:$.pathname" (što općenito ima svoje prednosti), Unix koristi transparentnu notaciju u obliku "/path/name ". Koren se meri od particije sa koje je učitano Unix kernel. Ako treba koristiti drugu particiju (a particija za pokretanje obično sadrži samo ono što je potrebno za pokretanje), koristi se naredba `mount /dev/partitionfile dir`. Istovremeno, datoteke i poddirektoriji koji su prethodno bili u ovom direktoriju postaju nedostupni sve dok se particija ne demontira (prirodno, svi normalni ljudi koriste prazne direktorije za montiranje particija). Samo nadzornik ima pravo montiranja i demontaže.

Prilikom pokretanja, svaki proces može očekivati ​​da će za njega imati otvorene tri datoteke, koje poznaje kao standardni ulazni stdin na deskriptoru 0; standardni izlazni stdout na deskriptoru 1; i standardni izlazni stderr na deskriptoru 2. Kada je prijavljen, kada korisnik unese korisničko ime i lozinku i ljuska se pokrene, sva tri se usmjeravaju na /dev/tty; kasnije se bilo koji od njih može preusmjeriti na bilo koju datoteku.

3. Komandni tumač

Unix skoro uvek dolazi sa dve ljuske, sh (ljuska) i csh (ljuska nalik C). Pored njih, tu su i bash (Bourne), ksh (Korn) i drugi. Ne ulazeći u detalje, evo općih principa:

Sve naredbe osim promjene trenutnog direktorija, postavljanja varijabli okruženja (okruženje) i izraza strukturiranog programiranja su vanjski programi. Ovi programi se obično nalaze u direktorijumima /bin i /usr/bin. Programi za administraciju sistema - u direktorijumima /sbin i /usr/sbin.

Naredba se sastoji od imena programa koji se pokreće i argumenata. Argumenti su odvojeni od naziva komande i jedan od drugog razmacima i tabulatorima. Neke posebne znakove interpretira sama školjka. Specijalni znakovi su " " ` ! $ ^ * ? | & ; (šta još?).

Možete dati više naredbi na istoj komandnoj liniji. Timovi se mogu podijeliti; (uzastopno izvršavanje naredbi), & (asinhrono istovremeno izvršavanje naredbi), | (sinhrono izvršenje, stdout prve naredbe će biti unesen u stdin druge).

Takođe možete uzeti standardni unos iz datoteke uključivanjem "file" (datoteka će biti nulta) ili ">>file" (unos će biti upisan na kraj datoteke) kao jedan od argumenata.

Ako su vam potrebne informacije o bilo kojoj komandi, izdajte naredbu "man command_name". Ovo će biti prikazano na ekranu kroz program "više" - pogledajte kako da njime upravljate na svom Unixu pomoću komande `man more`.

4. UNIX kernel

Kao i svaki drugi višekorisnički operativni sistem koji štiti korisnike jedni od drugih i štiti sistemske podatke od bilo kog neprivilegovanog korisnika, UNIX ima bezbedno jezgro koje upravlja računarskim resursima i pruža korisnicima osnovni skup usluga.

Pogodnost i efikasnost modernih verzija UNIX operativnog sistema ne znači da je ceo sistem, uključujući kernel, dizajniran i strukturiran na najbolji mogući način. UNIX operativni sistem je evoluirao tokom godina (to je prvi operativni sistem u istoriji koji nastavlja da stiče popularnost u tako zrelom dobu – više od 25 godina). Prirodno, mogućnosti sistema su rasle i, kao što se često dešava u velikim sistemima, kvalitativna poboljšanja strukture UNIX OS-a nisu pratila rast njegovih mogućnosti.

Kao rezultat toga, jezgro najsavremenijih komercijalnih verzija UNIX operativnog sistema je veliki, ne baš dobro strukturiran monolit. Iz tog razloga, programiranje na nivou UNIX kernela i dalje ostaje umjetnost (osim dobro uspostavljene i razumljive tehnologije za razvoj vanjskih drajvera uređaja). Ovaj nedostatak proizvodnosti u organizaciji UNIX kernela ne zadovoljava mnoge. Otuda želja za potpunom reprodukcijom UNIX OS okruženja sa potpuno drugačijom organizacijom sistema.

Zbog najveće rasprostranjenosti, UNIX System V kernel se često raspravlja (može se smatrati tradicionalnim).

4.1 Opća organizacija tradicionalnog UNIX kernela

Jedno od glavnih dostignuća UNIX OS-a je da sistem ima svojstvo visoke mobilnosti. Značenje ovog kvaliteta je da se cijeli operativni sistem, uključujući i njegovo jezgro, relativno lako prenosi na različite hardverske platforme. Svi dijelovi sistema, osim kernela, potpuno su neovisni o stroju. Ove komponente su uredno napisane u C-u, a njihovo prenošenje na novu platformu (barem na 32-bitnu klasu računara) zahtijeva samo ponovno kompiliranje. izvorni kod na ciljne kompjuterske kodove.

Naravno, najveći problemi su povezani sa jezgrom sistema, koji u potpunosti skriva specifičnosti računara koji se koristi, ali i sam zavisi od ovih specifičnosti. Kao rezultat promišljenog odvajanja komponenti jezgra zavisnih od stroja i neovisnih o stroju (očigledno, sa stanovišta programera operativnog sistema, ovo je najveće dostignuće programera tradicionalnog jezgra UNIX OS-a), bilo je moguće je postići da glavni dio kernela ne ovisi o arhitektonskim karakteristikama ciljne platforme, da je u potpunosti napisan u C-u i potrebna je samo rekompilacija da bi se prenio na novu platformu.

Međutim, relativno mali dio kernela ovisi o stroju i napisan je u mješavini C i asemblerskog jezika ciljnog procesora. Prilikom prenosa sistema na novu platformu, ovaj dio kernela mora biti prepisan koristeći asemblerski jezik i uzimajući u obzir specifične karakteristike ciljnog hardvera. Dijelovi jezgra zavisni od stroja dobro su izolovani od glavnog strojno neovisnog dijela, a uz dobro razumijevanje svrhe svake komponente zavisne od stroja, prepisivanje dijela specifičnog za mašinu je uglavnom tehnički zadatak (iako zahtijeva visoke veštine programiranja).

Strojno specifičan dio tradicionalnog UNIX kernela uključuje sljedeće komponente:

promocija i inicijalizacija sistema na niskom nivou (do sada zavisi od karakteristika hardvera);

primarna obrada internih i eksternih prekida;

upravljanje memorijom (u dijelu koji se odnosi na karakteristike hardverske podrške virtuelne memorije);

prebacivanje konteksta procesa između korisničkog i kernel moda;

dijelovi drajvera uređaja specifični za ciljnu platformu.

4.2 Glavne funkcije kernela

Glavne funkcije kernela UNIX OS-a uključuju sljedeće:

(a) Inicijalizacija sistema – funkcija pokretanja i pokretanja. Kernel pruža alat za pokretanje koji učitava cijeli kernel u memoriju računala i pokreće kernel.

(b) Upravljanje procesima i nitima – funkcija kreiranja, prekidanja i praćenja postojećih procesa i niti („procesi“ koji se pokreću na zajedničkoj virtuelnoj memoriji). Pošto je UNIX višeprocesni operativni sistem, kernel obezbeđuje deljenje procesorskog vremena (ili procesora u višeprocesorskim sistemima) i drugih računarskih resursa između pokrenutih procesa kako bi se dao izgled da se procesi zapravo pokreću paralelno.

(c) Upravljanje memorijom je funkcija mapiranja virtualno neograničene virtuelne memorije procesa u fizički RAM računara, koji je ograničen po veličini. Odgovarajuća komponenta kernela omogućava zajedničko korištenje istih područja RAM-a od strane nekoliko procesa koji koriste vanjsku memoriju.

(d) Upravljanje datotekama – funkcija koja implementira apstrakciju sistema datoteka – hijerarhije direktorija i datoteka. UNIX sistem datoteka podržava nekoliko tipova datoteka. Neke datoteke mogu sadržavati ASCII podatke, druge će odgovarati vanjskim uređajima. Sistem datoteka pohranjuje objektne datoteke, izvršne datoteke i tako dalje. Datoteke se obično pohranjuju na vanjskim uređajima za pohranu; pristup im je omogućen putem kernela. Postoji nekoliko tipova organizacije sistema datoteka u UNIX svijetu. Moderne verzije UNIX operativnog sistema istovremeno podržavaju većinu tipova sistema datoteka.

(e) Komunikacija znači - funkcija koja pruža mogućnost razmjene podataka između procesa koji se pokreću unutar istog računala (IPC - Inter-Process Communications), između procesa koji se pokreću u različitim čvorovima lokalne ili široke mreže podataka, kao i između procesa i drajveri za eksterne uređaje.

(f) Programski interfejs - funkcija koja omogućava pristup mogućnostima kernela sa strane korisničkih procesa na osnovu mehanizma sistemskih poziva, raspoređenih u obliku biblioteke funkcija.

4.3 Principi interakcije sa jezgrom

U svakom operativnom sistemu podržan je neki mehanizam koji omogućava korisničkim programima da pristupe uslugama kernela OS-a. U operativnim sistemima najpoznatijeg sovjetskog računara BESM-6, odgovarajuća sredstva komunikacije sa jezgrom su se zvala ekstrakodovi, u IBM operativnim sistemima su se zvali sistemski makroi itd. Na UNIX-u, ove mogućnosti se nazivaju sistemski pozivi.

Naziv ne mijenja značenje, a to je da se za pristup funkcijama kernela OS koriste "posebne instrukcije" procesora, kada se izvršavaju, dolazi do posebne vrste internog prekida procesora, koji ga prenosi u kernel mod (u većini modernih OS ovaj tip prekida se naziva trap - trap). Prilikom obrade takvih prekida (dešifriranja), OS kernel prepoznaje da je prekid zapravo zahtjev kernelu od korisničkog programa da izvrši određene radnje, odabire parametre poziva i obrađuje ih, a zatim vrši "povratak iz prekida". ", nastavljajući normalno izvršavanje korisničkog programa.

Jasno je da se specifični mehanizmi za podizanje internih prekida iniciranih od strane korisničkog programa razlikuju u različitim hardverskim arhitekturama. Pošto UNIX OS teži da obezbedi okruženje u kojem korisnički programi mogu biti potpuno mobilni, potreban je dodatni sloj da se sakriju specifičnosti specifičnog mehanizma za podizanje internih prekida. Ovaj mehanizam obezbeđuje takozvana biblioteka sistemskih poziva.

Za korisnika, biblioteka sistemskih poziva je redovna biblioteka unapred implementiranih funkcija C programskog sistema. Prilikom programiranja u C-u, korištenje bilo koje funkcije iz biblioteke sistemskih poziva ne razlikuje se od korištenja bilo koje izvorne ili bibliotečke C funkcije. Međutim, unutar bilo koje funkcije određene biblioteke sistemskih poziva sadrži kod koji je, općenito govoreći, specifičan za datu hardversku platformu.

4.4 Principi rukovanja prekidima

Naravno, mehanizam za rukovanje internim i eksternim prekidima koji se koriste u operativnim sistemima uglavnom zavisi od toga kakvu hardversku podršku za rukovanje prekidima pruža određena hardverska platforma. Srećom, do sada (i već neko vrijeme) veliki proizvođači računara su se de facto dogovorili o osnovnim mehanizmima prekida.

Ne baš precizno i ​​konkretno, suština mehanizma koji je danas usvojen je da svaki mogući prekid procesora (bilo da je interni ili eksterni) odgovara nekoj fiksnoj adresi fizičkog RAM-a. U trenutku kada se procesoru dozvoli prekid zbog prisustva internog ili eksternog zahtjeva za prekidom, dolazi do hardverskog prijenosa kontrole na fizičku RAM ćeliju sa odgovarajućom adresom - obično se adresa ove ćelije naziva "prekid". vektor" (obično se odmah zadovoljavaju zahtjevi za internim prekidom, tj. zahtjevi koji dolaze direktno od procesora).

Posao operativnog sistema je da u odgovarajuće ćelije RAM memorije postavi programski kod koji obezbeđuje početnu obradu prekida i pokreće potpunu obradu.

U osnovi, UNIX operativni sistem ima opšti pristup. U vektoru prekida koji odgovara eksternom prekidu, tj. prekid sa nekog eksternog uređaja, sadrži instrukcije koje postavljaju nivo pokretanja procesora (nivo pokretanja određuje na koje eksterne prekide procesor treba da reaguje odmah) i prelazi na puni rukovalac prekida u odgovarajućem drajveru uređaja. Za interni prekid (na primjer, prekid koji je pokrenuo korisnički program kada u glavnoj memoriji nedostaje tražena stranica virtualne memorije, kada se dogodi izuzetak u korisničkom programu, itd.) ili prekid tajmera, vektor prekida sadrži skočiti na odgovarajući UNIX kernel program.

5. I/O kontrola

Tradicionalno, UNIX OS razlikuje tri tipa I/O organizacije i, shodno tome, tri tipa drajvera. Blok I/O je uglavnom namenjen za rad sa direktorijumima i regularnim fajlovima sistema datoteka, koji na osnovnom nivou imaju blok strukturu. Na nivou korisnika, sada je moguće raditi sa datotekama direktnim mapiranjem u segmente virtuelne memorije. Ova sposobnost se smatra najvišim nivoom blok I/O. Na nižem nivou, blok I/O podržavaju drajveri bloka. Blok I/O je također podržan od strane sistemskog baferiranja.

Ulaz/izlaz karaktera se koristi za direktnu (bez baferovanja) razmjenu između adresnog prostora korisnika i odgovarajućeg uređaja. Podrška kernela zajednička za sve drajvere znakova je da obezbijedi funkcije za prijenos podataka između adresnog prostora korisnika i kernela.

Konačno, stream I/O je sličan karakternom I/O, ali zbog mogućnosti uključivanja posrednih modula za obradu u stream, ima mnogo više fleksibilnosti.

5.1 Principi sistemskog I/O baferovanja

Tradicionalni način smanjenja troškova pri izvođenju razmjene s vanjskim memorijskim uređajima koji imaju blok strukturu je blok I/O baferovanje. To znači da se bilo koji blok eksternog memorijskog uređaja prije svega čita u neki bafer glavne memorijske oblasti, koji se u UNIX OS-u zove sistemska keš memorija, a odatle se u potpunosti ili djelomično (u zavisnosti od tipa razmjene) kopira u odgovarajući korisnički prostor.

Principi organiziranja tradicionalnog mehanizma baferiranja su, prvo, da se kopija sadržaja bloka čuva u sistemskom međuspremniku sve dok ne postane neophodno zamijeniti ga zbog nedostatka međuspremnika (koristi se varijacija LRU algoritma za organizirati politiku zamjene). Drugo, prilikom pisanja bilo kojeg bloka vanjskog memorijskog uređaja, zapravo se vrši samo ažuriranje (ili formiranje i punjenje) keš bafera. Stvarna razmjena sa uređajem se vrši ili iskakanjem bafera zbog zamjene njegovog sadržaja, ili izdavanjem posebnog sync (ili fsync) sistemskog poziva, podržanog posebno za prisilno guranje ažuriranih bafera keša u vanjsku memoriju.

Ova tradicionalna šema baferovanja došla je u sukob sa alatima za upravljanje virtuelnom memorijom razvijenim u modernim verzijama UNIX OS-a, a posebno sa mehanizmom za mapiranje datoteka u segmente virtuelne memorije. Stoga je System V izdanje 4 uvelo novu šemu baferovanja, koja se trenutno koristi paralelno sa starom šemom.

Suština nove šeme je da se na nivou kernela zapravo reprodukuje mehanizam za mapiranje datoteka u segmente virtuelne memorije. Prvo, zapamtite da UNIX kernel zaista radi u vlastitoj virtualnoj memoriji. Ova memorija ima složeniju, ali u osnovi istu strukturu kao i virtualna memorija korisnika. Drugim riječima, virtualna memorija kernela je segmentna stranica i, zajedno sa virtualnom memorijom korisničkih procesa, podržana je zajedničkim podsistemom upravljanja virtualnom memorijom. Iz toga slijedi, kao drugo, da gotovo svaka funkcija koju kernel pruža korisnicima može biti pružena od strane nekih komponenti kernela drugim komponentama kernela. Ovo se posebno odnosi na mogućnost mapiranja datoteka u segmente virtuelne memorije.

Nova šema baferovanja u UNIX kernelu se uglavnom zasniva na činjenici da ne možete učiniti skoro ništa posebno da organizujete baferovanje. Kada jedan od korisničkih procesa otvori datoteku koja do tada nije bila otvorena, kernel formira novi segment i povezuje datoteku koja se otvara sa tim segmentom. Nakon toga (bez obzira da li će korisnički proces raditi s datotekom u tradicionalnom načinu rada koristeći sistemske pozive čitanja i pisanja ili će povezati datoteku sa segmentom virtualne memorije), na nivou kernela, rad će se obaviti sa segmentom kernela. kojem je datoteka priložena na nivou kernela. Osnovna ideja novog pristupa je da se eliminiše jaz između upravljanja virtuelnom memorijom i baferovanja na nivou sistema (to je trebalo odavno da se uradi, pošto je očigledno da bi glavno baferovanje u operativnom sistemu trebalo da obavlja komponenta upravljanja virtuelnom memorijom).

Zašto ne biste napustili stari mehanizam baferiranja? Stvar je u tome što nova šema pretpostavlja prisustvo nekog kontinuiranog adresiranja unutar eksternog memorijskog objekta (mora postojati izomorfizam između mapiranih i mapiranih objekata). Međutim, kada organizuje sistem datoteka, UNIX OS je prilično teško dodijeliti eksternu memoriju, što posebno vrijedi za i-čvorove. Stoga se neki blokovi vanjske memorije moraju smatrati izolovanim, i za njih se ispostavilo da je korisnije koristiti staru šemu međuspremnika (iako je možda moguće u sutrašnjim verzijama UNIX-a potpuno preći na jedinstvenu novu šemu).

5. 2 Sistemska poziva za I/O kontrolu

Da bi pristupio (tj. da bi mogao da izvrši naknadne I/O operacije) bilo kojoj vrsti datoteke (uključujući posebne datoteke), korisnički proces se prvo mora povezati na datoteku koristeći jedan od open, creat, dup ili pipe sistemskih poziva .

Redoslijed radnji otvorenog (naziv putanje, način rada) sistemskog poziva je sljedeći:

analizira se konzistentnost ulaznih parametara (uglavnom vezanih za zastavice načina pristupa datoteci);

dodijeliti ili locirati prostor za deskriptor datoteke u području podataka procesa sistema (u-oblast);

u području širom sistema, postojeći prostor je dodijeljen ili lociran za smještaj deskriptora sistemske datoteke (struktura datoteke);

arhiva sistema datoteka se traži za objekt pod nazivom "pathname" i deskriptor datoteke na nivou sistema datoteka (vnode u terminima UNIX V System 4) se generiše ili pronađe;

vnode je vezan za prethodno formiranu strukturu datoteke.

Otvoreni i kreirani sistemski pozivi su (skoro) funkcionalno ekvivalentni. Bilo koja postojeća datoteka može se otvoriti sa kreiranim sistemskim pozivom, a svaka nova datoteka može se kreirati otvorenim sistemskim pozivom. Međutim, u vezi sa kreiranim sistemskim pozivom, važno je naglasiti da, u svojoj prirodnoj upotrebi (za kreiranje datoteke), ovaj sistemski poziv kreira novi unos u odgovarajućem direktorijumu (prema datom nazivu putanje), a takođe kreira i na odgovarajući način inicijalizira novi i-čvor.

Konačno, sistemski poziv dup (duplicate - copy) dovodi do formiranja novog deskriptora za već otvorenu datoteku. Ovaj sistemski poziv specifičan za UNIX je za jedinu svrhu I/O preusmjeravanja.) Njegovo izvršenje se sastoji u kreiranju novog deskriptora otvorenog fajla u u-regiji sistemskog prostora korisničkog procesa, koji sadrži novoformirani deskriptor fajla (ceo broj), ali se odnosi na već postojeću strukturu fajla na nivou sistema i koji sadrži iste znakove i zastavice koji odgovaraju otvorenoj datoteci uzorka.

Drugi važni sistemski pozivi su sistemski pozivi za čitanje i pisanje. Sistemski poziv read se izvršava na sljedeći način:

deskriptor navedene datoteke nalazi se u tablici datoteka na nivou sistema i utvrđuje se da li je pristup datom procesu datoj datoteci u navedenom režimu legalan;

na neko (kratko) vrijeme se postavlja blokada sinhronizacije na vnode ove datoteke (sadržaj deskriptora se ne smije mijenjati u kritičnim trenucima operacije čitanja);

stvarno čitanje se izvodi pomoću starog ili novog mehanizma baferiranja, nakon čega se podaci kopiraju kako bi postali dostupni u korisničkom adresnom prostoru.

Operacija pisanja radi na isti način, ali mijenja sadržaj međuspremnika spremišta međuspremnika.

Sistemski poziv zatvaranja uzrokuje da upravljački program prekine pridruženi korisnički proces i (u slučaju posljednjeg zatvaranja uređaja) postavlja oznaku "slobodan upravljački program" za cijeli sistem.

Konačno, još jedan "poseban" ioctl sistemski poziv je podržan za posebne datoteke. Ovo je jedini sistemski poziv koji je predviđen za posebne datoteke i nije predviđen za druge vrste datoteka. U stvari, ioctl sistemski poziv vam omogućava da proizvoljno proširite interfejs bilo kog drajvera. Ioctl parametri uključuju opcode i pokazivač na neko područje memorije procesa korisnika. Svu interpretaciju operacijskog koda i pridruženih specifičnih parametara upravlja drajver.

Naravno, budući da su upravljački programi prvenstveno dizajnirani za kontrolu vanjskih uređaja, kod vozača mora sadržavati odgovarajuća sredstva za rukovanje prekidima iz uređaja. Poziv pojedinačnom rukovaocu prekida u drajveru dolazi iz kernela operativnog sistema. Slično tome, drajver može deklarisati "timeout" ulaz kojem kernel pristupa kada istekne vrijeme koje je prethodno naredio drajver (takva kontrola vremena je neophodna kada se upravlja manje inteligentnim uređajima).

Opšta šema organizacije interfejsa drajvera prikazana je na slici 3.5. Kao što ova slika pokazuje, u smislu interfejsa i upravljanja na nivou sistema, postoje dve vrste drajvera - karakterni i blok. Sa stanovišta interne organizacije, izdvaja se još jedna vrsta drajvera - stream driveri. Međutim, u pogledu njihovog eksternog interfejsa, drajveri za stream se ne razlikuju od drajvera karaktera.

6. Interfejsi i ulazne tačke drajvera

6.1 Blok drajveri

Blok drajveri su dizajnirani da opslužuju eksterne uređaje sa blok strukturom (magnetni diskovi, trake, itd.) i razlikuju se od drugih po tome što su razvijeni i izvršavani korišćenjem sistemskog baferovanja. Drugim riječima, takvi upravljački programi uvijek rade kroz sistemsko spremište međuspremnika. Kao što možete vidjeti na slici 3.5, svaki pristup za čitanje ili upisivanje upravljačkom programu bloka uvijek prolazi kroz pretprocesiranje, a to je pokušaj da se pronađe kopija željenog bloka u spremištu međuspremnika.

Ako kopija potrebnog bloka nije u spremištu međuspremnika, ili ako je iz nekog razloga potrebno zamijeniti sadržaj nekog ažuriranog međuspremnika, UNIX kernel poziva proceduru strategije odgovarajućeg drajvera bloka. Strategija pruža standardni interfejs između kernela i drajvera. Uz korištenje potprograma biblioteke namijenjenih za pisanje drajvera, procedura strategije može organizirati redove razmjena sa uređajem, na primjer, kako bi se optimiziralo kretanje magnetnih glava na disku. Sve razmjene koje izvodi blok drajver se izvode s bafer memorijom. Prepisivanje potrebnih informacija u memoriju odgovarajućeg korisničkog procesa provode programi kernela koji upravljaju baferima

6.2 Drajveri znakova

Drajveri znakova prvenstveno su dizajnirani da služe uređajima koji komuniciraju karakter po znak ili nizove znakova promjenjive dužine. Tipičan primer uređaja sa znakovima je jednostavan štampač koji prihvata jedan znak po razmeni.

Drajveri znakova ne koriste sistemsko baferovanje. Oni direktno kopiraju podatke iz korisničke procesne memorije kada izvode operacije pisanja, ili u korisničku procesnu memoriju kada izvode operacije čitanja, koristeći svoje vlastite bafere.

Treba napomenuti da je moguće obezbijediti karakterni interfejs za blok uređaj. U ovom slučaju, drajver bloka koristi dodatne karakteristike procedure strategije, što omogućava da se razmena izvrši bez upotrebe sistemskog baferovanja. Za drajver koji ima i blok i karakterni interfejs, kreiraju se dve posebne datoteke u sistemu datoteka, blok i karakter. Uz svaki poziv, vozač dobija informaciju o načinu u kojem se koristi.

6. 3 Stream Drivers

Glavna svrha stream mehanizma je povećanje nivoa modularnosti i fleksibilnosti drajvera sa složenom internom logikom (ovo se najviše odnosi na drajvere koji implementiraju napredne mrežne protokole). Specifičnost takvih drajvera je da većina programskog koda ne zavisi od karakteristika hardverskog uređaja. Štaviše, često je korisno kombinovati delove programskog koda na različite načine.

Sve je to dovelo do pojave streaming arhitekture drajvera, koji su dvosmjerni cevovod modula za obradu. Na početku cjevovoda (najbliže korisničkom procesu) nalazi se zaglavlje toka, kojem prvenstveno pristupa korisnik. Na kraju cjevovoda (najbliže uređaju) nalazi se normalni drajver uređaja. U praznini se može locirati proizvoljan broj modula za obradu, od kojih je svaki dizajniran u skladu sa potrebnim streaming interfejsom.

7. Komande i pomoćni programi

Kada rade interaktivno u UNIX OS okruženju, oni koriste različite uslužne programe ili eksterne komande jezika ljuske. Mnogi od ovih uslužnih programa su složeni kao i sama ljuska (i usput, sama shell shell je jedan od uslužnih programa koje možete pozvati iz komandne linije).

7. 1 Timska organizacija u UNIX OS-u

Da biste kreirali novu naredbu, samo trebate slijediti pravila C programiranja. Svaki dobro oblikovan C program počinje svoje izvršavanje sa glavnom funkcijom. Ova "polusistemska" funkcija ima standardni interfejs, koji je osnova za organizovanje komandi koje se mogu pozvati u okruženju ljuske. Eksterne komande izvršava shell interpreter koristeći gomilu fork sistemskih poziva i jednu od exec opcija. Parametri exec sistemskog poziva uključuju skup tekstualnih nizova. Ovaj skup tekstualnih nizova se prosljeđuje kao ulaz u glavnu funkciju programa koji se izvodi.

Preciznije, glavna funkcija uzima dva parametra - argc (broj tekstualnih nizova koje treba proći) i argv (pokazivač na niz pokazivača na tekstualne stringove). Program koji tvrdi da ga koristi kao naredbu ljuske mora imati dobro definiran eksterni interfejs(parametri se obično unose sa terminala) i moraju kontrolirati i pravilno analizirati ulazne parametre.

Takođe, da bi se uskladio sa stilom ljuske, takav program ne bi trebao sam po sebi nadjačati datoteke koje odgovaraju standardnom ulazu, standardnom izlazu i standardnoj grešci. Naredba se tada može preusmjeriti I/O na uobičajeni način i može se uključiti u cjevovode.

7.2 I/O preusmjeravanje i cjevovod

Kao što možete vidjeti iz posljednje rečenice prethodnog pasusa, ne morate raditi ništa posebno da biste omogućili I/O preusmjeravanje i cjevovod prilikom programiranja instrukcija. Dovoljno je jednostavno ostaviti tri početna deskriptora fajla netaknuta i raditi sa ovim fajlovima ispravno, naime, izvesti u datoteku sa deskriptorom stdout, uneti podatke iz stdin datoteke i ispisati poruke o grešci u stderror datoteku.

7. 3 Ugrađene, bibliotečke i korisničke komande

Ugrađene komande su dio programskog koda ljuske. Pokreću se kao potprogrami tumača i ne mogu se zamijeniti ili redefinirati. Sintaksa i semantika ugrađenih naredbi definirani su u odgovarajućem komandnom jeziku.

Komande biblioteke su dio sistemskog softvera. Ovo je skup izvršnih programa (uslužnih programa) koji se isporučuju s operativnim sistemom. Većina ovih programa (kao što su vi, emacs, grep, find, make, itd.) su izuzetno korisni u praksi, ali njihova rasprava je izvan okvira ovog kursa (postoje zasebne debele knjige).

Korisnička komanda je svaki izvršni program organiziran u skladu sa zahtjevima navedenim u. Dakle, svaki korisnik UNIX OS-a može neograničeno proširiti repertoar vanjskih komandi svog komandnog jezika (na primjer, možete napisati svoj vlastiti interpreter komandi).

7.4 Programiranje na komandnom jeziku

Bilo koja od pomenutih varijanti jezika ljuske se u principu može koristiti kao programski jezik. Među korisnicima UNIX-a ima mnogo ljudi koji pišu prilično ozbiljne programe na ljusci. Za programiranje je bolje koristiti programske jezike (C, C++, Pascal, itd.) nego komandne jezike.


8. GUI alati

Iako mnogi profesionalni UNIX programeri danas više vole da koriste tradicionalne linije zasnovane na načinima interakcije sa sistemom, široka upotreba relativno jeftinih grafičkih terminala u boji visoke rezolucije dovela je do činjenice da sve moderne verzije UNIX OS-a podržavaju grafičke korisnike. interfejsa sa sistemom., a korisnicima su obezbeđeni alati za razvoj grafičkih interfejsa sa programima koje razvijaju. Sa stanovišta krajnjeg korisnika, alati grafičkog interfejsa podržani u različitim verzijama UNIX OS-a, kao iu drugim sistemima (na primer, MS Windows ili Windows NT), stilski su približno isti.

Prvo, u svim slučajevima podržan je višeprozorski način rada sa ekranom terminala. U svakom trenutku korisnik može kreirati novi prozor i povezati ga sa željenim programom koji radi sa ovim prozorom kao sa zasebnim terminalom. Prozori se mogu premještati, mijenjati veličinu, privremeno zatvarati itd.

Drugo, u svim modernim varijantama grafičkog interfejsa podržana je kontrola mišem. U slučaju UNIX-a, često se ispostavi da se normalna terminalna tastatura koristi samo kada se prelazi na tradicionalni linijski interfejs (iako u većini slučajeva barem jedan terminalski prozor pokreće jednu od školjki porodice).

Treće, ovakvo širenje "miš" stila rada moguće je korištenjem alata interfejsa baziranih na piktogramima (ikonama) i menijima. U većini slučajeva, program koji radi u određenom prozoru traži od korisnika da odabere bilo koju funkciju koju će izvršiti, bilo prikazivanjem skupa simboličkih slika mogućih funkcija (ikona) u prozoru, ili nudeći meni na više nivoa. . U svakom slučaju, za dalji odabir dovoljno je mišem kontrolisati kursor odgovarajućeg prozora.

Konačno, moderna grafička sučelja su "user-friendly", pružajući mogućnost da odmah dobijete interaktivnu pomoć za svaku priliku. (Možda bi bilo tačnije reći da je dobar GUI stil programiranja onaj koji zapravo pruža takve savjete.)

Nakon nabrajanja svih ovih opštih svojstava modernih GUI alata, može se postaviti prirodno pitanje: Ako postoji takva uniformnost u oblasti grafičkih interfejsa, šta je posebno u vezi sa grafičkim interfejsima u UNIX okruženju? Odgovor je dovoljno jednostavan. Da, krajnji korisnik se zaista u svakom današnjem sistemu bavi približno istim skupom karakteristika interfejsa, ali u različitim sistemima ove karakteristike se postižu na različite načine. Kao i obično, prednost UNIX-a je dostupnost standardizovanih tehnologija koje vam omogućavaju da kreirate mobilne aplikacije sa grafičkim interfejsom.

8. Principi zaštite

Budući da je UNIX operativni sistem od samog početka zamišljen kao višekorisnički operativni sistem, problem autorizacije pristupa različitim korisnicima datotekama sistema datoteka je u njemu oduvek bio aktuelan. Autorizacija pristupa se odnosi na sistemske radnje koje dozvoljavaju ili odbijaju datom korisniku pristup datoj datoteci, ovisno o pravima pristupa korisnika i ograničenjima pristupa postavljenim za datoteku. Šema autorizacije pristupa koja se koristi u UNIX OS-u je toliko jednostavna i praktična, a istovremeno toliko moćna da je postala de facto standard modernih operativnih sistema (koji ne pretenduju da budu sistemi sa višerazinskom zaštitom).

8.1 Korisnički ID-ovi i korisničke grupe

Svaki pokrenuti proces u UNIX-u je povezan sa stvarnim korisničkim ID-om, efektivnim korisničkim ID-om i sačuvanim korisničkim ID-om. Svi ovi identifikatori se postavljaju pomoću setuid sistemskog poziva, koji se može izvršiti samo u režimu superkorisnika. Slično, svaki proces ima tri ID-a korisničkih grupa povezanih s njim - stvarni ID grupe, efektivni ID grupe i ID sačuvane grupe. Ovi identifikatori su postavljeni privilegovanim sistemskim pozivom setgid.

Kada se korisnik prijavi na sistem, program za prijavu provjerava da li je korisnik prijavljen i da zna ispravnu lozinku (ako je postavljena), kreira novi proces i u njemu pokreće ljusku potrebnu za ovog korisnika. Ali prije nego što to učinite, login postavlja ID-ove korisnika i grupe za novokreirani proces koristeći informacije pohranjene u datotekama /etc/passwd i /etc/group. Jednom kada su ID-ovi korisnika i grupe povezani s procesom, na taj proces se primjenjuju ograničenja pristupa fajlovima. Proces može pristupiti ili izvršiti datoteku (ako datoteka sadrži izvršni program) samo ako mu ograničenja pristupa datoteci to dozvoljavaju. Identifikatori povezani s procesom prosljeđuju se procesima koje on kreira, podložni istim ograničenjima. Međutim, u nekim slučajevima proces može promijeniti svoje dozvole koristeći setuid i setgid sistemske pozive, a ponekad sistem može automatski promijeniti dozvole procesa.

Razmotrite, na primjer, sljedeću situaciju. U datoteku /etc/passwd niko ne može pisati osim superkorisnika (superkorisnik može pisati u bilo koju datoteku). Ovaj fajl, između ostalog, sadrži korisničke lozinke i svakom korisniku je dozvoljeno da promijeni svoju lozinku. Dostupan poseban program/bin/passwd, koji mijenja lozinke. Međutim, korisnik to ne može učiniti čak ni sa ovim programom, jer u datoteku /etc/passwd nije dozvoljeno pisati. Na UNIX sistemu, ovaj problem se rješava na sljedeći način. Izvršna datoteka može specificirati da kada se pokrene, treba postaviti identifikatore korisnika i/ili grupe. Ako korisnik zatraži izvršenje takvog programa (koristeći exec sistemski poziv), tada se korisnički ID odgovarajućeg procesa postavlja na onaj vlasnika izvršne datoteke i/ili ID grupe tog vlasnika. Konkretno, kada se pokrene program /bin/passwd, proces će imati root ID i program će moći da piše u datoteku /etc/passwd.

I za ID korisnika i za ID grupe, pravi ID je pravi ID, a efektivni ID je ID trenutnog izvršenja. Ako se trenutni ID korisnika poklapa sa superkorisnikom, tada se taj id i ID grupe mogu vratiti na bilo koju vrijednost pomoću sistemskih poziva setuid i setgid. Ako se trenutni ID korisnika razlikuje od ID-a superkorisnika, tada izvršavanje sistemskih poziva setuid i setgid uzrokuje da se trenutni ID zamijeni pravim ID-om (korisnik ili grupa, respektivno).

8.2 Zaštita datoteka

Kao što je uobičajeno u višekorisničkom operativnom sistemu, UNIX održava jedinstven mehanizam za kontrolu pristupa datotekama i direktorijumima sistema datoteka. Bilo koji proces može pristupiti određenoj datoteci ako i samo ako prava pristupa opisana uz datoteku odgovaraju mogućnostima ovog procesa.

Zaštita datoteka od neovlaštenog pristupa u UNIX-u zasniva se na tri činjenice. Prvo, svaki proces koji kreira datoteku (ili direktorij) povezan je s nekim jedinstvenim identifikatorom korisnika (UID - User Identifier) ​​u sistemu, koji se dalje može tretirati kao identifikator vlasnika novokreirane datoteke. Drugo, svaki proces koji pokušava da pristupi datoteci ima par identifikatora pridruženih njemu, identifikatore trenutnog korisnika i grupe. Treće, svaka datoteka jedinstveno odgovara svom deskriptoru - i-čvoru.

Svaki i-čvor koji se koristi u sistemu datoteka uvijek jedinstveno odgovara jednoj i samo jednoj datoteci. I-čvor sadrži dosta različitih informacija (većina je dostupna korisnicima kroz sistemske pozive stat i fstat), a među tim informacijama postoji dio koji omogućava sistemu datoteka da procijeni prava pristupa datom procesu. na datu datoteku u traženom načinu.

Opšti principi zaštite su isti za sve postojeće varijante sistema: informacije o i-čvoru uključuju UID i GID trenutnog vlasnika datoteke (odmah nakon kreiranja datoteke, identifikatori njenog trenutnog vlasnika se postavljaju na odgovarajući trenutni identifikator procesa kreatora, ali se kasnije može promijeniti sistemskim pozivima chown i chgrp) . Osim toga, skala je pohranjena u i-čvoru datoteke, koja pokazuje šta korisnik - njegov vlasnik može učiniti sa datotekom, šta korisnici koji pripadaju istoj korisničkoj grupi kao i vlasnik mogu učiniti sa datotekom i šta drugi može raditi sa fajlom korisnici. Mali detalji implementacije u različitim verzijama sistema se razlikuju.

8.3 Budući operativni sistemi koji podržavaju UNIX OS okruženje

Mikrokernel je najmanji jezgro operativnog sistema, koji služi kao osnova za modularne i prenosive ekstenzije. Čini se da će većina operativnih sistema sljedeće generacije imati mikrokernele. Međutim, postoji mnogo različitih mišljenja o tome kako usluge operativnog sistema treba da budu organizovane u odnosu na mikrokernel: kako dizajnirati drajvere uređaja da budu što efikasniji, ali da funkcije drajvera budu što je moguće nezavisnije od hardvera; da li operacije koje nisu jezgro treba da se izvode u prostoru kernela ili korisničkom prostoru; da li se isplati zadržati programe postojećih podsistema (na primjer, UNIX) ili je bolje odbaciti sve i početi od nule.

Koncept mikrokernela je u široku upotrebu uveo Next, čiji je operativni sistem koristio Mach mikrokernel. Malo, privilegovano jezgro ovog operativnog sistema, oko kojeg su se podsistemi pokretali u korisničkom režimu, teoretski je trebalo da obezbedi neviđenu fleksibilnost i modularnost sistema. Ali u praksi, ova prednost je donekle umanjena prisustvom monolitnog servera koji implementira UNIX BSD 4.3 operativni sistem, koji je Next izabrao da omota Mach mikrokernel. Međutim, oslanjanje na Mach omogućilo je uključivanje alata za razmjenu poruka i niza objektno orijentiranih uslužnih funkcija u sistem, na osnovu kojih je bilo moguće kreirati elegantno korisničko sučelje sa grafičkim alatima za konfiguraciju mreže, administraciju sistema. i razvoj softvera.

Sljedeći operativni sistem mikrokernela bio je Microsoftov Windows NT, gdje je ključna prednost korištenja mikrokernela bila ne samo modularnost već i prenosivost. (Imajte na umu da ne postoji konsenzus o tome da li NT zaista treba smatrati operativnim sistemom mikrojezgra.) NT je dizajniran da se koristi na jedno- i višeprocesorskim sistemima zasnovanim na Intel procesori, Mips i Alpha (i oni koji dolaze nakon njih). Pošto su programi napisani za DOS, Windows, OS/2 i Posix kompatibilne sisteme morali da rade na NT-u, Microsoft je koristio inherentnu modularnost pristupa mikrojezgra da stvori sveukupnu NT strukturu koja ne oponaša nijedan postojeći operativni sistem. Svaki operativni sistem se emulira kao poseban modul ili podsistem.

U skorije vreme, arhitekturu mikrokernel operativnih sistema najavili su Novell/USL, Open Software Foundation (OSF), IBM, Apple i drugi. Jedan od NT-ovih glavnih konkurenata u mikrokernel operativnim sistemima je Mach 3.0, sistem kreiran na Univerzitetu Carnegie Mellon koji su IBM i OSF preduzeli da komercijalizuju. (Next trenutno koristi Mach 2.5 kao osnovu za NextStep, ali takođe pažljivo gleda na Mach 3.0.) Još jedan konkurent je Chorus Systems mikrokernel Chorus 3.0, kojeg je USL izabrao kao osnovu za nove implementacije UNIX-a. Neki mikrokernel će se koristiti u Sunovom SpringOS-u, objektno orijentiranom nasljedniku Solarisa (ako, naravno, Sun dovrši SpringOS). Postoji očigledan trend prelaska sa monolitnih na mikrokernel sisteme (ovaj proces nije jednostavan: IBM je napravio korak unazad i odustao od prelaska na mikrokernel tehnologiju). Inače, ovo uopšte nije novost za QNX Software Systems i Unisys, koji već nekoliko godina objavljuju uspješne mikrokernel operativne sisteme. QNX OS je tražen na tržištu u realnom vremenu, a Unisysov CTOS je popularan u bankarstvu. Oba sistema uspješno koriste modularnost svojstvenu mikrokernel operativnim sistemima.


Zaključak

Glavne razlike između Unixa i drugih OS

Unix se sastoji od kernela sa uključenim drajverima i uslužnim programima (programi izvan kernela). Ako trebate promijeniti konfiguraciju (dodati uređaj, promijeniti port ili prekinuti), tada se kernel ponovo gradi (ponovo povezuje) iz objektnih modula ili (na primjer, u FreeBSD-u) iz izvora. Ovo nije sasvim tačno. Neki parametri se mogu korigovati bez ponovne izgradnje. Postoje i moduli kernela koji se mogu učitati.

Za razliku od Unixa, u Windows-u (ako nije precizirano koji, onda mislimo na 3.11, 95 i NT) i OS/2 pri učitavanju zapravo povezuju drajvere u pokretu. Istovremeno, kompaktnost sastavljeno jezgro i ponovna upotreba uobičajenog koda su za red veličine niže od. Osim toga, ako je konfiguracija sistema nepromijenjena, Unix kernel se može upisati u ROM i izvršiti _not_booted_ u RAM bez dorade (potrebno je samo promijeniti početni dio BIOS) Kompaktnost koda je posebno važna, jer kernel i drajveri nikada ne napuštaju fizičku memoriju ne zamenjuju se na disk.

Unix je OS sa najviše platformi. WindowsNT pokušava da ga imitira, ali do sada nije bio uspešan - nakon napuštanja MIPS-a i POWER-PC-a, W "NT je ostao na samo dve platforme - tradicionalnoj i*86 i DEC Alpha. Prenosivost programa sa jedne verzije Unixa Traljavo napisan program, koji ne uzima u obzir razlike u implementaciji Unixa, daje nerazumne pretpostavke kao što je "cijeli broj mora biti četiri bajta", može zahtijevati ozbiljnu preradu, ali je i dalje mnogo lakši od portiranja sa OS/2 na NT, na primjer.

Aplikacije Unixa

Unix se koristi i kao server i kao radna stanica. U nominaciji servera, takmiče se MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS i mainframe operativni sistemi. Svaki sistem ima svoje područje primjene u kojem je bolji od drugih.

WindowsNT je za administratore koji više vole korisničko sučelje nego uštedu resursa i visoke performanse.

Mrežni softver - za mreže u kojima su potrebne usluge datoteka i štampača visokih performansi, a druge usluge nisu toliko važne. Glavni nedostatak je što je teško pokrenuti aplikacije na Netware serveru.

OS/2 je dobar tamo gdje vam treba "lagani" server aplikacija. Zahtijeva manje resursa od NT-a, fleksibilniji je u upravljanju (iako može biti teže podesiti), a multitasking je vrlo dobar. Autorizacija i diferencijacija prava pristupa se ne implementiraju na nivou OS, što se više nego isplati implementacijom na nivou aplikacijskih servera. (Međutim, često drugi OS rade isto). Mnoge FIDOnet i BBS stanice su bazirane na OS/2.

VMS je moćan, ni na koji način inferioran u odnosu na Unix "am (i po mnogo čemu superiorniji od njega) aplikacijski server, ali samo za DEC VAX i Alpha platforme.

Mainframe - za opsluživanje veoma velikog broja korisnika (reda nekoliko hiljada). Ali rad ovih korisnika obično je organiziran u obliku ne interakcije klijent-server, već u obliku host-terminal interakcije. Terminal u ovom paru nije klijent, već server (Internet World, N3 za 1996.). Prednosti mainframe-a uključuju veću sigurnost i toleranciju grešaka, a nedostaci su cijena koja odgovara ovim kvalitetima.

Unix je dobar za vešte (ili spremne da postanu) administratore, jer zahtijeva poznavanje principa funkcionisanja procesa koji se u njemu odvijaju. Pravi multitasking i hard memory sharing obezbeđuju visoku pouzdanost sistema, iako su performanse Unix servisa datoteka i štampanja inferiornije u odnosu na Netware.

Nedostatak fleksibilnosti u davanju korisničkih prava pristupa datotekama u poređenju sa WindowsNT-om otežava organizovanje grupnog pristupa podacima (tačnije datotekama) na nivou datotečnog sistema, što je, po mom mišljenju, nadoknađeno lakoćom implementacije, što znači manje hardvera. zahtjevi. Međutim, aplikacije poput SQL Servera same rješavaju problem grupnog pristupa podacima, tako da je nedostatak mogućnosti Unixa da uskrati pristup _file_ određenom korisniku, po mom mišljenju, očigledno suvišan.

Gotovo svi protokoli na kojima se temelji Internet razvijeni su pod Unix-om, a posebno je stek TCP/IP protokola izmišljen na Univerzitetu Berkeley.

Unix-ova sigurnost, kada se pravilno administrira (a kada nije?), ni na koji način nije inferiorna u odnosu na Novell ili WindowsNT.

Važna karakteristika Unixa koja ga približava glavnim računarima je njegova multiterminalnost, mnogi korisnici mogu istovremeno pokretati programe na istoj Unix mašini. Ako ne trebate koristiti grafiku, možete se snaći sa jeftinim tekstualnim terminalima (specijaliziranim ili jeftinim PC-baziranim) povezanim preko sporih linija. U tome se samo VMS takmiči s njim. Grafički X terminali se takođe mogu koristiti kada su prozori procesa koji se pokreću na različitim mašinama prisutni na istom ekranu.

U nominaciji radne stanice, Unix se takmiči sa MS Windows*, IBM OS/2, Macintoshom i Acorn RISC-OS.

Windows - za one koji cijene kompatibilnost prije efikasnosti; za one koji su spremni kupiti veliku količinu memorije, prostora na disku i megaherca; za one koji vole da se ne upuštaju u suštinu, kliknite na dugmad u prozoru. Istina, prije ili kasnije i dalje ćete morati proučiti principe sistema i protokola, ali tada će biti kasno - izbor je napravljen. Važna prednost Windows-a se takođe mora prepoznati kao mogućnost krađe gomile softvera.

OS/2 - za ljubitelje OS/2. :-) Iako, prema nekim izvještajima, OS/2 bolje komunicira od drugih s mainframe-ima i IBM mrežama.

Macintosh - za grafička, izdavačka i muzička dela, kao i za one koji vole jasan, lep interfejs i ne žele (ne mogu) da razumeju detalje sistema.

RISC-OS, flešovan u ROM-u, omogućava vam da ne gubite vreme na instalaciju operativnog sistema i vraćanje u prethodno stanje nakon kvarova. Osim toga, gotovo svi programi pod njim koriste resurse vrlo ekonomično, tako da im nije potrebna zamjena i rade vrlo brzo.

Unix funkcioniše i na računarima i na moćnim radnim stanicama sa RISC procesorima; zaista moćni CAD sistemi i geografski informacioni sistemi su napisani pod Unixom. Prema nekim autorima, skalabilnost Unixa zbog njegove multiplatformske prirode je za red veličine superiornija u odnosu na bilo koji drugi operativni sistem.


Bibliografija

1. Udžbenik Kuznetsova S.D. ”UNIX operativni sistem” 2003;

2. Polyakov A.D. “UNIX 5. izdanje na x86, ili ne zaboravite istoriju”;

3. Karpov D.Yu. "UNIX" 2005;

4. Fedorchuk A.V. Unix Mastery, 2006

5. Materijali sajta http://www.citforum.ru/operating_systems/1-16;

MINISTARSTVO PROSVETE I NAUKE RUJSKE FEDERACIJE FEDERALNA AGENCIJA ZA OBRAZOVANJE DRŽAVNA OBRAZOVNA USTANOVA VISOKOG STRUČNOG OBRAZOVANJA
mob_info