门描述符

转载 2016年08月30日 21:46:35
 
在系统中除了存储段描述符和系统段描述符外,还有一类门描述符。门描述符并不描述某种内存段,而是描述控制转移的入口点。这种描述符好比一个同向另一代码段的门。通过这种门,可实现任务内特权级的变换和任务间的切换。所以,这种门描述符也称为控制门。其中,门描述符共分为4种分别是,调用门(CallGates),陷阱门(TrapGates),中断门(Interrupt Gates)和任务门(TaskGates)。
任务门指示任务。任务门内的选择子必须指示GDT中的任务状态段TSS描述符,门中的偏移无意义。任务的入口点保存在TSS中。利用段间转移指令JMP和段间调用指令CALL,通过任务门可实现任务切换。
   中断门和陷阱门描述中断/异常处理程序的人口点。中断门和陷阱门内的选择子必须指向代码段描述符,门内的偏移就是对应代码段的人口点的偏移。中断门和陷阱门只有在中断描述符表IDT中才有效。这两种门是用来描述中断和异常的入口的。其只能出现在IDT(中断描述符表)中(对于IDT后面将有详细描述),不能出现在GDT(全局描述符表)和LDT(局部描述符表)中.
这两种门的格式如下表:
门描述符

注:DPL - 描述符特权级
  P - 门有效标志
 D - 门规模(1 = 32位; 0 - 16位)

这里的段选择子用来查找GDT和IDT,得到一个代码段描述符,并最终得到代码段的基地址,再加上图中的偏移量就能够得到中断处理程序的入口了。由于中断处理程序是在当前任务的上下文中运行的,因此可能会出现中断处理程序与被中断程序特权级不一致的问题,这时就会发生堆栈切换。对于由软中断所产生的中断和异常CPU要求,CPL必须小于等于门的DPL。

在整个中断处理程序中,CPU会将TF置成0,以禁止中断处理程序单步执行,并将NT置成0,以在使用IRET指令返回时是回到同一个任务。对于中断门和陷阱门,其就在于对EFLAGS寄存器中IF标志的处理方法不同,当调用中断门时,IF被清除。而调用陷阱门时则不对IF进行处理。

在从中断处理程序返回的过程中,如果当初是通过陷阱门或中断门进入的,则从堆栈顶弹出EIP和CS,以及EFLAGS。然后根据CS寄存器选择子的RPL字段确定返回后的特权级。值得注意的是,如果RPL为一个内层特权级,则将会产生通用保护故障。对于需要提供出错误码的中断处理程序,则必须先人为地从堆栈中弹出出错误码,在执行IRET指令返回。

进入中断和异常还可以通过任务门,即将中断处理程序作为一个任务进行处理,使用该方法即将中断处理程序当成一个任务来看待,对于这种方式的具体操作在以后的文章中会有讨论。而对于调用门由于其只能出现在GDT和LDT中,因此与我们这里讨论的中断和异常无关。

门描述符(gate descriptors)总结

在保护模式下,中断描述符表(IDT)中的每个表项由8个字节组成,其中的每个表项叫做一个门描述符(Gate Descriptor), “门”的含义是指当中断发生时必须先访问这些“门”,能够“开门”(即将...
  • chen1540524015
  • chen1540524015
  • 2017年06月27日 18:19
  • 359

中断详解(二)——中断描述符、任务门、中断门、陷阱门

什么是中断描述符表     中断描述符IDT表示一个系统表,它与中断或异常向量相联系。每一个中断或异常向量在这个系统表中有对应的中断或异常处理程序入口地址。中断描述符的每一项对应一个中断或异常向量,...
  • Windeal
  • Windeal
  • 2015年03月24日 13:53
  • 4468

x86架构下的系统段描述符格式

如果还记得前面的GDT全局描述符表的话,那么一定不会忘记段描述符中有个s字段,若为0,则表示这个描述符是系统段,若为1,则是普通的段描述符;普通的段为ds,es,ss,cs等等,系统的段则有GDT,调...
  • YuZhiHui_No1
  • YuZhiHui_No1
  • 2015年01月04日 21:58
  • 1481

TSS(任务状态段) TSS描述符 任务寄存器(TR) 任务门描述符 学习总结

1 任务状态段(TSS) 任务状态段(Task-State Segment(TSS)),保存任务状态信息的系统段为任务状态段。图7-2描述32位CPU的TSS信息。TSS主要分为动态字段和静态字段。...
  • chen1540524015
  • chen1540524015
  • 2017年07月01日 17:26
  • 508

进程—Linux进程描述符初印象

进程—从进程描述符展开(一)进程内核栈结构:union task_union 在../include/linux/sched.h中定义了如下一个联合结构用来创建内核栈空间。 //../includ...
  • unclerunning
  • unclerunning
  • 2016年04月25日 23:27
  • 5014

保护模式编程——保护的详尽意义:通过调用门转移特权级

保护模式及其编程——保护机制 摘要:在汇编语言的编程和操作系统的编写过程中,我们经常能听说到“保护模式”这个名词。为什么要叫“保护模式”呢?保护 二字的含义何在?本文主要探讨,“保护模式”下面各种具体...
  • trochiluses
  • trochiluses
  • 2014年02月20日 22:14
  • 2958

3-段选择子与段描述符结构

段描述符与段选择子的结构段选择子结构段选择子一共有16位,结构如下:| 1 | 0 | 字节 |7654321076543 2 10| 比特 |-------------|-...
  • q1007729991
  • q1007729991
  • 2016年09月14日 15:02
  • 4289

80386保护模式--GDT,LDT,TSS,调用门,特权级转移,附pmtest5代码详解

教材选择一个操作系统的实现,作者于渊,看此书前最好了有汇编语言,保护模式下的汇编(参考清华杨季文的80X86汇编语言程序设计教程),C语言,计算机组成原理,微机接口,操作系统相关知识。 一、8038...
  • jltxgcy
  • jltxgcy
  • 2013年03月10日 11:14
  • 3851

LSTM 网络中几个门的理解

个人认为下面这篇博文非常适合初学或者学的很浅的朋友。  转自http://www.jianshu.com/p/9dc9f41f0b29 经常接触LSTM,GRU,RNN这些模型,对于LSTM的...
  • shenxiaoming77
  • shenxiaoming77
  • 2017年08月06日 22:51
  • 1343

BZOJ 1924 [Sdoi2010]所驼门王的宝藏 tarjan缩点+拓扑DP

BZOJ 1924 [Sdoi2010]所驼门王的宝藏 tarjan缩点+拓扑DP
  • wzq_QwQ
  • wzq_QwQ
  • 2015年10月13日 17:01
  • 3149
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:门描述符
举报原因:
原因补充:

(最多只允许输入30个字)