2 skyrius Procesai ir gijos 2 1 K





























- Slides: 29
2 skyrius Procesai ir gijos 2. 1 Ką vadiname procesu 2. 2 Proceso būviai 2. 3 Procesų eilės 2. 4 OS kontrolės struktūros 2. 5 Vykdymo modos 2. 6 Gijos: procesai, gijos 2. 7 Gijų tipai parengė N. Sarafinienė 1
Proceso sąvoka • Procesas tai programa vykdymo metu. • Procesų pavyzdžiai: – – OS branduolys OS apvalkalas (shell) Programa, vykdoma po kompiliavimo www-naršyklė • OS vykdomas procesų valdymas apima: – Išteklių priskyrimą – Planavimą: garantuoti jų vykdymą (stebėti procesoriaus panaudojimą, atsakymo laikus) – Užtikrinti komunikacijas tarp procesų, sinchronizaciją (stebėti, kad nesusidarytų mirties taškai) parengė N. Sarafinienė 2
Dviejų būvių proceso modelis • Procesas gali rastis viename iš dviejų būvių – Vykdomas, nevykdomas – Nevykdomas procesas yra eilėje parengė N. Sarafinienė 3
Ką veikia nevykdomi procesai? parengė N. Sarafinienė 4
Realiai yra daug eilių • • I/O veiksmai yra žymiai lėtesni nei CPU operacijų vykdymas Kas bus, jei visi procesai lauks I/O pabaigos ir visa atmintinė yra užimta? Arba jei nepakanka vietos atmintinėje visų procesų vykdymui? Arba, jei. . parengė N. Sarafinienė 5
Atidėti procesai • Idėja: Permesti (swap) šiuos procesus į diską tuo atlaisvinant atmintinę naujų procesų priėmimui. • Procesą permetus į diską procesas iš būvio blokuotas pereina į būvį atidėtas (suspend). parengė N. Sarafinienė 6
Du atidėti būviai parengė N. Sarafinienė 7
Proceso atidėjimo priežastys • OS turi atlaisvinti pakankamai vietos pagrindinėje atmintinėje norėdama įkelti procesą, kuris yra pasiruošęs vykdymui. • OS gali atidėti foninį ar paslaugos procesą, kuris kelia problemą (tuo išvengiant mirties taško). • Vartotojas gali atidėti programos vykdymą derinimo tikslais ar norėdamas panaudoti išteklį. • Procesas gali būti vykdomas periodiškai (pvz. apskaitos procesas) ir todėl jis gali būti atidedamas iki kito laiko momento. • Tėvo procesas gali norėti atidėti vaiko proceso vykdymą, siekdamas jį patikrinti ar modifikuoti. parengė N. Sarafinienė 8
UNIX procesų diagrama parengė N. Sarafinienė 9
OS kontrolės struktūros Ko reikia procesui, kad jis galėtų būti vykdomas (proceso įvaizdis): – – Programa Duomenys Stekas Proceso kontrolės blokas (kontekstas – daugiaprograminiam režimui OS turi saugoti tokią informaciją: – Informaciją apie kiekvieno proceso ir išteklio būvį. – Tam konstruojamos atitinkamos lentelės. parengė N. Sarafinienė 10
Proceso lentelė bei kitos OS lentelės Kiekvienas įėjimas talpina inf. : • Kur procesas yra patalpintas • Parametrus, reikalingus jo valdymui – Proceso ID –Proceso būvį – proceso vietą atmintinėje –proceso kontrolės blokas Kitos OS lentelės talpina informaciją, liečiančią išteklius: – Kaip priskirta pagrindinė/antrinė atmintinė – I/O įrenginių būklė – Buferiai atmintinėje – Failų būviai, vieta, parametrai, . . . parengė N. Sarafinienė 11
Proceso kontrolės blokas (PCB) PCB talpina: – Identifikatorius (proceso, tėvo proceso, vartotojo, . . . ) – Proceso būvio informaciją (registrų reikšmės: turi būti kopijuojamos ir atstatomos esant perėjimams: vykdomas↔pasiruošęs, …) – Kitą proceso kontrolės informaciją: • Skirstymo ir būvio informacija (prioritetas, laukiamas įvykis, …) • Proceso atmintinės lentelės • ištekliai (atidaryti failai, priklausomybė, …) • Nuorodos (į kitus procesus eilėje, …) • Privilegijos parengė N. Sarafinienė 12
Proceso sukūrimas Pavyzdžiai: – Pradedama vykdyti sukompiliuota vartotojo programa – Prisijungia vartotojas (pradedama vykdyti apvalkalo-shell programa) – Sukuriamas procesas tam tikros paslaugos atlikimui (pvz. spausdinimas: vartotojas vykdo lpr komandą) – Procesass sukuria naują procesą (pvz. shell sukuria lpr; vartotojų programos irgi gali kurti procesus) OS privalo: – – – Priskirti procesui unikalų identifikatorių Procesui išskirti erdvę atmintinėje Inicializuoti proceso kontrolės bloką Sukurti tinkamus sąryšius Įjungti procesą į sistemą (į kažkurias eiles, . . . ) parengė N. Sarafinienė 13
Kada nutraukiamas vykdomo proceso vykdymas • Laikrodžio mechanizmo generuojami pertraukimai – Procesas visą maksimalų vykdymui skirto laiko kvantą • I/O pertraukimas • Atmintinės klaida – Adresas gali būti nurodytas į virtualią atmintinę, taigi gali kilti reikalas įkelti kažkurią dalį į pagrindinę atmintinę. • Vidinės priežastys – Įvyko klaida – Procesas baigė savo veiksmų vykdymą ir turi būti baigtas • Sisteminiai kvietiniai – Kaip pavyzdžiui, atidaryti failą. parengė N. Sarafinienė 14
Proceso perjungimas (konteksto perjungimas) vykdomas→kitas – Išsaugomas procesoriaus turinys įskaitant PC ir kitų registrų turinius procesų kontrolės bloke (PCB) – PCB perkeliamas į atitinkamą eilę (pasiruošę, blokuoti, …) – Vykdymui išrenkamas kitas procesas – Į PCB įrašoma informacija apie išrinktą procesą – • Update memory-management data structures • • Restore context (in processor) of the selected process parengė N. Sarafinienė 15
Vykdymo būsenos (modes) • Vartotojo būsena – Tai mažesnių privilegijų būsena – Vartotojo programos paprastai vykdomos šioje būsenoje • Sisteminė, kontrolės arba branduolio būsena – Būsena su didesnėmis privilegijomis – Vykdomas OS branduolys parengė N. Sarafinienė 16
OS vykdymas • Ne-procesinis branduolys – OS kodas vykdomas kaip atskira esybė, kuri vykdoma privilegijuotoje būsenoje. • Vykdymas vartotojo procesuose – OS programinė įranga vartotojo proceso kontekste – Procesas vykdomas privilegijuotoje būsenoje kai jis vykdo OS kodą. • Procesais pagrįsta OS – Dauguma branduolio funkcijų yra atskiri procesai. – Gerai tinka esant keliems procesoriams. parengė N. Sarafinienė 17
Gijos parengė N. Sarafinienė 18
Procesai ir gijos • Daug gijų: sudaroma prielaida tam, kad daugiau nei viena esybė turi vykdymo galimybę tame pačiame procese. Vienetu. . • vykdant CPU laiko skirstymą yra gija. • … išteklių valdyme yra procesas. parengė N. Sarafinienė 19
Procesas turi. . . • Virtualią adresinės erdvę, kurioje yra proceso įvaizdis. • Globalius kintamuosius, failus, vaikų procesus, signalus ir signalų doroklius. Gija turi. . . • Vykdymo būvį, steką ir kontekstą (išsaugomą, kai nėra vykdoma) • Prieigą prie atmintinės ir jos proceso išteklių. – visos proceso gijos tuo naudojasi bendrai. • Tam tikrą gijai skirtą atmintinės sritį lokalių kintamųjų saugojimui. parengė N. Sarafinienė 20
Atidėjimas ir pabaiga • Proceso atidėjimas ( Suspending a process) apima visas proceso gijas nes visos proceso gijos naudojasi ta pačia adresinės erdve. • Procesą užbaigiant yra baigiamos visos proceso gijos. parengė N. Sarafinienė 21
Nauda taikant gijas • Kadangi to paties proceso gijos dalinasi atmintine ir failais, jos gali komunikuoti viena su kita nesikreipdamos į branduolį. • Gali suteikti veiksmų išlygiagretinimą procese – I/O ir skaičiavimo veiksmai gali persidengti – Gali būti vykdomas vykdymas esant keletui procesorių • Reikalauja mažiau laiko – Sukuriant / užbaigiant giją nei procesą – Pereinant tarp gijų tame pačiame procese. parengė N. Sarafinienė 22
Gijų panaudojimas • Perdengiant aktyvų (foreground) darbą su foniniu. • Vykdant asinchroninį apdorojimą (pav. darant atsarginę kopiją ir tuo pačiu metu redaguojant). • Greitas proceso vykdymas (lygiagretūs nepriklausomi veiksmai). • Užtikrinant modulinę programos struktūrą. • Klausimas: ar galima pasiekti proceso veiksmų išlygiagretinimą nenaudojant gijų? parengė N. Sarafinienė 23
Gijos vartotojo erdvėje • Branduolys nežino apie gijų egzistavimą. • Vykdymo meto ( Run-time) sistema (gijų biblioteka) yra atsakinga už apskaitą (bookkeeping), gijų skirstymą (scheduling) , leidžia vartotojišką skirstymą. • Gali būti naudojamos bet kurioje OS. • Bet kyla problemos blokuojant sisteminius kvietinius (užsiblokavus kažkuriai gijai, blokuojamas visas procesas, kitos to paties proceso gijos negali būti vykdomos). parengė N. Sarafinienė 24
Branduolio lygio gijos • Branduolys saugo kontekstinę informaciją apie procesus ir gijas. • CPU laiko skirstymas daromas gijų atžvilgiu. • Nėra blokavimo problemos • Mažiau efektyvu nei vartotojo-lygio gijos (branduolys įjungiamas kuriant gijas, jas užbaigiant, pereinant tarp gijų). parengė N. Sarafinienė 25
Hibridinė realizacija • Sutankinant (Multiplexing) vartotojo-lygio gijas į branduolio-lygio gijas. • Išnaudojami abiejų metodų privalumai. parengė N. Sarafinienė 26
Vartotojo lygio ir branduolio lygio gijos parengė N. Sarafinienė 27
Pavyzdžiai • Posix Pthreads: (IEEE) standartas: – Specifikuoja sąsają – Diegimas (naudojant vartotojo/branduolio lygio gijas) priklauso nuo projektuotojų. – Daugiau įprastos UNIX sistemose. • Win 32 gijų biblioteka: – Branduolio lygio biblioteka, “windows” sistemos. • Java gijos: – Palaikomos JVM (VM: vykdymo laiko sistema) – Diegimas priklauso nuo projektuotojų parengė N. Sarafinienė 28
Pavyzdžiai • Solaris: hibridinis modelis – Vartotojo-lygio gijos – Lengvasvoriai procesai – Branduolio lygio gijos • W 2 K: hibridinis modelis – gija: branduolio (naudoja win 32 API) • Fiber: Vartotojo-lygio gijos (biblioteka) • Linux: Tik branduolio lygio – clone sist. kvietinys: Naudoja parametrus nusakant bendrą išteklių naudojimąamount of – Clone kartais gali būti lygiavertus fork. parengė N. Sarafinienė 29



