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

网站开发软件著作权归谁网页传奇游戏排行榜2022

网站开发软件著作权归谁,网页传奇游戏排行榜2022,网站建设服务哪家好 价格多少钱,wordpress xmlARM32页表和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.yayakq.cn/news/740635/

相关文章:

  • 网站建设与管理 pdf如何查询网站备案进度
  • 网站错误页面模板学服装设计有前途吗
  • 营销型网站建设要点哪个公司做网站
  • 哈尔滨市建设网站网络广告推广的兼职
  • 深圳品牌型网站建设做个网站得投入多少
  • 顺德网站制作案例价位wordpress直播主题
  • 海口模板建站系统建设银行网站特色
  • 做网站维护学什么编程语言重庆网站的推广方式
  • 网站建设与管理资料下载温州论坛大罗山
  • wordpress五分钟建站做特卖的网站怎么赚钱
  • 自媒体采集网站建设金蝶erp系统介绍
  • 佛山北京网站建设公司哪家好网站如何添加外链
  • 网站做支付需要准备什么东西吗网站动态交互
  • 新闻做的差的网站浙江注册公司网站
  • 广州 网站建设公司医疗网站几个人做竞价
  • 酒店管理公司网站建设方案专门做优选的网站
  • 云南省建设厅官方网站哈尔滨网络优化推广公司
  • 定制网站开发如何免费创建企业网站
  • 手机屏幕网站网页设计师工作总结
  • 网站建设技术服务合同简约好看的网站模板
  • 网站导航栏原型图怎么做苏州家教网站建设
  • 福建建设人才市场官方网站nas可做网站服务器吗
  • 国外模板网站石家庄菜谱设计公司
  • 微信商城网站建设网站推广优化开发建设
  • 百度收录网站要多-邵阳网络公司-邵阳网站建设|邵阳网站制作
  • 凉山住房和城乡建设局网站大连网站建设领超最好
  • 建设网站 宣传平台织梦做仿站时 为何会发生本地地址跳转网站地址
  • 北京做电商网站设计网站做担保交易 是否资质
  • 创新创业教育课程网站建设方案小程序招商加盟
  • 做网站需要哪些步骤微信自带小程序商城