Wysoka pamięć

Wysoka pamięć to część pamięci fizycznej w komputerze , która nie jest bezpośrednio mapowana przez tablice stron jądra systemu operacyjnego . Wyrażenie to jest czasami używane jako skrót dla High Memory Area , co jest zupełnie inną koncepcją.

Niektóre jądra systemów operacyjnych, takie jak Linux , dzielą swoją wirtualną przestrzeń adresową na dwa regiony, przeznaczając większy na przestrzeń użytkownika , a mniejszy na jądro. W obecnym 32-bitowym x86 komputerów, to zwykle (chociaż nie musi, ponieważ jest to opcja konfigurowalna) przybiera formę podziału 3 GB/1 GB przestrzeni adresowej 4 GB, więc adresy wirtualne jądra zaczynają się od 0xC0000000 i przechodzą do 0xFFFFFFFF. Niższe 896 MB, od 0xC0000000 do 0xF7FFFFFF, jest bezpośrednio mapowane do fizycznej przestrzeni adresowej jądra, a pozostałe 128 MB, od 0xF8000000 do 0xFFFFFFFF, jest używane na żądanie przez jądro do mapowania do wysokiej pamięci. W trybie użytkownika tłumaczenia są skuteczne tylko dla pierwszego regionu, chroniąc w ten sposób jądro przed programami użytkownika , ale w trybie jądra , translacje są skuteczne dla obu regionów, dając w ten sposób jądru łatwy sposób odwoływania się do buforów procesów — po prostu używa własnych mapowań procesu.

Jeśli jednak jądro musi odwoływać się do pamięci fizycznej, dla której nie zapewniono jeszcze translacji przestrzeni użytkownika, ma do wykorzystania tylko (na przykład) 1 GB pamięci wirtualnej. Na komputerach z dużą ilością pamięci fizycznej może to oznaczać, że istnieje pamięć, do której jądro nie może bezpośrednio się odwoływać — nazywa się to wysoką pamięcią. Gdy jądro chce zaadresować dużą pamięć, tworzy mapowanie w locie i niszczy je po zakończeniu, co wiąże się z obniżeniem wydajności.

Zobacz też

Linki zewnętrzne