Konspektai

Operacinės sistemos ir jų klasifikacija

10   (1 atsiliepimai)
Operacinės sistemos ir jų klasifikacija 1 puslapis
Operacinės sistemos ir jų klasifikacija 2 puslapis
Operacinės sistemos ir jų klasifikacija 3 puslapis
Operacinės sistemos ir jų klasifikacija 4 puslapis
Operacinės sistemos ir jų klasifikacija 5 puslapis
Operacinės sistemos ir jų klasifikacija 6 puslapis
Operacinės sistemos ir jų klasifikacija 7 puslapis
Operacinės sistemos ir jų klasifikacija 8 puslapis
Operacinės sistemos ir jų klasifikacija 9 puslapis
Operacinės sistemos ir jų klasifikacija 10 puslapis
Operacinės sistemos ir jų klasifikacija 11 puslapis
Operacinės sistemos ir jų klasifikacija 12 puslapis
Operacinės sistemos ir jų klasifikacija 13 puslapis
Operacinės sistemos ir jų klasifikacija 14 puslapis
Operacinės sistemos ir jų klasifikacija 15 puslapis
Operacinės sistemos ir jų klasifikacija 16 puslapis
Operacinės sistemos ir jų klasifikacija 17 puslapis
Operacinės sistemos ir jų klasifikacija 18 puslapis
Operacinės sistemos ir jų klasifikacija 19 puslapis
Operacinės sistemos ir jų klasifikacija 20 puslapis
www.nemoku.lt
www.nemoku.lt
Aukščiau pateiktos peržiūros nuotraukos yra sumažintos kokybės. Norėdami matyti visą darbą, spustelkite peržiūrėti darbą.
Ištrauka

Procesų valdymas UNIX sistemoje  Procesas - bazinė UNIX koncepcija.  Sistemos branduolys tenkina procesų poreikius.  Proceso sukūrimas - tai virtualinės mašinos, turinčios savo adresų erdvėje kodo ir duomenų segmentus, sudarymas. PID - proceso identifikatorius. Sistemos pakrovimas  Branduolys inicijuoja pradinį procesą, kurio PID=0 (shed arba swapper).  Procesas su ID=0 paleidžia procesą 1 (init), kuris tarnaus visų sistemoje esančių procesų protėviu. Procesas 1 paleidžia shell’o procesus, kurie suteikia vartotojams galimybę užsiregistruoti (login) ir inicijuoti savo procesus.  Kiekvienam vartotojui atskirai paleidžiamas sisteminis procesas getty, kuris inicijuoja vartotojo login ir shell (sh). Procesas1 paleidžia ir daemon procesus.  Visi procesai specifikuojami faile /etc/initab, vartotojai - /etc/passwd. Vartotojo procesų sukūrimas  Visi procesai UNIX sistemoje inicijuojami sisteminiu kreipiniu fork(), kuris sudaro dvi paleidžiamojo proceso kopijas (protėvio parent ir palikuonio child) su skirtingais ID. Paprastai child procesas keičia tėvo kodą į savo, naudodamas sisteminį kreipinį exec, pavyzdžiui: main() { int status; if (fork() == 0) exec (“/bin/manopr”,”manopr”,0); wait (&status); } Parent procesas lauks child proceso vykdymo pabaigos, naudodamas sisteminį kreipinį wait.  Analogiškai veikia ir sistemos “apvalkalas” shell, aptarnaudamas vartotojus. Pradžioje jis naudoja fork ir tokiu būdu sukuria dar vieną savo kopiją. Toliau child shell kreipiasi į reikiamą programą naudojant exec funkciją. Programos kodas perdengia shell kodą ir yra vykdomas. Procesų pabaiga (termination)  Procesai protėviai laukia procesų palikuonių vykdymo pabaigos naudodami sisteminį kreipinį wait. Procesai baigia darbą naudodami sisteminį kreipinį exit  Procesai gali pasibaigti normaliai ar nenormaliai, t.y., ankščiau laiko. Kiekvienas procesas identifikuojamas PID ir PPID. Init procesas - tai PPID=1 procesų protėvis. Procesų valdymo komandos (LINUX)  Procesų paleidimas: at - vykdo komandą tam tikru laiku at 2:00 lp /usr/ataskaitos/* echo “pranešimas dekanui” | mail -s“Ataskaita paruošta” dekanatas batch - OS nusprendžia, kada vykdyti komandas, surašytas po batch cron ir crontab - programų paleidimas pagal tvarkaraštį, surašytą vartotojų failuose kataloge usr/spool/cron/crontab. Vartotojo ir failo vardai sutampa.  Procesų monitoringas: who ir w - vartotojų sąrašo išvedimas ir naudojamų resursų pateikimas. nice ir renice - procesų prioritetų nustatymas prieš vykdant procesą ir proceso vykdymo metu. Kiekvienam procesui priskiriamas prioritetas, LINUX sistemoje 0 ?. Windows ir OS/2. Failo vardo ilgis gali būti iki 255 simbolių. Be įprastų simbolių vardo viduje gali būti naudojami tarpai ir kai kurie specialūs simboliai. Komandinėse eilutėse tokie vardai naudojami kabutėse. Palaikomi ir MS-DOS vardai (tiksliau MS-DOS stiliaus aliasai), kurie generuojami iš ilgų vardų naudojant pirmus 8 ilgo vardo simbolius. Jei gaunamas vardas yra neunikalus, naudojami pirmieji 6 simboliai, tilda ~ ir numeris 1. Jei ir toks vardas yra neunikalus, tai skaičius yra didinamas vienetu: 2, 3 ir t.t. Katalogai (direktorijos, aplankai) Katalogizavimas – tai loginis failų grupavimas. Pirmosiose sistemose – tik vieno lygmens katalogai. Vėliau įvesta katalogų hierarchija: išskiriamas pagrindinis (root - šakninis) katalogas (žymimas / UNIX sistemoje ir \ MS-DOS) į kurį įeina pirmojo lygmens katalogai, į kuriuos įeina antros eilės katalogai ir t.t. Taip sukuriama medžio tipo informacijos struktūra. Pastaba. Žodis “katalogas” suprantamas dvejopai: tai ir failų grupė ir specialus failas, kuriame ši grupė yra aprašyta. Kataloge sugojama tokia informacija apie į jį įeinančius failus: failo vardas, tipas, atributai, informacija apie failo lokaciją diske, priėjimo teisės, failo dydis baitais, sukūrimo ir/arba pakeitimo data, ir kt. Dar vienas katalogo sistemos privalumas – vienodų vardų failai gali būti saugojami skirtinguose kataloguose. Procesas paprastai dirba su failais, esančiais vadinamajame darbiniame kataloge (current directory arba present working directory). Pagrindinės komandos darbui su katalogais: cd Pakeisti katalogą (t.y.pereiti į kitą). Pvz., UNIX komanda cd / arba MS-DOS cd \ keičia darbinį į aukštesnio lygio katalogą. mkdir Sudaryti katalogą. Pvz., komanda mkdir /user sudarys naują user katalogą darbiniame kataloge (MS-DOS – sutrumpinta md komanda). rmdir Pašalinti katalogą. Pvz., komanda rmdir user pašalins user katalogą iš darbinio katalogo (MS-DOS – sutrumpinta rd komanda). Keliai (path) ir jų apibrėžimas Kelias į reikiamą katalogą gali būti nurodytas pradedant arba nuo pagrindinio (root) katalogo arba nuo darbinio (aktyvaus) katalogo; atitinkamai nurodomas arba pilnas kelio vardas arba santykinis vardas. Pvz., jei failas failas1.dat yra kataloge /cprogs/work/ failas1.dat ir darbinis katalogas yra /cprogs, tai pilnas kelio vardas būtų /cprogs/work/ failas1.dat, o santykinis - work/ failas1.dat . Kitas kelio nurodymo mechanizmas – paieškos kelio nurodymas komanda PATH, pvz., MS-DOS sistemoje (paprastai, autoexec.bat faile) galima nurodyti: PATH= \; \DOS; \USERS\JONAS\TEKSTAI UNIX sistemoje kiekvienas vartotojas gali turėti savo kelių nurodymus. Vartotojo keliai paprastai nustatomi registravimo metu vykdant komandas iš failų .profile arba .login ir priskiriant čia apibrėžtus kelius kintamajam PATH (ar path). Tipinė komanda: PATH= /usr/staff/jonas/progs Pastaba. Kai keliai apibrėžiami naudojant path mechanizmą, yra pavojus įvykdyti ne tą failą, kurį iš tikrųjų norėjo vartotojas; pvz., jei komandinis failas pavadinimu istrink.bat yra tiek \DOS, tiek \USERS\JONAS kataloguose. Aliasų vardai UNIX leidžia naudoti aliasus, t.y., priskirti vienam fiziniam failui du skirtingus vardus, arba netgi tą patį vardą skirtinguose kataloguose. Jei failas turi būti prieinamas iš skirtingų katalogų, jis dedamas į vieną iš jų, o kituose daromos nuorodos (link) į jį. Tai galima padaryti sisteminiu kreipiniu link() arba shell komada ln: pvz., esant kataloge /cprogs/work/ galima sukurti vardą myprog ln /usr/staff/jonas/progs myprog kuris tarnaus kaip nuoroda iš /cprogs/work/ į programą kataloge /usr/staff/jonas/progs . Tomai (volumes) Tomas – tai konkretus išorinio duomenų saugojimo įtaiso vienetas, diskelis, diskas, kompaktinis diskas ir pan. Prieš naudojant tomą reikia inicializuoti. MS-DOS sistemoje tai atliekama komanda FORMAT, UNIX sistemoje, paprastai, mkfs (make file system). Šios komandos sukuria disko struktūrą ir atitinkamas failų aprašų lenteles. Viename fiziniame tome gali būti keli loginiai tomai. Suskaidyti vieną fizinį diską į kelis loginius galima įvykdant žemio lygio pagalbinę skaidymo (partitioning) programą. Tai leidžia, pvz., turėti viename diske dvi skirtingas OS. Procesų valdymas IV. Procesų konkurencija Procesai konkuruoja dėl bendrų resursų panaudojimo ir bendrauja tarpusavyje. Procesai gali būti: visiškai nepriklausomi, nepriklausomi bet tarpusavyje susiję, kooperuojantys ir konkuruojantys procesai.  Resursai: fiziniai ir loginiai; atstatomi, nuosekliai atstatomi ir neatstatomi.  Resursų panaudojimo problemos: nuosekliai atstatomi resursai gali būti paskirti tik vienam procesui vienu metu, todėl reikalingas procesų ir jų resursų tarpusavio atskyrimas (mutual exclusion). Toks resursų atskyrimas (mutual exclusion) sudaro pagrindą procesų užblokavimui (aklavietei - deadlock). Procesas yra užblokuotas jeigu jis laukia įvykio, kuris nekada neįvyks. Pvz., procesai P1, P2 ir P3 naudoja resursus R1, R2, R3. Vienas iš galimų užblokavimo variantų būtų toks: Procesas Naudojamas resursas Reikiamas resursas P1 R1 R2 P2 R2 R3 P3 R3 R1  Procesų komunikacijos būdai: bendrai naudojama atmintis, bendro naudojimo failai, pranešimų siuntimas, įvykių sinchronizavimas.  Kritinė sekcija (KS) – proceso kodo dalis, reikalaujanti bendrų resursų panaudojimo vienu metu. Kad išvengtų užblokavimo, du susiję procesai negali būti savo kritinėse sekcijose tuo pačiu metu. Procesų atskyrimo metodai. Sisteminius resursus centralizuotai skirsto OS, bet loginių resursų atskyrimui reikia tam tikrų specialių metodų. Tai gali būti programinės konstrukcijos, techniniai (architektūros) sprendimai ir OS priemonės. Pvz., du procesai A ir B bendrai naudoja kokį nors resursą ir turi kritines sekcijas. Problema: paprasti sprendimai neefektyvus, nes atskiri procesų įvykiai neapibrėžti laike. Tegul loginis kintamasis res_atviras rodo resurso būseną ir pradžioj yra true. Kiekvienas procesas valdo res_atviras tokiu būdu: Procesas A Procesas B while not res_atviras tikrina res_atviras do laukti; tikrina res_atviras res_atviras := false; uždaro resursą uždaro resursą { KS } kritinė sekcija kritinė sekcija res_atviras :=true; Kita pateikto sprendimo problema - procesoriaus laiko atžvilgiu labai neefektyvus ciklas while. Tokia situacija vadinama “busy waiting”.  Programinių konstrukcijų sprendimai. Peterson’o algoritmas (1981) naudoja kiekvienam procesui loginius požymius flagI ir bendra sveikąjį kintamąjį turn, kurių pradinės reikšmės false ir 1. Procesas A Procesas B flag0 := true; flag1 := true; turn := 1; turn := 0; while flag1 and turn=1 while flag0 and turn=0 do laukti; do laukti; {kritinė kodo sekcija} {kritinė kodo sekcija} flag0 := false; flag1 := false; Tokiu būdu galima aptarnauti N procesus turint N flags ir turn : 0 .. N-1.  Techniniai sprendimai. Paprasto sprendimo problema -reikšmės res_atviras patikrinimas ir nustatymas - tai dvi atskiros komandos, todėl kito proceso komandos gali būti įvykdytos tarp jų. Čia įvedama procesoriaus komanda test-and-set, kuri vykdo tiek patikrinimą, tiek nustatymą vienoje mašininėje komandoje, tad ir negali būti pertraukiama. Komanda naudoją sveikąjį kintamąjį jungiklis, kuris pradžioje lygus 0. Jei šis kintamasis yra 0, jis komanda keičia jį į 1 ir gražina reikšmę true, priešingu atveju gražina false. while test_and_set (jungiklis) do laukti; {neefektyvus ciklas “busy waiting”} { KS } jungiklis :=0;  Semaforai “semaphore” (Dijkstra, 1965). Būna binariniai ir skaičiuojantys. Semaforas s - teigiamas sveikasis kintamasis su kuriuo galima atlikti dvi specialios operacijos: wait (dar vadinama P) ir signal (arba V). Įėjimas į KS kontroliuojamas wait operacija; apie išėjimą iš KS signalizuoja signal. wait(s): signal(s): if s > 0 if {yra užblokuotas procesas (-ai)} then s := s - 1 then {pradėti kurį nors procesą} else {užblokuoti kviečiantį procesą}; else s := s + 1; Semaforų operacijų naudojimas: wait (s); { KS } ; signal (s) Kiekvienam semaforui sistema sudaro jo laukiančių procesų eilę. OS taip pat garantuoja, kad šios operacijos yra nepertraukiamos. Kitas privalumas - OS perveda laukiantį procesą į, pvz., būseną “sustabdytas”, t.y. kol vyksta laukimas procesoriaus laikas nenaudojamas. Failų valdymas II Sisteminiai failų valdymo servisai Vartotojo operatyvios priemonės: • failo kūrimas; • failo šalinimas; • failo kopijavimas; • pervardinimas; • failo turinio peržiūra; • katalogo kūrimas; • katalogo turinio peržiūra; • tuščio katalogo šalinimas. Programavimo priemonės: • failo atidarymas; • failo uždarymas; • failo turinio skaitymas; • rašymas į failą; • pozicijos faile pasirinkimas (seek). Programavimo priemonės aukšto lygio kalbose įgyvendinamos arba bazinėse konstrukcijose (pvz., INPUT – BASIC kalboje), arba standartinėse kalbos procedūrose (pvz., READ – PASCAL kalboje), arba atskirose bibliotekose (pvz., fread – C kalboje). Assembler kalboje darbui su failais paprastai naudojami programiniai pertraukimai, pvz., MS-DOS sistemoje int 21 – tai sisteminis kreipinys, leidžiantis atlikti aukščiau minėtas operacijas. Darbas su katalogais parprastai tiesiogiai nepalaikomas aukšto lygio kalbose, bet daugelis programinių kompanijų pateikia papildomas standartines bibliotekas darbui su katalogais (ir failais) atlikti. Failų valdymo metodai Failų saugojimas ir vietos išskyrimas. Ankstesnėse sistemose atsakingas už failo išdėstymą (pagal cilindrus, takelius, blokus) buvo vartotojas. Tad darbo efektyvumui padidinti failai buvo dėstomi iš eilės, nuosekliai, arba užimdavo tą patį cilindrą. Vartotojas turėjo pat apskaičiuoti kiekvieno failo dydį ir atitinkamai rezervuoti vietos diske. Tačiau nuoseklus (ar “vertikalus”) failo dėstymas yra labai netaupus. Ši situacija yra analogiška atminties fragmentavimui, su visais panašiais trūkumais. Šiuolaikinės sistemos išskiria failui vietą dinamiškai, iškilus konkrečios programos poreikiui. Čia vartotojas nieko nežino apie realią failo vietą diske. Paprastai (plg. su atminties puslapiavimu) reikalinga vieta išskiriama fiksuoto dydžio porcijomis – allocation unit. MS-DOS sistemoje tokia porcija vadinama klasteriu (cluster), kuris jungia fizinius disko sektorius į porcijas po 512, 1024, 2048 baitus. UNIX sistemoje išskyrimas vyksta sektoriais. Kai failas yra ką tik sukurtas, jis susideda iš 1 klasterio, prie kurio vėliau jungiami kiti. Jei tai pirmas failas diske, jis bus išdėstytas nuosekliai, klasteris po klasterio, tačiau vėliau skirtingų failų klasteriai susimaišys: Failai išlaisvina klasterius, kai kinta jų dydis, arba jie naikinami. Tada tarp užimtų klasterių atsiranda tušti. OS turi sekti kurie klasteriai priklauso kokiam failui ir optimizuoti erdvės panaudojimą. Pirmas metodas – klasterių sujungimas į grandinę (sąrašą), kurioje kiekviename klasteryje taip pat saugojamas kito (tolesnio) klasterio numeris. Nuoroda į kitą klasterį užima vietą ir apsunkina failo skaitymą ir rašymą į failą. Bet blogiausia, kad failo skaitymas (rašymas) įmanomas tik nuosekliai per klasterių grandinę, o ne tiesiogiai. Tai vyksta labai lėtai ir gali būti nepriimtina daugeliui taikymų. Antras metodas: failą sudarančių klasterių sąrašas, saugojamas kiekvienam failui. Šių metodų modifikacijos naudojamos atitinkamai MS-DOS ir UNIX sistemose. MS-DOS failų sistema Failų išdėstymas. Kai kurios sistemos naudoja tiesioginę duomenų klasterių grandinę, bet tai veikia lėtai ypač dideliems failams. MS-DOS sistemoje nuorodų lentelė atskirta nuo pačių duomenų klasterių. Tokia lentelė vadinasi FAT (File Allocation Table) ir susideda iš masyvo, kuriame saugojamos 12 bitų (diskeliui) arba 16 bitų (kietam diskui) reikšmės. Kiekvienas masyvo elementas atitinka vieną klasterį (išskyrus 2 pirmuosius). Šių elementų reikšmės – tai nuorodos į kitus lentelės elementus. Taigi vietoj sujungtų klasterių naudojamą nuorodų lentelė FAT. Kai diskas tuščias, visi FAT elementai turi reikšmę 0 (tuščių klasterių požymis). Pirmam įrašytam failui bus sudaryta lentelė, kurioje klasterių nuorodos išdėstytos iš eilės: Pirmas elementas identifikuoja disko tipą (šiuo atveju FFD reiškia – abipusis su 9 sektoriais / per takelį), o antrasis visada turi reikšmę FFF (ar FFFF kieto disko atveju). Grandinės pabaiga taip pat žymima FFF. Tipinėje situacijoje (failų klasteriai sumaišyti) FAT struktūra atrodo taip: Tiek FAT elementų skaičius, tiek jų dydis (bitų skaičius) priklauso nuo disko dydžio. Bet netgi maksimalus FAT dydis vis tiek leidžia saugoti ir apdoroti šią lentelę atmintyje ir nesikreipti į diską, todėl apdorojimo laikas yra patenkinamas. Laisvos vietos kontrolė vykdoma priskiriant išlaisvinto klasterio elementui reikšmę (0)000. Tokia reikšmė leidžia suteikti klasterį naujam failui. Tomo struktūra MS-DOS sistemoje. Pakrovimo sektorius (boot sector). Susideda iš mašininės nukreipimo komandos Jump, kuri perduoda valdymą pradiniam pakrovėjui. Pastarasis suranda IO.SYS ir MSDOS.SYS failus, pakrauna juos į atmintį ir perduoda jiems valdymą. Pakrovimo sektoriuje taip pat įrašomas gamintojo vardas ir versija, bei failų išdėstymo detalės, pvz., sektoriai/klasteriai, FAT skaičius ir kt. FAT – pagrindinė failų dėstymo lentelė. Papildoma (-os) FAT – sistema naudoja dublikatines lenteles (1 ar daugiau) saugumui padidinti. Šakninis katalogas – skiriasi nuo kitų fiksuotu dydžiu ir pozicija diske. Paprastai gali turėti nedaugiau 112 elementų. Failų erdvė (file space) – likusi disko erdvė naudojama failų ir katalogų saugojimui. Klasterio dydžio pasirinkimas. Priklausomai nuo disko tipo klasterio dydis gali būti: 512, 1024, 2048, 4096… Tam tikra dalis paskutinio klasterio paprastai prarandama, nes failo dydis nesidalija iš klasterio dydžio. Antra vertus, klasterių smulkinimas didina jų skaičių faile ir atitinkamai priėjimo operacijų skaičių, kai vyksta failo skaitymas ar rašymas į failą. Taip pat didėja FAT elementų skaičius ir atitinkamai reikiamo klasterio paieškos trukmė. MS-DOS išorinė komanda CHKDSK leidžia sužinoti disko tomo parametrus, tame tarpe klasterio dydį ir jų skaičių. Kontroliniai uždaviniai 2. 1. Apskaičiuokite FAT lentelės elementų skaičių esant tokiems MS-DOS sistemos parametrams: disko dydis 40 MB, bloko dydis – 512 baitų, blokai/klasteris – 4. 2. Esant 2 KB klasterio dydžiui apskaičiuokite maksimalų MS-DOS disko dydį. C:\DOSFILES>chkdsk c: CHKDSK has NOT checked this drive for errors. You must use SCANDISK to detect and fix errors on this drive. Volume WIN98 created 2000.04.26 8:58 Volume Serial Number is 1404-3B6C 3 229 560 832 bytes total disk space 2 272 223 232 bytes available on disk 4 096 bytes in each allocation unit 788 467 total allocation units on disk 554 742 available allocation units on disk 655 360 total bytes memory 560 016 bytes free UNIX failų sistema Ryšiai tarp katalogų, mazgų (Inode) ir failų: Informacija apie failus UNIX sistemoje saugojama atskirai nuo pačių katalogų specialiose struktūrose - Inode (mazguose). Kiekvieną failą atitinka vienas mazgas. Kataloguose saugojamas failo vardas ir nuoroda į atitinkamą mazgą. Visa kita informacija apie failą saugojama mazge (inode), tame tarpe, disko blokų, priklausančių failui, išdėstymas. Tipinė INODE struktūra: Failo savininkas – vartotojo vardas (owner of file) vitalij Vartotojo Grupės vardas (group ID) staff Failo tipas (file type) regular Teisės (permissions) rwxr-xr-x Last accessed 10 May 2000 14:00 Last Modified 7 May 2000 11:15 Last Inode Modification 7 May 2000 11:15 Failo dydis (File size) 54400 bytes Ryšių skaičius (Number of links) … Pointers to disk allocations … Informacija saugojama mazge gali būti peržiūrėta komanda ls –l. Mazgo nuorodų sistema. Mazge saugojama 13 nuorodų; 10 tiesioginių į blokus ir 3 netiesioginės, t.y. rodančios “indeksų blokus”, kuriuose taip pat saugojamas nuorodų sąrašas. Tad pirmosios 10 nuorodų adresuoja 512 * 10 = 5120 baitų, 11-oji – (jei blokas yra 512 baitų, o viena nuoroda jame užima 4 baitus, tai iš viso bloke yra 128 nuorodos) 5120 + 128*512 = 70656 baitų ir t.t. Tomo struktūra UNIX sistemoje. Pakrovimo blokas (boot block). Pirmosios pakopos pakrovėjas, kuris perduoda valdymą pagrindiniam sistemos pakrovėjui. Super Blokas (super blocks)– nusako disko dydį, mazgų ir duomenų blokų išdėstymą diske. Mazgai (Inodes) – disko erdvė mazgų saugojimui. Duomenų blokai (data blocks) – likusi disko erdvė, naudojama katalogų ir duomenų failų saugojimui. Kadangi diske yra fiksuotas mazgų skaičius, jis, atitinkamai, nusako maksimalų failų skaičių diske. Paprastai vartotojas gali pakeisti disko erdvės, skirtos mazgų saugojimui, dydį ir tokiu būdu padidinti ar sumažinti duomenų blokams skiriamą erdvę. UNIX komanda df leidžia sužinoti tomo parametrus, tame tarpe mazgų ir duomenų blokų skaičių. Tomo montavimas. UNIX Failų sistema gali susidėti iš daugiau nei vienos fizinės failų sistemos (tomo), t.y., kietų diskų, diskelių, skirtingų disko particijų. Jei MS-DOS (Windows) sistemoje kiekvienam tomui priskiriama atitinkamo “disko” raidę (A:, C:, F:, ir t.t.), UNIX sistemoje skirtingi tomai jungiami į egzistuojantį katalogų medį. Tam naudojamos komandos mount ir umount, pvz., pateikta komanda jungia diskelio (vardu /dev/fd0135ds9) failų sistemą prie disko katalogo /mnt: Laisvos vietos kontrolė UNIX sistemoje. Programa mkfs sukuria surištų blokų grandinę; kiekvienas blokas saugoja laisvų duomenų blokų numerius ir nuorodą į tolesnį grandinės bloką; pirmas yra superblokas; išlaisvinti blokai pridedami prie grandinės galo. Pagrindinės Windows NT failų sistemos savybės • Suderinamumas su MS-DOS ir OS/2 • Patobulintas failų pavadinimas ir Unicode failų vardai • Suderinamumas su POSIX (portable UNIX) reikalavimais: - didžiųjų ir mažųjų raidžių atpažinimas failų varduose, - aliasų (hard link) naudojimas, t.y., failas gali turėti daug vardų, - informacijos apie paskutinius failų atidarymus saugojimas ir kt. • Saugumas ir patikimumas: - atstatoma failų sistema (registruoja IO įvykius specialiame faile – transaction log file); - operatyvus klaidų ištaisymas (automatinis informacijos perkėlimas iš blogų disko paviršaus sektorių ir jų fiksacija); - loginių diskų skaidymas tarp fizinių (disk striping), t.y., vieną loginį atitinka keli fiziniai, kas didina aptarnavimo greitį; - disk striping with parity – naudojami 3 ar daugiau diskų, kurių vienas tarnauja kaip informacijos saugojimo etalonas. Tai leidžia atstatyti duomenis klaidos atveju. Tokia technika vadinasi RAID (Redundant Array of Inexpensive Disks- perteklinis nebrangių diskų masyvas). • Dideli failų dydžiai. MS-DOS sistemoje failo dydžiui vaizduoti naudojami 32 bitai, t.y. max dydis yra 4 GB. NT naudoja 64 bitus failo dydžiui vaizduoti, t.y. . max dydis yra 264  18*1018 baitų. Diskinių sistemų spartos didinimas • Blokavimas (tipinis bloko dydis – 512 baitų) • Disk cashing, cache – tai buferių rinkinys, naudojamas dažniausiai prieinamos informacijos (blokų) saugojimui. Prielaida: dažniausiai naudojami blokai ir toliau bus dažniausiai naudojami. Vartotojas gali paspartini informacijos perkėlimą į diską iš cache atminties naudojant sync() sisteminę funkciją ar sync komandą. • RAM diskai • Failų reorganizacija ir defragmentacija. Procesų valdymas VI. Semaforai ir įrašų blokavimas UNIX sistemoje UNIX suteikia galimybę kurti ir valdyti semaforus. Tam naudojami kreipiniai į tokias UNIX funkcijas: semget – sukuria semaforų rinkinį, t.y., nustato jų skaičių, identifikatorių, bei kitus valdymo parametrus; semctrl – inicializuoja semaforus, analizuoja jų būsenas, šalina semaforų rinkinį ir pan.; semop – atlieka operacijas su semaforais naudojant duomenų struktūrą sembuf, susidedanti iš 3-jų reikšmių: sem_num – tam tikro semaforo indeksas masyve; naudojamas operacijoms wait ir signal realizuoti; sem_op - sveikojo tipo reikšmė, naudojama semaforui modifikuoti; sem_flg – požymis (flagas) operacijai nustatyti. UNIX funkcija fcntl naudojama įrašų blokavimui. Kadangi sistema neturi informacijos apie loginį taikomosios programos įrašą, ji naudoja fizinius disko sektorių adresus ir vartotojo pateiktus įrašų ilgius. Tokiu būdu galima blokuoti įrašus naudojant santykinius (nuo dabartinės pozicijos faile) adresus. Aklavietės (deadlocks). Pavyzdžiai ir atsiradimo sąlygos.  Dar karta apie tarpusavio atskyrimo (mutual exclusion) būtinybę. Pavyzdys 1. Paskutinio bilieto į reisą TE451 (Vilnius-Londonas) pardavimas vienu metu Jonui (Klaipėdoje) ir Petrui (Šiauliuose). Abejų agentūrų operatoriai formuoja užklausą į centrinę duomenų bazę (DB), esančią Vilniuje, ir gauna atitinkamą įrašą į savo vietinį kompiuterį. Petro operatorius pirmas rezervuoja vietą ir atnaujina DB, tačiau Jonas irgi gauna rezervavimą ir jo operatorius dar kartą perrašo DB įrašą. Kiekvienas klientas mano, kad jo bilietas yra užsakytas, bet, iš tikrųjų, bilietą gauna tik Jonas. Be abejo, realioje sistemoje tokios situacijos neturėtų būti – reikalingas procesų tarpusavio atskyrimas. Pavyzdys 2. Patobulintoje sistemoje bet kurį užklausa blokuoja įrašą. Dabar Petras rezervuoja bilietą į Londoną, o Jono operatorius negauną priėjimo prie jo. Tačiau, Petras norėtų užsisakyti ir atbulinį bilietą į reisą TE452 ir tol kol jį gaus, laikys jau rezervuotą bilietą. Tuo metu Jono operatorius, negavęs TE451 bilieto, užsisakė paskutinį bilietą į atbulinį reisą TE452 ir laikys jį tol kol negaus tiesioginio bilieto į TE451. Vėl aklavietės situacija, kuri susidaro dėl tam tikros įvykių tvarkos jau patobulintoje sistemoje.  Aklavietės būtinos sąlygos. • Tarpusavio atskyrimas, t.y., vienu laiko momentu, vienam procesui vienas resursas. Bendro naudojimo resursas neiššaukia aklavietės. • Resurso (su-) laikymas, t.y., procesas laiko vieną ir laukia kitų resursų. Kai procesas iš karto gauna visus jam būtinus resursus, jam nėra ko laukti ir aklavietė neatsiras. • Nėra priverstinio resursų išlaisvinimo (no preemption)  Aklavietės pakankama sąlyga – ciklinis resursų laukimas. Aklavietės problemos sprendimo būdai. Profilaktika (prevencija) – taikyti tokia resursų skirstymo strategiją, kad aklavietė negalėtų įvykti (t.y. nepatenkinti nors vieną sąlygą). Vengimas – neleisti tokį konkretų resursų skirstymą, kuris veda į aklavietės būseną. Sekimas – susidoroti su aklaviete, kai ji jau įvyko.  Aklaviečių profilaktikos problema • Tarpusavio atskyrimo paprastai neįmanoma išvengti (plg. su dvigubu bilieto užsakymu). • Resurso (su-) laikymas. Jei procesas iš karto gauna visus jam būtinus resursus, aklavietė neatsiras, bet atsiranda kitos problemos: • procesas gali labai ilgai laukti visų resursų išlaisvinimo, nors jo paleidimui ne visi jie reikalingi; • procesas gali labai ilgai laikyti visus resursus be realaus jų naudojimo; • kai procesas laikinai atleidžia resursą, kitas procesas gali jį “pagrobti”. • Priverstinį resursų išlaisvinimą paprastai vykdo operacinė sistema, suteikiant aukštesnio prioriteto procesui reikiamą resursą. Toks būdas netinka nuosekliai atstatomiems resursams. • Ciklinio resursų laukimo galima išvengti, įvedant tam tikra resursų pareikalavimo tvarką. Pvz., spausdintuvas->kompaktinis diskas->kietas diskas. Kai procesas laiko spausdintuvą, jis gali užimti ir diskus, bet užimant diską, procesas negali pretenduoti į spausdintuvą. Tam jis turi išlaisvinti diską. Nesunku matyti, kad taip išvengiamas ciklinis laukimas, nors šiš būdas ir nepasižymi dideliu resursų naudojimo efektyvumu.  Aklaviečių vengimo problema. Aklaviečių profilaktika reikalauja daug kompiuterinio laiko ir kitų resursų. Išvengti aklaviečių galima analizuojant visus resursų pareikalavimus ir nustatant ar susidaro ciklinio laukimo sąlygas. Tai vėl gi reikalauja per daug laiko. Kitas būdas – leisti įgyvendinti tik tokius pareikalavimus, kurie potencialiai nepavojingi. Vienas iš tokių žinomų metodų (Dijkstra !) – bankininko algoritmas. Analogija: bankas duoda kreditus tik tuo atveju, jei jis galės ateity suteikti kreditus ir kitiems klientams (prognozuojant jų poreikius). Vengimo algoritmai reikalauja reikiamų resursų deklaravimo. Iš tokių deklaracijų sistema ir nustato ar reikalavimai yra “saugūs”, t.y. neveda į aklavietę. Pavyzdys. Tarkime turime 3 procesus, P1, P2 ir P3 ir 10 vienodo tipo sisteminių resursų (pvz., diskus). Maksimalių reikalavimų deklaracijos yra tokios: Procesas Max poreikis Dabartinis resursų užimtumas P1 8 3 P2 5 1 P3 8 2 Laisvų resursų skaičius – 4. Bendras max poreikis (21) gali būti didesnis už esamą. Svarbu, ar atsirastų tokia resursų skirstymo kombinacija ir tvarka, kad visi procesai galėtų sėkmingai pasibaigti. Tokia seka galėtų būti, pvz.,: P2 (->5) P1 (->8) P3. Kita situacija: Procesas Max poreikis Dabartinis resursų užimtumas P1 9 3 P2 5 1 P3 8 2 Laisvų resursų skaičius – 4. Skirtumas tik vienas - P1 reikia vienu resursu daugiau, bet tai sudaro potencialiai “nesaugią” situaciją, kurios vengimo algoritmai ir neleidžia. Vengimo metodai yra efektyvesni už profilaktikos metodus, bet turi savo apribojimus: • kiekvienas procesas turi deklaruoti savo poreikius, kas nerealu interaktyviose sistemose; • vengimo algoritmas turi būti vykdomas visada kai atsiranda naujas resursų pareikalavimas. Sistemoje, kurioje daug vartotojų, tai sunkiai įgyvendinama.  Aklaviečių sekimas reikalauja periodinio ciklinio laukimo atpažinimo procedūros paleidimo. Be nustatymo reikia įveikti aklavietę ir atstatyti sistemos veikimą. Tiesioginis būdas, t.y., iš karto panaikinti visus užblokuotus procesus, gali būti pakeistas nuosekliu procesų uždarymu tol kol aklavietė nebus panaikinta. Naikinamo proceso (aukos) pasirinkimas – tai atskira problema. Paprastai OS leidžia ir vartotojui naikinti užblokuotus procesus. Apibendrinimas. Praktikoje naudojamos įvairios išvardintų metodų kombinacijos. Administratoriui taip pat svarbu numatyti periodinį duomenų saugojimą bei situacijos patikrinimą, suplanuoti atšaukimo (roll-back) ir atstatymo (recovery) procedūras. Procesų valdymas VII. Procesų komunikacija Šiuolaikinėse OS naudojamas platus komunikacijos metodų spektras: • Signalai; • Bendro naudojimo failai, arba vamzdžiai (pipes); • Pranešimų siuntimas; • Bendro naudojimo atmintis • DDE – dinaminis duomenų apsikeitimas; • OLE, ActiveX – objektų surišimas; • Semaforai (kaip procesų sinchronizavimo priemonė). • Signalai. Primityvi komunikacijos forma; paprastai gaunami signalai apie nukreipimą nuo normalios situacijos. Signalai yra panašūs į pertraukimus: proceso vykdymas pertraukiamas ateinančiam signalui apdoroti. Paprastai signalai siunčiami iš OS branduolio taikomajam procesui ir proceso veikimas yra nutraukiamas. Kai kurie signalai gali būti siunčiami iš vieno taikomojo proceso kitam. Pavyzdys 1. CTRL-C (arba DEL) klavišų kombinacija vykdomajai programai nutraukti. Čia, branduolys gauna ir atpažįsta pertraukimo kodą bei siunčia signalą SIGINT visiems duoto terminalo procesams. Kai taikomasis procesas gauna SIGINT, jis, pagal nutylėjimą, nutraukia vykdymą. Galima užprogramuoti programą taip, kad jos vykdymas nebūtų baigiamas SIGINT signalu (pvz., pats Shell irgi gauna SIGINT bet jo vykdymas nėra nutraukiamas. Pavyzdys 2. Kai vykdomojoje programoje atsiranda perpildymo arba dalybos iš nulio situacija, branduolys gauna aparatūros pertraukimą, į kurį reaguoja siųsdamas taikomajam procesui SIGFPE signalą, kuris ir nutraukia proceso veikimą. UNIX sistemos bendrųjų signalų sąrašas. Signalo vardas Trumpas aprašymas SIGHUP “Hang-up”, siunčiamas procesams, kai terminalas baigia darbą. SIGINT Terminalo inicijuotas pertraukimas. SIGQUIT Terminalo pertraukimas, iššaukiantis atminties “dump’ą”. SIGILL Neleistinos komandos vykdymas. SIGTRAP Trasavimo signalas, naudojamas UNIX programų derintojų. SIGFPE Slenkančio kablelio operacijų klaida. SIGKILL Siunčiamas vieno proceso, kad pabaigtų kitą. SIGSEGV Atminties adresavimo (“segment violation”) klaida. SIGSYS Neatstatoma klaida sisteminiame kreipinyje. SIGPIPE Rašymas į “vamzdį” neturint proceso – skaitytojo. SIGALARM Siunčiamas procesui iš branduolio kai baigiasi laiko limitas. SIGTERM Siunčiamas vartotojo proceso, kad pabaigtų kitą procesą. SIGUSR1,2 Vartotojo apibrėžiami signalai, siunčiami iš taikomojo proceso. Kadangi, kaip ja minėta, programuotojui suteikiamas signalų apdorojimo mechanizmas, taikomosios programos gali bandyti susidoroti su nepageidautinomis situacijomis. Signalams siekti naudojamas sisteminis kreipinys signal, kuris turi du parametrus: stebimo signalo vardą ir pageidaujamų veiksmų aprašą. Tokiais veiksmais gali būti: - signalo ignoravimas; - specialios situacijos apdorojimo funkcijos vykdymas; - standartinės apdorojimo funkcijos vykdymas (paprastai, proceso nutraukimas). Pavyzdžiui, kreipinys: signal(SIGFPE, fpe_apdorojimas) kur fpe_apdorojimas – vartotojo klaidos apdorojimo funkcija, kuri bus paleista vykdyti aptikus signalą SIGFPE. Vienintelis nesiekiamas signalas - SIGKILL. Signalų siuntimas. Signalai siunčiami naudojant sisteminį kreipinį kill, kurio pavadinimas nusako kokių veiksmų bus imamasi pagal nutylėjimą : kill(pid, sig) kur pid – proceso, signalo gavėjo, identifikatorius; sig – siunčiamas signalas, pvz., kill(457, SIGUSR2). • Vamzdžiai (pipes): vieno proceso išėjimas nukreipiamas į kito proceso įėjimą. Darbui su vamzdžiais dažniausiai naudojamos shell komandos, kuriose “vamzdžio” operacija vaizduojama simboliu “”: $ who wc –l Tokių komandų vykdymas reiškia laikinojo tarpinio failo kūrimą. Pirmas procesas rašys į šį failą, o antrasis skaitys iš jo. UNIX programuotojai gali ir patys sukurti toki “pipe” failą ir naudotis standartinėmis read ir write procedūromis. “Pipe” failas kuriamas sisteminiu kreipiniu pipe, kuris gražino du failo vardus (deskriptorius), rašymui ir skaitymui. Paprastai sistema organizuoja “pipe” failą kaip eilę (t.y., FIFO struktūrą) ir taiko apribojimus šios eilės dydžiui (tipiškai 5120 bytes). Iš tuščios eilės negalima skaityti, į pilną eilę negalima rašyti. Failų deskriptoriai gali būti paveldėti, tad “pipe” mechanizmas veikia tarp proceso “tėvo” ir visų jo “vaikų”. Problema: vamzdžiai egzistuoja tol, kol egzistuoja juos inicijuojantys procesai. Duomenys neperskaityti iki tokio proceso veikimo pabaigos bus prarasti. Dalinai problema sprendžia vardiniai vamzdžiai (named pipes).  Vardiniai vamzdžiai Vardiniai vamzdžiai (taip pat vadinami FIFO) – tai vamzdžiai, kurie naudoja pastovų UNIX sistemos failą. Jų sukūrimui naudojama mknode komandų procesoriaus komanda arba sisteminis kreipinys: $ /etc/mknod npipe p kur parametras “p” ir nusako, kad reikalingas “pipe” failas. Sukurtas failas nieko nesiskiria nuo paprasto failo, t.y., gali būti naudojimas daugelio kitų tarpusavyje nesusijusių procesų.  Pranešimų siuntimas. Pranešimų siuntimas panašus į vamzdžių, t.y., FIFO mechanizmą, nes ir čia procesai apsikeičia simbolių sekomis naudojant pranešimų eiles (message queues). Tokios eilės kuriamos sisteminiu kreipiniu msgget ir, karta sukurtos, tampa prieinamos ir kitiems procesams per msgsnd ir msgrcv sisteminius kreipinius. Kiekviena eilė pasižymi numeriu (sveikojo tipo kintamuoju), kuris tarnauja jos vardu. Patys pranešimai – tai struktūros (įrašai) iš dviejų dalių: teksto ir teksto tipo (long integer). Funkcija msgrcv leidžia atsižvelgti į pranešimo tipą, pvz., perskaityi pranešimus tipo (t.y., pvz., prioriteto) didėjimo tvarka. Pranešimų eilės gali būti valdomos ar naikinamos naudojant sisteminį kreipinį msgctl.  Bendro naudojimo atmintis. Tam tikra atminties sritis UNIX sistemoje gali būti skirta bendram procesų naudojimui. Tokia galimybė įgyvendinama sisteminiais kreipiniais shmget, shmat, shmdt, shmctl. Funkcija shmget veikia analogiškai msgget: tam tikrą atminties sritis bus išskirta ir atitinkamo segmento identifikatorius bus gražintas. Kiti procesai gali naudotis shmget šiam segmento identifikatoriui gauti. Norint naudotis šia atmintimi procesas turi kreipiniu shmat prijungti bendrai naudojamą segmentą prie kitų jam skirtų atminties segmentų. Gavęs segmento adresą, procesas galės tiesiogiai kreiptis į reikiamą vietą. Funkcija shmdt atjungia (detach) bendrai naudojamą segmentą nuo proceso. Bendrai naudojamos atminties valdymą ir panaikinimą atlieka funkcija shmctl.

Daugiau informacijos...

Šį darbą sudaro 6427 ž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!

Detali informacija
Darbo tipas
Lygis
Universitetinis
Failo tipas
Word failas (.doc)
Apimtis
25 psl., (6427 ž.)
Darbo duomenys
  • Programų konspektas
  • 25 psl., (6427 ž.)
  • Word failas 203 KB
  • Lygis: Universitetinis
www.nemoku.lt Atsisiųsti šį konspektą
Privalumai
Pakeitimo garantija Darbo pakeitimo garantija

Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.

Sutaupyk 25% pirkdamas daugiau Gauk 25% nuolaidą

Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.

Greitas aptarnavimas Greitas aptarnavimas

Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!

Atsiliepimai
www.nemoku.lt
Dainius Studentas
Naudojuosi nuo pirmo kurso ir visad randu tai, ko reikia. O ypač smagu, kad įdėjęs darbą gaunu bet kurį nemokamai. Geras puslapis.
www.nemoku.lt
Aurimas Studentas
Puiki svetainė, refleksija pilnai pateisino visus lūkesčius.
www.nemoku.lt
Greta Moksleivė
Pirkau rašto darbą, viskas gerai.
www.nemoku.lt
Skaistė Studentė
Užmačiau šią svetainę kursiokės kompiuteryje. :D Ką galiu pasakyti, iš kitur ir nebesisiunčiu, kai čia yra viskas ko reikia.
Palaukite! Šį darbą galite atsisiųsti visiškai NEMOKAMAI! Įkelkite bet kokį savo turimą mokslo darbą ir už kiekvieną įkeltą darbą būsite apdovanoti - gausite dovanų kodus, skirtus nemokamai parsisiųsti jums reikalingus rašto darbus.
Vilkti dokumentus čia:

.doc, .docx, .pdf, .ppt, .pptx, .odt