Zasada zarządzania pamięcią stosowana w systemie Linux


Odpowiedzi:


7

Linux używa obu. Wykorzystuje segmentację do mapowania całej dostępnej przestrzeni adresowej, jednocześnie zapewniając różne prawa dostępu: zasadniczo jądro i widok przestrzeni użytkownika. Możesz podać kod źródłowy Linuksa dla KERNEL_DS (segment danych jądra) dla niektórych przykładów.

Stronicowanie jest następnie używane do implementacji pamięci wirtualnej (Grep dla „struct gdt_page” w jądrze, jako punkt początkowy)


6

Zarządzanie pamięcią w systemie Linux działa wyłącznie przez stronicowanie.

Linux obsługuje zarówno „małe” (zwykle 4kB), jak i „duże” (2M) strony. Ten pierwszy „po prostu działa” bez twojej wiedzy i nie robi nic specjalnego, a te drugie wymagają specjalnego traktowania (muszą być zarezerwowane w czasie uruchamiania i mapowane za pomocą specjalnego urządzenia).

Jedynym kontekstem, w którym „segment” pojawia się pod Linuksem, jest syscall brk (), który służy do zwiększenia segmentu danych procesu (zwykle nie jest to potrzebne, malloc robi to bez ciebie). Ale tak czy inaczej, pamięć przychodzi na stronach i jest zarządzana na stronach i nie ma to nic wspólnego z segmentacją x86.


Segmentacja X86 była przestarzała, gdy pojawił się i386. Linux nigdy nie używał segmentacji do zarządzania pamięcią. Niektóre pochodne, takie jak ELKS i (prawdopodobnie) uClinux mogą.
LawrenceC
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.