pae扩展内存 linux,Linux内核-内存管理-PAE(物理地址扩展)

Intel 通过在处理器上把管脚数从 32 增加到 36,以提高处理器的寻址能力,使其达到 2^36=64GB,然而线性地址的位数仍然是 32 位,为此,需引入一种新的分页机制。从pentium pro 处理器开始,intel引入一种叫做 PAE 的机制,Linux 中使用了这种机制。

64GB 的 RAM 被分为 2^24 个页框,页表项的物理地址字段从 20 位扩展到 24 位,每个页表项必须包含 12 个标志位(固定)和 24 个物理地址位(36-12,因为最多有 2^24 个页框可以被页表项指定),共 36 位,因此,每个页表项须从 32 位扩展到 64 位(36位>32位,考虑到对齐,因此应将页表项扩大一倍到64位)。

在4KB的常规分页情况下,由于每个页表项大小为64位,因而,原有4K大小的页表中,仅能包含512个表项,这占用了32位线性地址中的9位,同理,由于页目录项与页表项具有同样的结构,高一级的页目录表中也仅能包含512个页表项(目录项),同样占用了32位线性地址中的9位,此时,线性地址剩余位数为:32位(总位数)-12位(页内偏移量)-9位(指示页表中的索引)-9位(指示页目录表中的索引)=2位,同时,Linux引入了一个页目录指针表(PDPT)的页表新级别,由4个64位表项构成,剩余的2位即用来指向PDPT中4个项中的一个。

下面4张图详细说明了4种情况下的页表结构(引自Wikipedia)

【未启用PAE下的4K分页的页表结构】

0818b9ca8b590ca3270a3433284dd417.png

【未启用PAE下的4M分页的页表结构】

0818b9ca8b590ca3270a3433284dd417.png

【启用PAE下4K分页的页表结构】

0818b9ca8b590ca3270a3433284dd417.png

【启用PAE下2M分页的页表结构】

0818b9ca8b590ca3270a3433284dd417.png

线性地址的映射过程如下:

1)cr3:指向一个PDPT基地址

2)地址的31~30:确定PDPT项

3)地址的29~21:确定页目录项中的一个

此处,发生了分支:

A.如果页目录项的PS标志位等于0,那么页大小是4K

4)地址的20~12:确定页表的某一项

5)地址的11~0:确定偏移

B.如果PS=1,启用2M大页 4)地址的20~0:确定2M页中的偏移量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java嵌入式db_Java DB嵌入式模式

java嵌入式dbJava DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 Java DB有两个部署选项: Embedded和Network Server 。 这篇文章是关于嵌入式部署或模式的。 1.嵌入式 在嵌…

内存属于linux文件吗,linux下的/dev/shm是什么? 内存 文件系统

