系统机制:32 位与 64 位环境的兼容与模拟
在现代计算机系统中,32 位和 64 位应用程序的兼容运行是一个重要的问题。本文将深入探讨系统在处理 32 位和 64 位组件时所采用的机制,包括注册表的分离、系统调用的处理、异常调度以及不同平台上的模拟技术等方面。
1. 注册表分离
为了在不修改 32 位组件代码的情况下解决兼容性问题,注册表被分为两部分:Native 和 WoW64。默认情况下,32 位组件访问 32 位视图,64 位组件访问 64 位视图。这样可以为 32 位和 64 位组件提供安全的执行环境,并将 32 位应用程序状态与 64 位应用程序状态分离。
1.1 注册表重定向
WoW64 系统调用层会拦截 32 位进程调用的所有系统调用。当拦截到打开或创建注册表项的系统调用时,它会将键路径转换为指向注册表的 WoW64 视图(除非调用者明确请求 64 位视图)。具体来说,在以下两个根键下可能会发生重定向:
- HKEY_LOCAL_MACHINE\SOFTWARE
- HKEY_CLASSES_ROOT
并非整个注册表项都被拆分,属于这些根键的子键可以存储在注册表的私有 WoW64 部分(此时子键为拆分键),也可以在 32 位和 64 位应用程序之间共享(此时子键为共享键)。在每个拆分键下,WoW64 会创建一个名为 WoW6432Node (对于 x86 应用程序)或 WowAA32Node (对于 ARM32 应用程序)的键,用于存储 32 位配置信息。其他部分的注册表则在 32
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



