Virtuální paměť - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Software

Virtuální paměť

31. října 2002, 00.00 | Abychom si mohli správně vysvětlit jak virtuální paměť funguje, a co to vůbec je, musíme si nejprve ukázat jak vlastně programy s pamětí pracují a zavést několik nových pojmů.

Abychom si mohli správně vysvětlit jak virtuální paměť funguje — a co to vůbec je --, musíme si nejprve ukázat jak vlastně programy s pamětí pracují a zavést několik nových pojmů.

Adresy a adresový prostor

Kdykoli chce nějaký program pracovat s pamětí, musí určit, se kterým bytem chce pracovat: byty jsou v paměti uloženy jeden za druhým, je jich několik desítek až set miliónů, a každý z nich má vlastní adresu.

V současných počítačích Apple je adresa prostě pořadové číslo požadovaného bytu, a může nabývat hodnot od nuly do přibližně čtyř miliard (jde o dvaatřicetibitové číslo, takže 2^32-1).

Právě jsme si ovšem řekli, že ve skutečné paměti RAM je bytů "jenom" několik set miliónů, ne čtyři milardy. Pokud by náš Mac pracoval jen s fyzickou pamětí, znamenalo by to, že většina adres se prostě nedá použít; s virtuální pamětí je tomu ale jinak.

Překlad adres

Základní myšlenka virtuální paměti je velmi jednoduchá. Vychází ze dvou faktů:

  • máme daleko více adres než bytů paměti;
  • běžné programy ale pracují jen s několika tisíci (desítkami, stovkami tisíc — málokdy s milióny) adres.

Proč tedy nepřipojovat paměť k adresám dynamicky, podle potřeb programu? Použije-li program adresu, na které nějaká paměť je, výborně — není co řešit. Pokusí-li se program využít adresu, na které žádná paměť není, vezme se nějaký dosud nepoužitý kousek fyzické paměti, a umístí se právě na tuto adresu: opět žádný problém. Program může volně využívat celý adresový prostor: kamkoli "sáhne", tam — díky tomuto automatickému přidělování — paměť vždy najde.

Samozřejmě, znamená to, že vlastně pracujeme s dvojicí adres: tu první vidí a používá program, jde o logickou či virtuální adresu v jeho adresovém prostoru. O té druhé program nic neví — je to fyzická adresa ve skutečné paměti, která je jeho logické adrese přidělena. O tento překlad adres se stará speciální hardware (tzv. jednotka řízení paměti), který je součástí všech moderních mikroprocesorů.

Vzájemná ochrana

Kromě prvotní výhody "kam sáhnu, tam je paměť" přináší tento přístup ještě další obrovskou výhodu: tou je vzájemné zabezpečení mezi různými procesy.

Úplně stačí mechanismus překladu adres jen nepatrně rozšířit: tabulky, jež určují, které virtuální adrese odpovídá která fyzická, nebudou všem procesům společné; namísto toho bude mít každý proces vlastní tabulky.

Pak je ale zřejmé, že dva různé procesy mohou pracovat s totožnou (virtuální) adresou; každý z procesů však bude mít pro tuto adresu přidělenu odlišnou část fyzické paměti, a proto se nijak "nepoperou".

Co když paměť dojde?

Jistě, dosud jsme se nezabývali tím, co se má stát v případě, že procesy "vyberou" všechnu volnou fyzickou paměť, a některý z nich si pak "sáhne" na novou adresu, které dosud žádná fyzická paměť přidělena není: co teď?

Virtuální paměť má i zde perfektní řešení, ale to si ukážeme až příště.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: