请教一个关于页式存储管理的问题

qq_27720057 2021-06-17 23:11:05

在学习页式存储管理时看到一句话:数据共享时不同进程可以使用不同页号共享数据页;程序共享时不同进程必须使用相同页号共享代码页,原因是共享代码中的(JMP<页内地址>)指令使用不同页号时做不到。

我的疑问是:逻辑地址与物理地址通过页表进行了映射,不同进程可以使用不同页号共享数据页,那是不是说明不同进程使用的页表可以是不同的?不同进程通过不同的页表获取同一共享代码页的页号可能是不同的,但指向的物理地址是一样的,那为什么使用汇编指令时不能使用不同的页号?

...全文
1162 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

因为数据不需要重定位,代码(通常)需要重定位,如果把某物理地址的代码同时映射到不同的页号,也就是逻辑地址不一样,那么重定位就处理不了(near/far类型的jmp、call指令和mov数据的指令,short类型的jmp、call不需要重定位),所以在x64中特意增加了基于rip的寻址模式,便于写位置无关的代码(PIC)

 

qq_27720057 2021-06-19
  • 举报
回复
@日立奔腾浪潮微软松下联想 明白了,谢谢您的点拨

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