从内核进程访问数据

由于内核进程在特权更高的内核保护域中执行,因此内核进程可以访问用户进程无法访问的数据。

这适用于所有内核数据,其中有以下三种一般类别:

  • 用户块 数据结构 (data structure)

    对于内核进程, u 块 (或 u 区) 结构) 存在,并且包含与用户方式进程大致相同的内核进程信息。 内核进程必须使用内核服务来查询或处理 u 区 中的数据,以保持模块化并提高代码到其他平台的可移植性。

  • 用于内核进程的堆栈

    为了确保与旧应用程序的二进制兼容性,每个内核进程都有一个名为 进程堆栈的堆栈。 此堆栈由进程的初始线程使用。

    内核进程的堆栈位置是依赖于实现的。 此堆栈可以位于全局内存中,也可以位于内核进程的进程专用段中。 内核进程不能自动假定它的堆栈位于全局内存中。

  • 全局内核内存

    内核进程也可以访问全局内核内存,以及从内核堆中分配和取消分配内存。 因为它在内核保护域中运行,所以内核进程可以访问全局内核地址空间中的任何有效内存位置。 内核进程从内核堆动态分配的内存必须由内核进程释放,然后才能退出。 与用户方式进程不同的是,内核进程动态分配的内存不会在进程退出时自动释放。