Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15691
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 161
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-28 14:45
文章分类

全部博文(13)

文章存档

2014年(13)

我的朋友

分类: LINUX

2014-10-11 23:18:07

如果一个页面的大小为4K,页表项大小为4B,那么为什么可以存2^10个页表项?我的意思就是问为什么要拿4K/4B=2^10?页表项不应该是存在于内存里面的?和页面大小有什么关系?

理解这样一个概念,操作系统为了方便管理内存,将内存划分成很若干个页,每个页表项就代表一个页的地址(页的地址,不是内存地址)。
4B大小的页表项,意味着支持最大的页表数是2的32次方=4294967296 (4B=32bit),一个页的大小4K,那么4B大小的页表项,表示操作系统支持4294967296*4K = 16GB大的内存。

现在问题是页表占用一定的内存。
现在假设有2GB(一定要小于16GB)内存。
那么它一共有2GB/4KB=512K个页,也就是说页表项有512K项,而每个页表项的大小4B,那么页表在内存中占用的大小是:512K*4B=2MB,意味着,只要2MB就可以表示512K个页(每个页是4KB,总内存大小是2G),它页表本身占用了2MB/4K=512个页。

这一题 就是问你1个页可以表示多少个页表项,4KB/4B=1024个页表项。

页面大小与页表项没有绝对的关系,但它们有这样关系:
1.页面大小 * 2 ^(页表项大小)=操作系统最大支持内存大小(虚拟内存),本题是 4K * 2^(4B) = 16GB
2.页表占用内存 = 操作系统内存/页面大小 * 页表项大小,本题是,假设操作系统内存为2GB。 2GB/4KB*4B = 2MB
3.页表占用的页数是=页表占用内存/页面大小,这题同上假设2MB/4K=512个页。
阅读(200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~