VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:11/93
RoΦnφk:1993
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Virtual memory

Ne nadarmo se °φkß, ₧e s jφdlem roste chu¥. Kdy₧ u₧ivatelΘ poprvΘ zφskali p°φstup k poΦφtaΦ∙m, museli nutn∞ b²t nadÜeni jejich mo₧nostmi. Jakmile si ale na n∞ jen trochu zvykli, zaΦali po₧adovat vφce. Jednφm z prvnφch po₧adavk∙ sm∞rem ke konstruktΘr∙m bylo: "Chceme v∞tÜφ operaΦnφ pam∞¥". "Dob°e," odpovφdali na to konstruktΘ°i, "mß to sice n∞kterß technickß ·skalφ - v∞tÜφ rozm∞ry, v∞tÜφ spot°ebu, menÜφ spolehlivost - ale v principu to mo₧nΘ je: p°ipravte si ale pen∞₧enky, pam∞¥ n∞co stojφ." Bylo to vÜak v dob∞, kdy se ceny poΦφtaΦ∙ jako takov²ch i ceny pam∞tφ pohybovaly oproti dneÜku v astronomick²ch v²Ükßch. A tak nenφ divu, ₧e se kategorick² po₧adavek u₧ivatel∙ zßhy zm∞nil na mnohem mΘn∞ imperativnφ "neÜlo by to za°φdit n∞jak jinak?"

Kupodivu Ülo. NaÜel se toti₧ mechanismus, kter² dokßzal zdßnliv∞ nemo₧nΘ: nabφdnout u₧ivatel∙m k vyu₧itφ v∞tÜφ objem operaΦnφ pam∞ti, a p°itom je nenutil sahat hloub∞ji do pen∞₧enky a platit za rozÜφ°enφ operaΦnφ pam∞ti.

P°itom vÜak Ülo v jistΘm smyslu o podvod - u₧ivatel∙m se pouze vytvß°ela iluze toho, ₧e pracujφ s v∞tÜφ operaΦnφ pam∞tφ, i kdy₧ ve skuteΦnosti byly jejich poΦφtaΦe vybavovßny stßle stejn²m objemem pam∞ti.

VÜe bylo zalo₧eno na pozorovßnφ, ₧e programy a jejich data nemusφ b²t v operaΦnφ pam∞ti v₧dy celΘ, a p°esto mohou ·sp∞Ün∞ b∞₧et. Ve skuteΦnosti staΦilo ulo₧it je celΘ do vhodnΘ (a p°edevÜφm mnohem lacin∞jÜφ !!!) vn∞jÜφ pam∞ti - obvykle na disk - a do operaΦnφ pam∞ti p°enΘst v₧dy jen tu Φßst, resp. ty Φßsti, kterou ·loha nezbytn∞ pot°ebuje ke svΘmu spuÜt∞nφ. Jestli₧e se pak kdykoli pozd∞ji ukßzalo, ₧e prßv∞ b∞₧φcφ ·loha pot°ebuje n∞kterou jinou Φßst svΘho k≤du Φi sv²ch dat, doÜlo k v²m∞n∞: z t∞ch Φßstφ ·lohy, kterΘ se prßv∞ nachßzely v operaΦnφ pam∞ti, se vybrala takovß, kterou ·loha momentßln∞ nepot°ebovala, tato Φßst se "vrßtila" zp∞t (zapsala) na disk a mφsto nφ se do operaΦnφ pam∞ti naΦetla nov∞ po₧adovanß Φßst ·lohy. Dochßzelo tedy k pr∙b∞₧nΘmu "p°etahovßnφ" Φßstφ ·lohy mezi operaΦnφ pam∞tφ a vn∞jÜφ pam∞tφ - v angliΦtin∞ se tomu °φkß swapping.

S prßv∞ naznaΦen²m mechanismem je samoz°ejm∞ spojena urΦitß re₧ie, nebo¥ p°enΘst blok dat z disku do operaΦnφ pam∞ti Φi naopak urΦitou dobu trvß. Velikost tΘto re₧ie p°itom zavisφ na chovßnφ samotn²ch ·loh - na tom, jak moc sahajφ do pam∞ti "na p°eskßΦku". Nenφ jist∞ principißlnφm problΘmem napsat takovou ·lohu, kterß bude zcela zßm∞rn∞ p°istupovat k pam∞ti takov²m divok²m zp∙sobem, ₧e se jejφ jednotlivΘ Φßsti budou neustßle p°enßÜet mezi diskem a operaΦnφ pam∞tφ a re₧ie na tyto p°enosy bude zcela ne·nosnß.

Jak se vÜak pozorovßnφm zjistilo, drtivß v∞tÜina "reßln²ch" ·loh se v tomto ohledu chovß mnohem rozumn∞ji - po urΦitou dobu "sahajφ" v₧dy jen do pom∞rn∞ ·zce lokalizovanΘ oblasti pam∞ti (proto se takΘ odpozorovanΘmu zjiÜt∞nφ °φkß princip lokality). V d∙sledku toho pak dochßzφ k v²m∞n∞ Φßstφ ·loh mezi diskem a operaΦnφ Φßstφ pom∞rn∞ z°φdka a re₧ie, spojenß s t∞mito v²m∞nami, je ·nosn∞ malß. Navφc ji lze jeÜt∞ dßle optimalizovat vhodnou volbou velikosti p°enßÜen²ch Φßstφ, vhodnou volbou strategie pro v²b∞r "nepot°ebnΘ" Φi "nejmΘn∞ pot°ebnΘ" Φßsti, kterß se mß vrßtit z operaΦnφ pam∞ti zp∞t na disk apod.

PodstatnΘ je dßle to, ₧e cel² mechanismus m∙₧e b²t implementovßn takov²m zp∙sobem, aby si jednotlivΘ ·lohy nemusely jeho existenci v∙bec uv∞domovat. Tedy aby veÜkerΘ p°esuny Φßstφ ·loh mezi operaΦnφ pam∞tφ a diskem byly pro samotnΘ ·lohy pln∞ transparentnφ (tj. neviditelnΘ). ┌loha (a s nφ i ten, kdo ji programuje) se pak m∙₧e vcelku oprßvn∞n∞ domnφvat, ₧e pracuje s "velkou" operaΦnφ pam∞tφ, jejφ₧ velikost je vlastn∞ omezena jen tφm, co se vejde na p°φsluÜnou vn∞jÜφ pam∞¥ (tedy na disk). Ve skuteΦnosti vÜak ·loha pracuje s mnohem menÜφ operaΦnφ pam∞tφ, i kdy₧ o tom ale vlastn∞ v∙bec nevφ.

Vznikß zde tedy disproporce mezi tφm, co u₧ivatel a jeho ·loha "vidφ", a tφm, s Φφm doopravdy pracujφ. Pam∞¥ o velkΘm objemu, kterou "vnφmajφ" u₧ivatelΘ a jejich ·lohy, je pam∞tφ pouze p°edstφranou, ve skuteΦnosti neexistujφcφ, a oznaΦovanou proto jako virtußlnφ pam∞¥ (virtual memory).

Aby se i terminologicky vhodn∞ odliÜila pam∞¥, kterou "vidφ" u₧ivatelskΘ ·lohy, a skuteΦnß, reßln∞ existujφcφ operaΦnφ pam∞¥, zavedly se dva dalÜφ pojmy: adresov² prostor (address space) je to, co "vnφmß" ·loha, zatφmco pam∞¥ov² prostor (memory space) je tou pam∞tφ, kterß skuteΦn∞ existuje. O virtußlnφ pam∞¥ se pak jednß v p°φpadech, kdy adresov² prostor nenφ toto₧n² s prostorem pam∞¥ov²m.

Adresov² prostor a jeho rozsah je urΦen adresami, kterΘ je u₧ivatelskß ·loha schopna generovat (a ty jsou zase dßny Üφ°kou registr∙ procesoru pou₧φvan²ch pro adresovßnφ, zp∙soby adresovßnφ atd.). Naproti tomu pam∞¥ov² prostor je tvo°en adresami, kterΘ se skuteΦn∞ pou₧φvajφ pro p°φstup do pam∞ti (tedy tzv. fyzick²mi adresami), a rozsah je dßn objemem skuteΦn∞ osazenΘ operaΦnφ pam∞ti. Tak₧e nap°φklad poΦφtaΦ, jeho₧ procesor pracuje s 32bitov²mi adresami, nabφzφ ·lohßm adresov² prostor o velikosti a₧ 4 GB. Ve skuteΦnosti vÜak m∙₧e b²t takov²to poΦφtaΦ vybaven nap°. jen jednφm megabytem "skuteΦnΘ" operaΦnφ pam∞ti.

Za virtußlnφ pam∞¥ bychom ale m∞li pova₧ovat i p°φpad opaΦn², kter² byl velmi Φast² u 8bitov²ch poΦφtaΦ∙. Jejich osmibitovΘ procesory pracovaly se 16bitov²mi adresami, co₧ odpovφdalo adresovΘmu prostoru o rozsahu 64 kB. Tyto 8bitovΘ poΦφtaΦe vÜak byly nez°φdka osazovßny v∞tÜφm objemem pam∞ti, ne₧ je zmφn∞n²ch 64kB. Pam∞¥ov² prostor pak byl v∞tÜφ ne₧ prostor adresov² - a v d∙sledku toho pak bylo nutnΘ pou₧φvat i jinΘ mechanismy pro realizaci virtußlnφ pam∞ti (tedy k tomu, aby se ·lohy pomocφ "mal²ch adres" dostaly na "velkou pam∞¥").


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm