Windows内核是否有写时复制fork()指令?

ecfsfe2w  于 2023-06-24  发布在  Windows
关注(0)|答案(1)|浏览(149)

由于POSIX.1合规性是Windows的强制性目标,因此操作系统的设计确保了所需的基本系统支持,以允许实现POSIX.1子系统(例如在Windows执行程序中实现的fork函数,以及对Windows文件系统中硬文件链接的支持)。
这个fork函数是写时复制的吗?如果是,它是否仍然存在于最新版本的Windows中?如果是这样,它也可以被称为Win32应用程序(尽管是一个未文档化的API)吗?

xuo3flqw

xuo3flqw1#

在Windows Internals的记忆中,fork是一个写时复制的实现。基于Windows内存管理器的其余部分的工作方式,如果它是其他任何东西,那将是不寻常和令人惊讶的。
我似乎还记得,fork的实现方式是将所有内存分配放在section对象中,以便可以通过copy on write设置跨进程复制这些section。
不幸的是,这意味着您可能无法在非posix子系统进程中使用它,因为您需要仔细设置您的地址空间以仅包含节。标准的Win32进程不会这样做。
另外,如果你要支持fork(),每个人都需要支持它--从内核开始。举一个可能会惊讶于得到fork()-ed的系统的例子,考虑一下窗口系统。在这种情况下它会做什么?(我假设X11对此有一个答案,但我不知道它是什么)。由于fork()-ing在Windows上是一个非常不寻常的事情,我希望你的进程得到完全borked如果你要做的是一个标准的Win32进程。

相关问题