DLLの場合、実行可能ファイルはプロセス間で共有されています。しかし、ユーザが定義したプログラムの場合、2つの端末で "test"を実行すると、 "test"と呼ばせてください。プログラム実行可能ファイルは、これらの2つのプロセスで共有されるのでしょうか、またはそれぞれが個別のコピーを取得しますか?ありがとう。Linuxでは、同じユーザープログラムを実行している2つのプロセス間で実行可能なバイナリが共有されていますか?
0
A
答えて
1
まず、ファイルがカーネルのページキャッシュにコピーされます。それがすでにある場合、2回目の実行でこのキャッシュされたものが使用されます。 1つのファイルにつき1つのキャッシュ。
+0
私はあなたがデータキャッシュを参照していると思います。プログラムのロード方法が異なります。実際には、 'fork()'や 'clone()'を呼び出すとプロセスが複製され、すべてがコピーされますが、それぞれ前方に移動すると独自のコピーが作成されます。 – alvits
0
テキストセクションは共有されています(コード)。ヒープは共有されません。
ディスクから読み込まれたものはすべて、ディスクキャッシュを共有します。
@alvitsは、ヒープがフォーク上に複製されるが、コピーオンライト(COW)で行われます。つまり、必要に応じて複製されます。データが変更されない場合、新しいメモリを占有しません。
この答えは同じです:how is a shared library file called by two different processes in Linux?
関連する問題
- 1. Linuxで実行可能なメモリページを共有しますか?
- 2. 2つのプロセスが同じヒープを共有しています
- 3. 実行可能ファイルを実行しているときにCLIONが共有ライブラリを見つけられない
- 4. 同じホスト上で実行されている2つの異なるサイトは、同じデータベースを共有して保存および取得できますか?
- 5. 同じソーステーブルの2つのクエリ間で共有されていない行を見つける方法
- 6. 実行可能ファイルと共有ライブラリに同じ名前の関数が含まれていますか?
- 7. 複数のサーバーブレードで実行されているプロセス?可能?
- 8. 複数のaiohttp Application()が同じプロセスで実行されていますか?
- 9. 同じホスト上で実行可能なplaybooksを実行する
- 10. 、同時に2つのプロセスを実行している
- 11. java Runtime.exec()によって呼び出された同時実行可能なプロセス数はいくつですか?
- 12. win32、C++の2つのプロセス間で同じstdoutを共有
- 13. linuxの共有フォルダからIIS7サイトを実行できない
- 14. 長期実行可能なDjangoプロセスが実行可能ですか?
- 15. MassTransit同じプロセスで実行されている2つの異なるアプリケーションのメモリ設定時
- 16. ehcacheはサーブレットコンテナと同じプロセスで実行されますか?
- 17. アンドロイドウィジェットは、アプリケーションと同じプロセスで実行されますか
- 18. イベントループが既に実行されている間にasyncio.Serverインスタンスを実行することは可能ですか
- 19. Linuxで実行しているのとEclipseで実行していますか?
- 20. LinuxデスクトップでAndroid NDKバイナリを実行しています
- 21. 2つの不可能なジョブが同じマシンに対して実行されないようにするにはどうすればよいですか?
- 22. プロセスがNodeで実行されている時間
- 23. ブラウザでPHPが長時間実行されているプロセス
- 24. Linuxでバックグラウンドでプロセスを実行しています
- 25. 文字列インターンは実行の間に共有されていますか?
- 26. Androidでelf実行可能ファイルを実行しています
- 27. Unixでは、どの共有ライブラリを使用している実行可能ファイルまたはプロセスを見つけることができますか?
- 28. 2つのプロセスを同じCPU上で実行するにはどうすればいいですか?
- 29. 時間に応じて機能を実行していない時間が設定されています
- 30. 同時実行可能な変数の共有
両者は異なるプロセスIDをお持ちの場合、私は実行可能コードがあまりにも違うだろうと思います。 –
あなたの質問は曖昧です。あなたが 'DLL'と言った瞬間に、共有オブジェクトが気になります。 Linuxでは '* .so'ファイルと同等です。これらの共有オブジェクトは、ユーザープログラムがコンパイルされるとき、またはユーザープログラムがそれをロードするときにメモリにロードされます。しかし、あなたは2つのプログラムが同時に実行されるのを追跡しました。これは、ユーザー空間のコンテキストではまったく共有されていません。ディスク上に置かれたバイナリは、最初の実行によって排他的にロックされないため、共有されます。両方の実行はメモリ内に独自のコピーを持ち、両方とも別のプログラムカウンタ、スタックポインタ、変数などを持ちます。 – alvits