- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章:存储器管理基础
一:概述
在保护模式下,存储器管理包括哪些方面呢?
一个如何存储
分段:
存储段:代码和数据
系统段:局部段描述表,任务状态段
分页:
如何访问
通过一个访问描述符来访问我们存储在内存中的东西。
描述符的分类:
全局描述符
局部描述符
描述本身存储在哪里呢?
全局描述符存储在全局段描述表
局部描述符存储在局部段描述表中
根据描述符描述内容描述又可以分为:
描述符:包含什么内容?
描述符有三种:
存储段描述符:存储段包括,段基址、段长、段属性。
系统段描述符:段基址、段长、段属性
系统段描述符有:LDT局部段描述表描述符。TSS任务状态段描述符。IDT中断描述表描述符。
门描述符:
门的分类:调用门、中断门、陷进门。
描述符与内存块的关系如下图:
这些描述符存放在哪??呢?
GDT 全局段描述表。
CPU如何感知GDT在哪里呢?
GDT的首地址必须存储到GDTR,GDTR是一个48位寄存器,其中高32存储了GDT的基地址。低16位存储了GDT长度。CPU通过GDTR中的32位基地址就能找到GDT.
LDT 局部段描述表
CPU怎么找到LDT局部段描述表呢?
CPU有一个LDTR,必须注意的是,LDTR并不是一个48位的寄存器,而是一个16位寄存器。因此意味着不可直接通过LDTR来找到LDT。实际上LDTR是一个16位寄存器,它里面存储的是一个选择子,是一个全局段描述表的选择子。
什么叫选择子呢?
全局段描述表、局部段描述表、中断描述表,这些描述表中都存储着64位的描述符。因此描述表就相当于一个数组,数组的每个元素是64位,也就是8个字节。这个选择子就相当于数组下标。
选择子是一个16位数据,其中高13位是描述表数组的下标,第三位分成两个部分,低两位是特权级。第三位是表式该选择子是全局段描述表的选择子还是局部段描述表的选择子。
如何通过LDTR找到描述符呢?
根据LDTR中的内容,在GDT中找到局部段描述表的描述符,找到后,就可以得到局部段描述表的基地址。
根据第一步得到的基地址,加上局部段描述符选择子(低三位清0),就可以得到局部段描述符。
从局部段描述符中就可以得到局部短的基地址、长度、段属性。
局部段选择子:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1
1、首先,D2 = 0 表示这个选择子是一个局部段选择子。
2、必须找到该局部段,找的过程如上图所示
段的类型
存储段
系统段
LDT局部段描述表(进程私有)。TSS任务状态段。IDT中断描述表。
LDT 中存储的是存储段描述符。
IDT 中存储的是门描述符,也就是描述的中断服务程序的入口地址。
TSS任务状态段
注意:在操作系统中TSS任务状态段涉及到线程的切换。线程可以执行,也可挂起。线程切换时,需要切换线程现场,在保护模式下,现场的内容是非常多的,而且还有特权级的问题。因此,在硬件设计的时候就考虑到了任务的切换的问题。
TSS任务状态段是用来保存现场数据的。
CPU如何知道当前正执行的是哪个任务(线程,函数)。
CPU内部有个寄存器TR(16位),TR叫任务状态段选择子。通过TR就可得到TSS的描述符,这个描述符中的段基址就是TSS的首地址。
TSS任务状态段的格式
TSS由5个部分构成的:
链接字段
内层堆栈指针字段
在保护模式下,不同的特权级的函数,使用不同数据,局部变量存储在堆栈中,因此不同不同的特权级的函数使用堆栈也应该不同。
有4中特权级,一次在保护模式下,对于一个进程来说,有4个不同堆栈。
对CPU来说,当前使用的堆栈是谁呢?
有CPU的SS:ESP来决定。
在TSS中保存着0,1,2三级堆栈的48全地址。
其作用是,为了从低级向高级跃迁时找到高特权级的堆栈指针。
从3级跃迁到1级的过程:
首先将3级ss保存到一个通用寄存器中一般式EAX的低16位。再将第3级的ESP保存到一个通用寄存器中,一般式ECX。然后将第1级的SS:ESP从TSS中的相应位置取出,然后修改到CPU的SS:ESP中。
然后,将第三级SS:ESP也就是AX:ECX中内容入栈。也就是在第一级堆栈中保存第3级的堆栈指针。同时将断
您可能关注的文档
最近下载
- 疑难伤口MDT全面管理新理念题库答案 - 2025年华医网继续教育.docx VIP
- 瑞升华蒸汽机械再压缩(MVR)蒸发器——技术交流课件.ppt VIP
- 《瑞升华蒸汽机械再压缩MVR蒸发器——技术交流.ppt VIP
- PICO384非制冷红外焦平面驱动成像方案研究.PDF VIP
- Q 320481 DWT002-2016_机械蒸汽再压缩(MVR)蒸发器.pdf VIP
- GB50868-2013 建筑工程容许振动标准.pdf VIP
- 2025年军事职业测试题及答案.doc VIP
- 学校食堂管理规章制度.docx VIP
- 汇川MD810系列多机传动变频器综合手册.pdf
- 性病实验室检测与质量管理.pptx VIP
文档评论(0)