mac2024-11-30  41

门(Gate)可以看作一种转换机构,可以实现不同特权级别之间的控制传送。门的类型有4种:调用门、任务门、中断门、陷阱门。其中调用门用于控制传送,改变任务或者程序的特权级别;任务门像个开关,用来执行任务切换;中断门和陷阱门用来指出中断服务的入口地址。

系统描述符

门描述符属于系统描述符,系统描述符也是8字节64位,其中S位用来区分系统描述符和段描述符,S=0表示系统描述符,S=1表示段描述符。

调用门

调用门可以实现当前任务从低特权级到更高特权级的间接控制转移,它在更高级特权级的段中定义了一个入口点,该入口点的虚拟地址包含在调用门中。调用门描述符中的参数计数值表示有多少个参数必须从主程序(低特权级代码段)的堆栈复制到被调用子程序(高特权级代码段)的堆栈。当程序的特权级改变时,会激活一个新的堆栈。原有的指令指针、堆栈指针及其他现场参数被保存到新的堆栈中。从门描述符中取得参数计数值,将它乘以4(32位系统)得到参数在堆栈中的字节数,将这些参数从原有的堆栈复制到新的堆栈中,供特权级的子程序使用。如果参数计数值为0,则没有参数被复制。在调用门中,5位计数域最多能复制31个字或者双字。如果需要传递更多的参数,由于被调用的程序具有更高的特权级,因此,被调用的程序可以使用旧栈SS:EIP(保存在TSS)直接访问这些参数。处理器不会检查传送给调用程序的值。其他门描述符的参数计数值无意义。

最新回复(0)