com*_*fan 6 terminology subsystem
我正在读一本书,书中说有这些子系统:
win32,os/2,posix,etc..
Run Code Online (Sandbox Code Playgroud)
但我对这些符号没有任何感性认识,你能用简短的话解释一下吗?
从NT(NT 3.1)开始的Windows能够支持当时(1993年)存在的不同操作系统(或OS系列)的语义。微软称它们为子系统(今天他们可能称它们为仿真层)。
当链接到子系统时,它决定了您的语义。例如,对于 Win32 子系统,文件名不区分大小写(foo.txt并fOo.Txt引用同一个文件),并且设备文件(如con或nul)存在于每个目录中。对于 POSIX 子系统,文件名区分大小写,并且设备文件仅存在于一处。通过将现有(遗留)应用程序链接到不同于 的子系统Win32,这些应用程序“感觉”更像各自的操作系统,并且减少了移植工作。
如果您想了解 EXE/DLL 的子系统,可以在 DependencyWalker 中打开它 - 如果它(直接或间接)依赖于 KERNEL32.DLL,则它是 Win32 子系统,如果它(直接)依赖于 NTDLL.DLL,则它是本机子系统子系统(请注意,KERNEL32.DLL 本身将依赖于 NTDLL.DLL,为 Win32 子系统提供兼容层)。
今天这基本上已经过时了。我这么说主要是因为微软在 Windows 10 周年更新中包含了一个新的“Linux 子系统”(这是一个类似于 Native、Win32 或 POSIX 的子系统),它的二进制行为相当于 Linux,可以轻松编译在 Windows 上运行的 Linux 应用程序(或者更准确地说,它的 Linux 子系统)。
链接/SUBSYSTEM器开关开始执行完全相同的操作,但后来增加了更多选项(/SUBSYSTEM:CONSOLE也为 Win32 子系统进行编译,但应用程序将分配一个控制台窗口,如果它没有从其父进程继承一个控制台窗口,/SUBSYSTEM:EFI_APPLICATION将编译一个无法执行的可执行文件完全在 Windows 上运行,但将在可扩展固件接口 (EFI/UEFI) 引导环境等中运行。
| 归档时间: |
|
| 查看次数: |
3518 次 |
| 最近记录: |