ucore-project5: mm(2)

32 篇文章 0 订阅
6 篇文章 0 订阅

看内核刚进入时加载临时gdt的代码:

lgdt __gdtdesc - KERNBASE

.data
gdt:
...
__gdtdesc:
    .word 0x17
    .long gdt-KERNBASE

 

其中KERNBASE = 0xC0000000。在lgdt指令中,使用了__gdtdesc的真实物理地址,而在__gdtdesc中,使用了gdt的真实物理地址。其中lgdt指令中的__gdtdesc真实地址,应该是要经过段式处理的,而__gdtdesc中的gdt地址呢?是否也需要经过段式处理才能访问呢?

 

查看intel的文档,GDTR/IDTR中的基地址,都是线性地址,LDTR/TR/CS/DS/ES/FS/GS/SS中不可见部分保存的基地址,也都是线性地址。在intel文档中有逻辑地址、线性地址和物理地址三种地址概念,其中逻辑地址包括段选择子和偏移值,逻辑地址经过运算(就是段选择子指定的段描述符中的基地址加上偏移值),将生成一个线性地址,而在启用了分页的情况下,线性地址经过页式转换,最终才生成物理地址。所以只有逻辑地址才需要经过段式处理,而GDTR/IDTR以及一系列存放选择子的段寄存器的不可见部分中保存的是线性地址,也就是无需再次进行段式处理的地址。

 

而CR3中保存的是当前页目录表的“物理地址”,就是说,可以直接拿来用的地址,无需进行段式处理,也无视进行页式处理,直接放到外部总线上就可以访问内存了。

 

可以看出,GDTR、IDTR等寄存器中的线性地址都可以分页,但CR3中的物理地址却不可再分段。这也很好理解,在x86 cpu中,地址都是先经过分段,然后再分页的,分页处理后的地址已经是物理地址了,不能再次进行处理了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值