From cbdc1b4ba4c50437d8e28c0f646bc6ac4e58d44c Mon Sep 17 00:00:00 2001 From: Philip Kaludercic <philip.kaludercic@fau.de> Date: Mon, 22 Jan 2024 20:52:19 +0100 Subject: [PATCH] Correct answer to the paging question --- ws15.q | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/ws15.q b/ws15.q index caffc29..df4984f 100644 --- a/ws15.q +++ b/ws15.q @@ -202,25 +202,27 @@ | einstufiger Seitennummerierung und einer Seitengröße von 2048 Bytes zu | folgender logischer Adresse: `0xba1d` -+ Seitennummer `0xb`, Versatz `0xa1d`. +- Seitennummer `0xb`, Versatz `0xa1d`. ++ Seitennummer `0x17`, Versatz `0x21d`. + Ja, weil - In binär: + (0xba1d & (2048-1)) = 0x21d + (0xba1d & ~(2048-1)) >> 11 = 0x17 - - `0xba1d` ist 0b1011101000011101 - - `0xb` ist `0b1011` - - `0xa1d` ist `0b101000011101` + Die Idee hier ist, dass man mit einer Seitengröße von 2048 Byte mit + 11 Bit addressieren kann. Die ersten 11 Byte von - Wenn man die ersten 11 bit abschneidet (weil 2^11 = 2048), sieht man - wie die Addresse zusammengesetzt ist: + 0b1011101000011101 = 0xba1d - ~~~ - 1011101000011101 <- Logische Addresse + sind + + 0b01000011101 = 0x21d + + und damit bleiben für die Page nummer nur noch + + 0b10111 = 0x17 - 1011 <- Page Nummer - 101000011101 <- Page Offset - ~~~ -- Seitennummer `0x17`, Versatz `0x21d`. - Seitennummer `0xba`, Versatz `0x1d`. - Seitennummer `0x2e`, Versatz `0x21d`. . -- GitLab