User space
Author
Albert FloresUser space a kernel space (uživatelský prostor a prostor jádra) je v informatice označení pro dvě části virtuální paměti opačného typu.
{{anchor|USERSPACE}} User space
Běžně jsou adresy v uživatelském prostoru přidělovány na úrovni procesu a všechna vlákna jednoho procesu spolu tyto adresy sdílí, tudíž při vícevláknovém programování je potřeba předcházet konfliktům mezi vlákny. V uživatelském prostoru se obvykle obecně nachází spustitelný soubor daného procesu, knihovny, které proces používá a některé popisné struktury vytvořené operačním systémem při nahrátí programu.
{{anchor|KERNEL}} Kernel space
Prostor jádra je určen běžným úkolům operačního systému jako např. obsluze hardwaru, správě paměti, rozvrhování vláken apod. +more Obecně platí, že pro používání kernelových adres je potřeba aby procesor byl v privilegovaném režimu (ring0 u x86_x64) a pokud není vyústí pokus o přístup vyhozením výjimky procesoru. Přístup je z uživatelského režimu umožněn pouze přes systémová volání, která krátkodobě volající vlákno do privilegovaného režimu přepnou a vlákno pak může na adresy přistupovat. Důvodem je nutnost udržet systém v konzistentním stavu ve kterém může každému vláknu nabídnout stejné možnosti.
Přidělování těchto kernelových adres je už více platformně specifické, operační systém Windows přiděluje kernelové adresy na úrovni tzv. sessions, což je struktura vytvořená při přihlášení uživatele do systému. +more Tento mechanizmus na Windows umožňuje práci více uživatelů na jedné stanici zároveň.
Hranici mezi oběma prostory si určuje konkrétní operační systém. (Např. +more uživatelský prostor 32bitových distribucí Windows končí adresou 0x7fffffff, uživatelský prostor 64bitových distribucí končí 0x17ffffffffff u programů s výchozím nahrávacím nastavením, existuje několik výjimek). Realizace této hranice u sestav s procesorem řady x86_x64 funguje pomocí mechanizmu stránkování - každý proces má vlastní struktury popisující mapování virtuálních adres na fyzickou paměť na které odkazuje adresa v registru CR3. Část těchto struktur je vytvořená a přístupná pro daný proces a část je stejná pro všechny procesy dané sessiony a popisuje prostor jádra.