了解自陷指令 int 0x2e 和操作系统实现系统调用的基本原理

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解自陷指令 int 0x2e 和操作系统实现系统调用的基本原理相关的知识,希望对你有一定的参考价值。

对于应用程序的运行而言,操作系统内核的作用体现在一组可以供其调用的函数,称为“系统调用(System Call)”。
系统调用有时也可称为系统服务。

只有三种手段或原因可以使运行于用户空间的CPU转入系统空间:中断,异常,自陷(Trap)。
绝大多数CPU都设有专门的自陷指令,系统调用通常就是靠自陷指令实现的。
一执行这样的指令,CPU就转入了系统空间并从某个预定的地址开始执行指令,就像掉进了陷阱一样。
自陷指令在形式上也与中断相似,就像是一次由CPU主动发出的中断请求。

从Pentium II开始,Intel又在x86系列的CPU中增加了一对指令sysenter和sysexit,用来实现一种称为“快速系统调用”的机制,并为此增加了三个寄存器。

传统的Windows系统调用正是通过自陷指令 int 0x2e 进入内核实现系统调用的;
ReactOS也以此作为主要的系统调用手段,但同时也支持快速系统调用。

以上摘自 Windows内核情景分析 一书;

陷入指令
    陷入指令(Traps),又叫做自陷指令或访管指令,出现在计算机操作系统中,用于实现在用户态下运行的进程调用操作系统内核程序,即当运行的用户进程或系统实用进程欲请求操作系统内核为其服务时,可以安排执行一条陷入指令引起一次特殊异常。
    陷入指令在计算机操作系统的中断处理机制、系统调用机制中有重要作用。陷入处理机制需要开辟现场保护区,以保存发生系统调用时的处理器现场。

以上是关于了解自陷指令 int 0x2e 和操作系统实现系统调用的基本原理的主要内容,如果未能解决你的问题,请参考以下文章

中断和异常的再总结

IDT Hook和GDT的学习

(计算机组成原理)第四章指令系统-第二节4:CISC和RISC简单了解

Pentium快速系统调用学习

Pentium快速系统调用学习

Socket与系统调用深度分析