![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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/47.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/57.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/58.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/59.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/60.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081521/5ecd8ef4da615726ea5ce7bc/html5/thumbnails/61.jpg)
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į