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:
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):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová