这是一个假设的问题。假设有一个应用程序(通常在用户模式下执行),它想要访问内核数据结构,读取寄存器值,并执行一些内核级函数。
内核和/或CPU是否有办法允许此应用程序执行其功能,同时保持除此之外的其他应用程序的正常用户级/内核级隔离?
答案 0 :(得分:0)
为了将您的应用程序放入kernel space(内核内存)或在ring 0 CPU模式下运行,您需要从内核代码执行此操作。在正常操作状态下,您无法使用提及的权限从内核运行应用程序(至少没有现成的API可以执行此操作)。可能有可能实现一些能够做到这一点的内核代码。但它会很棘手并且会破坏内核空间/用户空间分离的整个概念,如果使用了任何高级用户空间API - 它无论如何都无法工作。
如果你正考虑给你的应用程序响0 特权 - 它也不会有用,因为内核有its own stack,因为kernel-space/user-space memory separation,所以你将无法运行内部内核API。
基本上,您可以通过编写kernel module来实现相同的目标。并且代表用户空间应用程序运行一些内核代码 - 您可以使用system calls接口。
所以,回答你的问题:不,在内核模式下运行用户空间应用程序是不可能的,所以它可以使用内部内核API。