0.12内核,段限长 问题??
在看书,《Linux内核完全剖析基于0.12内核》
对书上的两处说法,理解不了,详细见下面:
一、
在 “4.3.4段描述符” 中,讲 “段限长字段LIMIT(Segment limit field)”的时候,里面有这样一段话:
“如果 G=0,则段长度Limit范围可从 1字节到1MB字节,单位是字节。如果G=1,则段长度Limit范围可从 4KB到4GB,单位是4KB。”
我的理解是 :段限长一共20位,取值范围为 0x0~0xFFFFF 。G=1时,当Limit=0,则段长度就是4KB,... ...,当Limit=0xFFFFF,则段长度为4GB。
二、
在 “4.9.1多任务程序结构和工作原理” 中,在 图4-41 的上面,有这样一段话:
“而全局显示数据段被设置成:基地址为 0xB8000;段限长为 0x0002,所以实际段长度为 8KB,对应到显示内存区域上。”(此时的G是置位的)
根据我对上面那段文字(一)的理解,Limit=2,段长度应该是12KB才对啊...并非8KB啊...怎么回事?
书上的内容 “一”和“二” 哪个错了??
还是说,书上的内容是对的,我理解错了?那我哪里理解错了?应该怎么理解??
本人水平菜,该问题困扰我快2天了...请大家帮忙解答,谢谢。