Virtuální paměť

Kernel space a User space

V počítačích je komponenta, které se říká RAM paměť a jak jsem řekl v jednom z předchozích dílů, je to prostě jen hromada flip-flopů vedle sebe. Veškeré informace z RAM paměti zmizí po vypnutí počítače.

Procesor s RAM pamětí interaguje velice rychle a stahuje z ní instrukce, které má rozeběhnout: toto jsou instrukce jak OS tak i softwaru, který pod OS běží.

Proto OS dělí paměť na dvě části:

  • Kernel space: toto je prostor OS a nikoho jiného
  • User space: zde je veškerý ostatní software
    • Každá aplikace zároveň vidí pouze svoji vlastní paměť, OS nedovoluje jednotlivým aplikacím si navzájem sahat na svoje paměti.

Do kernel space má přístup jen operační systém, žádný jiný software se do tohoto prostoru paměti nedostane.

Virtuální paměť

Aplikace a software běžící v OS vůbec na prostor v RAM paměti nevidí. OS zprostředkovává každé aplikaci virtuální paměť což je z pohledu aplikace „neomezený“ prostor který tady někde plave ve vzduchu a software má naprostou svobodu v množství paměti, kterou spotřebuje.

Aby se aplikace vůbec k paměti dostaly tak OS nabízí tyto dvě základní funkce:

  • dej mi bajty z virtuální paměti
  • vem si bajty zpátky
Jak software interaguje s pamětí

Paging / swapping

Software je zodpovědný za to, kolik paměti spotřebuje. Operační systém nemá vůbec žádný názor na to, kolik paměti jaká aplikace potřebuje, OS je prakticky jenom zprostředkovatel. Některé aplikace potřebují víc paměti, některé méně, některé aplikace potřebují někdy více, někdy méně. Záleží, na co počítač používáš.

Co se stane, když RAM paměť dojde? OS provádí tzv. paging což znamená, že OS začne přehazovat malé bloky dat mezi RAM pamětí a nějakým jiným avšak většinou podstatně pomalejším úložištěm než je RAM paměť jako je HDD/SSD.

Čím víc bloků paměti OS přehazuje, tím víc se počítač zpomaluje a kouše, dokud se RAM paměť neuvolní.

Swapping je pojmenování pro starší, již nepoužívaný způsob přehazování celých procesů (ne jen jejich dílčích bloků) mezi RAM a jiným uložištěm, zmiňuji se o tom, že se tento pojem používá dodnes i když moderní PC už swapping nedělají.

Shrnutí

  • OS dělí RAM paměť na dvě části: kernel space a user space
  • Kernel space je prostor paměti, ve které se nachází operační systém
  • User space je prostor paměti, ve které se nachází běžící aplikace.
  • Aplikace běžící v OS vidí pouze svoji vlastní paměť a do kernel space nebo do user space jiných aplikací nevidí
  • Virtuální paměť je způsob, jakým OS zprostředkovává paměť jednotlivým aplikacím.
  • Aplikace mají možnost rezervovat si pro sebe bajty z paměti a nebo tyto bajty vrátit
  • Aplikace jsou zodpovědné za množství paměti, se kterým pracují
  • Paging je způsob, jakým se OS vypořádává s nedostatkem RAM paměti přehazováním datových bloků mezi RAM a jiným úložištěm jako HDD/SSD