![[计算机]第三章报告---存储管理.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/11/89773220-4ff2-4ec8-a160-db4c96ca9c98/89773220-4ff2-4ec8-a160-db4c96ca9c981.gif)
![[计算机]第三章报告---存储管理.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/11/89773220-4ff2-4ec8-a160-db4c96ca9c98/89773220-4ff2-4ec8-a160-db4c96ca9c982.gif)
![[计算机]第三章报告---存储管理.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/11/89773220-4ff2-4ec8-a160-db4c96ca9c98/89773220-4ff2-4ec8-a160-db4c96ca9c983.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机只能识别0和1两个信号,图灵机的思想是以二进制形式存储数据;程序存储并顺序执行。计算机以指令为单位执行。由于机器指令记忆困难,容易弄错等缺点,汇编语言得以诞生。汇编语言是机器语言的最简单的抽象。一条指令对应着相应的机器码,即一串二进制数据。汇编语言编写的程序需要经过汇编程序,变成机器语言,通过装载器装入内存后,才能真正运行。而汇编程序做了什么?程序是怎么装在入内存的?执行过程中又是怎么在内存中寻址的呢?这里讨论执行过程中程序在内存中寻址的方法。可执行文件中的地址都是逻辑地址,在程序执行时,这些地址是需要重新再定位过的,且每次执行时使用的真实地址都是不同的。我们是如何找到我们要使用程序相关的代码段(CS)、数据段(DS)、多个附加数据段(ES、FS、GS)以及堆栈段(SS)等多个段的呢?每个程序就会拥有自己的局部描述符表(LDT),其中记录了这个程序相关的代码段(CS)、数据段(DS)、多个附加数据段(ES、FS、GS)以及堆栈段(SS)等多个段的地址、界限等信息。而现在的段寄存器中存放的是选择子。它间接指明了这个段的位置等信息。选择子,共16位。其中0-1位标明了这个段的特权级(RPL);2位标明这个段在那个描述符表中(TI);3-15位标明这个段所在描述符表的位置。其中TI=1表示该选择子用于局部描述符表;TI=0表示该选择子用于全局描述符表。标明位置的索引号共13位,说明描述符表的最大表项数是213 个。RPL特权级用于描述当前程序是否有权访问这个段。当任务被调用时,CPU保存现场,再把这个任务相关的寄存器赋初值,这样就可以间接定位到段的地址。当操作系统把一个程序加载到内存中去的时候,系统会自动在线性地址空间自动生成相应的描述符和描述符表,同时把对应的选择子装入相应的段寄存器中。当程序要访问的是局部描述符表时,通过全局描述符表寄存器(GDTR)找到全局描述符表(GDT)的基地址和界限,通过局部描述符表寄存器(LDTR)(16位选择子,其TI必须为0),根据索引号在全局描述符表中找到局部描述符表(LDT)的基地址和界限,这时TYPE=2(表示该表项是局部描述符表),把该描述符取出放到相应的高速缓冲寄存器中(程序员不可见,每个段寄存器都有自己的高速缓冲寄存器),高速缓冲寄存器中存放着局部描述符表的基地址和界限,之后每次要访问该局部描述符表都通过这个高速缓冲寄存器。(当任务变更或者局部描述符表的表项发生改变,则需要重新装载段寄存器,否则一直通过这个高速缓冲寄存器来得到相关段的基地址和界限)(TSS任务状态段什么用?)。通过这个高速缓冲寄存器的基地址和界限,找到该程序的局部描述符表。当程序要访问全局描述符表,则这时段寄存器中选择子的TI=0,根据索引号直接找到描述符。找到了描述符,在操作前,还要判断是否有权访问。若有权访问,则根据描述符所指定的基地址,和可执行文件中的偏移量相加,将二维虚拟地址转化为一位线性地址。一开始找到第一条指令,利用CS段,通过这个选择子的描述符索引号在相应描述符表中找到相关的描述符,在刚开始,所有段不全被加载到内存,这时若段的描述符的P=0表示不再内存,产生异常,中断并把该段从磁盘调入到内存。通过各不同的寻址方式来找到目标地址。别的段寄存器也是这样工作的。中断又通过在中断描述符表(IDT)。根据中断描述符寄存器(IDTR),找到中断描述符表的基地址和界限,找到相应中断的入口地址,做保存CPU现场等工作,执行中断处理程序。关于描述符表。在80386中,有三张描述符表,分别为全局描述符表(GDT),中断描述符表(IDT),局部描述符表(LDT);用于描述主存储器中数据的信息表格。全局描述符表在系统中只有一份,它的基地址和界限信息存放在GDTR中,且是常驻内存的,当任务切换时,这个表是不改变的。通常包含描述操作系统所使用的代码段、数据段和堆栈段的描述符,也包含多种特殊数据段描述符,如各个用于描述局部描述符表的特殊数据段等。每个任务都拥有自己的局部描述符表,它的基地址等信息通过LDTR16位寄存器,在GDT表中找,找到后把相应的描述符存放到程序员不可见的高速缓冲寄存器中,方便下次访问,其中有这个任务所用到的各个段的基地址和界限。第三张是中断描述符表,它的基地址和界限存放在IDTR中,系统中每类中断都有一个描述符,包含相应中断程序的入口地址和特性。通过INT指令、外部中断向量和CPU内部异常来访问中断描述符表(IDT)。如何寻找这些描述符表的地址,进而访问他呢?段表基地址寄存器用于指示这些表格在内存中的起始地址。GDTR用于存放GDT的基地址和界限;IDTR用于存放IDT的基地址和界限。当前使用的LDT和TSS以选择子地形式存放在LDTR和TR中。当有多个LDT和TSS时,每个表或者段的基地址、界限和属性等以描述符的形式登记在GDT中。描述符分为三类,存储段描述符、系统段描述符和门描述符。其中存储段描述符和系统段描述符很像,区别只在于描述符类型位的DT位,DT=1,表示存储段;DT=0,表示系统段。门描述符并不是内存段,它描述了控制转移的入口,既包含一个指针。这个指针是通向另一个代码段的门。中断描述符表中只含有门描述符。局部描述符表中可以含有存储段描述符和门描述符。全局描述符表可以存储段描述符、系统段描述符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力:热议背后的深层动因
- 9.20全国爱牙日护牙健齿健康科普课件
- 加快新质生产力的发展方向
- 2025年免疫学免疫细胞生物学答案及解析
- 医患关系类型研究
- 2025年普外科常见手术并发症处理模拟分析卷答案及解析
- 2025年妇产科子宫肌瘤微创手术操作规范模拟考试答案及解析
- 2025年内分泌科糖尿病并发症防治答案及解析
- 2025年儿童心理学儿童行为障碍评估测试答案及解析
- 老师三年个人进展方案
- 高纯镁砂的生产技术及生产现状
- 急性会厌炎护理查房
- 混凝土模板工程验收表(含续表)GDAQ2090202
- GB/T 29466-2023板式热交换器机组
- 多模态大模型技术演进及研究框架
- 中国教育史全套
- GB/T 818-2000十字槽盘头螺钉
- GB/T 31298-2014TC4钛合金厚板
- 口腔科中医临床诊疗技术
- 老年肌肉衰减综合征肌少症培训课件
- 中学生物学教学技能与实践课件
评论
0/150
提交评论