VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:13/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

Memory management

Strßnkovßnφ a segmentace jsou dva mechanismy, kterΘ za sv∙j vznik vd∞Φφ po₧adavku u₧ivatel∙ na co mo₧nß nejv∞tÜφ pam∞¥, kterß by byla k dispozici jejich ·lohßm. Oba tyto mechanismy toti₧ dokß₧φ ·sp∞Ün∞ p°edstφrat, ₧e poΦφtaΦ je vybaven v∞tÜφ operaΦnφ pam∞tφ, ne₧ jakou doopravdy mß (viz minul² p°φsp∞vek tΘto rubriky).

P°edstφrßnφm v∞tÜφ pam∞ti vÜak vznikß disproporce mezi tφm, co ·loha "vidφ" (tedy tzv. adresov²m prostorem), a tφm, s Φφm doopravdy pracuje (tzv. pam∞¥ov²m prostorem - viz p°edminul² p°φsp∞vek na tΘma: virtußlnφ pam∞¥). Zatφmco ale zpoΦßtku byla disproporce mezi adresov²m a pam∞¥ov²m prostorem spφÜe vedlejÜφm efektem, kter² nebyl p°φliÜ na zßvadu, pozd∞ji se naopak stala hlavnφm d∙vodem, kv∙li kterΘmu se mechanismy strßnkovßnφ a segmentace pou₧φvaly a pou₧φvajφ. ProΦ?

OperaΦnφ systΘm poΦφtaΦe mß mnoho ·kol∙. Mezi n∞ pat°φ i vhodnΘ hospoda°enφ s operaΦnφ pam∞tφ, vedenφ evidence voln²ch mφst v pam∞ti, p°id∞lovßnφ pam∞ti jednotliv²m ·lohßm, podpora ·loh p°i vyu₧φvßnφ p°id∞lenΘ pam∞ti, a koneΦn∞ takΘ nßslednΘ odnφmßnφ d°φve p°id∞lenΘ pam∞ti po skonΦenφ b∞hu ·lohy. VÜechny tyto ·koly operaΦnφho systΘmu, kterΘ se t²kajφ operaΦnφ pam∞ti, spadajφ do ÜirÜφho rßmce, kterΘmu se °φkß memory management (sprßva pam∞ti, n∞kdy tΘ₧: p°id∞lovßnφ pam∞ti).

Pro jednou₧ivatelsk² operaΦnφ systΘm je sprßva pam∞ti jeÜt∞ relativn∞ jednoduchß. Komplikovan∞jÜφ je to ale v p°φpad∞ operaΦnφch systΘm∙, kterΘ podporujφ souΦasn² b∞h vφce ·loh neboli multitasking. JakΘ tedy jsou hlavnφ problΘmy, kterΘ zde vyvstßvajφ?

I u vφce·lohov²ch operaΦnφch systΘm∙ samoz°ejm∞ dochßzφ k tomu, ₧e ·lohy po₧adujφ p°id∞lenφ v∞tÜφho objemu pam∞ti, ne₧ jak² mß operaΦnφ systΘm prßv∞ k dispozici. Tento problΘm je op∞t °eÜiteln², a to stejn²m zp∙sobem, jak² jsme si ji₧ naznaΦili d°φve - operaΦnφ systΘm ve skuteΦnosti p°id∞luje ·lohßm adresov² prostor v rßmci virtußlnφ pam∞ti a pomocφ mechanism∙ strßnkovßnφ a segmentace jej pak, a₧ na zßklad∞ skuteΦnΘ pot°eby, mapuje do takovΘho objemu fyzickΘ pam∞ti, jak² mß k dispozici.

