unix os - vilniaus universiteto matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · r.naujikas...

61
Unix OS Vilniaus Universitetas Matematikos ir Informatikos fakultetas Rolandas Naujikas 2008

Upload: others

Post on 24-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

Unix OS

Vilniaus UniversitetasMatematikos ir Informatikos fakultetas

Rolandas Naujikas

2008

Page 2: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 2

Turinys

● Atminties Valdymo Posistemė (AVP, angl. MMU)– Terminologija– Puslapiavimas– Branduolio atmintis valdymas

● Žemėlapis● išskyrimas/atlaisvinimas

Page 3: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 3

Procesas

Branduolys

Aparat rin rangaū ė į

Aparat ros vald. s sajaū ą

I/O posistemė

Atmintiesvald.

posistemėProcesų

valdymas

Sistemini komand s sajaų ų ą

Procesas

Fail ųposistemė

Page 4: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 4

Terminai

● Atminties valdymas (AVP) (angl. memory management) susijęs:– Pirminė atmintis (main memory)

● Operatyvioji (RAM)– Antrinė atmintis (secondary memory)

● Atsarginė, standusis diskas

Page 5: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 5

AVP: Tikslas● Dalintis atmintimi efektyviai● Optimizuoti veikiančių procesų skaičių ir

atminties sanaudas– Turi įtakos kaip veikia procesų vykdymo

tvarkaraščio sudarymas ● Pagreitinti įvesties/išvesties operacijas antrinei

atminčiai naudojantis podėliu (cache)● Apsaugoti atminties panaudojimą

– keli procesai naudojasi tuo pačiu atminties lopinėliu

Page 6: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 6

Hierarchija

Page 7: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 7

Procesai ir atmintis

● Kiekvienas procesas veikia virtualioje mašinoje● Virtualioji mašina - tai abstrakti, vienodos

sąsajos mašina, kuri paslepia aparatūros veikimo ypatumus

● Virtualioji mašina naudoja virtualiąją atmintį● Virtualioji atmintis – tai adresų erdvės

intervalas, kuris nepriklauso nuo fizinės atminties (tiek pirminės, tiek antrinės atminties adresų ir išsidėstymo)

Page 8: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 8

Procesai ir atmintis II

● Virtualiosios atminties adresas – nuoroda į konkrečią virtualios atminties vietą

● Operacija, kuri virtualios atminties adresą verčia į fizinės atminties adresą vadinama adresų transliacija arba adresų vertimas– Įkelti procesai nepriklauso nuo fiz. adreso– Lengviau balansuoti/optimizuoti sąnaudas– Greičiau atliekamas konteksto persijungimas

Page 9: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 9

Procesai ir atmintis III

● Segmentas– dauguma OS suteikia vientisus atminties regionus,

tačiau jie turi būti fizinėje atmintyje vienalyčiai – be skylių (intel 286, 1984m)

● Mes naudosime terminą segmentas tik jau virtualios atminties segmentavime

Page 10: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 10

Procesai ir atmintis IV

● Virtualioji atmintis daloma į fiksuoto dydžio atminties puslapius (angl. page)

● Virtualiosios atminties adreso transliavimas atliekamas nurodant puslapio numerį pridedant poslinkį nuo puslapio pradžios

● Atminties apsauga atliekama aparatūros ir puslapių lygyje

Page 11: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 11

Procesai ir atmintis V

Page 12: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 12

Puslapiavimas

● Adresų transliavimas įgalina atskirti virtualią nuo fizinės erdvės, kuria naudojasi Procesorius (angl. CPU)

● Kiekvienas puslapis virtualioje atmintyje turi žymę:– Reziduojantis (angl. resident)– Nereziduojantis (angl. nonresident)

● Rezidavimas apibrėžia buvimą fizinėje atmintyje

Page 13: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 13

Puslapiavimas II

● Jei procesas bando pasiekti virtualios atminties adresą, kuris nėra pažymėtas kaip reziduojantis, tai įvyksta puslapio nepataikymo (angl. page fault) įvykis

● AVP (angl. MMU) atlieka puslapių nepataikymų įvykiu aptarnavimą

Page 14: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 14

Puslapiavimas III

● Su puslapiavimu susijusios trys strategijos (angl. policies):– įkrovos (angl. fetch) strategija, kai puslapis įkraunamas į atmintį

– pozicionavimo (angl. placement) strategija, kai puslapis padedamas nurodoma jo pozicija

– atnaujinimo (angl. replacement) strategija, taikoma nustatyt kuris ar kuria tvarka puslapiai privalo būti išimami iš atminties kai to reikia.

Page 15: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 15

Puslapiavimas IV

● Puslapiavimas priklauso nuo:– įkrovos ir atnaujinimo strategijų.

● tai yra tikras pagal reikalavimą grįstas puslapiavimas

● Praktikoje niekas neįgyvendina pagal reikalavimą grindžiamą puslapiavimą, nes sudėtingumas atsiremia į puslapių keitimo greitį atmintyje

Page 16: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 16

Puslapiavimas V

● Praktiškai naudojamas puslapiavimas: išankstinė įkrova (angl. prefetching)– įkrauna visus puslapius, kurie susiję su veikiančiu

procesu, ne vien nepataikytą puslapį– Atnaujinimo strategija naudojama net neužpildytai

atminčiai

Page 17: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 17

Puslapiavimas VI

● Puslapio atnaujinimo algoritmai:– FIFO, pirmas eilėje (angl. First In First Out)– NRU nesenai nenaudotas (angl. Not Recently

Used)– Šansas Nr. 2 (angl. second chance)– LRU, (angl. Least Recently Used)– Random (liet. atsitiktinis)– NFU (Not Frequently Used)– Aging, senstantis

Page 18: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 18

FIFO

● Tiesiog eilė● Lengva įgyvendinti● Mažai informacijos reikia valdyti, kad atlikti

puslapiavimą● Atnaujinimas atliekamas, įvykus puslapio

nepataikymui iš eilutės pradžios išimamas puslapis, o naujas dedamas į eilės galą.

Page 19: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 19

Belady anomalija

● Didinant eilės ilgį puslapių nepataikymų skaičius nemažėja

● Pvz., prašomi puslapiai įkraunami seka:– 3,2,1,0,3,2,4,3,2,1,0,4– Eilės ilgis h=3, arba h=4

Page 20: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 20

Belady anomalija II, h=3

● 3,2,1,0,3,2,4,3,2,1,0,43 2 1

2 1 0

1 0 3

0 3 2

...

Page 21: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 21

NRU (angl. Not recently Used)

● Stengiasi atsikratyti seniausių puslapių pagal kategorijas:– nesikreipta, nemodifikuota– nesikreipta, modifikuota– kreiptasi, nemodifikuota– kreiptasi, modifikuota

● Lygiais laiko tarpais puslapis priskiriamas vienai iš kategorijų

Page 22: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 22

Šansas Nr.2

● Veikia kaip FIFO, tik prieš išimant pirmą elementą stebima ar kreipimosi bitas nustatytas

● Jei kreipimosi bitas nustatytas, tai puslapis dedamas į eilės galą, suteikiant puslapiui būti dar atmintyje

Page 23: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 23

LRU (angl. Least Recently Used)

● Panašus į NRU algoritmą, tačiau skaičiuojami prioritetai laiko intervale

● Labiausiai naudojami puslapiai visada bus atmintyje.– Gana efektyvus, algoritmas– Sudėtingas įgyvendinant ir kainuoja laiko suvaldyti

visus puslapius.

Page 24: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 24

Random

● Atsitiktinai pasirenkama, kurį puslapį sukeisti.● Dažnai kombinuojamas su FIFO ar LRU● Pvz., IBM OS/390

Page 25: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 25

Darbinės aibės modelis

● Sistema stebi į kokias atminties vietas prieina procesas.

● Atminties vietų skaičius dažnai būna fiksuotas ir lėtai kintantis

● Pvz., BSD tipo Unix'ai

Page 26: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 26

Branduolio atminties žemėlapis

● Branduolio įkrovimo metu sukuriama– vm_map duomenų struktūros– skaičius vm_map_entry įrašų

● Kiekvienas vm_map_entry aprašo atminties intervalus● Įgalina valdyti atminties intervalus ir kurti sub-žemėlapius

Page 27: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 27

Page 28: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 28

Branduolio atminties išskyrimo sąsaja

● Branduolio atm. išskyrimo f-jos nustato priėjimą prie vm_map struktūros

● VA atmintis gali būti:– Puslapiuojama– Nepuslapiuojama – Atminties intervalai pririšti prie

fizinės atminties ir lieka atmintyje visą laiką

Page 29: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 29

Nepuslapiuojama d.ž.k. pririšta

● kmem_alloc()– Išskiria atminties intervalą ir apnulina

● kmem_maloc()– išskiria atminties intervalą ir neapnulina– nerakinamas atminties išskyrimas

Page 30: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 30

Puslapiuojama

● kmem_alloc_pageable()● kmem_alloc_wait()

– rakina procesą, kol atminties išskyrimui atsiras● Puslapiuojamas branduolio atminties išskyrimas

kol kas naudojamas tik laikinai informacijai.

Page 31: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 31

Branduolio atm. atlaisvinimas

● kmem_free()– Atlaisvina puslapiuojamą ir nepuslapiuojamą

branduolio atmintį● kmem_free_wakeup()

– Atlaisvina branduolio atmintį ir pažadina su kmem_allow_wait() laukiančių procesų

Page 32: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 32

Savybės

● Jei atminties reikia vienam sisteminiam kvietimui:– Vartotojo lygmenyje, sistema išskirs trumpalaikę

atmintį iš vykdomos programos dėklo (steko)● Atminties panaudojamumas:

išnaudojamumas= išskirtosreikalaujamos

Page 33: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 33

Savybės II

● Išnaudojamumas yra labai svarbu● Geras atminties skirstytojas turėtų 100%

atminties išnaudojamumą● Svarbu geras atminties išnaudojamumas

branduoliui, nei vartotojo procesai● Kad išlaikyti kuo didesnį išnaudojamumą AVP

turi atlaisvinti atmintį kuo greičiau, kai tik jos nebereikia

Page 34: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 34

Savybės III

● Atminties skyrimas privalo būti greitas– Kuo lėčiau išskiriama atmintis tuo lėčiau procesai

veiks● Branduolio atminties skyrimui naudojamos dvi

strategijos– Mažų atminties kiekių išskyrimas

● sąrašai ilgio ^2– Didelių atminties išskyrimų – lėtesnis

● Apvalinama iki puslapių ir ieškoma pirmos tinkančios vietos

Page 35: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 35

Savybės IV

● Pagerinti atminties defragmentaciją– Grupuoti mažus išskyrimus į vieną puslapį– Ištrynus didelį kiekį atminties stengiamasi sulieti šalimais esančius laisvus atminties plotus

Page 36: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 36

Dalinama atmintis

● Dalinama atmintis (angl. shared)● Tradiciškai virtuali atmintis kiekvienam procesui

yra izoliuota● Yra poreikis dalintis atmintimi tarp procesų, t.y.,

keliems procesams pasiekti tą pačią atmintį

Page 37: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 37

Problema

● Keli procesai adresuoja tą pačią atmintį● Tarkime procesas A sugadina atmintyje esančią

informaciją● Procesas B, kuris adresuoja į tą pačią dalinamą

atmintį irgi matys sugadintą informaciją.● Problema, kai du procesai bando rašyti į tą

pačią vietą

Page 38: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 38

Sprendimas

● Semaforas– Procesas A turi galimybę įjungti semaforą prieš

rašydamas į atmintį– Kiti procesai B, ir t.t. prieš rašydami į dalinamą

atmintį privalo patikrinti ar semaforas įjungtas. Jei taip, tai privalu laukti kol semaforas bus išjungtas.

– Procesas A užbaigęs rašymą privalo išjungti semaforą.

– Kiti procesai B ir t.t. vėl gali stengtis įjungti semaforą.

Page 39: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 39

Operacijos su dalinama atmintimi

apibrėžiamos <sys/shm.h>#define MAX_LEN 10000

struct region { int len; char buf[MAX_LEN]};struct region *rptr;int fd;fd = shm_open("/myregion", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);if (fd == -1) // handle errorsif (ftruncate(fd, sizeof(struct region)) == -1) // handle errorsrptr = mmap(NULL, sizeof(struct region), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);if (rptr == MAP_FAILED) //handle errors /* use for example, rptr->len */.

Page 40: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 40

MMAP

● Beveik viskas UNIX'e yra rinkmenos● Keli procesai, gali prisimontuoti bendrą

