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:
Mac OS X CZ
A ještě jednou virtuální paměť
14. listopadu 2002, 00.00 | Minule jsme si vysvětlili základy virtuální paměti: ukázali jsme si, že kterýkoli proces může volně pracovat s kteroukoli adresou v adresovém prostoru, a správce paměti mu automaticky přidělí "kus" skutečné paměti, který bude prostřednictvím dané adresy dosažitelný. Co když však fyzická paměť dojde?
Minule jsme si vysvětlili základy virtuální paměti: ukázali jsme si, že kterýkoli proces může volně pracovat s kteroukoli adresou v adresovém prostoru, a správce paměti mu automaticky přidělí "kus" skutečné paměti, který bude prostřednictvím dané adresy dosažitelný. Zmínili jsme se také o tom, že každý proces má tyto "kusy" (budeme jim říkat stránky) vlastní, a proto — na rozdíl od systémů bez virtuální paměti, jako byl např. OS/9 — nemůže jeden proces "ublížit" druhému tím, že by přepsal obsah jeho paměti.
Dokud je dost paměti, je vše v pohodě
Výše popsaný systém skvěle funguje, dokud je dostatek fyzické paměti pro všechny stránky ("kousky, přidělené na adresy, jež některý proces použil"). Jakmile by však procesy spotřebovaly všechnu fyzickou paměť, systém by se nám "zasekl", a další požadavek by nebylo možné splnit, dokud by některý proces paměť neuvolnil. Přesně tak tomu bylo v systémech bez virtuální paměti: jakmile nebylo dost paměti, bylo nutné ukončit alespoň některé z běžících aplikací.
Virtuální paměti může být vždycky dost!
Virtuální paměť ovšem dokáže vyřešit snadno a pohodlně i tento problém: stejně, jako se stránka fyzické paměti procesu přidělí ve chvíli, kdy ji proces potřebuje, je možné ji procesu opět odebrat: musíme se jen postarat o to, aby se skutečný obsah paměti neztratil.
Správce paměti tedy navíc potřebuje přístup k souborům: kdykoli je zapotřebí nějaká paměť, ale žádná volná stránka není momentálně k dispozici, správce prostě odebere stránku některému z procesů (samozřejmě se pokusí zvolit takový, který nejspíš s odpovídajícími adresami v paměti hnedtak pracovat nebude). Její obsah zapíše do souboru, a pak stránku vyprázdní a přidělí ji komukoli, kdo ji zrovna potřebuje.
Když se pak původní proces pokusí opět pracovat s některou z adres ze stránky, jež mu byla před nějakým časem odebrána, správce paměti mu přidělí nějakou stránku fyzické paměti — ovšemže skoro jistě jinou, než kterou měl proces předtím! — a uloží do ní z disku přesně ty samé údaje, jež v ní byly před časem, kdy s ní proces naposledy pracoval.
Správce paměti tedy pracuje podle následujícího algoritmu:
- proces potřebuje novou stránku (protože "si sáhl" na adresu, na které žádná není);
- je-li k dispozici volná stránka, pokračujeme bodem 5;
- vyhledáme proces a stránku, jež nejspíš nebudou hnedtak použity;
- obsah stránky uložíme na disk a zařadíme ji mezi volné;
- jestliže je pro daný proces obsah, odpovídající požadované adrese, uložen na disk, načteme jej do stránky; jinak stránku vynulujeme...
- ... a přidělíme ji procesu.
Příště si řekneme něco málo o realizaci bodu 3 a o důsledcích, jež má virtuální paměť na průchodnost celého systému.
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á