分页机制+实践

本文详细介绍了分页机制的工作原理,包括简单的分页模型、两级页表结构、物理地址扩展(PAE)分页,以及Linux操作系统的四级分页机制。在Linux中,通过pgd_t、pmd_t等数据结构处理页表,地址转换过程涉及多次内存读取。此外,还提到了加载和卸载内核模块的相关内容。
摘要由CSDN通过智能技术生成

分页机制+实践

段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址。分页功能从总体上来说, 是用长度固定的页来代替长度不一定的段,分页就是将程序分成若干相同大小的页,每页4K个字节。从80386开始,所有的80x86处理器都支持分页,它通过设置CR0寄存器的PG标志启用。当CR0中的PG=0时,禁止使用分页机制,此时分段机制产生的线性地址直接当做物理地址使用;若PG=1,则启用分页机制。
页:将线性地址空间划分成若干大小相等的片。
物理块或页面:将物理地址空间分成与页大小相等的若干存储块。
页表:把线性地址映射到物理地址的一种数据结构,每个页表的大小是4KB。
页表项:页表内的每个项目叫做页表项,占4字节,存放的是页的物理地址。
简单的分页模型:
页式管理,就是把4GB内存分成大小相同的页,页的最小单位是4KB,即4096字节,所以页的物理地址,其低12位始终为0.线性地址的转换分俩步完成,每一步都基于一种转换表,第一种转化表称为页目录表,第二中转换表称为页表。
两级页表结构:
80386页表共含1M个表项,每个表项占4个字节。如果把所有的页表项存储在一个表中,则该表最大将占4M字节连续的物理存储空间,对页表采取两级表结构后,将线性地址的高20位分两步完成,每步使用其中的10位。
第一级称为页目录,存储在一个4K字节的页面中。页目录表中共有1K个表项,线性表的最高10位用来产生第一级的索引。两级表结构的第二级称为页表,第二级页表由线性地址的中间10位(21-12位)进行索引,最低12位表示页内偏移。

在这里插入图片描述

线性地址到物理地址的转换:
在这里插入图片描述

32位线性地址的转换:
①

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值