Linux内核学习第7天

网友投稿 588 2022-05-29

分页机制

*它是80X86内存管理机制的第二部分,它在分段的基础上完成虚拟(逻辑)地址到物理地址转换的过程

*通过设置控制寄存器CR0的PG位启用分页机制

(PG=0,禁用;PG=1,启用)

固定页面大小:4K(4GB线性地址空间划分为2^20个页面)

页表结构

Linux内核学习第7天

页表: 用于描述分页转换功能的表,存放于物理地址空间

*可以看为简单的2^20物理地址数组

每个页表项位32位(20位存放页面的物理基地址,12位可用于存放注入页面是否存在等的属性信息)

两级页表结构:

页表含有2^20个表项,每项4字节

*第一级页表称为页目录(Page direction):存放在1页4K页面中,表项指向相应的二级表

线性地址的最高10位(位31-22)用作一级表中的索引值来选择2^10个二级表之一

*第二级表称为页表(page table):长度也是一个页面(4K),每个表项含有相关页面的20位物理基地址

使用线性地址中间10位(21-12)作为索引值项,低12位是偏移量,两个部分组合在一起可以得到分页转换过程的输出值

*CR3寄存器指定页目录表的基地址

不存在的页表:

*页目录中每个表项有一个存在属性(present),指定对应的二级页表是否存在

*存在属性还可以用于虚拟内存中存放二级页表

页表项格式:

*P-位0(Present):用于指明表项对地址转换是否有效

P=1有效,P=0无效(会产生异常,除P位外,31-1位操作系统可以用来存放储存在硬盘上的页面的序号)

*R/W-位1(Read/Write):如果为1,表示页面可以读写或执行,如果为0,页面只读或可执行(对其映射的所有页面起作用)

如果为0处理器运行在超级用户特权级(0,1,2)

*U/S-位2(User/Supervisor):是用户/超级用户标志

如果为1,则运行现在任何特权级的程序都可以访问该页面

如果为0,则页面只能在 超级用户特权级(0,1,2)的程序上访问

*A-位5(Accessed):已访问标志

当处理器访问页表映射的页面时,置为1;当处理器访问页目录表项映射的任何页面,置为1

*D-位6(Dirty):页面已被修改标志

当处理器对一个页面执行写操作时,则会设置对应页表项的D标志(处理器不会修改页目录项中的D标志)

*AVL:该字段保留专供程序使用,处理器不会修改这几位

$虚拟内存:A和D标志可以用于实现虚拟存储技术

Linux 单片机

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:还在用丝袜哥(Swagger)做API文档?快来看看这款帮你减少百分之九十工作量的开源工具!
下一篇:契约锁电子签约|让看房-选房-认购一步到位,足不出户、轻松成交
相关文章