2017-01-04 7 views
0

すべてのオペレーティングシステムは、同じモデルを使用して新しいプロセスを作成します。親はそれ自身をフォークし、次にexecはその子です。しかし、なぜこのモデルは圧倒的に人気がありますか?OSで新しいプロセスを作成するのにfork + execが使用されるのはなぜですか?

一般的なfork + execモデルでは、OSはプロセス空間全体のコピーを作成する必要があります(いくつかの最適化はコピーオンライトなどで行われます)。そしてexecが完了すると、新しいプログラムのコードと残りのメタデータと共にデータ/スタックを設定する必要があります。

OSに直接呼び出すことができ、システムコールexec_new()があるとすれば、2つのシステムコールを必要とせずに上記と同じことができます。所有者は引き続き同じUIDになります。なぜこれはしないのですか? fork + execモデルは私たちに何を与えるのですか?

答えて

0

すべてのオペレーティングシステムは、同じモデルを使用して新しいプロセスを作成します。親はそれ自身をフォークし、次にexecはその子です。

これは正しくありません。それが宦官モデルです。私はそのようなことをする他のオペレーティングシステムについては知らない。他のシステムには、宦官をエミュレートするためのライブラリ関数が含まれていますが、それは根底にあるメカニズムではありません。

など。 https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx

http://h41379.www4.hpe.com/doc/83final/4527/4527pro_025.html

大規模なオペレーティングシステムで一般的モデルは、コマンド・インタプリタは、プロセスの保護領域に存在することです。同じプロセスで複数のプログラムを実行します。これは、あなたが記述するメカニズムを使って他のプログラムを起動する単なるプログラムであるeunuchsシェルとは対照的です。

関連する問題