首页 > 教育学习 > 为什么 > 内核模式的地址位宽和用户模式的地址位宽有什么相互约束?

内核模式的地址位宽和用户模式的地址位宽有什么相互约束?
2012-01-19 19:57:21   来源:   点击:

    内核模式的地址位宽和用户模式的地址位宽有什么相互约束?虽然 Mach 内核可以以 32 位模式启动,但是雪豹上的内建程序大多数是运行在 64 位下模式的。为什么 32 位内核模式可以执行 64 位程序呢(或者这两者本就没有关系,是我想的太多?),内核模式的地址位宽和用户模式的地址位宽之间有什么联系?

    1 个答案

    • 答案 1:

      那我就推荐我的这篇 blog :techsingular.net/...简言之。内核的地址空间和 user process 的地址空间是可以完全独立的。常见的操作系统让内核与 current user process 共享地址空间其实是一个 performance hack 。这个 hack 久而久之成了人们下意识认为的『必需』。正是这个所谓的 hack ,让 32 位的内核只能管理 32 位程序。其实,如果采用了这个 hack ,64 位内核也只能管理 64 位 user process 。但是为什么 Windows 和 Linux 的 64 位内核都能管理 32 位 user process 呢?因为 x86 有一个特别的 hack ,在 64 位地址空间的下 4G 可以运行 32 位 user process 。注意这个 hack 是 x86 特有的。正是常见 OS 的 performance hack 加上 x86 的 32 位兼容 hack ,让人们认为 wider bitwidth 的内核可以管理 narrowerbitwidth的 user process 。其实不然。如果有了第一个 hack 没有第二个,那么只要bitwidth 不同的内核和 user process 就无法一起工作。而没有了第一个 hack ,第二个 hack 也就失去了价值。(绕口令我容易吗?)Mach 没有 performance hack ,它的内核地址空间和 user process 完全分离。

相关热词搜索:

上一篇:使用 Android 机器人形象做非商业短片是否侵权?
下一篇:鼠标点击之后再发展能是什么技术呢?