2013-05-03 32 views
1

因爲POSIX.1順應性用於Windows的強制性目標, 操作系統被設計,以確保所要求的基本系統 支持是本以允許POSIX.1 子系統的執行(如叉功能,該功能在Windows執行程序的 中實現,並支持Windows 文件系統中的硬文件鏈接)。Windows內核是否具有可讀寫的fork()指令?

這個fork函數是否可以拷貝寫?如果是這樣,它是否仍然存在於最新版本的Windows中?如果是這樣,它是否也可以稱爲Win32應用程序(雖然是未公開的API)?

回答

4

從Windows內部的內存中,fork是一個寫時複製實現。基於Windows內存管理器其餘部分的工作方式,它會變得異常而令人驚訝。

我似乎還記得fork實現的方式是將所有內存分配放入段對象中,以便可以使用copy on write設置跨段進程複製段。

不幸的是,您可能無法在非posix子系統進程中使用它,因爲您需要仔細設置您的地址空間以僅包含部分。標準的Win32進程不這樣做。另外,如果你要支持fork(),每個人都需要支持它 - 從內核開始。對於一個可能會驚訝得到fork()的系統的例子,考慮一下窗口系統。在這種情況下甚至會做什麼? (我假設X11有這個答案,但我不知道它是什麼)。由於fork()在Windows上是一件非常不尋常的事情,所以如果你想在一個標準的Win32過程中完成這個過程,我會期望你的過程完全停止。

相關問題