2013-03-26 11 views
11

Uczę się różnych rodzajów zarządzania pamięcią. Nie rozumiem sensu posiadania bitów offsetowych w adresie wirtualnym. A także dlaczego rozmiary stron mają moc 2?Numer strony i przesunięcie

Moja główna pomyłka to: Podaj przykład przesunięcia używanego w instrukcji dostępu do określonego wirtualnego adresu?

Moje drugie zamieszanie to: Zwykłe stwierdzenie jest takie, że jeśli rozmiar adresu logicznego wynosi 2^m, a rozmiar strony to 2^n, to bity m-n wyższego rzędu adresu logicznego wyznaczają numer strony.

góry dzięki

Odpowiedz

22

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!

+0

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

+2

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

+0

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. –

-1

Mam ten sam zamieszanie, ale jeśli dobrze zrozumiałem to prawda to jest to tak: moc 2 przypadku jest nieco poza ogólnym zrozumieniu tematu. To raczej konwencja, ponieważ mamy do czynienia z wartościami binarnymi i potrzebujemy odpowiedniego podziału między bitami, dla których moc 2 pasuje odpowiednio.

przykład jeśli PGE 64K słowa, słowa są 4 na klatkę, a następnie 2^x = 64 -> X = 6

To znaczy, każda ramka może mieć adres fizyczny stanowiący 6 wartości binarne tj 0 lub 1, w których 4 będzie oznaczać numer ramki. I trwać oznaczający dokładną lokalizację słowo pośród 4.

Zauważ, że tutaj każda ramka nie może mieć 5 lub dowolna inna wartość lub tzw konwencja zawiedzie.

+0

Powinieneś napisać poprawnie angielski na SO. –

Powiązane problemy