Co to są rejestry segmentowe? Dlaczego pamięć jest podzielona na segmenty? Jak odbywa się segmentacja pamięci?


Najlepsza odpowiedź

Segment to ciągły fragment pamięci. W schemacie pamięci segmentowanej cała pamięć procesu jest podzielona na segmenty. Pierwsze systemy pamięci wirtualnej (Burroughs B5000, Mulitcs) były oparte na segmentach o zmiennej wielkości, które są kopiowane do i z pamięci RAM.

Program odwołuje się do każdego segmentu jako przesunięcie do rejestru segmentowego. Rzeczywista zawartość rejestru segmentowego jest kontrolowana przez system. System wie, kiedy odwołuje się do segmentu, gdy rejestr segmentu jest używany, i używa go do zarządzania pamięcią wirtualną.

W przeciwieństwie do paged pamięć wirtualna, używana dziś wszędzie, , gdzie kwanty pamięci wirtualnej to fragmenty pamięci o stałej wielkości. Stronicowanie jest bardziej złożone i wymaga większej obsługi sprzętu.

Multics z MIT wywarł ogromny wpływ na współczesne komputery (w tym wiele pomysłów uwzględnionych w systemach Unix i Linux). Fred Pollack dołączył do projektu Intel 286 świeżo po MIT. Widział rejestry „segmentowe” 8086 (w rzeczywistości rejestry bazowe) i lobbował z powodzeniem, aby stworzyć te prawdziwe rejestry segmentowe, jak w Multics. (Fred później został stypendystą firmy Intel.)

Segmenty 286 o rozmiarze 64 KB cierpiały na ten sam problem, co segmenty Multics: były za małe. Zbyt często potrzeba wielu segmentów, aby uzyskać dostęp do struktur pamięci, co oznacza ponowne ładowanie rejestrów segmentów i często angażowanie systemu operacyjnego. Ze względu na wpływ na wydajność segmentacja była rzadko używana, a rejestry segmentowe były używane jako rejestry bazowe w trybie zgodności 8086.

32-bitowy Intel 386 dodał stronicowaną pamięć wirtualną (TAK!) Pod schematem segmentów (meh ). 64-bitowy model architektury Intela całkowicie eliminuje rejestry segmentowe, chociaż nadal ma tryby zgodności aż do 8086.

Odpowiedź

1. co to jest rejestr segmentowy?

-> Jak wszyscy wiemy, że rejestry są obecne w procesorze. tworzymy segmenty w pamięci (segmentacja). Aby uzyskać lokalizację początkową tych segmentów, przechowujemy adres tych segmentów w rejestrze segmentów. w rejestrach krótkich segmentów przechowuj początkową lokalizację segmentów obecnych w pamięci, tj. adres segmentu.

3. jak odbywa się segmentacja pamięci?

-> segmentacja pamięci odbywa się za pomocą adresów 16-bitowych. najpierw podajemy adres segmentu (początek segmentu), po podaniu adresu segmentu podajemy offset address (), aby uzyskać dostęp do lokalizacji w tym segmencie.

podajemy adres segmentu tylko raz po tym podajemy adres offsetowy.

podajemy adres segmentu i adres offsetowy oba adresy 16-bitowe jako programista. po podaniu tego adresu obowiązkiem procesora jest ukrycie obu tych adresów w adres fizyczny (adres rzeczywisty).

adres fizyczny = adres segmentu * 10 + adres offsetowy

= 1000 * 10 + 2345

= 12345H

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *