任务门,调用门,中断门,陷阱门

中断详解(二)——中断描述符、任务门、中断门、陷阱门 什么是中断描述符表     中断描述符IDT表示一个系统表,它与中断或异常向量相联系。每一个中断或异常向量在这个系统表中有对应的中断或异常处理程序入口地址。中断描述符的每一项对应一个中断或异常向量,每个向量由8个字节组成。因此,最多需要256*8=2048字节来存放IDT。     在运行中断之前,必须初始化IDT(中断描述符表)。 任务门、中断门、陷阱门     IDT包 阅读详情

每个任务有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时,要用到这些信息。为了控制任务内发生特权级变换的转移,为了控制任务切换,一般要通过控制门进行这些转移。本文将介绍任务状态段和控制门。

<一>系统段描述符

系统段是为了实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述符表LDT段。用于描述系统段的描述符称为系统段描述符。

1.系统段描述符的格式

系统段描述符的一般格式如下表所示。

 

系统段
描述符
m+7m+6m+5m+4m+3m+2m+1m+0
Base(31...24)AttributesSegment Base(23...0)Segment Limite(15...0)

 

系统段
描述符
的属性
Byte m+6Byte m+5
BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
GX0AVLLimit(19...16)PDPLDT0TYPE

 

与存储段描述符相比,它们很相似,区分的标志是属性字节中的描述符类型位DT的值。DT=1表示存储段,DT=0表示系统段。系统段描述符中的段基地址和段界限字段与存储段描述符中的意义完全相同;属性中的G位、AVL位、P位和DPL字段的作用也完全相同。存储段描述符属性中的D位在系统段描述符中不使用,现用符号X表示。系统段描述符的类型字段TYPE仍是4位,其编码及表示的类型列于下表,其含义与存储段描述符的类型却完全不同。

 

系统段
类   型
类型编码说       明
0未定义
1可用286TSS
2LDT
3忙的286TSS
4286调用门
5任务门
6286中断门
7286陷阱门
 
系统段
类   型
类型编码说       明
8未定义
9可用386TSS
A未定义
B忙的386TSS
C386调用门
D未定义
E386中断门
F386陷阱门

 

从上表可见,只有类型编码为2、1、3、9和B的描述符才是真正的系统段描述符,它们用于描述系统段LDT和任务状态段TSS,其它类型的描述符是门描述符。
利用前文定义的存储段描述符结构类型DESC仍能方便地在程序中说明系统段描述符。需要注意的是,系统段描述符的选择子不能用来读写系统段,要想读写系统段,必须使用别名技术。

2.LDT段描述符

LDT段描述符描述任务的局部描述符表段。例如:下面的描述符LDTABLE描述一个局部描述符表段,基地址是654321H,以字节为单位的界限是1FH,描述符特权级是0。
LDTABLE  DESC  <1FH,4321H,65H,82H,,>
LDT段描述符必须安排在全局描述符表中才有效。在装载LDTR寄存器时,描述符中的LDT段基地址和段界限等信息被装入LDT段描述符高速缓冲寄存器中。

3.任务状态段描述符

任务状态段TSS用于保存任务的各种状态信息。任务状态段描述符描述某个任务状态段TSS描述符分为286TSS和386TSS两类。TSS描述符规定了任务状态段的基地址和任务状态段的大小等信息。例如,下面的描述符TempTask描述一个可用的386任务状态段,基地址是123456H,以字节为单位的界限是104,描述符特权级是0。
TempTask  DESC  <104,3456H,12H,89H,,>
在装载任务状态段寄存器TR时,描述符中的段基地址和段界限等信息被装入到TR的高速缓冲寄存器中。在任务切换或执行LTR指令时,要装载TR寄存器。
TSS描述符中的类型规定:TSS要么为“忙”,要么为“可用”。如果一个任务是当前正执行的任务,或者是用TSS中的链接字段沿挂起任务链接到当前任务上的任务,那么该任务是“忙”的任务;否则该任务为“可用”任务。
利用段间转移指令JMP和段间调用指令CALL,直接通过TSS描述符或通过任务门可实现任务切换。

<二>门描述符

除存储段描述符和系统段描述符外,还有一类门描述符。门描述符并不描述某种内存段,而是描述控制转移的入口点。这种描述符好比一个同向另一代码段的门。通过这种门,可实现任务内特权级的变换和任务间的切换。所以,这种门描述符也称为控制门。

1.门描述符的一般格式

门描述符的一般格式如下图所示。门描述符只有位于描述符内偏移5的类型字节与系统段保持一致,也由该字节标示门描述符和系统段描述符。该字节内的P和DPL的意义与其它描述符种中的意义相同。其它字节主要用于存放一个48位的全指针(16位的选择子和32位的偏移量)。

 

门描述符m+7m+6m+5m+4m+3m+2m+1m+0
Offset(31...16)AttributesSelectorOffset(15...0)

 

门描述
符属性
Byte m+5Byte m+4
BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
PDPLDT0TYPE000Dword Count

 

根据上图给出的门描述符的结构,可定义如下的门描述符结构类型:
GATE     STRUC      ;门结构类型定义
    OFFSETL  DW      0  ;32位偏移的低16位
    SELECTOR DW      0  ;选择子
    DCOUNT   DB      0  ;双字计数字段
    GTYPE    DB      0  ;类型
    OFFSETH  DW      0  ;32位偏移的高16位
    GATE     ENDS
利用门描述符结构类型GATE能方便地在程序中说明门描述符。
例如,下面的门描述符SUBRG描述一个386调用门,门内的选择子是10H,入口偏移是123456H,门描述符特权级是3,双字计数是0。
SUBRG    GATE  <3456,10H,,8CH+60H,12H>
从上述描述符类型的列表中可见,门描述符又可分为:任务门、调用门、中断门和陷阱门,并且除任务门外,其它描述符还各分成286和386两种。

2.调用门

调用门描述某个子程序的入口。调用门内的选择子必须实现代码段描述符,调用门内的偏移是对应代码段内的偏移。利用段间调用指令CALL,通过调用门可实现任务内从外层特权级变换到内层特权级。
在上图所示的门描述符内偏移4字节的位0至位4是双字计数字段,该字段只在调用门描述符中有效,在其它门描述符中无效。主程序通过堆栈把入口参数传递给子程序,如果在利用调用门调用子程序时引起特权级的转换和堆栈的改变,那么就需要将外层堆栈中的参数复制到内层堆栈。该双字计数字段就是用于说明这种情况发生时,要复制的双字参数的数量。

3.任务门

任务门指示任务。任务门内的选择子必须指示GDT中的任务状态段TSS描述符,门中的偏移无意义。任务的入口点保存在TSS中。利用段间转移指令JMP和段间调用指令CALL,通过任务门可实现任务切换。

4.中断门和陷阱门

中断门和陷阱门描述中断/异常处理程序的人口点。中断门和陷阱门内的选择子必须指向代码段描述符,门内的偏移就是对应代码段的人口点的偏移。中断门和陷阱门只有在中断描述符表IDT中才有效。关于中断门和陷阱门的区别将在以后的文章中论述。

<三>任务状态段

任务状态段(Task State Segment)是保存一个任务重要信息的特殊段。任务状态段描述符用于描述这样的系统段。任务状态段寄存器TR的可见部分含有当前任务的任务状态段描述符的选择子,TR的不可见的高速缓冲寄存器部分含有当前任务状态段的段基地址和段界限等信息。
TSS在任务切换过程中起着重要作用,通过它实现任务的挂起和恢复。所谓任务切换是指,挂起当前正在执行的任务,恢复或启动另一任务的执行。在任务切换过程中,首先,处理器中各寄存器的当前值被自动保存到TR所指定的TSS中;然后,下一任务的TSS的选择子被装入TR;最后,从TR所指定的TSS中取出各寄存器的值送到处理器的各寄存器中。由此可见,通过在TSS中保存任务现场各寄存器状态的完整映象,实现任务的切换。
任务状态段TSS的基本格式如下图所示。

 

任

务

状

态

段

基

本

部

分

的

格

式
BIT31—BIT16BIT15—BIT1BIT0Offset
0000000000000000链接字段0
ESP04
0000000000000000SS08
ESP10CH
0000000000000000SS110H
ESP214H
0000000000000000SS218H
CR31CH
EIP20H
EFLAGS24H
EAX28H
ECX2CH
EDX30H
EBX34H
ESP38H
EBP3CH
ESI40H
EDI44H
0000000000000000ES48H
0000000000000000CS4CH
0000000000000000SS50H
0000000000000000DS54H
0000000000000000FS58H
0000000000000000GS5CH
0000000000000000LDTR60H
I/O许可位图偏移000000000000000T64H

 

从图中可见,TSS的基本格式由104字节组成。这104字节的基本格式是不可改变的,但在此之外系统软件还可定义若干附加信息。基本的104字节可分为链接字段区域、内层堆栈指针区域、地址映射寄存器区域、寄存器保存区域和其它字段等五个区域。

1.寄存器保存区域

寄存器保存区域位于TSS内偏移20H至5FH处,用于保存通用寄存器、段寄存器、指令指针和标志寄存器。当TSS对应的任务正在执行时,保存区域是未定义的;在当前任务被切换出时,这些寄存器的当前值就保存在该区域。当下次切换回原任务时,再从保存区域恢复出这些寄存器的值,从而,使处理器恢复成该任务换出前的状态,最终使任务能够恢复执行。
从上图可见,各通用寄存器对应一个32位的双字,指令指针和标志寄存器各对应一个32位的双字;各段寄存器也对应一个32位的双字,段寄存器中的选择子只有16位,安排再双字的低16位,高16位未用,一般应填为0。

2.内层堆栈指针区域

为了有效地实现保护,同一个任务在不同的特权级下使用不同的堆栈。例如,当从外层特权级3变换到内层特权级0时,任务使用的堆栈也同时从3级变换到0级堆栈;当从内层特权级0变换到外层特权级3时,任务使用的堆栈也同时从0级堆栈变换到3级堆栈。所以,一个任务可能具有四个堆栈,对应四个特权级。四个堆栈需要四个堆栈指针。
TSS的内层堆栈指针区域中有三个堆栈指针,它们都是48位的全指针(16位的选择子和32位的偏移),分别指向0级、1级和2级堆栈的栈顶,依次存放在TSS中偏移为4、12及20开始的位置。当发生向内层转移时,把适当的堆栈指针装入SS及ESP寄存器以变换到内层堆栈,外层堆栈的指针保存在内层堆栈中。没有指向3级堆栈的指针,因为3级是最外层,所以任何一个向内层的转移都不可能转移到3级。
但是,当特权级由内层向外层变换时,并不把内层堆栈的指针保存到TSS的内层堆栈指针区域。实际上,处理器从不向该区域进行写入,除非程序设计者认为改变该区域的值。这表明向内层转移时,总是把内层堆栈认为是一个空栈。因此,不允许发生同级内层转移的递归,一旦发生向某级内层的转移,那么返回到外层的正常途径是相匹配的向外层返回。

3.地址映射寄存器区域

从虚拟地址空间到线性地址空间的映射由GDT和LDT确定,与特定任务相关的部分由LDT确定,而LDT又由LDTR确定。如果采用分页机制,那么由线性地址空间到物理地址空间的映射由包含页目录表起始物理地址的控制寄存器CR3确定。所以,与特定任务相关的虚拟地址空间到物理地址空间的映射由LDTR和CR3确定。显然,随着任务的切换,地址映射关系也要切换。
TSS的地址映射寄存器区域由位于偏移1CH处的双字字段(CR3)和位于偏移60H处的字字段(LDTR)组成。在任务切换时,处理器自动从要执行任务的TSS中取出这两个字段,分别装入到寄存器CR3和LDTR。这样就改变了虚拟地址空间到物理地址空间的映射。
但是,在任务切换时,处理器并不把换出任务但是的寄存器CR3和LDTR的内容保存到TSS中的地址映射寄存器区域。事实上,处理器也从来不向该区域自动写入。因此,如果程序改变了LDTR或CR3,那么必须把新值人为地保存到TSS中的地址映射寄存器区域相应字段中。可以通过别名技术实现此功能。

4.链接字段

链接字段安排在TSS内偏移0开始的双字中,其高16位未用。在起链接作用时,地16位保存前一任务的TSS描述符的选择子。
如果当前的任务由段间调用指令CALL或中断/异常而激活,那么链接字段保存被挂起任务的 TSS的选择子,并且标志寄存器EFLAGS中的NT位被置1,使链接字段有效。在返回时,由于NT标志位为1,返回指令RET或中断返回指令IRET将使得控制沿链接字段所指恢复到链上的前一个任务。

5.其它字段