dalinamą atmintį tačiau reikia turėti būdą:– Adresuoti– Apibrėžti išskirtos atminties dydį – Apibrėžti ar tai yra dalinamas ar privatus atminties

prijungimas– mmap pagalba galima nurodyti objektą, pvz.,

rinkmeną kuri bus dalinama atmintis.

Page 41: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 41

Dalinamas atminties prijungimas

● Kelios vm_map_entry rodo į pą patį rinkmenos objektą

Page 42: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 42

Privatus atminties dalinimas

● Savybės:– Pakeitus duomenis privačios atm. dalinimo metu

atmintyje, pokyčiai nėra atvaizduojami į rinkmeną– Visi pokyčiai prijungtoje atmintyje nėra matomi

kitiems procesams

Page 43: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 43

Privatus atminties dalinimas

Page 44: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 44

Naujo proceso kūrimas

● Procesas kuriamas fork() pagalba● Iškart po to vykdomas exec(), perdengiantis

vaiko procesu, VA adresų erdvę su binarinės rinkmenos turiniu.

● Procesas vykdomas tol, kol jis baigsis arba bus užbaigtas kitų procesų (gavus signalą).

Page 45: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 45

Naujo proceso kūrimas II

● funkcija fork() dubliuoja egzistuojančio proceso VA adresų erdvę– dubliuojami VA resursai– dubliuojama VA esanti proceso informacija ir

duomenys

Page 46: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 46

Naujo proceso kūrimas

● Dubliuojama:– procesų struktūros ir susijusi informacija (struct

proc) ir vartotojo struktūra ir informacija (struct user)– branduolio dėklas (angl. stack)

● Papildomai rezervuojami resursai:– atminties– rinkmenų (failinės) sistemos– tarpinės (angl. swap) atminties

Page 47: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 47

Esminiai fork() momentai

● Rezervuoti VA adresų erdvę vaiko procesui● Išskirti vietą proceso struktūrai ir ją užpildyti● Nukopijuoti vaiko procesui tėvo proceso grupės

ID, priėjimo leidimus, bylų aprašus, ribojamus ir signalų apdorojimus

● Išskirti naują vaiko proceso vartotojo dalį (user area)

● Sukurti vmspace struktūra

Page 48: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 48

Esminiai fork() momentai II

● Dubliuoti VA adresų erdvę sukuriant vm_map_entry struktūras

● Surežisuoti, kad vaiko procesas grąžintų 0, jei teisingai užsidaro

Page 49: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 49

kaip dubliuojama vm_map_entry

● fork() funkcijos vykdymo metu yra pereinama per sąrašą vm_map_entry struktūrų ir jų vaikus ir atliekama:– Jei įrašas nurodo į „tik skaitomą“ regioną, reiškia

kopija galima turėti tik su nuoroda– Jei įrašas nurodo į privačius atminties regionus

(duomenų segmentas ir dėklas) vaiko procesas turi sukurti „kopiją rašant“ (angl. copy-on-write) atminties regioną. T.y., jei vėliau bandoma rašyti į tą atminties regioną, tai kuriamas šešėlinis žemėlapis išlaikyti keistus puslapius

Page 50: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 50

Kaip dubliuojama vm_map_entry

– Jei įrašas yra pažymėtas kaip bendras / dalinamas (angl. shared) naujas dalinamas regionas yra sukuriamas ir abi vm_map_entry nuorodos rodo į tą patį puslapį

● proceso atminties regionai nėra suliejami● Tik branduolio atminties regionai konkrečiam

procesui yra suliejami / supaprastinami. Tai vertėtų atlikti ir proceso atminčiai, ypač, ilgai veikiantiems ir dideliems procesams,

Page 51: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 51

Naujo proc kūrimas be dubliavimo

● Kai tėvinis procesas blokuojamas kol vaiko procesas baigs darbą nebūtina dubliuoti visos proceso informacijos Pvz., shell scripte paleidžiama išorinė programa, kurios darbo pabaigos reikia sulaukti

● T.y. jei tėvinis procesas blokuojamas su wait ir laukia kol vaiko procesas užbaigs darbą užtenka vienos VA atminties kopijos

Page 52: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 52

Naujo proc kūrimas be dubliavimo

● Situacijose, kai tėvinis procesas blokuojamas ir laukia vaikų pabaigos yra sukurtas sisteminis kvietimas vfork()

