逻辑地址推算物理地址(主观)

网上高手写的代码计算。

1.一个计算机操作系统采用段式存储管理方法,一个程序被分成5个段(编号为0段、1段、2段、3段和4段),分别加载在主存不同物理段,段表如下图所示:

段号01234
内存段基址110235010013501958
段长500209059090

分别重定位如下5个逻辑地址 (格式为“段号:段偏移”,十进制 )的物理内存地址。(1)0:220     (2分)(2)1:15      (2分)(3)3:555     (2分)(4)4:200     (2分)(5)6:150     (2分)

x = ((0, 220), (1, 15), (3, 555), (4, 200),(6,150))
li = (
    (0,     110,    500,   1),
    (1,     2350,    20,   1),
    (2,     100,   90,   1),
    (3,     1350,   590,   1),
    (4,1958,90,1)
)
ans = []

for i in range(len(x)):
    if x[i][1] > li[i][2]:
        ans.append('none')
    else:
        a = li[i][1] + x[i][1]
        ans.append(a)

print(ans)

2.一个计算机操作系统采用页式存储管理方法对内存进行管理,页大小为1024B。一个程序的逻辑地址空间被划分成4页(编号为0页、1页、2页、3页),分别装入内存的2页框、3页框、1页框、6页框,页表如下表所示: 

页号0123
对应页框号2316

 将下列程序逻辑地址(十进制)转换为相应的内存物理地址(十进制)。(1)400     (2分)(2)1011    (2分)(3)2500    (2分)(4)3000    (2分)(5)4000    (2分)

li = (2,3,1,6)
data = (400, 1011, 2500, 3000,4000)
size = 1024
ans = []
for i in data:
    p = int(i / size)
    w = i % 1024
    if (p > len(data) - 1):
        ans.append('none')
    else:
        a = li[p] * size + w
        ans.append(a)

print(ans)

计算出none就是此地址不在内存中。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片