当前位置: 首页 > news >正文

景安做网站教程每日新闻摘抄10一15字

景安做网站教程,每日新闻摘抄10一15字,广州英铭网站建设,手机网站 域名ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…

ARM32页表和Linux页表那些奇葩的地方

ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始?

历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的,特别是关于PTE页表项里面的很多比特位的定义。因此ARM在移植到Linux时只能参考x86版本的Linux内核的实现。

X86的PGD是从bit22 ~ bit31,总共10bit位,1024页表项。PT页表从bit12 ~ bit 21 ,总共 10 bit位,1024页表项。

ARM的PGD是从bit20 ~ bit31,总共12bit, 4096页表项。PT域从bit12 ~ bit 19,总共8bit,2556页表项。

X86和ARM页表最大的差异在于PTE页表内容的不同。

Linux内核版本的PTE比特位的定义

/** "Linux" PTE definitions for LPAE.** These bits overlap with the hardware bits but the naming is preserved for* consistency with the classic page table format.*/
#define L_PTE_VALID  (_AT(pteval_t, 1) << 0)  /* Valid */
#define L_PTE_PRESENT  (_AT(pteval_t, 3) << 0)  /* Present */
#define L_PTE_USER  (_AT(pteval_t, 1) << 6)  /* AP[1] */
#define L_PTE_SHARED  (_AT(pteval_t, 3) << 8)  /* SH[1:0], inner shareable */
#define L_PTE_YOUNG  (_AT(pteval_t, 1) << 10) /* AF */
#define L_PTE_XN  (_AT(pteval_t, 1) << 54) /* XN */
#define L_PTE_DIRTY  (_AT(pteval_t, 1) << 55)
#define L_PTE_SPECIAL  (_AT(pteval_t, 1) << 56)
#define L_PTE_NONE  (_AT(pteval_t, 1) << 57) /* PROT_NONE */
#define L_PTE_RDONLY  (_AT(pteval_t, 1) << 58) /* READ ONLY */#define L_PMD_SECT_VALID (_AT(pmdval_t, 1) << 0)
#define L_PMD_SECT_DIRTY (_AT(pmdval_t, 1) << 55)
#define L_PMD_SECT_NONE  (_AT(pmdval_t, 1) << 57)
#define L_PMD_SECT_RDONLY (_AT(pteval_t, 1) << 58)

ARM32的PTE比特位的定义

/**   - extended small page/tiny page*/
#define PTE_EXT_XN  (_AT(pteval_t, 1) << 0)  /* v6 */
#define PTE_EXT_AP_MASK  (_AT(pteval_t, 3) << 4)
#define PTE_EXT_AP0  (_AT(pteval_t, 1) << 4)
#define PTE_EXT_AP1  (_AT(pteval_t, 2) << 4)
#define PTE_EXT_AP_UNO_SRO (_AT(pteval_t, 0) << 4)
#define PTE_EXT_AP_UNO_SRW (PTE_EXT_AP0)
#define PTE_EXT_AP_URO_SRW (PTE_EXT_AP1)
#define PTE_EXT_AP_URW_SRW (PTE_EXT_AP1|PTE_EXT_AP0)
#define PTE_EXT_TEX(x)  (_AT(pteval_t, (x)) << 6) /* v5 */
#define PTE_EXT_APX  (_AT(pteval_t, 1) << 9)  /* v6 */
#define PTE_EXT_COHERENT (_AT(pteval_t, 1) << 9)  /* XScale3 */
#define PTE_EXT_SHARED  (_AT(pteval_t, 1) << 10) /* v6 */
#define PTE_EXT_NG  (_AT(pteval_t, 1) << 11) /* v6 */

那X86和ARM的页表差距这么大,软件怎么设计呢?Linux内核的内存管理已经适配了X86的页表项,我们可以通过软件适配的办法来解决这个问题。因此,ARM公司在移植该方案时提出了两套页表的方案。一套页表是为了迎合ARM硬件的真实页表,另一套页表是为了迎合Linux真实的页表。

对于PTE页表来说,一下子就多出了一套页表,一套页表256表项,每个表项占用4字节。为了软件实现的方便,软件会把两个页表合并成一个页表。4套页表正好占用256 * 4 * 4 = 4K的空间。因此,Linux实现的时候,就分配了一个page 来存放这些页表。

这一套方案的话,相当于每个PGD页表项有8字节,包含指向两套PTE页表项的entry。每4个字节指向一个物理的二级页表。

http://www.tj-hxxt.cn/news/94725.html

相关文章:

  • 怎么做网站的优化排名关键词快速排名不限行业
  • 局域网内用自己电脑做网站媒体:北京不再公布疫情数据
  • 网络营销推广的技巧有哪些网站优化平台
  • 简单 网站设计长沙seo关键词排名
  • 网站建设 熊掌号网站推广联盟
  • 台州北京网站建设佛山网站快速排名提升
  • 网站建设公司的性质灰色关键词排名代发
  • 如何开展网站建设最新新闻热点事件2023
  • 网站上的qq如何做悬浮百度指数官网查询入口
  • 天河网站建设专家湖北百度关键词排名软件
  • 网站设置三方交易北京seo推广公司
  • 天猫入驻优化大师官方网站
  • 商城网站建设计划书网络营销岗位描述的内容
  • 可以做查询功能的网站百度搜索风云榜小说排行榜
  • 网站程序模板企业网站的搜索引擎推广与优化
  • 静态网站建设的流程seo关键词优化经验技巧
  • 个人可以做外贸的网站每日新闻摘要30条
  • 中国企业黄页信息网seo 的原理和作用
  • 移动端网站开发公司星巴克营销策划方案
  • 做网站的开题报告外贸平台app
  • 有哪个网站教人做美食网站设计模板
  • 淄博网站建设优化seo点点站长工具
  • 做爰免费视频网站如何搭建网站
  • ppt网站超链接怎么做平台推广精准客源
  • 网站整合建设方案网上国网app推广
  • 黄骅市网站建设网站设计与制作毕业论文范文
  • 页面设计常用的主题颜色考拉seo
  • 站内推广策略seo收费标准
  • web前端实战项目源码seo zac
  • 专业网站包就业的培训学校