为了实现输入/输出保护,要使用I/O许可位图。任务使用的I/O许可位图也存放在TSS中,作为TSS的扩展部分。在TSS内偏移66H处的字用于存放I/O许可位图在TSS内的偏移(从TSS开头开始计算)。关于I/O许可位图的作用,以后的文章中将会详细介绍。
在TSS内偏移64H处的字是为任务提供的特别属性。在80386中,只定义了一种属性,即调试陷阱。该属性是字的最低位,用T表示。该字的其它位置被保留,必须被置为0。在发生任务切换时,如果进入任务的T位为1,那么在任务切换完成之后,新任务的第一条指令执行之前产生调试陷阱。

6.用结构类型定义TSS

根据上图给出的任务状态段TSS的结构,可定义如下的TSS结构类型:
;----------------------------------------------------------------------------
;任务状态段结构类型定义
;----------------------------------------------------------------------------
TSS             STRUC
TRLink          DW      0      ;链接字段
                DW      0      ;不使用,置为0
TRESP0          DD      0      ;0级堆栈指针
TRSS0           DW      0      ;0级堆栈段寄存器
                DW      0      ;不使用,置为0
TRESP1          DD      0      ;1级堆栈指针
TRSS1           DW      0      ;1级堆栈段寄存器
                DW      0      ;不使用,置为0
TRESP2          DD      0      ;2级堆栈指针
TRSS2           DW      0      ;2级堆栈段寄存器
                DW      0      ;不使用,置为0
TRCR3           DD      0      ;CR3
TREIP           DD      0      ;EIP
TREFlag         DD      0      ;EFLAGS
TREAX           DD      0      ;EAX
TRECX           DD      0      ;ECX
TREDX           DD      0      ;EDX
TREBX           DD      0      ;EBX
TRESP           DD      0      ;ESP
TREBP           DD      0      ;EBP
TRESI           DD      0      ;ESI
TREDI           DD      0      ;EDI
TRES            DW      0      ;ES
                DW      0      ;不使用,置为0
TRCS            DW      0      ;CS
                DW      0      ;不使用,置为0
TRSS            DW      0      ;SS
                DW      0      ;不使用,置为0
TRDS            DW      0      ;DS
                DW      0      ;不使用,置为0
TRFS            DW      0      ;FS
                DW      0      ;不使用,置为0
TRGS            DW      0      ;GS
                DW      0      ;不使用,置为0
TRLDTR          DW      0      ;LDTR
                DW      0      ;不使用,置为0
TRTrip          DW      0      ;调试陷阱标志(只用位0)
TRIOMap         DW      $+2    ;指向I/O许可位图区的段内偏移
TSS             ENDS

 

参考资料书         名出   版   社作     者
《保护方式下的80386及其编程》清华大学出版社周明德主编
《80X86汇编语言程序设计教程》清华大学出版社扬季文主编

 


2D激光slam四种算法建图效果对比 2d激光slam四种算法建图比较 阅读详情

相关推荐

银河麒麟V10-ARM架构-postgresql安装与部署指南

本文详细介绍应用源码进行pgsql的安装步骤,本文以postgresql-12.0为例。提示:以下是本篇文章正文内容,下面案例可供参考银河麒麟系统安装程序比较繁琐,潜在问题比较多,个人建议均通过源码自定义编译安装。国产系统还需努力啊!

idols_man的博客 1万+

80x86保护模式系列教程(5)任务状态段和控制门

五.任务状态段和控制门每个任务有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时,要用到这些信息。为了控制任务内发生特权级变换的转移,为了控制任务切换,一般要通过控制门进行这些转移。本文将介绍任务状态段和控制门。 系统段描述符系统段是为了实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述符表LDT段。用于描述系

Liang Tang's 专栏 2919

10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码)

本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。

weixin_29053577的博客 252

中断门、陷阱门、任务段、任务门

中断门描述符 中断门概述 1.系统调用 Windows没有使用调用门,但是使用了中断门。 Windows很多3环API最终都要使用0环的代码,是使用中断门实现的这种功能。 注意:老的CPU是用的中断门而最新的CPU是使用的快速调用。 2.调试 在像OD这种调试工具中按F12下的断点就是将BYTE内容变为0xCC指令位int3这是中断门效果。 中断门和调用门的区别 中断门和调用门很相似他们最大的区别是查表的不同, 调用门是使用的GDT表而中断门使用的是IDT表。 IDT表概述 IDT全名中断描述符表,

网络安全相关文章分享 5426

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 444

从Chimera到ChimeraX:科研绘图升级指南,让你的论文配图更专业

