Upload
hazel
View
68
Download
3
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
parengė N. Sarafinienė
1
Atmintinės valdymas, virtuali atmintinė
3 skyrius
3.1 Proceso reikalavimai atmintinei3.2 Proceso apsauga ir kilojimo galimybės3.3 Fiksuoti, dinaminiai skyriai3.4 Puslapiavimas3.5 Segmentavimas3.6 Puslapių mainų algoritmai3.7 Puslapio dydis
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 (swap device) 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
Svarstymo objektas Puslapiavimas Segmentavimas
Ar turi programuotojas žinoti kad ši technika yra naudojama?
Ne Taip
Ar gali bendra adresų erdvė viršyti fizinės atmintinės dydį?
Taip Taip
Ar gali būti procedūros ir duomenys atskiriami ir atskirai apsaugomi? Ne Taip
Ar gali būti lengvai įjungiamos lentelės, kurių dydis svyruoja?
Ne Taip
Ar palengvinamas dalinimasis procedūromis tarp vartotojų?
Ne Taip
Kokiu tikslu buvo sukurta ši technika? Siekiant gauti didelę adresų erdvę ir išvengiant reikalavimo pirkti daugiau fizinės atminties
Leisti programas ir duomenis sudalinti į logines nepriklausomas adresų erdves ir suteikti pagalbą apsaugai bei bendram naudojimui
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 algoritmasFIFO (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