`
1025250620
  • 浏览: 231497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

调用门(转)

 
阅读更多
下面说明代码段和数据段的访问:


一、代码段间跳转


1、普通(直接)跳转:

JMP Selector:0 或 CALL Selector:0

1)一致代码段(JMP&CALL)

要求:CPL>=DPL,RPL不作检查

特权变化:跳转后程序CPL=跳转前程序CPL

2)非一致代码段(JMP&CALL)

要求:CPL=DPL & RPL<=DPL

特权变化:跳转后程序CPL=目标代码段DPL


2、通过调用门跳转:

JMP 调用门Selector:0 或 CALL 调用门Selector:0 (注意:此时如果选择子后面跟着32位偏移量也不会被CPU使用,因为调用门描述符已经记录了目标代码的偏移)


step1: 要求:指示调用门的选择子的RPL<=门描述符DPL & 当前代码段的CPL<=门描述符的DPL。


只有满足以上条件时,CPU才会进一步从调用门描述符中读取代码段的选择子或地址偏移。而从调用门中读取代码选择子和地址偏移后,跟普通跳转又站在同一起跑线上了。

唯一不同的是CPU会将目标代码段RPL清0。此后需要分类讨论,如下:


step2:

1)一致代码段(JMP&CALL)  <------------------------------------------------------------------------------------------------------

要求:CPL>=DPL,RPL不作检查(因为RPL总被清0)                                                        |

特权变化:跳转后程序CPL=跳转前程序CPL                                                                        |

                                                                                                                                             比较

2)非一致代码段(JMP)                                                                                                                |

要求:CPL=DPL,RPL不作检查(因为RPL总被清0)                                                          |

特权变化:跳转后程序CPL=目标代码段DPL                                                                        |

3)非一致代码段(CALL)  <------------------------------------------------------------------------------------------------------------

要求:CPL>=DPL,RPL不作检查(因为RPL总被清0)

特权变化:跳转后程序CPL=目标代码段DPL(CPL>DPL的情况下,特权级发生跃迁)


二、访问数据段

数据段:特权级低->高:NO | 特权级高->低:YES | 特权级同级之间:YES


注意:

1、一致代码段:无论那种方式跳转到一致代码段,CPL都不会改变(不变化为目标代码段的DPL),也即加载目标代码段选择子时,只加载高14位,表示CPL的低2位保持不变。

因此,“一致”的意思就是——代码段被调用执行时,不使用自己描述符的DPL,而采用调用这特权级,CS的低2位保持不变(与“调用者保持一致”)

2、非一致代码段:无论采用哪种方式跳转到非一致代码段,CPL都发生变化,也即在加载目标代码段选择子时,将整个选择子放入到CS中。

3、为了访问调用门,调用者程序的特权级CPL必须小于或等于调用门的DPL。调用门段选择符的RPL也要同调用CPL一样遵守相同的规则,即RPL也必须小于或等于调用门的DPL。如图:


[size=large][/size]
分享到:
评论

相关推荐

    WINDOWS调用门驱动

    在Windows操作系统中,调用门(Call Gate)是一种内核级的机制,它允许用户模式进程安全地调用内核模式中的函数。调用门是系统级中断描述符表(SIDT)的一部分,用于实现从低特权级别(如用户模式)到高特权级别(如...

    一个调用门源码很好理解

    在IT领域,调用门(Call Gate)是操作系统内核中的一种特殊机制,主要用于实现从用户模式到特权级别更高的内核模式的安全切换。调用门是x86架构处理器中的一个概念,它属于处理器的段描述符表(Segment Descriptor ...

    NT环境下调用中断门运行特权指令.rar_中断门

    而"NT环境下调用中断门运行特权指令"可能是文档或源代码,详细展示了如何在Windows NT环境下实现这种转换。 总的来说,理解中断门及其在NT环境中的应用对于深入学习操作系统原理、驱动开发和系统级编程至关重要。...

    VC/C#调用delphi写的dll, 演示如何进行类的传递并callback调用方的代码

    本示例中,我们将探讨如何在VC中调用由Delphi编写的动态链接库(DLL),特别是涉及到类的传递以及回调(callback)机制。在Delphi中创建DLL,然后在VC或C#中调用,可以利用Delphi的强大面向对象特性,并将其集成到...

    中断异常和系统调用.

    - **调用门**:用于在不同特权级之间的过程调用。 每种门都有其特定的结构,包含描述符优先级(DPL)、段选择码、位移地址等信息,这些信息指导CPU如何定位并执行相应的中断服务程序。 #### 中断优先级与堆栈操作 ...

    Linux下系统调用原理解析及增加系统调用的方法.pdf

    用户态的程序只有通过门(gate)陷入(trap)到系统内核中去,才能执行一些具有特权的内核函数。 四、增加系统调用的方法 增加系统调用的方法可以通过在Linux内核中添加新的系统调用函数来实现。首先需要定义新的...

    系统调用内核实现讲解

    在x86架构下,通常使用中断门或者陷阱门(trap gate)来实现这种模式转换。 Linux内核中,系统调用表(sys_call_table)存放了所有系统调用的指针,每个系统调用都有一个唯一的编号,如read、write等。当用户程序...

    电子门锁接口函数宾馆电子门锁编程接口

    首先,电子门锁接口是门锁系统的核心组成部分,它定义了一系列通信协议和函数调用,用于管理系统的后端服务器与门锁硬件之间的交互。接口通常包括初始化、设置密码、授权开门、查询状态、接收报警信息等功能。这些...

    CAD门窗绘图插件

    一旦加载成功,用户就可以通过CAD软件的菜单、工具栏或命令行调用插件功能。这个插件的核心功能在于简化门窗图形的绘制过程,它提供预设的门窗模板,用户可以根据需要选择合适的样式快速绘制门窗草图。 “可以方便...

    Python代码一键转Jar包及Java调用Python新姿势

    随着人工智能的兴起,Python这门曾经小众的编程语言可谓是焕发了第二春。 以tensorflow、pytorch等为主的机器学习/深度学习的开发框架大行其道,助推了python这门曾经以爬虫见长(python粉别生气)的编程语言在...

    实验二 2选1多路选择器-IP核的封装与调用

    之后,你需要进行逻辑综合,这个过程会将高级语言描述转换为门级逻辑,适合FPGA的硬件结构。 5. **仿真验证**:在实际布线和配置FPGA之前,应通过仿真来验证设计是否按预期工作。这可以通过编写测试平台,提供不同...

    uinty 门的开关实现

    `Update()`方法是在每一帧调用的,用于处理用户输入并更新门的状态。通过`Input.GetKey(KeyCode.A)`和`Input.GetKey(KeyCode.B)`检查用户是否按下了A键或B键。如果按下了A键,门会绕着`o`物体的位置和Y轴(`Vector3....

    QuartusII中宏模块的调用

    在实际使用中,设计者可以通过Quartus II 的图形界面或者通过代码(如VHDL或Verilog)来调用这些宏模块。例如,使用lpm_add_sub宏模块可以构建加法器和减法器。这个模块支持参数设置,允许设计者指定数据宽度(LPM_...

    易语言源码调用系统关于窗口.rar

    易语言以其直观的中文编程语句,使得编程过程更易于理解,尤其在处理复杂的系统级功能调用时,易语言的用户友好特性展现得淋漓尽致。 提到“易语言源码调用系统关于窗口.rar”,我们可以感受到一种深入操作系统的...

    进入ring0、ring3

    门机制是保护模式下进行特权级转换的关键,包括中断门、任务门、陷阱门和调用门。这些门描述符存在于中断描述符表(IDT)中,用于处理中断和异常。当发生异常或中断时,处理器会根据IDT中的门描述符来决定如何响应。...

    第 中断调用程序设计PPT学习教案.pptx

    随着技术的发展,这门技术愈发复杂和精细,对程序设计人员提出了更高的要求。本文将围绕中断调用程序设计这一主题,详细解析DOS中断和BIOS中断的设计与应用,并深入探讨键盘输入中断调用的相关知识。 计算机在启动...

    基于物联网平台的校园智能门锁应用的研究、设计与实现__物联网冷链和电子锁专业论文设计范文.pdf

    该系统通过调用 SiteWhere 提供的 REST API,实现了与物联网平台数据和命令的交互操作,同时也实现了系统与平台之间的解耦。该系统提供了一个门锁管理控制解决方案,可以实现在物联网平台上对门锁的控制和管理。 五...

    ACTEL Edn网表的调用问题的处理.rar

    4. **资源分配冲突**:在调用网表时,可能会出现资源分配冲突,例如逻辑门、I/O口或者内存块的使用超出FPGA的物理限制。这时需要优化设计,减少资源使用或者选择更大容量的FPGA。 5. **配置文件设置**:确认配置...

    revit API 命令调用格式

    ### Revit API 命令调用格式与二次开发知识点详解 #### 一、Revit API 概述 Revit API 是一款强大的软件开发工具包,它为开发者提供了丰富的类库来实现对Revit应用程序的功能扩展。对于初学者来说,掌握Revit API ...

    Silverlight旋转门效果

    4. **Layout更新**:在变换过程中,为了确保元素的布局正确更新,需要理解并适当地调用UpdateLayout方法。这确保了在动画执行期间,元素的尺寸和位置能够反映其变换状态。 5. **触发器和事件**:为了响应用户的交互...

Global site tag (gtag.js) - Google Analytics