本文详细介绍了从UCSF Chimera升级到ChimeraX的科研绘图指南,帮助研究者提升论文配图质量。ChimeraX在渲染引擎、大分子处理能力和动画功能上具有显著优势,特别适合生命科学和结构生物学领域。文章涵盖材质设置、专业配色、工作流程和期刊适配等核心技巧,助力产出出版级分子可视化图像。

weixin_33670786的博客 928

【2021.03.24】任务门

要点回顾 前文中讲解了如何通过CALL、JMP指令访问任务段。 本文主要介绍如何通过任务门访问任务段。 既然已经可以通过JMP、CALL访问任务段了,那么为什么还要有任务门呢? IDT(中断描述符表) IDT表可以包含3种门描述符: 任务门描述符。 中断门描述符。 陷阱门描述符。 任务门描述符 注意: TYPE位现在应该是5(任务门)。前文提过,当为9或B的时候代表什么。 低4字节16-31位存储的是一个TSS段的描述符选择子。既不是地址也不是偏移,而是TSS段的描述符。 任

oalken的博客 806

拓竹P1S封神玩法|AI图生3D+精准修改全攻略,打孔/挖盖再也不用瞎琢磨!

AI图生3D建模结合后期修改,让拓竹P1S用户轻松实现创意打印。文章详细介绍了从照片拍摄、AI模型生成到后期修改的全流程:使用腾讯混元3D或Tripo3D快速生成3D模型,通过Blender或Fusion360进行精准打孔、挖盖子等修改,最后在OrcaSlicer中优化切片参数适配P1S打印。重点解决了AI模型无法直接打印的问题,提供了壁厚控制、孔径调整等实用技巧,并针对常见打印问题给出解决方案,帮助新手实现从AI生成到成品打印的无缝衔接。

2501_93651177的博客 1877

Windows保护模式(五)任务段&任务门

call 加载 TSS 的指令格式为call 16位TSS段选择子:无效EIP,因此可以在 GDT 中构造一个段选择子然后指向自己构造的 TSS 然后 call 过去。利用 call 指令进行 TSS 加载时会将 EFLAGS 寄存器中的 NT 位置 1 ,表示中断嵌套,根据 NT 位是否为 1,iretd 返回时会选择根据 Previous Task Link 选择 TSS 还是根据堆栈返回。如果在切换任务函数中使用了int 3断点会将 NT 位置 0 导致返回时根据堆栈返回触发蓝屏。

sky123博客 2167

汽车标定技术(七)--英飞凌TC3xx_Overlay实现页切换

今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay功能讲解清楚。

认真搞搞汽车MCU 4015

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

任务门、中断门、陷阱门和调用门

一.任务门、中断门、陷阱门和调用门的结构图 1.任务门结构图如下所示: 阴影部分表示空闲不用;P标志位,为1时表示在内存中;DPL描述优先级别;类型码101表示任务门。 2.中断门、陷阱门和调用门结构图如下所示: D标志位,1=32位,0=16位;类型码中,110:中断门,111:陷阱门,100,调用门。 二.四种门之间的区别和联系 1.任务门和其他三种门相比,在任务门...

weixin_30344131的博客 643

第四节:Vben Admin登录对接后端getUserInfo接口

上一节,我们完成了/api/auth/login接口的创建,通过login接口,我们完成了登录和Token的生成。但是登陆还是报404返回,发现是Vben Admin又请求了一个/api/getUserInfo接口,本节我们就来分析完成这个接口本节,我们完成了getUserInfo接口,完成了登录操作,成功的进入到工作台页面。

cuiwin的专栏 2845

中断门、陷阱门、调用门、任务门

在nt平台下,普通应用程序运行在ring3下,操作系统运行于ring0。如果在程序中需要执行一些特权指令的话,程序必须转入到ring0。由于用户程序执行特权指令可能会破坏系统资源,故出于保护和稳定的目的,操作系统通过“门”机制向用户态程序提供必要的服务。在x86种有四种门:中断门、陷阱门、调用门、任务门,这些是cpu从硬件层提供的支持。这四个门就是让CPU找到到哪里去执行异常或中断的处理代码,是中...

weixin_34348174的博客 485

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

中断门&陷阱门&任务门&任务段

JMP FAR和CALL FAR可以通过段选择子找到对应的GDT段描述符,当DPL=11可以在3环使用,IDT全名中断描述符表,同GDT表一样,IDT也是由一系列描述符组成的,每个描述符占8个字节,LTR指令必须运行在0环,LTR指令只修改TR段寄存器,并不会触发TSS进行全部寄存器值切换。Windows很多3环API最终都要使用0环的代码,是使用中断门实现的这种功能。使用JMP FAR实现任务切换时,TSS结构体中的Link值在任务切换之后为0。Windows没有使用调用门,但是使用了中断门。

