C 为什么在内核模式下执行回调函数很糟糕?

C 为什么在内核模式下执行回调函数很糟糕?,c,linux-kernel,operating-system,kernel,C,Linux Kernel,Operating System,Kernel,为什么从用户空间调用内核空间中的回调函数被认为是“坏”的,而不是从用户空间调用用户空间中的回调函数?有些系统支持这种回调。例如: 在这种情况下,您的进程必须具有在内核模式下执行的适当权限 允许代码在内核模式下执行会导致系统崩溃和安全漏洞。允许用户在内核模式下执行代码会带来巨大的安全风险。也就是说,如果用户空间程序在内核模式下执行,那么就没有安全性:游戏完全丢失,用户可以完全访问所有人和所有东西 假设您在内核模式下执行,虚拟内存查找不再受特权级别的保护。在x86中,当处于内核模式时,特权级别为0

为什么从用户空间调用内核空间中的回调函数被认为是“坏”的,而不是从用户空间调用用户空间中的回调函数?

有些系统支持这种回调。例如:

在这种情况下,您的进程必须具有在内核模式下执行的适当权限


允许代码在内核模式下执行会导致系统崩溃和安全漏洞。

允许用户在内核模式下执行代码会带来巨大的安全风险。也就是说,如果用户空间程序在内核模式下执行,那么就没有安全性:游戏完全丢失,用户可以完全访问所有人和所有东西

假设您在内核模式下执行,虚拟内存查找不再受特权级别的保护。在x86中,当处于内核模式时,特权级别为0;这意味着你可以访问物理内存中的任何东西。因此,如果进程的回调是在内核空间中执行的,那么它将能够在机器上做任何它想做的事情

要删除每个人的页表吗?K.想看看这些页面表中有什么吗?你明白了。要将内核内存归零并导致整个系统崩溃吗?好主意。想入侵机器上的另一个进程以便记录其I/O流量吗?似乎合法


不要让用户在内核空间运行代码。

上一个问题答案的可能重复是含糊不清的。你能详细说明一下你的意思吗?您的意思是从用户空间调用内核空间中的回调函数还是从用户空间调用用户空间中的回调函数?或者你是说从内核空间调用内核空间中的回调函数还是从用户空间调用用户空间中的回调函数?内核代码使用了很多回调函数,因为它是用OOP编写的。@glauxosdever我已经更新了这个问题。我正在学习操作系统中的回调函数,读到在内核模式下运行回调函数会带来负面影响,特别是安全性,但我没有详细说明。