Objevuje se vÜak i dalÜφ po₧adavek, kter² v jedno·lohovΘm prost°edφ nebyl zdaleka tak nalΘhav²: ka₧dß ·loha chce mφt sv∙j p°id∞len² adresov² prostor v₧dy stejn² (a nezßvisl² na tom, kolik rozpracovan²ch ·loh se prßv∞ v systΘmu nalΘzß a kterΘ Φßsti skuteΦnΘ operaΦnφ pam∞ti jsou t∞mto ·lohßm prßv∞ p°id∞leny). D∙vodem je skuteΦnost, ₧e strojov² k≤d v∞tÜiny dneÜnφch procesor∙ nenφ p°emφstiteln² (tΘ₧: relokovateln², angl.: relocatable), co₧ znamenß, ₧e poΦφtß s pevn²m umφst∞nφm sebe samΘho v adresovΘm prostoru. Tuto skuteΦnost pak samoz°ejm∞ musφ respektovat p°ekladaΦe, kterΘ generujφ k≤d nejr∙zn∞jÜφch aplikaΦnφch ·loh - ji₧ p°i p°ekladu musφ znßt adresy, na kter²ch bude nov∞ generovan² k≤d p°i svΘm b∞hu umφst∞n. TakΘ tomuto po₧adavku vÜak nenφ nijak obtφ₧nΘ vyhov∞t, je-li mo₧nΘ vyu₧φt segmentaci Φi strßnkovßnφ a adresov² prostor uΦinit nezßvisl²m na prostoru pam∞¥ovΘm. Ka₧dß ·loha pak m∙₧e v₧dy dostat p°id∞len stejn² adresov² prostor, souvisl² a zaΦφnajφcφ od nuly.

V prost°edφ vφce·lohovΘho operaΦnφho systΘmu je dßle velmi ₧ßdoucφ, aby jednotlivΘ ·lohy mohly sdφlet n∞kterΘ svΘ Φßsti (nap°. r∙znΘ knihovnφ moduly apod.), a aby si takΘ naopak mohly chrßnit jinΘ svΘ Φßsti p°ed Φtenφm, p°episem Φi provedenφm jin²mi ·lohami. Pro tyto ·Φely je velmi p°φhodn² mechanismus segmentace - segment jako logick² celek je tφm nejvhodn∞jÜφm objektem, se kter²m mß smysl spojovat nejr∙zn∞jÜφ ·daje o mo₧nostech sdφlenφ, p°φstupov²ch prßvech a ochran∞. Strßnkovßnφ se naopak k t∞mto ·Φel∙m nehodφ, nebo¥ Φlen∞nφ adresovΘho prostoru na strßnky je Φlen∞nφm "na tvrdo" a nijak nerespektuje logickou strukturu ·lohy. Jedna logickß Φßst (segment) ·lohy pak m∙₧e zapl≥ovat hned n∞kolik strßnek, ale m∙₧e nastat i opaΦn² p°φpad, kdy se v jednΘ strßnce nachßzφ vφce logick²ch celk∙ (segment∙), z nich₧ ka₧d² by m∞l mφt jinß p°φstupovß prßva atd.

Kombinace segmentace a strßnkovßnφ, o kterΘ jsme se zmi≥ovali v minulΘm p°φsp∞vku tΘto rubriky, mß pak za cφl spojit v²hody obou mechanism∙ a odstranit jejich nev²hody. Segmentace se p°itom vyu₧φvß prßv∞ pro pot°eby ochrany a sdφlenφ, a nev²hodnost umis¥ovßnφ cel²ch nestejn∞ velk²ch segment∙ do pam∞ti je pak eliminovßna strßnkovßnφm jednotliv²ch segment∙.

Jestli₧e je vÜak adresov² prostor ka₧dΘ ·lohy nezßvisl² na pam∞tovΘm prostoru poΦφtaΦe, znamenß to zßrove≥, ₧e procesor, provßd∞jφcφ urΦitou ·lohu, generuje jinΘ adresy ne₧ ty, kterΘ jsou skuteΦn∞ pou₧φvßny pro p°φstup do skuteΦnΘ operaΦnφ pam∞ti. Kdo ale zajiÜ¥uje pr∙b∞₧n² p°evod t∞chto adres?

Odpov∞∩ je jednoduchß - specializovan² obvod, kter² to mß na starosti. Obvykle se tomuto obvodu °φkß MMU neboli: Memory Management Unit (jednotka sprßvy pam∞ti). N∞kterΘ mikroprocesory poΦφtajφ s tφm, ₧e tento obvod je °eÜen jako samostatn² celek (v rßmci °ady podp∙rn²ch obvod∙ ), a nachßzφ se tedy "vn∞" vlastnφho mikroprocesoru (takto je tomu nap°φklad u mikroprocesor∙ firmy Motorola °ady MC68000). JinΘ procesory ji₧ majφ jednotku MMU zabudovßnu p°φmo v sob∞. P°φkladem m∙₧e b²t mikroprocesor 80286 firmy Intel, jeho₧ zabudovanß jednotka MMU podporuje pouze segmentaci, a mikroprocesory 80386 a 80486, kterΘ ji₧ podporujφ segmentaci spolu se strßnkovßnφm.


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