Memory 如何以编程方式判断Linux处于PAE模式还是非PAE模式?

Memory 如何以编程方式判断Linux处于PAE模式还是非PAE模式?,memory,memory-management,linux-kernel,kernel,cpu-architecture,Memory,Memory Management,Linux Kernel,Kernel,Cpu Architecture,需要创建一个脚本来检查内核是否处于PAE模式。当然,仅仅检查/proc/cpuinfo标志是否具有此“pae”设置是不够的 我们必须知道PAE机制是否不仅已经实施,而且也已经启动 因为PAE内核现在是新的默认内核,如果您需要一个非PAE内核,那么现在必须制作另一个内核 换句话说,我们如何判断在具有PAE的CPU上的内核是否为非PAE(这是要测试的两个可能条件之一) 另一个问题是,如何判断内核是否是没有PAE支持的CPU上的PAE 而且无法判断在典型的安全内核中是否使用了CONFIG_HIGHME

需要创建一个脚本来检查内核是否处于PAE模式。当然,仅仅检查/proc/cpuinfo标志是否具有此“pae”设置是不够的

我们必须知道PAE机制是否不仅已经实施,而且也已经启动


因为PAE内核现在是新的默认内核,如果您需要一个非PAE内核,那么现在必须制作另一个内核

  • 换句话说,我们如何判断在具有PAE的CPU上的内核是否为非PAE(这是要测试的两个可能条件之一)

  • 另一个问题是,如何判断内核是否是没有PAE支持的CPU上的PAE


  • 而且无法判断在典型的安全内核中是否使用了CONFIG_HIGHMEM或CONFIG_PAE内核配置选项。

    通常,可以在/boot/CONFIG-*中找到CONFIG_PAE,如下所示:

    $ cat /boot/config-$(uname -r) | grep PAE
      CONFIG_X86_PAE=y
    

    您没有访问该文件的权限吗?

    一种方法是读取CR4寄存器并查看第5位。PAE为1,无PAE为0。您可以在内核中运行的某些代码(例如内核驱动程序)中读取该寄存器。您可以为此编写一个小型驱动程序。它应该不会很复杂。

    /code>/proc/cpuinfo是确定给定处理器是否以PAE模式运行的可靠方法。这对您来说还不够,似乎意味着您希望通过Linux平台测试BIOS设置。你能详细说明一下你想要实现什么吗?因为PAE内核现在是默认的,如果你需要一个非PAE内核,你必须现在就做。换句话说,我如何判断在具有PAE的CPU上的内核是否为非PAE(这是要测试的两个可能条件之一)。另一个问题是,如何判断内核是否是没有PAE支持的CPU上的PAE。并且无法判断是否在安全内核设置中使用了
    CONFIG\u HIGHMEM
    CONFIG\u PAE
    。更新了问题以反映这一点。如果您可以包含示例代码来完成此操作,那将是非常棒的。我知道这是一个有6年历史的帖子,但希望你能。提前谢谢!