430 likes | 776 Views
Atmintinės valdymas, virtuali atmintinė. 3.1 Proceso reikalavimai atmintinei 3.2 Proceso apsauga ir kilojimo galimybės 3.3 Fiksuoti, dinaminiai skyriai 3.4 Puslapiavimas 3.5 Segmentavimas 3.6 Puslapių mainų algoritmai 3.7 Puslapio dydis. 3 skyrius. Atmintinės valdymas.
E N D
Atmintinės valdymas, virtuali atmintinė 3.1 Proceso reikalavimai atmintinei 3.2 Proceso apsauga ir kilojimo galimybės 3.3 Fiksuoti, dinaminiai skyriai 3.4 Puslapiavimas 3.5 Segmentavimas 3.6 Puslapių mainų algoritmai 3.7 Puslapio dydis 3 skyrius parengė N. Sarafinienė
Atmintinės valdymas Idealiu atveju programuotojai norėtų, kad atmintinė būtų: • didelė • greita • pastovi • Atmintinės hierarchija • Nedidelės apimties greita, brangi spartinančioji atmintinė (cache). • Vidutinio dydžio, kiek pigesnė pagrindinė atmintinė. • gigabaitai lėtos, pigios disko atmintinės. • Atmintinės valdymas surištas su visa atmintinės hierarchija. parengė N. Sarafinienė
Atmintinės valdymo įrenginio (MMU) vieta ir funkcijos parengė N. Sarafinienė
Esminiai pastebėjimai • Programa • Turi būti įkelta į atmintinę (turi būti sukurtas procesas) tam, kad ji būtų vykdoma. • Procesui gali tekti laukti diske, įvedimo eilėje prieš pradedant jį vykdyti. • Atmintinė • Gali būti sudalyta, siekiant patenkinti daug procesų. • Turi būti išskirstoma efektyviai siekiant patalpinti į ją galimai daugiau procesų. parengė N. Sarafinienė
Apsauga ir kilojamumas • Negalima būt tikrais, kur atmintinėje bus patalpinta programa • Kintamųjų patalpinimo adresai, programoje esantys adresai negali būti absoliutūs. • Programa turi būti neprileidžiama prie atmintinės sričių, skirtų kitoms programoms. parengė N. Sarafinienė
Techninės įrangos elementai susiję su apsauga ir kilojamumu • Vykdant procesą yra nustatomi bazės bei ribiniai registrai. parengė N. Sarafinienė
Proceso iškėlimas • Procesas gali būti iškeltas iš pagrindinės atmintinės į atmintinės įrenginį, skirtą atidėtiems procesams (swapdevice) ir vėliau įkeltas atgal į pagrindinę atmintinę siekiant pratęsti jo vykdymą. parengė N. Sarafinienė
Nuoseklus atmintinės priskyrimas, fiksuoti skyriai • Bet kuri programa, nepriklausomai nuo to, kokia maža ji bebūtų, užima visą skyrių. • Tai iššaukia vidinę fragmentaciją. parengė N. Sarafinienė
Nuoseklus atmintinės priskyrimas, dinaminiai skyriai • Procesui priskiriama tiksliai tokia atmintinės sritis, kokios jam reikia. • Atmintinėje susidaro skylės – gaunama išorinė fragmentacija • Reikia suspaudimo proceso tam, kad perstumti procesus (defragmentation) parengė N. Sarafinienė
Dinaminiai skyriai. Talpinimo algoritmai • Pirmas tinkamas: talpinamas pirmas tinkamas pagal dydį • greitas algoritmas • Sekantis tinkamas: talpinamas sekantis tinkamas pagal dydį procesas • – siekiama išnaudoti didelį bloką esantį atmintinės gale. • Geriausiai tinkamas : talpinamas mažiausio dydžio procesas • reikia peržiūrėti visų procesų sąrašą • Gaunamos mažiausios skylės. • Blogiausiai tinkamas: talpinamas procesas su didžiausia apimtim • Reikia peržiūrėti visą sąrašą • Lieka daug skylių, bet gerai talpina didesnius blokus. parengė N. Sarafinienė
Vengiant išorinės fragmentacijos: puslapiavimas • Atmintinė sudalijama į nedideles vienodo dydžio dalis - rėmus (frames) • Kiekvienas procesas sudalomas į tokio pat dydžio dalis – puslapius (pages) • OS palaiko kiekvieno proceso puslapių lentelę, kurioje yra informacija apie tai į kokį rėmą yra patalpintas kiekvienas proceso puslapis. • atmintinės adresas = (puslapio numeris, poslinkis puslapyje) parengė N. Sarafinienė
Puslapiavimo pavyzdys • Klausimas: ar mes visiškai išvengiame fragmentacijos? parengė N. Sarafinienė
Tipinis puslapių lentelės įėjimas parengė N. Sarafinienė
Puslapių lentelės realizacijaPagrindinė atmintinė • Puslapių lentelės bazinis adresas, ilgis • Kiekvienas kreipinys į atmintinę susijęs su dviem kreipiniais į atmintinę. parengė N. Sarafinienė
Asociatyvūs registrai • TLB(Translation Lookaside Buffers): tai specialūs greito išrinkimo buferiai – spartinančioji atmintinė, skirta puslapių lentelei. • Vykdant adreso transliaciją , jei puslapis P yra asociatyviame registre, tai rėmas # gaunamas iš TLB; priešingu atveju rėmas # imamas iš puslapių lentelės, esančios pagrindinėje atmintinėje. parengė N. Sarafinienė
Dviejų lygių puslapių lentelės schema • Puslapių lentelė gali būti didelė ir pati gali užimti kelis puslapius/rėmus. parengė N. Sarafinienė
Bendrai naudojami puslapiai • Bendrai naudojamas kodas: viena tik skaitomo kodo kopija bendrai naudojasi keletas procesų (pav., tekstų redaktoriai, kompiliatoriai, langų sistema, bibliotekiniai kodai, ...). • Tai nėra taip trivialu įdiegti parengė N. Sarafinienė
Segmentacija • Tai atmintinės valdymo schema, kuri palaiko vartotojo požiūrį į atmintinę/programą, priimant jas kaip segmentų rinkinius. • segment = loginis vienetas, pav.: • Pagrindinė programa, • Procedūra, • Funkcija, • Lokalūs, globalūs kintamieji, • Bendras blokas, • Stekas, • Masyvas,... parengė N. Sarafinienė
Segmentacija • Apsauga: kiekvieną segmentų lentelės įėjimą nusako: : • Galiojimo (validation) bitas, jei jis = 0 tai segmentas netinkamas • skaitymo/rašymo/vykdymo privilegijos • ... • – ... • Kodo bendras naudojimasis vykdomas segmentų lygyje. • Segmentai gali būti skirtingo dydžio => reikalingas dinaminis atmintinės skirstymas. parengė N. Sarafinienė
Bendras naudojimasis segmentais parengė N. Sarafinienė
Puslapiavimo ir segmentavimo palyginimas parengė N. Sarafinienė
Puslapiavimo ir segmentavimo apjungimas • Puslapiavimas • Skaidrus programuotojo atžvilgiu • Pašalina išorinę fragmentaciją • Segmentacija • Matoma programuotojui • Leidžia augančias duomenų struktūras, palaiko modulinį principą, palaiko bendrą naudojimąsi ir apsaugą. • Bet: atmintinės skirstymas? • Hibridinis sprendimas: suskirstyti puslapiais segmentus (kiekvieną segmentą sudalant fiksuoto ilgio puslapiais). parengė N. Sarafinienė
Kombinuota adreso transliacijos schema parengė N. Sarafinienė
Programos vykdymasvirtualios atmintinės koncepsija Pagrindinė atmintinė = disko erdvės spartinančioji (cache) atmintinė Operacinė sistema įkelia į pagrindinę atmintinę tik kelis programos gabalus. • Rezidentinis (nuolat būnantis atmintinėje) rinkinys – tai ta proceso dalis, kuri yra pagrindinėje atmintinėje. • Kai prireikia adreso, kurio nėra pagrindinėje atmintinėje, yra generuojamas puslapio trikio (page-fault) pertraukimas • OS perkelia procesą į blokuotą būvį ir išduoda diskui I/O užklausą • Kitam procesui yra priskiriamas CPU. parengė N. Sarafinienė
Galiojimo (valid) bitas • Su kiekvienu puslapių lentelės įėjimu yra surištas puslapio galiojimo bitas (pradinė jo reikšmė yra 0): • 1 – jei puslapis yra atmintinėje • 0 – jei puslapio nėra pagrindinėje atmintinėje. Vykstant adreso transliacijai, jei galiojimo bito reikšmė puslapių lentelės įėjime yra 0, OS siunčiamas puslapio trikio pertraukimas. parengė N. Sarafinienė
Puslapio trikis ir beveik pilna adreso transliacijos schema Atsakydama į puslapio trikį OS privalo: • Rasti laisvą rėmą (gal iškelti puslapį?). • Įkelti puslapį į rėmą. • Atnaujinti lenteles, galiojimo bitą. • Atnaujinti komandos vykdymą. parengė N. Sarafinienė
Jei nėra laisvo rėmo? • Puslapio pakeitimas – reikia algoritmo, kurio veiklos išdavoje būtų gaunamas minimalus puslapio trikių kiekis. • Puslapio trikis reikalauja nuspręsti: • Kuris puslapis turi būti iškeltas iš pagrindinės atmintinės • Sudaroma erdvė naujai įkeliamam puslapiui. • Jei iškėlimui parinktas puslapis yra atžymėtas kaip modifikuotas, jis turi būti išsaugotas. • Jei puslapis nėra modifikuotas, tai gali būti tiesiog užrašoma ant jo viršaus- tuo sutaupoma rašymų į diską kiekis. • Gerai būtų neparinkti dažnai naudojamo puslapio iškėlimui, nes gali prireikti jį vėl greitai įkelti atgal. parengė N. Sarafinienė
FIFO pakeitimo algoritmas FIFO (First-In-First-Out) – pirmas į eilę, pirmas iš eilės gali būti įdiegtas naudojant žiedinį buferį. Pavyzdžiui, turime kreipinius į puslapius vykstančius šia tvarka: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 Belady anomalija – daugiau rėmų kartais sukelia daugiau puslapių trikių. Tai susiję su tuo, kad pakeičiamas puslapis, kurio netrukus reikės. parengė N. Sarafinienė
Optimalus pakeitimo algoritmas • Reikia pakeisti tą puslapį, kurio nereikės ilgiausiai. 4 rėmų pavyzdys kreipinių sekai: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 Iš kur žinoti šią informaciją? • Šis algoritmas tiesiog naudojamas lyginant kitų algoritmų funkcionavimą. parengė N. Sarafinienė
LRU algoritmas LRU (Least Recently Used) –mažiausiai paskutiniu laiku naudoto puslapio keitimo algoritmas • Idėja – pakeisti tą puslapį, į kurį nebuvo kreiptąsi ilgiausiai. • Pagal lokališkumo principą yra tikėtina, kad į šį puslapy artimiausioje ateityje nebus kreipiamasi. • Įdiegimas: • Galima kiekvieną puslapį atžymėti įdedant paskutinio kreipinio laiką. • Galima panaudoti steką • problema: yra papildomai apkraunama OS (OS branduolys kviečiamas esant kiekvienam kreipiniui į atmintinę!!!) . parengė N. Sarafinienė
LRU pavyzdys parengė N. Sarafinienė
LRU aproksimacija • Naudojamas use (kreipimosi) bitas : • Pradinė reikšmė 0 • Vykstant kreipiniui į puslapį tech. įrangos priemonėmis nustatomas į 1. • Keičiant puslapį: • Ieškomas 1 rėmas kurio use bitas yra 0 – jis bus keičiamas. • Paieškos metu kiekvienas 1-tinis use bitas operacinės sistemos yra keičiamas į 0. • Jei visi bitai 1 => naudojama FIFO parengė N. Sarafinienė
Algoritmai, besiremiantys kreipinių kiekiais Juos panaudojant vykdomas kreipinių kiekio į kiekvieną puslapį skaičiavimas (tai daroma techn. įrangos priemonėmis arba gaunama daug papildomo darbo). • LFU algoritmas : keičiamas puslapis su mažiausiu kreipinių kiekiu. • MFU algoritmas: jo idėja yra ta, kad puslapis su mažiausiu kreipinių kiekiu yra, gal būt, ką tik įkeltas ir bus naudojamas parengė N. Sarafinienė
Perkrovos (thrashing) Jei procesui nepakanka įkeltų į atmintinę puslapių puslapių trikiai yra labai dažni. To pasekmė: – žemas CPU panaudojimas. • OS gali galvoti, kad yra per mažas multiprogramavimo lygis • pridedamas papildomas procesas į sistemą... • Ir ciklas tęsiasi… • Perkrova (Thrashing) ≡ sistema yra užimta puslapių trikių apdorojimu (kilodama puslapius į atmintinę ir iš jos...). parengė N. Sarafinienė
Perkrovos diagrama Kodėl tinka puslapiavimas? Veikia lokališkumo principas • Procesas migruoja nuo vienos vietos prie kitos. • Vietos gali persidengti. • Kodėl vyksta perkrovos? parengė N. Sarafinienė
Perkrovų vengimas Reikia nutarti, koks puslapių trikių kiekis bus “priimtinas” kiekvienam procesui. • Jei aktualus kiekis yra per žemas, iš proceso atimti jam išskirtus rėmus. • Jei per didelis – išskirti papildomą rėmą. parengė N. Sarafinienė
Procesų atidėjimas vengiant perkrovos Gali būti atidedami – iškeliami iš atmintinės: • Žemiausio prioriteto procesas • Paskutinis aktyvuotas procesas • Mažai tikėtina, kad šis procesas turi atmintinėje darbui jam reikalingą puslapių kiekį. • Procesas su mažiausiu atmintinėje esančių puslapių kiekiu • Šis procesas reikalaus mažiausiai pastangų jį iš naujo užkraunant. • Didžiausias procesas • Išlaisvins daugiausiai laisvos vietos. • Procesas su didžiausiu likusiu vykdymo langu. parengė N. Sarafinienė
Įkėlimo politika Ji apsprendžia kada puslapis turi būti įkeliamas į atmintinę: • Esant puslapio pareikalavimui (Demand paging)– puslapis įkeliamas į pagrindinę atmintinę tik sutikus į jį kreipinį. • Tai sukelia daug puslapio trikių prasidėjus procesui. • Išankstinis įkėlimas – įkeliama daugiau puslapių nei reikia. • Žymiai efektyviau yra įkelti daugiau puslapių, kurie yra nuosekliai išsidėstę diske. parengė N. Sarafinienė
Puslapio dydis • Mažas puslapio dydis: • Mažesnė vidinė fragmentacija • Daugiau puslapių reikia procesui • Didesnės puslapių lentelės (gali nebūti visa pagrindinėje atmintinėje) • Didesnis puslapių kiekis atmintinėje–vykdant procesą atmintinėje atsiras puslapiai su vykdytais į juos kreipiniais; mažas puslapių trikių kiekis. • Didinant puslapio dydį gali būti taip, kad kreipiniai vyks į kitus puslapius –didės puslapių trikių kiekis. • Jei puslapio dydis artės prie programos dydžio, tai puslapių trikių kiekis bus vėl bus mažas. • Antrinė atmintinė paprastai yra projektuojama efektyviam didelių blokų perkėlimui, todėl jos atžvilgiu yra geriau didesni puslapiai. parengė N. Sarafinienė
Puslapio dydis parengė N. Sarafinienė
Atminties valdymas naudojant bitų atitikmenis arba susietus sąrašus Dalis atmintinės su 5 procesais, 3 skylėm. – raidėmis pažymėtos procesams išskirtos sritys – užštrichuoti intervalai yra laisvi • Pateiktas užimtumo atvaizdavimas bitų atitikmenimis (bit map0 • Ta pati informacija pateikta kaip susietas sąrašas. parengė N. Sarafinienė
Atminties valdymas naudojant susietą sąrašą • Reikia apjungimo operacijos parengė N. Sarafinienė