Zajímá mě rozdíl mezi Highmem a Lowmem:
- Proč existuje taková diferenciace?
- Co tím získáme?
- Jaké funkce každý z nich má?
Přijatá odpověď:
Na 32bitové architektuře je rozsah adresního prostoru pro adresování RAM:
0x00000000 - 0xffffffff
nebo 4'294'967'295
(4 GB).
Linuxové jádro to rozděluje 3/1 (může být také 2/2 nebo 1/3) na uživatelský prostor (vysoká paměť) a prostor jádra (nízká paměť).
Rozsah uživatelského prostoru:
0x00000000 - 0xbfffffff
Každý nově vytvořený uživatelský proces dostane v této oblasti adresu (rozsah). Uživatelské procesy jsou obecně nedůvěryhodné, a proto je jim zakázán přístup do prostoru jádra. Dále jsou považovány za neurgentní, jako obecné pravidlo se jádro snaží odložit přidělení paměti těmto procesům.
Rozsah prostoru jádra:
0xc0000000 - 0xffffffff
Proces jádra získá svou adresu (rozsah) zde. Jádro může k těmto 1 GB adres přímo přistupovat (no, ne celý 1 GB, je zde 128 MB vyhrazených pro přístup k velké paměti).
Procesy vytvořené v prostoru jádra jsou důvěryhodné, naléhavé a předpokládá se, že jsou bezchybné, požadavek na paměť je zpracován okamžitě.
Každý proces jádra může také přistupovat k rozsahu uživatelského prostoru, pokud si to přeje. A aby toho bylo dosaženo, jádro mapuje adresu z uživatelského prostoru (vysoká paměť) do svého jaderného prostoru (nízká paměť), pro to je speciálně vyhrazeno výše zmíněných 128 MB.
Zda je rozdělení 3/1, 2/2 nebo 1/3 se řídí pomocí CONFIG_VMSPLIT_...
volba; můžete pravděpodobně zkontrolovat v /boot/config*
abyste viděli, která možnost byla vybrána pro vaše jádro.