1
ipwx 2016-09-28 10:04:26 +08:00 1
楼主你教科书这一段确实不太靠谱,但是你理解的也有问题。在 32 位 Linux 中,一个页是 4K ( 12 位地址空间),剩下的 20 位地址空间被二级页表索引,每一级负责 10 位。
但是页表项除了地址还要存其他很多信息,比如页的访问权限之类的。所以每一个页表项依旧需要 4 个字节。 那么问题就明朗了,一级页表 1024 项( 10 位地址空间嘛),每个项目 4 字节正好 4K (一页)。二级页表项也是 1024 项,每个项目依旧 4 字节正好 4K 。最后形成的两级页表体系一共能表示 20 位地址空间,补上 12 位页内地址空间正好 32 位。 楼主你可以继续网上搜索一下 Linux 二级页表的相关内容。需要说明的是二级页表只对 32 位系统有效, 64 位就是其他的做法了。 |
2
ipwx 2016-09-28 10:07:24 +08:00 1
All right ,我又回顾了一下楼主你摘抄的这一段…… 感觉这一段根本就是还没到二级页表的内容,大概就是为了告诉你单级页表存不下那么多地址。。。从教科书的角度出发,你也可以 justify 一个页表项 = 1B 的行为:强制要求所有可以表示的内存地址按照 16 字节对齐( 4 位)不就解决了吗?
|
4
EOF 2016-09-28 10:27:38 +08:00
|
6
hitmanx 2016-09-28 13:04:00 +08:00 1
我记得我以前看的书里提到页表项每条是 4 字节,所以单级页表一共是 4 * 2^20 = 4MB
|