● vfork() yra efektyviau nei „kopija rašant“(angl. copy-on-write) metodas, nes branduolys tik perduoda tėvinę adresų erdvę ir neatlieka kopijų.

● Vaiko procesui užbaigus darbą, VA adresų erdvę grąžinama laukiančiam tėviniam procesui.

Page 53: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 53

Proceso dydžio keitimas

● Procesas keičia savo dydį atmintyje.● Atminties sąnaudos didėja arba mažėja

priklausomai nuo situacijos● Užimamos atminties dydis visada apvalinamas

viršutinį puslapių skaičių● Keičiant programos dydį automatiškai

perskirstoma ir dėklui skirta atmintis● Perskirsčius atmintį nauji regionai apnulinami.

Page 54: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 54

Proceso dydžio keitimas II

● Prieš keičiant programos atminties užimtumą patikrinama ar naujas proceso dydis tilps į atmintį sekančiai:– Patikrinti ar VA resursų užteks– Patikrinti ar adresų erdvė prašomo dydžio iškarto

seka esamo VA adresų erdvės pabaigą– Jei vm_map_entry struktūra neribojama būti

fiksuoto dydžio dėl tarpinės (angl. swap) atminties

Page 55: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 55

Proceso dydžio keitimas III

– Jei vm_map_entry įrašas turi vieną ar daugiau puslapių tarpinėje atmintyje, tai nebus leidžiama ilginti įrašo

– Bus sukurtas vm_map_entry naujas įrašas su adresų erdvės pradžia prijungiamas prie VA pabaigos praplečiant

● Jei perskirstant atmintį proceso dydis atmintyje mažėja, tai:– Nereikalingi atminties puslapiai atlaisvinami iškart.

Dėl to, vm_map_entry įrašai ištrinami, taip sumažindami VA adresų erdvę

Page 56: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 56

Proceso dydžio keitimas III

● Jei atlaisvinamos atminties kiekis didesnis nei įrašyta vm_map_entry visa struktūra atlaisvinama ir pereinama prie kitų intervalų

● Visi kreipiniai į atminties regioną, kurie nėra jau sąrašuose įvykdys puslapio nepataikymą (angl. page fault)

Page 57: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 57

Rinkmenos susiejimas su VA

● naudojamas mmap() funkcija susieti rinkmeną sistemoje su VA adresų erdve.– Galima pareikalauti nuo kurio VA adreso iki kurio

adreso bus priskirta tai rinkmenai– Galima palikti branduoliui pačiam nuspręsti dėl

adresų erdvės priskyrimo ir parinkimo

Page 58: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 58

mmap veikimas VA perskirstyti II

● perskirstant vm_map_entry skanuojama:– Jei naujas atminties intervalas persidengia

atlaisvinti senąjį ir naują sukurti– Jei naujas mmap yra poaibis egzistuojančio

mmap'o, tai suskaldoma į tris dalis ir laisvos dalys apjungiamos su kitomis laisvomis vm_map_entry

– Jei naujas mmap yra didesnis tai senas gražinamas, ir naujas sukuriamas.

– Dalinis adresų persidengimas kombinuotas visų ankstesnių būdų

Page 59: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 59

Page 60: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 60

Apibendrinimai

● VA pakelia abstrakcijos lygi ir įgalina turėti vienalytę VA ant skirtingo tipo atminties:– pirminė (operatyvioji)– antrinė (standusis diskas)

● VA skaidoma puslapiais, kai kiekvienas puslapis● AVP stengiasi išlaikyti kuo daugiau puslapių

pirminėje atmintyje

Page 61: Unix OS - Vilniaus Universiteto Matematikos ir ...rolnas/unix_os/paskaita.4.lt.pdf · R.Naujikas Unix OS 7 Procesai ir atmintis Kiekvienas procesas veikia virtualioje mašinoje Virtualioji

R.Naujikas Unix OS 61

Apibendrinimai● AVP efektyvus veikimas priveda prie efektyvios

OS darbo● Labai svarbu yra determinuoti algoritmai VA

valdyti● Proceso gyvavime atminties sąnaudos didėja ir

mažėja, tačiau OS turi veikti stabiliai● Procesai turi galimybė bendrauti ar apsikeisti

duomenimis per dalinamąją atmintį