There might also be more questions than you have time to answer, but do as many as you can.
There are solutions to some of the questions, but try to solve them yourself first.
b) Varför måste man ha stöd i hårdvaran när man använder virtuellt minne?
a) 4 byte
b) 1024 byte
c) 8192 byte
d) 8193 byte
e) 10000 byte
f) 1099511627776 byte (240 byte, dvs en tebibyte)
a) Hur stor är en minnessida ("page")? Visa hur du räknat.
b) Fysiska ramar ("frames") kommer att vara lika stora som minnessidorna. Förklara varför!
c) På den här processorn har fysiska adresser fler bitar än virtuella adresser. Är det något konstigt med det? Vad innebär det?
d) Hur mycket plats (i byte) tar page-tabellen för en process? Gör rimliga antaganden, redovisa dem, och förklara hur du räknat!
e) Den virtuella minnessidan nummer 2 (binärt: 10) lagras i fysisk frame nummer 0 (binärt: 0). På vilken fysisk minnesplats finns den virtuella adressen 4097 (binärt 1000000000001)?
En student (som eventuellt kan ha slarvat lite när hen läste OS-kursen) behöver hjälp med några frågor. Svara på dessa frågor, och red ut eventuella missförstånd!
a) "Hur fungerar page-tabellen i real mode? Är det en för varje process fortfarande, eller vad?"
b) "I vanliga fall brukar den virtuella minnesrymden vara större än det fysiska minnet, och data i den virtuella minnesrymden som inte får plats i det fysiska minnet pagas ut till disk. Men när man använder Physical Address Extension är fysiska adresser 36 bitar, medan virtuella är 32 bitar, så man kan ha mer fysiskt minne än virtuellt minne. Hur fungerar det med paging? Gör man tvärtom mot vanligt, så de data som inte får plats på disken pagas till RAM-minnet, eller vad?"
c) "I long mode är virtuella adresser 48 bitar, så man kan ha 248 = 281474976710656 byte virtuellt minne, dvs mer än 200 terabyte, eller 200000 gigabyte. Men hur kan det fungera? Min dator har bara en disk på en enda terabyte, eller 1000 gigabyte, och även om man pagar ut data ur primärminnet till disken skulle det ju inte få plats!"
a) Hur mycket fysiskt minne kan man adressera? Visa också hur du räknat.
b) Hur mycket virtuellt minne kan man adressera? Visa också hur du räknat.
c) Hur stora är minnessidorna? Visa också hur du räknat.
d) Hade det varit rimligt att ha en offsetdel som var 12 bitar i stället för 13? Motivera svaret.
e) Hade det varit rimligt att ha en offset som var 3 bitar? Motivera svaret.
f) Hade det varit rimligt att ha en offset som var 34 bitar? Motivera svaret.
a) Vi antar att en sida ("page") är 128 minnesadresser stor. Hur många bitar går det åt för att ange en minnesplats inom en sida ("offset")?
b) Hur många bitar går det åt för att ange sidnumret ("page number")?
c) Hur många olika sidor kan varje process ha?
d) Hur många olika ramar ("frames") finns det i det fysiska minnet?
e) Hur stor (i byte räknat) blir varje process sidtabell ("page table")? Redovisa hur du räknat!
f) Förklara, med den beskrivna datorn som exempel, hur paging fungerar. Hur är det möjligt att en process kan ha mer minne än vad som finns? Och hur är det möjligt att flera processer var och en kan ha mer minne än vad som finns?