1 / 42

Atmintinės valdymas, virtuali atmintinė

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.

hazel
Télécharger la présentation

Atmintinės valdymas, virtuali atmintinė

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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ė

  2. 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ė

  3. Atmintinės valdymo įrenginio (MMU) vieta ir funkcijos parengė N. Sarafinienė

  4. 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ė

  5. 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ė

  6. Techninės įrangos elementai susiję su apsauga ir kilojamumu • Vykdant procesą yra nustatomi bazės bei ribiniai registrai. parengė N. Sarafinienė

  7. 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ė

  8. 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ė

  9. 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ė

  10. 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ė

  11. 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ė

  12. Puslapiavimo pavyzdys • Klausimas: ar mes visiškai išvengiame fragmentacijos? parengė N. Sarafinienė

  13. Tipinis puslapių lentelės įėjimas parengė N. Sarafinienė

  14. Puslapių lentelės realizacijaPagrindinė atmintinė • Puslapių lentelės bazinis adresas, ilgis • Kiekvienas kreipinys į atmintinę susijęs su dviem kreipiniais į atmintinę. parengė N. Sarafinienė

  15. 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ė

  16. Dviejų lygių puslapių lentelės schema • Puslapių lentelė gali būti didelė ir pati gali užimti kelis puslapius/rėmus. parengė N. Sarafinienė

  17. 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ė

  18. 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ė

  19. 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ė

  20. Bendras naudojimasis segmentais parengė N. Sarafinienė

  21. Puslapiavimo ir segmentavimo palyginimas parengė N. Sarafinienė

  22. 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ė

  23. Kombinuota adreso transliacijos schema parengė N. Sarafinienė

  24. 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ė

  25. 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ė

  26. 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ė

  27. 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ė

  28. 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ė

  29. 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ė

  30. 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ė

  31. LRU pavyzdys parengė N. Sarafinienė

  32. 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ė

  33. 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ė

  34. 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ė

  35. 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ė

  36. 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ė

  37. 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ė

  38. Į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ė

  39. 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ė

  40. Puslapio dydis parengė N. Sarafinienė

  41. 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ė

  42. Atminties valdymas naudojant susietą sąrašą • Reikia apjungimo operacijos parengė N. Sarafinienė

More Related