syscall
syscall基础概念
Windows下有两种处理器访问模式:用户模式(User mode)和内核模式(Kernel mode)。
用户模式下运行应用程序时,Windows会为该程序创建一个新进程,提供一个私有虚拟地址空间和一个私有句柄表,因为私有,一个应用程序无法修改另一个应用程序的私有虚拟地址空间的数据。
内核模式下,所有运行的代码都共享一个虚拟地址空间,因此内核中驱动程序可能还会因为写入错误的地址空间导致其他驱动程序甚至系统出现错误。
内核中包含了大部分操作系统的内部数据结构,所以用户模式下的应用程序在访问这些数据结构或调用内部windows例程以执行特权操作的时候,必须先从用户模式切换到内核模式,这里就涉及到了系统调用。
x86 windows使用SYSENTER
实现系统调用
x64 windows使用syscall
实现系统调用