linux下的/dev/shm是什么?/dev/shm/是linux下一个目录,/dev/shm目录不在磁盘上,而是在内存里,因此使用linux /dev/shm/的效率非常高,直接写进内存。我们可以通过以下两个脚本来验证linux /dev/shm的性能:[r…

群晖备份linux分区,数据丢失的后悔药,群晖NAS备份方案详解

“秒速开机”——据说90%的人都是因为这句话而知道的SSD固态硬盘。相比于机械硬盘,SSD固态硬盘开机快、关机快、打开软件快、载入数据快、拷贝快、删除也快——既快乐、又爽快,更是大块人心!然而,SSD固态硬盘已经可以完全取代机械硬盘了吗&am…

php cdi_异步CDI事件

php cdi几天前,在我们的常规代码审查中,我的一位同事提出了一个问题,即如果可能,一次同时调用CDI观察者(这样的方法带有参数Observes )将发生多次?用于不同的事件实例。 换句话说,在…

tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版

TG-3269C驱动是一款能够安装于由普联发布的无线网卡驱动,通过此安装驱动我们手机和其他无线设备才能连接上无线网卡并进行上网,同时如果你的网卡经常出现断开和重连、网络不稳定等情况可以通过重新安装驱动,查看是否是硬件的问题,…

使用Spring Security,Thymeleaf和Okta保护Java应用程序的安全

永不再构建身份验证 –喜欢构建用户管理? 使用Okta,您可以在几分钟内为您的应用程序添加社交登录,多因素身份验证和OpenID Connect支持。 立即创建一个免费的开发者帐户。 在构建Java应用程序时,用户管理是至关重要的考虑因素。 …

红旗linux添加usb无线网卡,在Ubuntu 8.10中安装无线网卡RTL8187SE驱动

本人的笔记本是微星的Wind U90,自带的无线网卡是RTL8187SE。这款无线网卡在一般的Linux下是没有驱动的,微星的官方也仅仅提供在OpenSUSE下的驱动。为了在我的Ubuntu下使用这个网卡,只能自己动手了。还好,有了互联网上各位大侠和微…

java linq_LINQ和Java

java linqLINQ已经非常成功,但在.NET生态系统中也引起了争议。 许多人正在Java世界中寻找可比的解决方案。 为了更好地理解什么是可比的解决方案,让我们看一下LINQ解决的主要问题: 查询语言通常是具有许多关键字的声明性编程语言。 它们提供…

嵌入式 linux restful,嵌入式 RESTful 框架 express.java

软件介绍express.java 是一个微型的 RESTful Web 框架。可用于嵌入应用内部,替代 JMX 用于跨语言通讯。示例代码:WebServer.jettyServer().get("/", new AjaxController() {Overridepublic Object ajax(ParamMap params) {return ResultMap.cr…

将Google reCaptcha与Spring Boot应用程序结合使用

介绍 Google的reCaptcha是一个用于防止漫游器向您的公共表单提交数据或访问您的公共数据的库。 在本文中,我们将研究如何将reCaptcha与基于Spring Boot的Web应用程序集成 设置验证码 您应该从管理面板创建API密钥。 您必须创建一个示例应用程序,如下所…

探索 HTTP 请求的世界:get 和 post 的奥秘(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

linux 书签管理工具,在书签管理工具中使用Ubuntu字体

通过便捷书签管理程序(Bookmarklet,一种在浏览器中存放书签URL地址的应用程序)来在大多数的网站上推广使用Ubuntu系统的默认字体。——读者米格尔费尔南迪斯米格尔在他的想法产生之前告诉我们说:“我发现Ubuntu系统的字体在提高可读性上超过了绝大多数的…

linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面

配置Grub2/burg引导装载程序Grub Customizer 5.1.0新增加对Ubuntu 18.10的支持,我们可以用PPA源来安装,同时还支持Ubuntu 18.04、16.04、14.04。Grub Customizer简介Grub Customizer是用来配置Grub/burg引导装载程序的图形工具,此次发布的5.1…

使用Eclipse和Open Liberty的Java EE 8上的Java 9

几周前,我写了一篇文章,标题为哪个IDE和服务器支持Java EE 8和Java9 ,着眼于Java 9和Java EE 8之间的当前运行状态。您可以期待事情发展很快,我们现在有了一些alpha和支持Java 9和Java EE 8的开发版本。这些是– Payara 5 –适用…

深入浅出linux工具与编程 下载,8208.深入浅出Linux工具与编程.pdf

<>猛点这里下载全部内容目录&#xff1a;第1篇Linux命令及其工具第1章Linux系统与命令1.1Linux操作系统1.1.1Linux重要概念1.1.2Linux组成1.1.3Linux目录结构1.1.4Linux操作系统的组成1.1.5Linux用户管理1.1.6Linux文件管理1.2Linux命令1.2.1Linux命令帮助1.2.2Linux命令…

linux删除含有特殊字符的行,Linux 删除带有特殊字符的文件

禁止页面后退JS(兼容各浏览器)XML中&lt&semi;beans&gt&semi;中属性概述

使用SpringWebFlux的反应式Web应用程序

1.反应式编程简介 反应式编程是为具有以下特征的应用程序创造的术语&#xff1a; 非阻塞应用 事件驱动和异步 需要少量线程来垂直扩展&#xff08;即在JVM中&#xff09; 就像面向对象的编程&#xff0c;函数式编程或过程式编程一样&#xff0c;反应式编程只是另一种编程范…

对linux的mv命令设计测试用例,测试用例中的细节 - 八音弦的个人空间 - OSCHINA - 中文开源技术交流社区...

编写测试用例是在实际测试执行开始之前进行的软件测试活动的重要组成部分。因此&#xff0c;在编写测试用例时必须头脑清晰地理解需求。测试执行阶段的顺利程度主要取决于测试用例的编写质量&#xff0c;还取决于对需求的理解程度。理论上来讲应避免在测试用例中放入不必要或不…

linux python whl md5,Python计算一个目录下的所有文件的md5值,在Linux系统下面

实现代码如下&#xff1a;#!/usr/bin/python#*-*coding:utf8*-*import osimport sysimport hashlibdef md5sum(data):with open(data, "rb") as f:md5 hashlib.md5() #赋空值for i in f.read(4096): #防止遇到大文件打开太占用内存&#xff0c;所以一次打开4…

Java命令行界面(第28部分):getopt4j

getopt4j的页面将其描述为“一个根据GNU样式解析命令行参数的库。” 然后&#xff0c; 页面介绍getopt4j &#xff1a;“getopt4j库旨在以与glibc &#xff08;GNU C运行时库&#xff09;中的C getopt&#xff08;&#xff09;函数相同的方式解析命令行选项。 与原始产品相比&a…