操作系统导论OSTEP 第十五章作业答案 机制:地址转换

本文通过一系列实验探讨了虚拟地址到物理地址转换的过程,包括不同种子、地址空间大小、物理内存大小下基址与界限寄存器的作用及影响,并分析了有效虚拟地址的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

答案Github库
https://github.com/jzplp/OSTEP-Answers

  • 问题 1 答案
[testjz@localhost vm-mechanism]$ ./relocation.py -s 1 -c

ARG seed 1
ARG address space size 1k
ARG phys mem size 16k

Base-and-Bounds register information:

  Base   : 0x0000363c (decimal 13884)
  Limit  : 290

Virtual Address Trace
  VA  0: 0x0000030e (decimal:  782) --> SEGMENTATION VIOLATION
  VA  1: 0x00000105 (decimal:  261) --> VALID: 0x00003741 (decimal: 14145)
  VA  2: 0x000001fb (decimal:  507) --> SEGMENTATION VIOLATION
  VA  3: 0x000001cc (decimal:  460) --> SEGMENTATION VIOLATION
  VA  4: 0x0000029b (decimal:  667) --> SEGMENTATION VIOLATION
[testjz@localhost vm-mechanism]$ ./relocation.py -s 2 -c

ARG seed 2
ARG address space size 1k
ARG phys mem size 16k

Base-and-Bounds register information:

  Base   : 0x00003ca9 (decimal 15529)
  Limit  : 500

Virtual Address Trace
  VA  0: 0x00000039 (decimal:   57) --> VALID: 0x00003ce2 (decimal: 15586)
  VA  1: 0x00000056 (decimal:   86) --> VALID: 0x00003cff (decimal: 15615)
  VA  2: 0x00000357 (decimal:  855) --> SEGMENTATION VIOLATION
  VA  3: 0x000002f1 (decimal:  753) --> SEGMENTATION VIOLATION
  VA  4: 0x000002ad (decimal:  685) --> SEGMENTATION VIOLATION
[testjz@localhost vm-mechanism]$ ./relocation.py -s 3 -c

ARG seed 3
ARG address space size 1k
ARG phys mem size 16k

Base-and-Bounds register information:

  Base   : 0x000022d4 (decimal 8916)
  Limit  : 316

Virtual Address Trace
  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) --> VALID: 0x00002317 (decimal: 8983)
  VA  4: 0x0000000d (decimal:   13) --> VALID: 0x000022e1 (decimal: 8929)
  • 问题 2 答案
[testjz@localhost vm-mechanism]$ ./relocation.py -s 0 -n 10 -l 930 -c 

ARG seed 0
ARG address space size 1k
ARG phys mem size 16k

Base-and-Bounds register information:

  Base   : 0x0000360b (decimal 13835)
  Limit  : 930

Virtual Address Trace
  VA  0: 0x00000308 (decimal:  776) --> VALID: 0x00003913 (decimal: 14611)
  VA  1: 0x000001ae (decimal:  430) --> VALID: 0x000037b9 (decimal: 14265)
  VA  2: 0x00000109 (decimal:  265) --> VALID: 0x00003714 (decimal: 14100)
  VA  3: 0x0000020b (decimal:  523) --> VALID: 0x00003816 (decimal: 14358)
  VA  4: 0x0000019e (decimal:  414) --> VALID: 0x000037a9 (decimal: 14249)
  VA  5: 0x00000322 (decimal:  802) --> VALID: 0x0000392d (decimal: 14637)
  VA  6: 0x00000136 (decimal:  310) --> VALID: 0x00003741 (decimal: 14145)
  VA  7: 0x000001e8 (decimal:  488) --> VALID: 0x000037f3 (decimal: 14323)
  VA  8: 0x00000255 (decimal:  597) --> VALID: 0x00003860 (decimal: 14432)
  VA  9: 0x000003a1 (decimal:  929) --> VALID: 0x000039ac (decimal: 14764)

界限寄存器的值最小设置为930.

  • 问题 3 答案
    题目翻译错误,问题应该是问基址寄存器base的最大值。
[testjz@localhost vm-mechanism]$ ./relocation.py -s 1 -n 10 -l 100 -b 16284 -c

ARG seed 1
ARG address space size 1k
ARG phys mem size 16k

Base-and-Bounds register information:

  Base   : 0x00003f9c (decimal 16284)
  Limit  : 100

Virtual Address Trace
  VA  0: 0x00000089 (decimal:  137) --> SEGMENTATION VIOLATION
  VA  1: 0x00000363 (decimal:  867) --> SEGMENTATION VIOLATION
  VA  2: 0x0000030e (decimal:  782) --> SEGMENTATION VIOLATION
  VA  3: 0x00000105 (decimal:  261) --> SEGMENTATION VIOLATION
  VA  4: 0x000001fb (decimal:  507) --> SEGMENTATION VIOLATION
  VA  5: 0x000001cc (decimal:  460) --> SEGMENTATION VIOLATION
  VA  6: 0x0000029b (decimal:  667) --> SEGMENTATION VIOLATION
  VA  7: 0x00000327 (decimal:  807) --> SEGMENTATION VIOLATION
  VA  8: 0x00000060 (decimal:   96) --> VALID: 0x00003ffc (decimal: 16380)
  VA  9: 0x0000001d (decimal:   29) --> VALID: 0x00003fb9 (decimal: 16313)

16k-100=16284.

  • 问题 4 答案
[testjz@localhost vm-mechanism]$ ./relocation.py -s 1 -n 10 -l 100 -b 499900 -a 500000 -p 500001 -c

ARG seed 1
ARG address space size 500000
ARG phys mem size 500001

Base-and-Bounds register information:

  Base   : 0x0007a0bc (decimal 499900)
  Limit  : 100

Virtual Address Trace
  VA  0: 0x0001066e (decimal: 67182) --> SEGMENTATION VIOLATION
  VA  1: 0x00067724 (decimal: 423716) --> SEGMENTATION VIOLATION
  VA  2: 0x0005d3bf (decimal: 381887) --> SEGMENTATION VIOLATION
  VA  3: 0x0001f22e (decimal: 127534) --> SEGMENTATION VIOLATION
  VA  4: 0x0003c7a5 (decimal: 247717) --> SEGMENTATION VIOLATION
  VA  5: 0x00036de9 (decimal: 224745) --> SEGMENTATION VIOLATION
  VA  6: 0x0004f8a4 (decimal: 325796) --> SEGMENTATION VIOLATION
  VA  7: 0x00060479 (decimal: 394361) --> SEGMENTATION VIOLATION
  VA  8: 0x0000b751 (decimal: 46929) --> SEGMENTATION VIOLATION
  VA  9: 0x0000375d (decimal: 14173) --> SEGMENTATION VIOLATION

这个数字太随机了,看不出效果。

  • 问题 5 答案
虚拟地址必须小于界限寄存器,值才是有效的。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值