Windows でのフォーク: Fork() との類似点を調べる
オペレーティング システムではプロセス コピーの作成が不可欠であり、fork()この目的のために、UNIX 系システムでは関数が一般的に使用されます。ただし、Windows には fork() とまったく同等の機能はありません。
Windows で同様の機能を求める場合、最も近いオプションは Cygwin です。完全な機能を備えた fork() 実装を提供します。 Cygwin の使用がアプリケーションで許容され、パフォーマンスが大きな問題ではない場合、この問題は解決されます。
Cygwin が実行可能なオプションではない場合、Cygwin が fork() を実装する方法を理解すると洞察が得られます。 Cygwin では、fork() は非コピーオンライト プロセスとして実装され、子プロセスは最初に親のメモリ コンテキストを継承します。
Cygwin での作成プロセスには、次のようないくつかの手順が含まれます。一時停止された子プロセス。そのアドレス空間を親からのデータと .bss セクションで初期化し、子が実行を継続できるようにします。この実装は、fork() に比べて遅いことで有名です。
より効率的な解決策として、Cygwin が提供する呼び出しの spawn ファミリーを検討してください。これらの呼び出しは Win32 API に直接マッピングされ、パフォーマンスが向上します。単一の Cygwin プロセスに対して複数の Windows PID を管理するなど、独自の課題はありますが、Windows の fork() に代わる高速な代替手段となります。
以上がWindows で Fork() のような機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。