moonlightsunshin的博客 629

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

任务门,调用门,中断门,陷阱门 [转]

每个任务有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时,要用到这些信息。为了控制任务内发生特权级变换的转移,为了控制任务切换,一般要通过控制门进行这些转移。本文将介绍任务状态段和控制门。 &lt;一&gt;系统段描述符 系统段是为了实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述符表LDT段。用于描述系统段的描述符称...

weixin_33957648的博客 361

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

中断描述符表描述符:任务门,中断门,陷阱门(调用门)

摘自《Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D and 4》 《Intel 中断和异常处理 - 目录》 先看一下调用门:

RToax 818

门描述符

门,顾名思义,是通往某处的入口。在计算机中,用门来表示一段程序的入口。拿它和段描述符对比 一下就容易理解了,段描述符中描述的是一片内存区域,而门描述符中描述的是一段代码。 门描述符中的各属性位与段描述符中的属性意义相同,大伙可以参考全局描述符表部分的介绍。下面 简要说下这几种门描述符,这里咱们只讨论 32 位保护模式。 任务门 任务门和任务状态段TSS是 Intel 处理器在硬件一级提供的任务切换机制,所以任务门需要和 TSS 配合在一起使用,在任务门中记录的是 TSS 选择子,偏移量未使用。

qq_43811102的博客 1371

linux 硬件介绍,Linux硬件-门描述符

在I386CPU中,除了段描述符之外还有一种描述符叫做门描述符,它们并不描述某种内存段,而是描述控制转移的入口点,也就是目标代码的门。通过这种门可以实现特权级的转变和任务的切换。门描述符主要由两部分组成:选择子、偏移地址以及DPL。门描述符共有四种:调用门描述符、任务门描述符、中断门描述符和陷阱门描述符。一、调用门描述符调用门一般用在特权级的切换,存在于GDT中或者LDT中。调用门的选择子指向代码...

weixin_28595749的博客 239

windows内核研究(保护模式 5-调用门/中断门/陷阱门)

文章摘要 本文详细介绍了x86保护模式下的三种系统门机制:调用门、中断门和陷阱门。调用门用于跨特权级调用,通过GDT/LDT描述符实现受控访问;中断门和陷阱门属于IDT描述符,用于处理中断和异常。关键区别在于陷阱门不自动关闭中断(IF标志不变)。文中提供了构造调用门和实现中断/陷阱门的代码示例,并分析了权限切换时的堆栈变化。这些机制是操作系统实现特权隔离和系统调用的基础,调用门多用于旧系统,而现代系统主要使用中断门实现系统调用。

weixin_43754657的博客 1230

调用门详解

门描述符分为4种: 调用门 中断门 陷阱门 任务门 中断门和陷阱门是特殊的调用门 门描述符结构: 实例: 转载于:https://www.cnblogs.com/andyhe/p/3755729.html...

weixin_30487701的博客 159

门描述符(gate descriptors)总结

在保护模式下,中断描述符表(IDT)中的每个表项由8个字节组成,其中的每个表项叫做一个门描述符(Gate Descriptor), “门”的含义是指当中断发生时必须先访问这些“门”,能够“开门”(即将要进行的处理需通过特权检查,符合设定的权限等约束)后,然后才能进入相应的处理程序。而门描述符则描述了“门”的属性(如特权级、段内偏移量等)。在IDT中,可以包含如下3种类型的系统段描述符:

chen1540524015的博客 5801

任务状态段和门

<br />       每一个任务(可以理解为进程)都有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时要用到这些信息。<br />     系统段是为实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述附表LDT段(注意:全局描述附表GDT不属于状态段)。不光在高级语言应用或者说用户应用程序编程中用到了数据结构,个人觉得在CPU硬件的支持下,系统编程也是把数据结构发挥的淋漓尽致,甚至CPU硬件支持本身就充分体现了结构化,或者说数据结构

青帝的专栏 1601
上一篇: VS2008 Feature Pack中 CMFCOutlookBarPane 问题
下一篇: 基于Dialog的应用程序,添加水平与垂直滚动条
barech
博客等级 码龄21年 137粉丝 99原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值