操作系统中 一个页表项多大?

thesecretblue 2010-11-03 11:50:44
书上: “以32bit逻辑地址空间,4KB页面,4B页表项为例”

我想问下,这个“4B页表项”是怎么算出来的???
但是,在教材习题上P133, 同样““32bit逻辑地址空间,4KB页面”,每个页表项暂用一个字节,故每个进程仅仅其页表就要占用1MB的内存空间”

怎么会有两种表示方法了????
问题1: 请教高手,这个页表项是怎么算出来的??
我的理解是,一个页表项该是根据该页所放的页面地址数来决定的! 比如如果一个页表中映射2^20个页面,相应每个页表项应该占据 20位即2.5B; 如果一个页表中映射2^10个页面,相应每个页表项应该占据 10位即1.25B。这样理解对吗?
如果是算出来的怎么会在相同的““32bit逻辑地址空间,4KB页面“有两种页表项大小了??
如果不是算出来的,难道是认为规定的吗?


问题2: 在多级页表中,页表是放在哪里啊?? 那么多页表是用什么形式的逻辑结构或物理结构存放的???? 是页还是 什么的???

谢谢!!! 位即1.25B。这样理解对吗?
...全文
1689 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felven 2012-03-18
  • 打赏
  • 举报
回复
实现从页号到物理块号的地址映射
womenandmen 2010-12-16
  • 打赏
  • 举报
回复
如果是算出来的怎么会在相同的““32bit逻辑地址空间,4KB页面“有两种页表项大小了??
如果不是算出来的,难道是认为规定的吗?

答:你没有搞懂虚地址和实地址的概念,这里仅仅有32bit虚地址的已知信息,但是却不知道其实地址的大小是多少,因此可以假设实地址是某个位数,例如如果实地址是44位的话,其中12位表示页内偏移,剩余的4B也就是也表项应该有的大小了。同理,如果实地址是20位的话,那么也表项也就应该是1B了。
freefei 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wyfwx 的回复:]

linux: 32位内存地址=页目录(10bit) + 中间目录(10bit) + 页表(12bit)
[/Quote]
正解
wyfwx 2010-11-03
  • 打赏
  • 举报
回复
linux: 32位内存地址=页目录(10bit) + 中间目录(10bit) + 页表(12bit)
wyfwx 2010-11-03
  • 打赏
  • 举报
回复
4Byte = 32bit,即数据总线宽度
iealien 2010-11-03
  • 打赏
  • 举报
回复
linux: 32位内存地址=页目录(10bit) + 中间目录(0bit) + 页表(22bit)
thesecretblue 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wyfwx 的回复:]
linux: 32位内存地址=页目录(10bit) + 中间目录(10bit) + 页表(12bit)
[/Quote]

3楼,如果我不告诉你 页表项大小,你怎么算出页目录,和中间目录的位数???
guyuxiangtheone 2010-11-03
  • 打赏
  • 举报
回复
1bit =0.125Btyle

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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