Physikalische Adresse für logische Adresse ermitteln

Ich habe ein einfaches Segmentierungssystem mit der folgenden Segmenttabelle:

Starting Address    Length (bytes)
660                 248
1752                422
222                 198
996                 604

Bestimmen Sie die physikalische Adresse für die folgenden logischen Adressen; weisen auf Segmentfehler hin. Ich kenne die Antworten, aber ich verstehe nicht, wie sie berechnet wurden:

a. 0, 198  --  858
b. 2, 156  --  378
c. 1, 530  --  seg fault
d. 3, 444  --  1440
e. 0, 222  --  882
(1) Das sieht aus wie eine Hausaufgabe. Anfänglicher Aufwand nicht nachgewiesen. (2) Diese Frage befasst sich nicht mit Elektronikdesign, soweit ich das beurteilen kann.
Nein, Nick, die Antworten sind dem Poster bekannt, es ist das Konzept, das sie bewundernswert zu verstehen versuchen - viel besser als der umgekehrte Fall. Und dies ist typischerweise ein Hardware-Designproblem – eine MMU ist ein Teil der Prozessor- oder Platinenschaltung. In diesem einfachen Fall besteht es aus einer Nachschlagetabelle, einem Komparator und einem Addierer.

Antworten (2)

a) 660 + 198 = 858
b) 222 + 156 = 378
c) 530 > 422
d) 996 + 444 = 1440
e) 660 + 222 = 882

Zuerst müssen Sie prüfen, ob (Offset < Segmentgrenze) ein Problem vorliegt. Wenn dies der Fall ist, addieren Sie Offset + Basisadresse für die physikalische Adresse. Ist dies nicht der Fall, tritt ein Segmentfehler auf.

a) (0, 198) Wir überprüfen 198 < 248, was wahr ist, also berechnen wir die Physische Adresse = 660 + 198 = 858.

b) (2, 156) Wir überprüfen 156 < 198, was wahr ist, also berechnen wir die Physische Adresse = 222 + 156 = 378.

c) (1, 530) Wir prüfen 530 < 422, was falsch ist, sodass ein Segmentfehler auftritt.

d) (3, 444) Wir werden 444 < 604 überprüfen, was wahr ist, also berechnen wir die Physische Adresse = 996 + 444 = 1440

e) (0, 222) Wir überprüfen 222 < 248, was wahr ist, also berechnen wir die Physische Adresse = 660 + 222 = 882