&'()*),+.-/' 01-/2 ) 2 4!56' )7 Käyttöjärjestelmät I Osio 2: Luennot 5-8 Muistinhallinta Tiina Niklander; kalvot Auvo Häkkinen!"#$% # Stallings, Luku 7 Tietojenkäsittelytieteen laitos Helsingin yliopisto KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-2 8:9 ' 4;) + ' <>=?A@ BCFE GIHJ@ BCK@ LJMNA= = @ LJLNOBCFNP R SFTFSJUFV WYX <>Z[B[@ LJZ?A\YCFNA@ L?ALIGIHJ@ B[CK@ LJMNA= = @ LCFN NA]*ZJ@ @ LCF?JEJC,^N*\YCK@ CK@ _AZ_J_JC`P R SKTFSJUFV afx bj]ac[d[lnjnagi@ B?AC,^NA\YCK@ CK@ _AZ_J_ACeP R SFTFSJUFV afx f ]*g HcJc[dih*dBCF?AGjP R SFTFSJUFV afx ca]od[zb[@ LJZ?*\YCFNA@ L?AL.B?JkAGl?ALCF_A@ LJCK@[P R SFTFSJUFV mkx?a]od[zb[@ LJZ?*\YCFNA@ L?AL.B[@ n[hjckhblp R SFTFSJUFV ofx <>Z[B[@ LJZ?A\YCFNA@ L?ALIp ^J\Y_OB?[BqB[@NA@ LN Z_AZ_ALNJNALIGIHJ@ B[CK@ BqBN CFNA@ Z_AZ_ALNJNALI=?[nd[= = E &'()*),+.-/' 01-/2 ) 2 4!56' ) 77 w { rst:7 8"uv x7 8"u 7yz%{ss 7yy%{ 8"u KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5 - KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-4 }( ( 9!~ 22 ~ ~ 5 99 ) 99 ddqb[@ L?ALIGIHJ@ BCK@ ƒ[ B[@ CFE}n_A@J^_ACKZNA@ BCFNJ muistiavaruus laitteisto (MMU, väylät) käyttää fyysisiä osoitteita?[b[zjh[b[gihj@ BCK@ koodin + käsiteltävän datan suoritusaik. tallennus joukko peräkkäisiä tavuja ˆ HJZJ@ GIHJ@ BCK@ tiedon (ohjelmat, data) pysyvä tallennus joukko peräkkäisiä lohkoja h`@ @ \YCF_ LEA@ cj?al}nea= @ = = E GIHJ@ BCK@ LJMNA= = @ LJLNALŠ N CK@?JcJ_OBCF_Œ EA\?[B[CF?A= GlEALI=?A@ ^EJC dacfe mahd. automaattisesti KJ:n toimesta s ŽŽ 9!~ 22 ~ ~ 56 99 ) 99 ^J\Y_OB?[BqB[@ Ll_[B_A@ CF?JN[nNA\FHJH[B loogiset osoitteet eli virtuaaliosoitteet n_a@_a= = NB[HJHJ\Y?AGI^J@JZJHJ@ L. YdqdqB[@ L?ALIGIHJ@ BCK@ ZJHJ= = NAZJ@ LI^J\Y_OB?[BqB[@ = = NI_AGlNI_[B_A@ CF?JN[nNA\FHJH[B osoitteet suhteellisia alun suhteen (0..MAX) B_On?A= = HB NAZNJNALCKHJHI= _J_JkA@ B?OBCK@JGl_JcAHJHJ=?A@ MJ@ L ne voidaan tehdä eri aikoina, osoitteiden paikkaus linkityksessä erilaisia käyttöoikeuksia koodi R (vapaakäyntisyys) data R / W / RW osa moduuleista tarkoitettu yhteiskäyttöön KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-5 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-6 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-1
"0*Ž 2 9!~ 0 2 ~~ 22 g M1?A= GlN NA= H? NACFN NA= H? @ L_INA= H?J?AL = _A^JHBBN h`hjmcf?j?a= = @ B[@ N n[@ @ CFCFNAHJZB[@ N ^J\Y_OB?[BqB[@ L _AGlNA= = N GIHJ@ B[CK@ NA= H?J?A= = N rr 44 22 99 ) ' 56 99 ) 9!~ 4!4 9!~~ ) <>CK@ Gl?A= =?}n_a@ cjnjnal.bna= = @ N ZJ@ @ LCF?JE ^NA@ ZJZN GIHJ@ B[CK@ BqBN voi käyttää suoraan fyysisiä osoitteita _A^J^JH LIGIHJ@ = =?I_[B[@ = =? NB_[n?A= = HJZB[@ = =? MJH_A=?AMCK@ @[B[@ @ CFEAƒ?JCFCFE GIHJ@ BCK@ @ LIGlNAMCKHJH GlNAMc JGl_ALCFN ^A\Y_[B?[BqB[@ N vapaan / varatun tilan hallinta NA@ CKCF?A@ BCF_ MJH_A=?AMCK@ @[B[@ @ CFEAƒ?JCKCF?A@ nejc,^j\y_ob?[bqb[@ C B_ACKZ?ICF_A@ B[@ NJNAL MMU KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-7 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-8 w w 99 ) 9!~ 4!4 9!~ ) ) 99 56 99 `NA^NJNB[@ _A@ CF?JCFCFNOn[HJHB?A@ CKCF_[nNA@ MCF_ KJ voi siirtää prosesseja välillä levylle KJ voi ottaa suoritettavaksi useampia prosesseja prosessin paikka voi vaihdella suorituksen aikana M1?A= Gl_A@ NI?A@n_A@JCK@?JCFEJE GI@ LJL?A^EA@ LIGIHJ@ BCK@ N B_On?A= = HBiB[@ _A@ CKCKHJH.B[H_A\F@ CKHBNA@ ZNALN suhteelliset osoitteet >@ @ CFCFNAHJZB?JC YddqB[@ ZB[@_OB_A@ CFCF?A@ ZB[@[n[@ @ Gl?A@ BCFEJEAL?ALJL?ALIGIHJ@ B[CK@ L_AHCF_JN CFNA= =?ACKHBCFN _ALNA@ ZNA@ L?ALl_OB_A@ CF?AGIHJHJLJL_[B! BqBN w w 99 ) 9!~ 4!4 9!~ ) ) 99 56 99 h`h_œ NAHB HnNACFCFNI?A@BNJN ZE[d[CFCFEJEICF_A@ B?ALIGIHJ@ BCK@ NA= H?A@ CFN B_A@ CF?JCFNA\FZJ@ B[CKHB}ZEJEALJL[BNA@ ZNALN GlNAMcJ_ACF_ALCFN sovelluksen moduulit voidaan kääntää eri aikoina prosessien sijainti voi vaihtua suoritusaikana käskykanta voi sallia osoitustapoja,?a@n_a@[b[@ CFEICF?AMcJE " joissa osoite lasketaan suoritusaikana _ALNA@ ZNA@ L?ALI= NA@ = = @ B[HJHBCFNA\FZJ@ BCKHB _[B[@ CFCFNA@ L#!! BqBN NI_[B[@ CFCFNA@ L BqBN KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-9 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-10 w w 99 ) 9!~ 4!4 9!~ ) ) 99 56 99 <>MJCF?A@ B[ZE[dCKCF h NA= = @ CFCFNOnN}d[MCF?A@ B?ALIZ_J_JcA@ LcJNJCFNALIZE[d[CFCF suojauksista tinkimättä! _J_JcA@?A@JGIHJHCKH}B[H_A\F@ CKHJZB?ALIZJHJ= H?OBqBN vapaakäyntisyys (reentrancy) järkevämpää sallia koodin yhteiskäyttö kuin pitää muistissa useita kopioita _AL?AC,^J\Y_[B?[BB[@ C CF?AZ?OnEJC d[mcf?a@ BC dacfe GIHJ@ cj?al ZNALBBNAƒ1 _JCF?ALILJ@ @ = = E}d[MCF?A@ B[@ EICK@?JCF_*\YNAZ?ALCF?A@ CFN Esim. tuottajalla ja kuluttaja yhteinen puskuri ZE[d[CFE}BEA@ Z?A@ CFEAƒJ^NA= n?a= HJ^[dqd[LCFŒ E &'()*),+.-/' 01-/2 ) 2 4!56' ) 77 r& 8 7y&t%$ u {7yty w x7 8"u 7yz%{ss 7y u { KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-11 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-12 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-2
a r r 9!~ 56 99 ) 9!~ 4!4 9!~ ) p \Y_[B?[BB[@JZ_AZ_ALNJNALIGIHJ@ BCK@ @ L[=?[nqd[= =? _[B._AM1?A= GlN. YdqdB[@ B?ALIGIHJ@ B[CK@ LIZ_AZ_Aƒ B[@ CFEI?A@nEA= CFCFEAGlEACFCFE ^dbc dcfeb[h_a\f@ CKCFNAGlNJNAL?AL?ACF?A= GlEJC a) kiinteä partitiointi b) dynaaminen partitiointi c) Buddy System d) yksinkertainen segmentointi e) yksinkertainen sivutus NJC B_ LBJZNJCF_JN[nN ZNAL[BNALJ^?A\F@ LJL? ei paljon käyttöä nykyisissä järjestelmissä kuuluu kuitenkin KJ:n peruskäsitteistöön &'()*),+.-/' 01-/2 ) 2 4!56' ) 77 #& 9!9!~ ) 2') 0J) 9 ) 9 Ž) KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-1 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-14 && 9!9!~ ) 2 ' ) "0J) 99 )) 99 Ž )!" # $ % % & ' #! ( " )" &*& #)% % +,#- %./ % " ' #! ". & % ) 0-1 " && 9!9!~ ) 2 ' ) "0J) 99 )) 99 Ž ) _[B.?A@A\F@ @ CFCFE[nEAL}B[HJHJ\YCFNnNA^NJNJCFN ^NA\YCK@ CK@ _JCFNAƒ CF?AZJ@JCK@ = NJN M?A@ CFCF_[nNA@ McJ_A= = N joku prosessi levylle PCB jäi muistiin _[B._AM1?A= GlN LJ@ @ LI@ B_Aƒ?JCFCF?A@B_A^J@ LJHJC,GI@ MJ@ LJZEJEAL ^NA\FCK@ CK@ _J_ALJƒJ^J@ CK@_AM1?A= Gl_A@ NALI\YNACKZNA@ BCFN CK@ = NALJL? kerrostus (overlaying) 2 ohjelmoijan hoitama segmentointi vain osa ohjelmasta muistissa piti koodata mitä osia (aliohjelmia, segmenttejä ) kullakin hetkellä muistissa ja missä kohdassa KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-15 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-16 46557 8:9<;=86>=?A@*8B58B5"C=8 46557 8:9<;=86>=?A@*8B58B5"C=8 `` a 55 bcc<58bd e EGF*H IKJLH MONPRKJLJTS UWV,X NYOJTV,ZY*JTY,M*JT[ varattiin aina kokonainen partitio, vaikka vähempikin olisi riittänyt \]H IKP,H MV,MO^*H _IKJTY,FJLF*UOH MV,M (internal fragmentation) partitioiden sisälle jäi tyhjää tilaa vapaa tila yhdessä olisi saattanut riittää uudelle prosessille, mutta se ei ollut yhtenäisellä alueella f*yign[,h N*N*H*^[h_iJLH JLH Y*J]IK[,UW[,M*NY,NY,H IH [ jos vapaita, valitse joku niistä jos kaikki varattuja, heittovaihda joku Blockedprosessi levylle j tilaa vapautuu aina saman verran f*yig^[h_ijlh JLH Y*J:Vh_TH*NY,NY,H IH [ valitse pienin partitio, johon prosessi sopii j yritti minimoida sisäistä pirstoutumista a) erikokoisille partitioille omat prosessijononsa j partitiokoko yksi työn parametreista b) yksi jono, josta valittiin johonkin vapaaseen partitioon KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-17 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-18 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5 -
a aa 46557 8:9<;=86>=?A@*8B58B5"C=8 `` a 55 bcc<58bd e 44 ; 8h8 bc;<@bc9=e 8:9 ;=8 7=?<? 57=9A7 >?<@*8B58B5"C<57=8B5 F K[ KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-19 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-20 7=?<? 57=9A7 >=?A@*8B58B5"C<57 8B5 hhv*jlf*np*jtv*v,mo^[h_ijlh JLH Y,H MJLH [ ][h_i[,fkikjtv,mony*y*j[ X F*N*F*UWP*Ph_iP K[,H ZJTV,X H K[*J RM[*[,UOH IKVIKJLH*^*_iY IKVI IH V,MOJT[,_T^V,H V,MOUOF*N[*[,M h_iyikv I IH X X V UOF*H IKJLH [ K[,H M IKV,M KVh_T_i[,MON*F*H M JT[h_ H JIH X NY,H MV,MO^*H _IKJTY,FJLF*UOH MV,M (external fragmentation) varausten / vapautusten tuloksena väleihin jäi pieniä vapaita alueita fojlh H H IKJLH*UOF*H IJLH [ KP,X H X X P (compaction) prosesseja siirreltiin, jotta vapaa tila yhteen kohtaan yleisrasite 7=?<? 57=9A7 >=?A@*8B58B5"C<57 8B5! "$#&% '&(&(&)*)*#,+ -&./(&%&(&0&1&12 % 4 #&#,5&6 7&)*(&)8)*% 4 4 (9;:/<&7&<&7,=?>! @A7&),<&#&% <&<*%/B,5&6 7&)*(&)*)8% #C 7&EF2 E&%GA#F2H4 7&I&<&(&-*J 2 % 4 #&#&0&: K @L7F2 2 %&E&E&-&(&0?MA9AN 0,)*E&7&6 % 2 (F2 2 #FGA#&<&)8% Kuva 7.4 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-21 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-22 7=?<? 57=9A7 >=?A@*8B58B5"C<57 8B5! O$% % 0&5&1 K @L'&(*% 2 2 %&M/P&N 0,E&4 7&) + (&.FC #,MA9L)*#*%&)*(&0?5&#*% <&#&0?+.! R% <&#&0&#&#&0?M/P,5&1&1&)*%F2 #&#&),S(&#&-FTUJ 2 % 4 #&#&0! K E&0V,E*% )W2 % )*)*#?(*%/S(&#&-FTUJ 5&6 7&)*(&)*)*( C #&: K @ GA#&% 'F2 7*%/M/P*N 0?V,E&% )W2 % % 0 X Y E&4 7&<&)*(&0&#,B?5*% 6 )W2 #*4 (F2 2 #&N&Z/>\[ Z/>\[9]>_^`F9A> 55 bcc<58bd e Kuva 7.5 a?b c&d egfhi]d jjlkajm j]d jj/no p q j]kahb d d rrnjlkaeieb nr/n d b b kab c&d esgb c&d jm kar put rvc&d w x b d fhhy d jj/n cahzb k]b n pu{ b m c/d w x b d rn]ca fhhy d jj/n m b b d d e]kaenlca}}m b pu~ r]d w x b d j]d fjgr]d cab n]d ee rry y b car]c&d e fhij]c&d j KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-2 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-24 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-4
A?<@,?=e e 5 bcc<58bd e=? C<@h58 55 AC<5e 8:C? <C<@h58 55 *H _IKJ /H J yksinkertainen helpoin toteuttaa tehokkaasti (paras) isosta aukosta jää jäljelle isohko aukko hv IKJ /H J hyvä nimi, mutta tuloksena mahd. pieniä aukkoja tuloksena nopeimmin pirstoutuminen BV *J /H J varaukset / aukot muistin loppuosaan 0Y*JTV,FJLFI*X H M*N*H JTV*JTJ/RgX H IKJT[]Y I IK[ K[,^[*[*J:[,X FV*V,J NY*Y,MWJT[,HY IKY,H JTJTV*V,MOUOF*N[,H IKV I IK[ P,_ V IKJRNKIKV I IKP kumpi parempi? (osoite,pituus) (osoite,pituus) F*MOUOF*H IJLH I IK[ K[,H M :X Y,NV ^*_iyikv I IKVv[ N[,M*M[*JLJLHY*JTJT[*[ F*FKIH*^,_iYIKVIIHKIFY,_TH JLF*NIKV*V,M ettei CPU jouten heittovaihda joku levylle poistettava prosessi Blocked-Suspend-tilaan uusi prosessi tilaan Ready-Suspend tai Ready EGH NP ^Y,H I]Y*JTJT[gIK[*[,JLH H M IKY,^*H K[ IKJLH K[,^[*[*JT[ iso vs. pieni sellainen, jonka vieressä iso tyhjä alue pieni vs. suuri prioriteetti KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-25 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-26 44 ; 8h8 bc;<@bc9=e 8:9 ;=8 d a e 8:9 d aa e 8:9 Y,UO^*_iY,UOH I IH*N[,Z VIKJT[OV,U *UWV,MV,JTV,X UWPIKJTP kiinteät partitiokoot, mutta dynaaminen jako partitioihin ei haluta jättää pieniä tyhjiä tiloja varaa pikkuisen enemmänkin kuin tarve vaatii ][h_i[,fki RNKIH NS,MONY,NY H X UW[,H IKJT[ H I IK[ M ^Y*JTV,MI IH I IK[ suurin mahdollinen yleensä koko muisti pienimmälle varausyksikölle joku minimikoko yksinkertaistaa vapaiden alueiden kirjanpitoa "!$#%!&')()*+-,.!0/)!12! 4*56!7 &2* 4*508924 ()+:*7 8 +:;+:*&2+:*+:+:!-/ (<()!+:*92;''2!!()+= KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-27 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-28 >@?AACBEFBCGHJIK >@?AACBEFBCGHJIKSR IGTUKVIW$XXT LNM087 7 O1 +:OO'&)()+:!' 5'2;;(+:!;P6!!7 ()+:!! lista osoitteiden mukaisessa järjestyksessä aluksi vain yksi suuri varausyksikkö "!$#%!&)( jos oikean kokoluokan listassa ei vapaata alkiota, jaa luokkaa suurempi alue kahdeksi pienemmäksi toista tarvittaessa "!12!&+=&)( kun listassa kaksi fyysisesti vierekkäistä aluetta, yhdistä ne kokoluokkaa suuremmaksi alueeksi toista tarvittaessa YUZUZ Kuva 7.6 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-29 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-0 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-5
>@?AACB R R W W?XGIH?? GT HJIK?? G 9,.*7 P6!(2()!7 ;; ()*+J;(); +:+:**+ kaikki suhteellisia sen alun suhteen (+:;#:!!+:!!,.!%LNM 56;()!$P&&2+=+=7 ;; ()*+J;(); +:+:**+ 8<82( ( ')(2;(); +:+:* ')(()!P6!7 7!'&57!+:!( ;9,.*7 P6!'2;;4 5P& (+= 5 "8'8)! '2! ;(); +:*P&&552;( /)!(+:!'2O(')8,.O (&2;#: +:*+=+:!*(<()! LNM 5 8)4 50/);'2O8)+:+:OO 828<( ( O;-(); +:+:* +:!,.;+:*5'&5 "!$# (&2;#: +:+:!!LNM +:O ;(); +:*P&&552;()+:!*2+:!$# / + ()*+:*924O KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-1 KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-2 GT HJIK?? G Kuva 7.8 %% TT H$HJIT GH&HN?XT '(')#* 9&5P&&552;()+:!,.!0(&2;,.!&()+:!#:' ()+=&)()+:! /)!$#%+:*5'2!')(#%*' ()+:*#: O ns. kanta- ja rajarekisteri Base prosessin fyysinen alkuosoite Limit prosessin loppuosoite (tai pituus) L &51#%;-()*(<()(&2;$#: +=&')()**5'2;1 ; 4!!552O 7 7 *!#./);+"!"+& (+:O Fyys.osoite = loog.osoite + Base jos fyysinen osoite > Limit aiheuta poikkeus virh. muistiosoite muuten MAR <-- fyysinen osoite KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5 - KJ-I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-4 KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 5-6