全部博文(4)
分类: LINUX
2009-02-13 18:12:17
32根地址线,2层分页架构的4k为一页的 系统中 线性地址到物理地址的转化。
一个32位的线性地址,
22-----31:最高十位 :在页面目录中的下标
12-----21:中间十位: 在页面表中的下标
0-------11:最低12位, 留作
这样页面目录本身所占用的空间是 2^10 * sizeof(uint32) = 1024*4= 4k
这样页面表本身所占用的空间是 2^10 * sizeof(uint32) = 1024*4= 4k
这样的架构中寻址能力正好是4k
*4k*页面大小(4k)=
段式内存管理的缺点:
1:段 + 偏移量 寻址 只要段的基地址固定不变,则在偏移量的地址范围内,可以任意访问。
2:原来改变段基址的指令也不是特权指令, 因此实际上就可以访问能够地址线能够寻址的所有范围, 相当危险。
此架构的优点如下:
次架构我们选择10x10x12 而不选择其它的如 8x12x12 呢?
1:空间效率高。
页面目录几乎总是存在的, 它本身的大小正好为一个页面。而并不是1024个页表都需要固定存在于内存中的,因为很少有进程能够占用整个
2:灵活性非常好, 连续的现行地址在经过隐射后,不一定在连续的物理地址, 这就对我们对某些地址空间范围进行保护提供了很好的条件。
Intel的x86 的一些寄存器:
CR0:其最高位PG,为0表示关闭页式管理, 1:开启页式管理。
CR1:
CR2:当访问的线性地址所在页面不再内存中时,会产生一个页面异常,而此线性地址就会存放在CR2中。
CR3:指向当前页目录的指针。即页面目录的基址。
1:当此寄存器的值被设置后, 会自动将所有的TLB全部失效
CR4:此寄存器中的PAE的标志位 被置1时就开启了 PAE模式, 可以寻址高于