作者:李庆明
所谓的描述符.是一个8个子节的存储单元,其结构大概如下: 字节0 -----0—7 位描述苻 字节1 ------8—15位描述符 字节2 -----0—7 位基址 字节3 -----8—15 位基址 字节4 -----16—24 段基址 字节5 -----存储权限的字节 字节6 -----G| D|0|0| 16-19位段界限 字节7 -----31-—24 段基址 其中第五个字节,是存取权字节,它包含有好几个标志位,用来标志该段是在内存中,还是没有.后者该段是用户段或者是系统段之类的.被人水平有限.在此不一一说明.希望有兴趣的朋友可以查一下资料,将给我们大家听 在系统段中.有一个字节.可以来定义系统段的类型,好像是有16类 像标志为有效的386.TSS,386中断门,386陷阱门等等,在此不一一介绍.在此要弄清楚两个名次 TSS(系统状态标) LDT(局部描述标),在相关的资料中,经常会碰到 在LINUX的内核中有一系列的描述苻表.像全局描述苻表(GDT),中断描述苻表(IDT)还有上面介绍的LDT等等,在他们中间.定义了系统可用的描述苻,中断门,等等.它的作用是使得机器的兼容性得到保证 在LDT 中.则定义了一些和具体的任务相联系的代码段,数据段等等.描述苻表的内数据结构大致如下: typedef struct desc_struct { unsigned long a,b; } 后面用以下两行完成了描述苻表的定义以及外部描述苻的定义: desc_table[256]; //定义了可以在局部描述苻表中的最大描述苻量 extern dessc_table idt,gdt //外部的描述变量 至此,关于linux的分段机制大体上节讲解完毕了,剩下的就是在寄存器与选择器之间的映射,还有一些寻址方法 这部分内容,大概和<汇编语言>中讲的大同小异,在此不多费唇舌