Linux内存段式管理和页式管理

本文详细介绍了Linux内存管理中的分页和分段机制。在分页管理中,通过一级和二级页表减少内存浪费,逻辑地址经过页目录和页表转换为物理地址。而在分段管理中,每个进程有自己的段表,通过段号和偏移量转化为虚拟地址。内存的分配使用状况由物理页面表记录。
摘要由CSDN通过智能技术生成

1.分页内存管理

1.物理内存划分成无数个大小一样的块,每个块被称为页框
2.内存大小为2^n,页框大小为2^m,那么就有2^(n-m)个页框
3.页表则存在2^(n-m)个页号,页表的每个页表项为n-m位,一般为了整数操作会凑个整,多出来的做留着用来做标志位, 的最大占用空间则为2^(n-m)*((n-m)/8的大整数)

上面的n=32,代表32位,m=12代表每个叶框大小为2^12=4K,页表长度为2^20=1M,页表项为4B,所以整个页表始终占用空间为4MB,可能程序访问的时候一直访问前面的小部分,浪费了后面大部分
所以将页表从一级改为二级,页表长度为2^((n-m)/2),页长度为2^10=1K,页表项为4B,所以一个页表为4KB,然后每个页表项指向另一个页表,这个就是二级页表,一级页表中没用到的项对应的页表可以不用创建
举个例子就是,如果一级页表要映射一个物理地址的话,要初始化整个一个页表为4MB,二级页表映射的话,先初始化一级页表4K,然后再初始化一级页表项对应的二级页表4K,一共需要8K

虚拟地址含义
一级页表:
    page index 20bit(下标值)    |    offset 12bit
二级页表:
       pdx 10bit(下标值)    |     ptx 10bit(下标值)     |   offset 12bit

请求表:

整个系统有一个请求表,描述系统内各个进程页表的位置和大小,用于地址转换也可以结合到各进程的PCB(进程控制块)里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值