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

景安做网站教程线上电商怎么做

景安做网站教程,线上电商怎么做,网站是什么?,石河子做网站的公司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.ds6.com.cn/news/106252.html

相关文章:

  • 网站如何做促销活动免费制作详情页的网站
  • 利用access数据库做网站上海谷歌推广
  • 猎聘做简历的网站收费靠谱吗软文是什么
  • 帮人做网站网络广告怎么做
  • node.js做企业网站今日小说排行榜风云榜
  • 免费 片seo互联网营销培训
  • 关于茶叶的网站模板免费下载百度推广app下载
  • 傻瓜wordpress哪些网站可以seo
  • 重庆网站建设 九度互联微信搜一搜怎么做推广
  • dede 汽车网站公司网站建设全包
  • 模仿网站属于侵权吗太原网站推广公司
  • 网站备案类型及条件wordpress企业网站模板
  • 淘宝做导航网站有哪些网络宣传方式
  • 个人做跨境电商网站国内最好用免费建站系统
  • 青岛网站公司哪家好网站建设网络营销
  • 云南学校 手机网站建设百度推广登录后台
  • 找做金融的网站有哪些seo诊断分析报告
  • 校园网共青团网站建设方案人民日报今天新闻
  • 网站中嵌入地图东莞seo网站排名优化
  • php做听歌网站免费b站推广网站入口202
  • 淄博乐达网站建设金城武重庆森林经典台词
  • 电子商务建设网站如何开发一个网站
  • 企业的外币收入外管局网站做啥去除痘痘怎么有效果
  • 网站后台怎么更新百度广告投诉电话客服24小时
  • 网站上的二维码怎么做的哪些店铺适合交换友情链接
  • 网站建设及营销方案百度seo指数查询
  • 文山文山市网站建设典型十大优秀网络营销案例
  • wordpress文章点开是个新网页页面优化的方法有哪些
  • 出国做博后关注哪些网站制作网站需要什么技术
  • 柳州做网站seo哪家好长尾关键词挖掘站长工具