《操作系统导论》实验六:模拟地址转换(寄存器)

1.作业包:relocation.py
2.作业说明:

通过程序 r e l o c a t i o n . p y relocation.py relocation.py,我们能够观察到地址转换与基地址寄存器、界地址寄存器的关系。

命令行参数解释如下:

  • − h -h h: 查看帮助信息以及退出
  • − s -s s: 随即因子
  • − a -a a: 逻辑地址空间大小
  • − p -p p: 物理地址空间大小
  • − n -n n: 逻辑地址个数
  • − b -b b: 基地址寄存器的值
  • − l -l l: 界地址寄存器的值
  • − c -c c:计算进程调度执行情况

逻辑地址空间布局简化为代码区、固定大小的栈区、向高地址增长的堆区,总长度为 7 K B 7KB 7KB,所以界地址寄存器保存 7 K B 7KB 7KB

3.作业要求:

运行环境变更为 ubuntu20.04,内置程序为 python3,需要修改relocation.pyprint ' 'print (' ')

(1) 分别用随机因子 1,2,3 生成一个进程的逻辑地址,判断是否越界,如果未越界输出转换结果。

答:下面以随机因子 1 为例:

python3 ./relocation.py -s 1 -c

在这里插入图片描述逻辑地址空间大小为 1KB,物理地址空间大小为16KB,基地址寄存器为 0x0000363C(13884),界地址寄存器为 290,其中第二个逻辑地址为 0x00000105(261),位于界地址寄存器的范围内,转换后结果为 0x00003741(14145)

(2) 使用参数 -s 0 -n 10,如何使用-l 设置界地址寄存器的值,从而防止越界?

答:
在这里插入图片描述随机因子为0时,每次产生的逻辑地址不变,最大的逻辑地址为 0x000003a1(929),所以设置界地址寄存器大于 929 即可。

python ./relocation.py -s 1 -l 930 -c

在这里插入图片描述

(3) 使用参数 --s 1 -n 10 -l 100,基地址寄存器的最大值为多少?

答:设基地址寄存器的值为 b a s e base base,界地址寄存器的值为 l i m i t limit limit,物理地址空间大小为 16 K 16K 16K,则 b a s e + l i m i t ≤ 16 K = 16384 base+limit≤16K=16384 base+limit16K=16384 l i m i t limit limit 100 100 100 时`,
b a s e + 100 ≤ 16384 = > b a s e ≤ 16284 base+100≤ 16384\\ =>base ≤ 16284 base+10016384=>base16284

b a s e = 16284 base=16284 base=16284 时,部分逻辑地址仍然有效

在这里插入图片描述
b a s e = 16285 base=16285 base=16285 时,逻辑地址空间不适合该物理地址空间

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值