Myślę, że pierwotne i wtórne nieporozumienia wynikają z ogólnego zamieszania w tej sprawie :)
Pozwól mi mówić wokół tego kawałka i mam nadzieję, że mogę być pomocne. Po pierwsze, analogia - wyobraź sobie, że próbujesz zlokalizować dom w mieście. Wyobraź sobie, że każdy dom otrzymał unikalny numer - możesz sobie wyobrazić, że liczba domów wkrótce stanie się bardzo duża i myląca. Teraz wyobraź sobie, że wprowadzasz pojęcie ulic - numery domów stają się teraz bardziej elastyczne, ponieważ podzieliłeś je na ładne kawałki. A więc: Streets = Numer strony, numer domu = adres przesunięcia.
Cały sens posiadania strony pamięci wirtualnej jest umożliwienie komputerowi wyrzeźbić pamięci aż do zaakceptowania kawałki i nie tracić zbyt wiele. Przenoszenie go na porcje (strony) umożliwia szczegółową kontrolę dostępu, stronicowania i innych podobnych rzeczy. Im mniejsze są twoje strony, tym mniej pamięci masz zamiar zmarnować (jeśli proces A wymaga 32 tys. Pamięci, a rozmiar strony to 64 tys., Skończy się na niektórych, które nie są używane), ale im wyższy narzut na system.
Jako dlaczego rozmiary stron są potęgi 2, to w dół nie marnować miejsca w adres. Ponieważ komputery są oparte na binarnych (w tej chwili), wszystko ma tendencję do sprowadzania się do mocy 2. Wyobraź sobie, że masz rzeczy oparte na czynnikach 10. 10 w binariach to 1010 - musisz użyć 4 bitów, aby je utrzymać , więc dlaczego nie wybrać pełnego zakresu wartości, które można uzyskać z 4 bitów: 0000 - 1111 (0 do 15 = 16 wartości).
Niestety mam waffled na kawałku - Mam nadzieję, że trąca cię w dobrym kierunku!
Dzięki GHC, ale to, co chcę patrzeć na to, jak robi się wygląd instrukcja montażu na przesunięcie. tak samo jak ld r2,0x0005. Biorąc pod uwagę, że każdy adres ma wielkość słowa, a każdy rozmiar strony to 4 bajty. Czy w tym przypadku offset ma być 1 bajt? . – user1493786
Zrobiłem też trochę badań przed ur odpowiedzi, powód, dla którego używamy mocy 2, jest to, że kiedy podzielimy wirtualny adres przez rozmiar strony, dostaniesz numer strony i przesunięcie, jak tylko górne m bitów adres będzie numerem strony, a późniejsze n bit będzie offsetem.Chociażby nie była to moc dwójkowa, dzielenie adresu wirtualnego w celu zlokalizowania numeru strony i przesunięcia wymaga funkcji% i /, co zwiększa obciążenie systemu. – user1493786
Wirtualne do fizycznego tłumaczenia adresów przez tabele stron ma jeszcze jedną zaletę: zmniejsza straty pamięci fizycznej z powodu wirtualnej fragmentacji przestrzeni adresowej. –