《操作系統(tǒng)導(dǎo)論》第15章習(xí)題
-
用種子1、2和3運(yùn)行,并計(jì)算進(jìn)程生成的每個(gè)虛擬地址是處于界限內(nèi)還是界限外?如果在界限內(nèi)藐唠,計(jì)算地址轉(zhuǎn)換。
運(yùn)行指令
python relocation.py -s 1
Base : 0x0000363c (decimal 13884)
Limit : 290結(jié)果:
virtual address physical address VA 0 0x0000030e (decimal: 782) SEGMENTATION VIOLATION VA 1 0x00000105 (decimal: 261) 0x00003741(decimal: 14145) VA 2 0x000001fb (decimal: 507) SEGMENTATION VIOLATION VA 3 0x000001cc (decimal: 460) SEGMENTATION VIOLATION VA 4 0x0000029b (decimal: 667) SEGMENTATION VIOLATION
運(yùn)行指令
python relocation.py -s 2
Base : 0x00003ca9 (decimal 15529)
Limit : 500
結(jié)果:
virtual address | physical address | |
---|---|---|
VA 0 | 0x00000039 (decimal: 57) | 0x00003ce2(decimal: 15586) |
VA 1 | 0x00000056 (decimal: 86) | 0x00003cffdecimal: 15615) |
VA 2 | 0x00000357 (decimal: 855) | SEGMENTATION VIOLATION |
VA 3 | 0x000002f1 (decimal: 753) | SEGMENTATION VIOLATION |
VA 4 | 0x000002ad (decimal: 685) | SEGMENTATION VIOLATION |
運(yùn)行指令
python relocation.py -s 3
Base : 0x000022d4 (decimal 8916)
Limit : 316
結(jié)果:
virtual address | physical address | |
---|---|---|
VA 0 | 0x0000017a (decimal: 378) | SEGMENTATION VIOLATION |
VA 1 | 0x0000026a (decimal: 618) | SEGMENTATION VIOLATION |
VA 2 | 0x00000280 (decimal: 640) | SEGMENTATION VIOLATION |
VA 3 | 0x00000043 (decimal: 67) | 0x00002317(decimal: 8983) |
VA 4 | 0x0000000d (decimal: 13) | 0x000022e1(decimal: 8929) |
-
使用以下標(biāo)志運(yùn)行:-s 0 -n 10(即使用種子0 生成10個(gè)虛擬地址)鹉究。為了確保所有生成的虛擬地址都在邊界內(nèi)宇立,要將-l(界限寄存器設(shè)置為什么值)?
運(yùn)行
結(jié)果如下python relocation.py -s 0 -n 10
可以看到虛擬地址最大為929自赔,因此只要界限寄存器大于等于929即可
-
使用以下標(biāo)志運(yùn)行:-s 1 -n 10 -l 100 可以設(shè)置的界限最大值是多少妈嘹,以便地址空間仍然完全放在物理內(nèi)存中?
沒太懂題意绍妨,如果是問基地址的最大值润脸,則直接用物理地址大小減界限即可
詳細(xì)推導(dǎo)見https://blog.csdn.net/qq_40232851/article/details/103057051
和3類似
沒懂,可能是中文版翻譯有問題