Linux——页表的分页机制
创始人
2024-05-12 15:07:40
0

目录

一.相关概念(页帧、页框、缺页中断)

二.页表分页机制

(一).为什么采用两级页表

(二).两级页表分页机制

①原理:

②映射原理计算


一.相关概念(页帧、页框、缺页中断)

在linux中,创建进程时会同时创建一个mm_struct代表虚拟地址空间,再通过页表和MMU映射到内存(即物理内存)中。

首先,我们需要知道的是,linux的磁盘是以4KB为一个基本存储单元,即页帧。内存也是以4KB为基本存储单元,即页框linux通过struct Pages结构体管理页框,页框总数是内存大小/4,因此linux中使用Pages结构体数组管理内存。

CPU运行进程前会将程序加载进内存。即磁盘数据写入内存中对应的页框,struct Pages数组对应下标位置的Pages结构体进行记录,页表再填充相关映射关系,也就是缺页中断。一切准备工作做好之后才会运行进程。

二.页表分页机制

(一).为什么采用两级页表

linux的页表分页采用两级页表分页机制

而没有采用单级页表直接映射到物理内存是基于空间大小的考虑。

以32位机器为例,页框的个数为4GB / 4KB也就是2^20次方个,假设一个表项占有4Byte,总共有4MB的连续空间需要使用,也就是说,每次调度进程时,这4MB的空间都要被使用。

而两级分页因为存在第二级映射,虽然两级页表加起来依旧是4MB,但这是一级页表 + 所有二级页表的和。而调度进程只需使用一级页表 + 特定的一个二级页表,因此,使用的空间要比单级页表少。

(二).两级页表分页机制

①原理:

linux将虚拟地址的32位分为前10位、中间10位、后置12位。

前置10位作为一级页表的索引映射中间10位,中间10位作为二级页表的索引映射到内存中的页框的起始地址,再根据后置12位找到特定页框中具体地址。后置12位即页内偏移。

本质上页表只是映射到具体的页框,再根据偏移量找到物理地址。

即物理地址 = 页框起始地址 + 页内偏移量。

原理图如下:

②映射原理计算

虚拟地址前20位是两级页表的索引,共能索引出2^20次方个页框,内存共4GB即2^20次方个页框,因此正好与之一一对应。

每个页框4KB,共有4x1024个地址,即2^12次方,页内偏移即虚拟地址后12位,也是2^12次方,正好可以偏移出一个页框中全部地址。

 


如有错误,敬请斧正

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...