Segmentacja pamięci

https://chacker.pl/

Temat segmentacji z łatwością mógłby zająć cały rozdział. Jednak podstawowa koncepcja jest prosta. Każdy proces (w dużym uproszczeniu jako program wykonawczy) musi mieć dostęp do własnych obszarów pamięci. Przecież nie chciałbyś, żeby jeden proces nadpisywał dane innego procesu. Dlatego pamięć jest dzielona na małe segmenty i przekazywana procesom w miarę potrzeb. Rejestry, omówione w dalszej części rozdziału, służą do przechowywania i śledzenia bieżących segmentów utrzymywanych przez proces. Rejestry offsetowe są do tego przyzwyczajone  śledź, gdzie w segmencie przechowywane są krytyczne fragmenty danych. Segmentacja opisuje także układ pamięci w wirtualnej przestrzeni adresowej procesu. Segmenty takie jak segment kodu, segment danych i segment stosu są celowo przydzielane w różnych obszarach wirtualnej przestrzeni adresowej w ramach procesu, aby zapobiec kolizjom i umożliwić odpowiednie ustawienie uprawnień. Każdy działający proces otrzymuje własną wirtualną przestrzeń adresową, a ilość miejsca zależy od architektury (np. 32-bitowej lub 64-bitowej), ustawień systemu i systemu operacyjnego. Podstawowy 32-bitowy proces systemu Windows domyślnie otrzymuje 4 GB, z czego 2 GB jest przypisane do strony procesu w trybie użytkownika, a 2 GB jest przypisane do strony procesu w trybie jądra. Tylko niewielka część tej wirtualnej przestrzeni w każdym procesie jest mapowana na pamięć fizyczną i w zależności od architektury istnieją różne sposoby mapowania pamięci wirtualnej na fizyczną poprzez wykorzystanie stronicowania i translacji adresów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *