描述符
来源:互联网 发布:医疗与大数据 编辑:程序博客网 时间:2024/05/24 00:21
所谓描述符(Descriptor),就是描述段的属性的一个8字节存储单元。在实模式下,段的属性不外乎是代码段、堆栈段、数据段、段的起始地址、段的长度等等,而在保护模式下则复杂一些。80386将它们结合在一起用一个8字节的数表示,称为描述符 。80386的一个通用的段描述符的结构如图2.10所示。
从图可以看出,一个段描述符指出了段的32位基地址和20位段界限(即段长)。
第六个字节的G位是粒度位,当G=0时,段长表示段格式的字节长度,即一个段最长可达1M字节。当G=1时,段长表示段的以4K字节为一页的页的数目,即一个段最长可达1M×4K=4G字节。D位表示缺省操作数的大小,如果D=0,操作数为16位,如果D=1,操作数为32位。第六个字节的其余两位为0,这是为了与将来的处理器兼容而必须设置为0的位。
第5个字节是存取权字节,它的一般格式如图2.11所示:
第7位P位(Present) 是存在位,表示段描述符描述的这个段是否在内存中,如果在内存中。P=1;如果不在内存中,P=0。
DPL(Descriptor PrivilegeLevel),就是描述符特权级,它占两位,其值为0~3,用来确定这个段的特权级即保护等级。
S位(System)表示这个段是系统段还是用户段。如果S=0,则为系统段,如果S=1,则为用户程序的代码段、数据段或堆栈段。系统段与用户段有很大的不同,后面会具体介绍。
类型占3位,第三位为E位,表示段是否可执行。当E=0时,为数据段描述符,这时的第2位ED表示扩展方向。当ED=0时,为向地址增大的方向扩展,这时存取数据段中的数据的偏移量必须小于等于段界限,当ED=1时,表示向地址减少的方向扩展,这时偏移量必须大于界限。当表示数据段时,第1位(W)是可写位,当W=0时,数据段不能写,W=1时,数据段可写入。在80386中,堆栈段也被看成数据段,因为它本质上就是特殊的数据段。当描述堆栈段时,ED=0,W=1,即堆栈段朝地址增大的方向扩展。
也就是说,当段为数据段时,存取权字节的格式如图2.12所示:
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符
- 描述符表和描述符高速缓存
- HID 描述符 报告描述符
- 描述符表和描述符高速缓存
- 文件描述符与进程描述符
- 描述符表和描述符高速缓存
- 描述符表和描述符高速缓存
- 80386简介--描述段描述符表
- 描述符与Apache
- UVa 10050 - Hartals
- 描述符表
- 如何在Quartus II 11.0中调用ModelSim-Altera 6.6
- java价格处理的一个问题
- 3维动态规划 hdu 4501 小明系列故事——买年货
- 描述符
- GetClipBox()和SeletClipRgn()问题
- 北大poj Q3 P,MTHBGWB
- Session.load()和get()方法区别
- ListPreference之entries和entryValues
- application resolvingXML is waiting for the debugger to attach
- 第四周—4.正整数类
- Python编写类时需要self的原因
- openssl简介