1 Įvadas į UNIX 1.1 Trumpa UNIX istorija 1965 – Bell Laboratories, MIT ir General Electric susitaria kurti naują operacinę sistemą, Multics, turinčią šias savybes: daugia-vartotojiškumą, daugia-procesoriškumą, hierarchinę failų sistemą ir kitas savybes. 1969 – AТ&T netenkina kūrimo progresas ir ji palieka projektą. Keli Bell Labs programuotojai – Ken Thompson, Dennis Ritchie, Rudd Canaday ir Doug McIlroy suprojektuoja ir sukuria pirmąją UNIX failų sistemos versiją PDP-7 mašinai. Brian Kernighan ją pavadina UNIX. 1970, Sausio 1 – UNIX pradžia (time zero). 1971 – Sistema dirba PDP-11 mašinoje, kur 16K užėmė sistema, 8K skirti vartotojo programoms; disko dydis – 512K, o maksimalus failo dydis galėjo siekti 64K. Ši programa daugiausia buvo naudojama Bell Labs patentų departamente tekstų tvarkymui. Šia kryptimi toliau ir buvo vystoma UNIX sistema. UNIX tapo populiari tarp programuotojų dėl šių savybių: • programavimo aplinka; • paprastas vartotojų interfeisas; • paprastos pagalbinės programos, kurias apjungus atliekamos sudėtingos funkcijos; • hierarchinė failų sistema; • paprastas aparatinės įrangos interfeisas sutapatinamas su failais; • daugia-vartotojiška, daugia-procesoriška sistema; • nepriklausoma architektūra. 1973 – UNIX sistema perrašoma C kalba. Tai tuo metu nauja kalba, kurią sukūrė Dennis Ritchie. Ji evoliucionavo iš Tomson sukurtos B kalbos, kuri, savo ruožtu, buvo FORTRAN kompiliatoriaus tobulinimo paseka. C kalba žymiai palengvino sistemos adaptavimą naujoms mašinoms. 1974 – Ritchie ir Thompson parašo straipsnį “Communications of the ACM” žurnale, kuriame aprašo naują OS – UNIX. Tai sukelia akademinės visuomenės entuziazmą, kuri mato UNIX esant gera mokymosi priemone. AT&T buvo supančiotas sutartimis ir negalėjo pardavinėti naujo produkto, todėl universitetams, mokymosi tikslams, suteikė nemokamas licenzijas. 1.2 Sistemos redakcijos 1970-ųjų pabaigoje AT&T sukūrė UNIX Support Group (USG, vėliau UNIX System Laboratories, USL), kuri turėjo paruošti UNIX komercijai. Bell Labs ir USG toliau vystė sistemą, tačiau jų nuomonės išsiskyrė. USL išleido labai populiarias System III ir System V UNIX versijas. Kiekvienai sistemos versijai buvo rašomi programuotojo vadovai, jų vis naujos redakcijos (edition) ir nuo to prie UNIX prikibo redakcijos pavadinimas. Viso yra išleista 10 redakcijų, pirmoji 1970, o paskutinioji – 1989 metais. Pirmosios 7 sukurtos Bell Labs CRG (Computer Research Group) ir buvo skirtos PDP, o vėliau VAX kompiuteriams. System 1 (1971) – parašyta asemblerio kalba PDP-11 mašinai. Turėjo B kompiliatorių ir įvairių pagalbinių komandų, tokių kaip cat, chdir, chmod, cp ir pan. System 2 (1973) – atsirado komanda cc(1), kuri paleido C kompilatorių. System 3 (1973) – C kalba perrašytas branduolys. 10 System 6 (1975) – pirmoji redakcija, kuri peržengė Bell Labs sienas. Visiškai perrašyta su C. Atsiranda naujos UNIX versijos, didėja populiarumas. Tomson ją suinstaliavo Berkeley universitete, kurios pagrindu atsirado BSD. System 7 (1979) – atsirado Bourne Shell’as, Kernighan ir Ritchie C kompiliatorius. Branduolys perrašomas palengvinant OS pernešimą ant kitų sistemų. Šios sistemos licenziją nusipirko Microsoft ir jos pagrindu vėliau sukūrė savo sistemą XENIX. 1.3 Tipai Grynos BSD ar System V sistemos niekada neturėjo komercinės vertės. Dauguma UNIX sistemų yra vystomos arba BSD, arba System V pagrindu. Todėl atsirado daugybė UNIX variantų ir versijų, nors jos visos kilo iš vieno iš dviejų arba abiejų (hibridinės sistemos) protėvių. 1.3.1 System V 1976 metais UNIX tapo laisvai prieinama universitetams. Taip ji pagrindine mokymo klasių, tyrinėjimo projektų operacine sistema. 1982 metais AT&T, nenorėdama prarasti iniciatyvos UNIX vystyme, surinko visas esančias UNIX versijas ir išleido System III UNIX’ą. Tai buvo sistema skirta platinimui. Ir dabar yra plačiai naudojamos System III pagrindu sukurtos sistemos. 1983 Bell Labs išleidžia System V. Neužilgo ją patobulina ir išleidžia System V Release 2 (SVR2). Buvo pristatyta nemažai naujovių, kaip kad tarp-procesinė sąveika (IPC). 1987 metais pasirodęs SVR3 jau turi daug naujų savybių, tokių kaip streams I/O posistemę, failų sistemos switch’ą, kuris leidžia vienu metu palaikyti įvairių tipų failų sistemas, programinį tinklo interfeisą (TLI – Trasport Layer Interface). Galų gale, 1989 metais išeina SVR4, kuri paveldi ne tik savo pirmtakų savybes, bet ir įgauna naujų pasiskolintų iš SunOS ir BSD sistemų. Štai kelios naujovės: • Korn ir C komandiniai interpretatoriai (BSD); • simbolinės nuorodos; • terminalinį I/O paremtą streams technologija (SV); • NFS ir RPC (SunOS); • FFS (BSD); • socket’s programinį interfeisą (BSD). 1.3.2 BSD 1977 Computer Systems Research Group (CSRG) iš University of California, Berkeley, nusiperka kodo licenziją iš AT&T ir taip prasideda Berkeley UNIX šaka. Dar 1977 metais CSRG išleidžia 1BSD (BSD – Berkeley Software Distribution) skirtą PDP-11 mašinai. Ši grupė 1993 išleido paskutinę – 4.4 versiją. AT&T kodo licenzijos visada buvo labai brangios (išskyrus akademines įstaigas). Universitetams licenzijos pradžioje buvo nemokamos arba labai pigios, tačiau kai pradėta UNIX komercija – kainos greitai kilo. Dėl pastarųjų priežasčių Berkeley iškėlė sau tikslą – perrašyti visą AT&T. Tai labai ilgas ir kruopštus darbas, todėl dar jo nebaigus CSRG neteko finansavimo ir buvo išformuota. Prieš išformavimą Berkeley išleido savo paskutinę laisvo kodo versiją – 4.4BSD-Lite. Daugelis dabartinių BSD UNIX sistemų (BSD/OS, FreeBSD, NetBSD ir OpenBSD) yra sukurti būtent 4.4BSD-Lite pagrindu. 11 1.3.3 OSF/1 1988 metais, kai Sun ir AT&T sudarė sutartį dėl tolimesnio SV vystymo, kitos IT kompanijos, tokios kaip DEC, IBM, HP, sukūrė organizaciją Open Software Foundation (OSF) ,kuri turėtų sukurti naują, nepriklausomą nuo AT&T operacinę sistemą. Pirmasis rezultatas buvo OSF/1. Tai nebuvo kažkokia naujovė, greičiau politinis žingsnis siekiant sumažinti SV įtaką UNIX pasauliui. 1.3.4 Linux Pastaruoju metu sumaištį UNIX padangėje sukėlė Linux – UNIX tipo branduolys, kurį parašė Torvald Linus, studentas iš Suomijos. Linux istorija prasidėjo 1991 metais. Linux tobulinimo darbą entuziastingai dirbo ir dirba Atvirojo kodo bendruomenė. Pirmoji pilnavertė Linux OS atsirado sujungus branduolį (Linux) ir GNU projekto programas. Pradinė GNU paskirtis buvo atviro kodo C kompiliatoriaus sukūrimas (dabar žinomas kaip GNU C, gcc), tačiau vėliau projektas išsiplėtė į daugelio dabartinių Linux apvalkalo programų projektą. 1.3.5 Kaip atskirti SVR* nuo BSD? 1.1 lentelė. Kai kurie System V ir BSD UNIX šeimų skirtumai Indikatorius Tipiška SVR* Tipiška BSD Branduolio pavadinimas Startavimo failai Montuojamos failų sistemos Tipiškas komandų interpretatorius “Gimtoji” failų sistema Spausdinimo sistema Terminalų valdymas Aktyvių procesų informacija /unix katalogai /etc/rc*.d /etc/mnttab sh, ksh S5 lp, lpstat, cancel terminfo ps -ef /vmunix failai /etc/rc.* /etc/mtab csh UFS lpr, lpq, lprm termcap ps -aux 1.4 UNIX versijos 1.4.1 AIX IBM UNIX versija naudojanti SVR2 bazę, turi daug SVR4, BSD ir OSF/1 bruožų ir ypač neblogą administravimo sistemą (SMIT). 1.4.2 HP-UX HP UNIX versija. Ji yra BSD ir SVR4 hibridas. Turi nemažai savotiškų dalykėlių ,tokių kaip simetrinės daugia-procesorinės sistemos, ypač didelės failų sistemos (iki 128Gb), aplikacijų procesų erdvė padidinta iki 3,75Gb. 1.4.3 IRIX Silicon Graphics UNIX sistema, skirta jo paties MIPS aparatūrai. Tai pilnai 64 bitų sistema, kuri pradžioje buvo grynai BSD, dabar jau greičiau SVR4 atstovas. 1.4.4 Digital UNIX Tai firmos Digital Equipment OSF/1 UNIX versija. Prieš tai ji vadinosi DEC OSF/1 ir buvo BSD tipo OS, nors turėjo nemažai SVR4 bruožų. Tai pilnai 64 bitų, pradžioje Alpha platformai skirta sistema. Palaiko daug tinklinių interfeisų. 1.4.5 SCO UNIX 1988 metais Santa Cruz Operations (SCO), Microsoft ir Interactive Systems pabaigė bendrą System V Release 3.2 adaptavimą Intel 386 platformai. Tada SCO nusipirko iš AT&T teisę ją platinti ir pavadino sistemą SCO UNIX System V/386. 1995 m. SCO išleido SCO OpenServer 12 Release 5, kodiniu pavadinimu Everest, kuris palaiko > 9000 aparatinių platformų ir > 2000 įvairių įrenginių. 1.4.6 Sun Solaris Ji turi daug atmainų, tačiau viena iš labiausiai vykusių yra Sun Solaris 2. Pirmoji SunOS versija – Solaris 1 – buvo paremta BSD branduoliu, tačiau dėl glaudaus Sun bendradarbiavimo su AT&T buvo nuspręsta pereiti prie SVR4 branduolio. Mūsų nagrinėjama sistema ir yra Sun Solaris 2.7, 8, 9 su SVR4 branduoliu. 1.4.7 FreeBSD Nagrinėsime FreeBSD/i386 4.5-RELEASE sistemą, kurios pagrindu yra minėta 4.4BSD-Lite. Ji yra nemokama ir ją galima rasti adresu: http://www.freebsd.org. 1.5 UNIX populiarumo priežastys Pagrindinės UNIX populiarumo priežastys yra šios: • UNIX yra parašyta naudojant aukšto lygio C kalbą. Tai leidžia ją greitai adaptuoti skirtingoms platformoms. Pagal Ritche, perrašius UNIX iš asemblerio į C UNIX sistemos apimtis padidėjo 20 – 40 %, o darbas sulėtėjo apie 20%. Tačiau sistemos atvirumas žymiai padidėjo. • UNIX – daugia-procesinė, daugia-vartotojiška sistema. Su vienu galingu serveriu galima pateikti servisus šimtams vartotojų. • Standartai. Nors UNIX versijų yra begalės, tačiau visos jos yra iš principo vienodos architektūros. Bet kuris administratorius, perkandęs vieną UNIX versiją galės administruoti ir kitą. • Paprastas, bet labai galingas modulinis vartotojo interfeisas. Yra labai daug pagalbinių programų, moduliukų, kurie atlieka t.t. funkciją, tačiau juos sujungus galima atlikti tikrai sudėtingus ir painius uždavinius. • Vieninga hierarchinė failų sistema. Per šią failų sistemą prieinama ne tik prie failų, bet ir prie terminalų, spausdintuvų, magnetinių juostų, tinklo ir net atminties. 2 UNIX struktūra UNIX sistemas sudaro 3 abstraktūs sluoksniai: • geležis (aparatūrinė įranga), • branduolys (kernel) ir • vartotojo programos. 2.1 Branduolys (kernel) Branduolys paslepia aparatūrinę įrangą nuo abstraktaus, aukšto lygio programų sluoksnio. Jis atlieka daug darbų, kurių rezultatais naudojasi vartotojo lygmens programos. Pavyzdžiui branduolys realizuoja ir tvarko šiuos žemiau pateiktus UNIX architektūrinius sprendimus: • procesus, • signalus ir semaforus, • virtualią atmintį, • failų sistemą ir • sąsają tarp procesų (sockets). 13 Branduolys tiesiogiai dirba su geležies tvarkyklėmis (device driver), kurie iš dalies ir sudaro branduolio dalį, kurio likusi beveik visa dalis yra nuo geležies nepriklausoma. Branduolys su tvarkyklėmis bendrauja taip pat, kaip ir programos su branduoliu, pavyzdžiui, kai procesas paprašo branduolio “perskaityk pirmus 64 /etc/passwd failo bitus”, tai branduolys nusiunčia tvarkyklei instrukciją, pvz. “Fetch block 3348 from device 3”. Tvarkyklė toliau dirbs savo darbą – suskaldys šią komandą į bitų blokus ir pasius juos į aparato valdymo registrus. Branduolys yra parašytas C kalba su nedideliu kiekiu asemblerio kodo. Pradžioje branduolys buvo mažiukas, gal truputi virš pusės Mb, tačiau dabar, palaikantys sudėtingus tinklo protokolus, daugia-procesiškumą, jie siekia net iki 15Mb. Solaris naudoja praktiškai pilnai modulinį branduolį. Tai suteikia galimybę pakrauti aparatūrinės įrangos tvarkyklę tada, kai jos reikia. Nereikia prieš tai sutvarkyti begalės konfigūracinių failų, perkompiliuoti branduolio ir pan.; tai įmanoma iš dalies dėl aiškios ir griežtos Sun SPARC mašinų architektūros. Kai Solaris suranda naują aparatūrinę įrangą, jis pats, jei randa, pakrauna ir tvarkyklę. FreeBSD, kaip ir visos kitos BSD sistemos, turi tiksliai žinoti kokia aparatūrinė įranga yra sistemoje dar prieš branduolio kompiliaciją. Kai kuriais atvejais reikia nurodyti ne tik kokia aparatūrinė įranga yra, bet taip pat ir kur ji yra. Kai kuriais atvejais tenka tiesiog išsitraukti aparatūrinės įrangos modulį ir pažiūrėjus nustatyti – koks tiksliai jis yra. Procesai Sisteminių komandų interfeisas Aparatūros valdymo interfeisas Aparatinė įranga Aparatinis lygis Vartotojo lygis Sisteminis lygis Branduolys Failų posistemė I/O posistemė Procesų valdymo posistemė 2.1 pav. Bendra branduolio struktūra. Linux branduolį galima tvarkyti taip pat kaip ir BSD sistemas – nurodyti tvarkykles ir sukompiliuoti, tačiau iš dalies galima ir naudotis modulinės architektūros privalumais, kaip Solaris. Tačiau dažnai pastarasis veiksmas naudos neduoda, nes PC architektūra yra sudėtinga ir nenuspėjama. 2.1 lentelėje pateikiami standartiniai katalogai, kuriuose galima rasti branduolio failus. 2.1 lentelė. Standartiniai branduolio failų katalogai. Sistema Išeities kodų katalogas Branduolio katalogas Solaris - /kernel/unix Linux /usr/src/linux /vmlinuz arba /boot/vmlinuz FreeBSD /usr/src/sys /kernel Kai sistema instaliuojam pirmą kartą (dažniausiai iš spec. instaliacinio disko), jos branduolys turi dauguma ApI tvarkyklių, kad veiktų ant standartinių mašinų. Tačiau konkrečiai mašinai tereikia tam tikrų, tik jai skirtų tvarkyklių, todėl yra gerai perkompiliuoti branduolį. Nors 14 dabartiniai branduoliai yra geresni ir jie išmėto nereikalingas tvarkykles iš atminties, tačiau opcijos kraunantis vis tiek lieka. Branduolio perkompiliavimas nėra sudėtingas, tačiau jo teisingas konfigūravimas – yra. Branduolį sudaro šie trys komponentai: • procesų ir atminties valdymo posistemė, • failų posistemė ir • I/O posistemė. Bendrą branduolio vidinė struktūrą iliustruoja 2.1 paveikslas. 3 Procesų valdymo posistemė UNIX OS širdis – procesų valdymo posistemė. Visas OS funkcionalumas galų gale priklauso nuo vienų ar kitų procesų vykdymo. Viskas – run-levels, servisai, spausdinimas ir pan. yra t.t. procesų vykdymo pasekmė. Procesai UNIX sistemoje yra tiesiogiai susiję su dviem resursais: procesoriumi (-iais) ir operatyvine atmintimi. Galioja taisyklė, kad šių resursų niekada nėra per daug, todėl OS pastoviai vyksta arši konkurencinė kova dėl jų. Nagrinėsime, kokiu būdu OS branduolys valdo atmintį, kai kiekvieno proceso adresinė erdvė siekia kelis gigabaitus, kaip OS vienu metu gali vykdyti daug procesų, kai vienas CPU tegali vykdyti tik vieną užduotį. Procesas, tai rėmelis į kurį yra įstatoma programa. Nors viena iš branduolio užduočių yra proceso izoliavimas, yra pakankamai svarbus ir duomenų tarp procesų apsikeitimo organizavimas. Tam UNIX suteikia nemažai priemonių – nuo paprastų signalų iki sudėtingų tarp-procesinės sąveikos mechanizmų – IPC SV ir soketų BSD sistemose. 3.1 Procesų valdymo pagrindai Procesas, tai vykdomos programos pavidalas, tam tikros branduolio duomenų struktūros su nuorodomis į atmintyje esančius vykdomą kodą, duomenis, steką ir bibliotekas (3.1 pav.). Duomenys Kodas Lib ataD LibCode u-area Stekas proc Stekas Programos tekstas main() { int i; int fd; fd=open(...) ... } Programos tekstas Vykdomas failas Vartotojo režimas Branduolio žimas re Antraštė Duomenys Programos tekstas Bibliotekų duomenys Bibliotekų tekstas cc Kompiliavimas 3.1 pav. Bendroji proceso struktūra. Pradžioje UNIX vienu metu galėjo vykdyti tik du procesus, t.y. po vieną kiekvienam prie PDP- 7 prijungtiems terminalams. Vėliau šis procesų skaičius gerokai padidėjo, atsirado sisteminė komanda (system call) fork(2). System 1 jau turėjo exec(2) komandą, bet vienu metu galėjo pakrauti tik vieną procesą. Po to, kai į PDP-11 buvo įdiegtas MMU (Memory Management Unit) tapo įmanoma operatyvinėje atmintyje laikyti kelis procesus, taip sumažinant I/O operacijas. Tačiau iki pat 1972, kol UNIX nebuvo perrašytas C kalba, visos I/O operacijos buvo sinchroniškos, t.y. kol vienas procesas nebaigdavo I/O operacijos, visi kiti 15 privalėjo laukti. Nuo 1973 metų procesų valdymo pagrindai praktiškai nepasikeitė. Proceso vykdymas CPU vyksta dviejuose režimuose: 1. vartotojo režimas (user mode) yra vykdomos programos instrukcijos. Tuo metu procesoriui nėra prieinami sisteminiai resursai. Kai jam prireikia kokio nors sisteminio resurso, tarkim skaitymo iš failo, jis atlieka sisteminę komandą ir pereina į 2. branduolio režimą (kernel mode). Joje yra vykdomos sisteminės komandos, apdorojamas sisteminis iškvietimas. Tokiu būdu vartotojo programa yra izoliuojama nuo sisteminių duomenų struktūrų (negali pakenkti) ir t.t. komandos tegali būti vykdomos branduolio režime, tarkim registro reikšmių keitimas. Dėl šios proceso dvilypybės, proceso atvaizdas atmintyje yra iš dviejų dalių – užduoties ir branduolio duomenų. CPU dirbdamas branduolio režimu turi priėjimą prie visų duomenų aplamai. 3.2 Proceso duomenų struktūros Darbinis katalogas / katalogas p_pid p-ppid p_cred ... p_utime p_stime ... p_sig ... p_pri Vykdomo failo antraštė Signalų dispozicija Aparatūrinis kontekstas Sisteminis stekas ... u_exdata ... u_cdir u_rdir ... u_signal ... u_reg Process Table proc user curproc u UID, EUID, GID, EGID Proceso statistika Laukiantys signalai Einamasis prioritetas 3.2 pav. Pagrindinės proceso duomenų struktūros. Kiekvienas procesas turi dvi pagrindines duomenų struktūras – proc ir user, kurie yra aprašyti failuose
Šį darbą sudaro 45791 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Kiti darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!