atmintinės valdymas, virtuali atmintinė

42
parengė N. Sarafinienė 1 Atmintinės valdymas, virtuali atmintinė 3 skyrius 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

Upload: hazel

Post on 05-Jan-2016

68 views

Category:

Documents


3 download

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

TRANSCRIPT

Page 1: Atmintinės valdymas, virtuali atmintinė

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

Page 2: Atmintinės valdymas, virtuali atmintinė

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.

Page 3: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

3

Atmintinės valdymo įrenginio (MMU) vieta ir funkcijos

Page 4: Atmintinės valdymas, virtuali atmintinė

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

Page 5: Atmintinės valdymas, virtuali atmintinė

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.

Page 6: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

6

Techninės įrangos elementai susiję su apsauga ir kilojamumu

• Vykdant procesą yra nustatomi bazės bei ribiniai registrai.

Page 7: Atmintinės valdymas, virtuali atmintinė

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

Page 8: Atmintinės valdymas, virtuali atmintinė

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

Page 9: Atmintinės valdymas, virtuali atmintinė

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)

Page 10: Atmintinės valdymas, virtuali atmintinė

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.

Page 11: Atmintinės valdymas, virtuali atmintinė

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)

Page 12: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

12

Puslapiavimo pavyzdys

• Klausimas: ar mes visiškai išvengiame fragmentacijos?

Page 13: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

13

Tipinis puslapių lentelės įėjimas

Page 14: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

14

Puslapių lentelės realizacijaPagrindinė atmintinė

• Puslapių lentelės bazinis adresas, ilgis• Kiekvienas kreipinys į atmintinę susijęs su dviem

kreipiniais į atmintinę.

Page 15: Atmintinės valdymas, virtuali 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.

Page 16: Atmintinės valdymas, virtuali atmintinė

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.

Page 17: Atmintinės valdymas, virtuali atmintinė

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

Page 18: Atmintinės valdymas, virtuali atmintinė

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

Page 19: Atmintinės valdymas, virtuali atmintinė

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.

Page 20: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

20

Bendras naudojimasis segmentais

Page 21: Atmintinės valdymas, virtuali atmintinė

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

Page 22: Atmintinės valdymas, virtuali atmintinė

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

Page 23: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

23

Kombinuota adreso transliacijos schema

Page 24: Atmintinės valdymas, virtuali atmintinė

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.

Page 25: Atmintinės valdymas, virtuali atmintinė

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.

Page 26: Atmintinės valdymas, virtuali atmintinė

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

Page 27: Atmintinės valdymas, virtuali atmintinė

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.

Page 28: Atmintinės valdymas, virtuali atmintinė

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.

Page 29: Atmintinės valdymas, virtuali atmintinė

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

Page 30: Atmintinės valdymas, virtuali atmintinė

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ę!!!) .

Page 31: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

31

LRU pavyzdys

Page 32: Atmintinės valdymas, virtuali atmintinė

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

Page 33: Atmintinės valdymas, virtuali atmintinė

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

Page 34: Atmintinės valdymas, virtuali atmintinė

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

Page 35: Atmintinės valdymas, virtuali atmintinė

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?

Page 36: Atmintinės valdymas, virtuali atmintinė

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

Page 37: Atmintinės valdymas, virtuali atmintinė

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.

Page 38: Atmintinės valdymas, virtuali atmintinė

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.

Page 39: Atmintinės valdymas, virtuali atmintinė

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.

Page 40: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

40

Puslapio dydis

Page 41: Atmintinės valdymas, virtuali atmintinė

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.

Page 42: Atmintinės valdymas, virtuali atmintinė

parengė N. Sarafinienė

42

Atminties valdymas naudojant susietą sąrašą

• Reikia apjungimo operacijos