Virtuálna pamäť: Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Riadok 90:
Dátová štruktúra vm_area procesu je pristupovaná opakovane kernelom vždy v prípade, keď dôjde k vyvolaniu výnimky chyby stránky, vytvárajú sa nové stránky vo virtuálnej pamäti alebo sa modifikujú informácie v existujúcich stránkach. Z tohto dôvodu je časť nájdenia správneho záznamu v štruktúre vm_area kritický pre výkonnosť systému. Preto pre urýchlenie prístupu linux udržiava záznamy vm_area v dátovej štruktúre AVL stromu, keď lavý smerník odkazuje na prvok z nižšou začiatočnou štartovacou adresou a pravý smerník na prvok z vyššou štartovacou adresou virtuálnej pamäte. Za urýchlenie prístupu sa v tomto prípade platí zvýšeným obslužným časom pri vložení nového záznamu do štruktúry AVL stromu.
 
V prípade, že počet volných rámcov vo fyzickej pamäti dochádza, pamäťový manažment Linuxu musí zabezpčiť uvolnenie stránok vo fyzickej pamäti. Tieto funkcie sú zabezpečované pomocu démona Kernel Swap Daemon (kswapd). Kernel Swap Daemon je zodpovedný za efektívne fungovanie pamäťového manažmentu. Démon je spúšťaný počas Init procesu a následne je aktivovaný v periodických intervaloch po uplynutí časovača. V prípade, že démon zistí nedostatok volných rámcov v pamäti, zabezpečí ich ulovlnenie aplikáciou nasledovných postupov:
1. Znižie veľkosťi cache pamäťe pre stránky,
2. Presun stránok z fyzickej pamäte do swap priesotru,
3. Presun zdielaných stránok z fyzickej pamäte do swap priestoru.
 
Démon vyberie vhodný proces, ktorého stránky budú swapované. Swapovanie sa však netýka všetkých stránok procesu, vyberá sa len určitý predvolený počet stránok a v prípade potreby sa proces uvolňovania stránok opakuje pri ďalšej aktivácii démona. Algoritmus, ktorý je používaný pre výber stránky, ktorá bude presunutá do swap priestoru vychádza zo systému nazývaného page ageing. Každá stránka má počítadlo (udržiavané v štruktúre mem_map_t), ktoré je informáciou pre systém, či je daná stránka vhodným kandidátom na swapovanie. Keď je stránka v pamäti alokovaná, jej počítadlo je nastavené na hodnotu 3. Vždy, keď je zaznamenaný prístup na stránku, jej počítadlo je znova zvýšené o hodnotu 3, až do maximálnej hodnoty 20. Pri každom spustení Kernel Swap Daemon znižuje hodnotu počítadla stránky o 1. Tieto nastavenia môžu byť zmenené v konfigurácii systému.
Démon taktiež nemôže swapovať ľubovolnú stránku len z ohľadom na intenzitu jej používania. Niektoré stránky majú nastavený tzv. dirty bit, čo zamedzuje ich výberu pre swapovanie. Swapovanie nie je možné stránky, ktoré sú uzamknuté v pamäti, alebo zdielané. Pre zdielané stránky je používaný oddelený komplexný algoritmus swapovania.
 
Démon taktiež nemôže swapovať ľubovolnú stránku len z ohľadom na intenzitu jej používania. Niektoré stránky majú nastavený tzv. dirty bit, čo zamedzuje ich výberu pre swapovanie. Swapovanie nie je možné stránky, ktoré sú uzamknuté v pamäti, alebo zdielané. Pre zdielané stránky je používaný oddelený komplexný algoritmus swapovania.
 
[[Kategória:Informatika]]