以前にアプリケーションでスレッドを使用したことがあり、その概念をよく知っていますが、最近、オペレーティング システムの講義で fork() に出会いました。これは、スレッド化に似たものです。
私はグーグルでそれらの違いを検索し、次のことを知りました:
- フォークは、古いプロセスまたは親プロセスとまったく同じように見える新しいプロセスに他なりませんが、異なるプロセス ID を持ち、独自のメモリを持つ別のプロセスです。
- スレッドはオーバーヘッドが少ない軽量プロセスです
しかし、私の心にはまだいくつかの疑問があります。
- スレッド化とその逆よりも fork() を優先するのはいつですか?
- 外部アプリケーションを子として呼び出したい場合、fork() またはスレッドを使用する必要がありますか?
- Google 検索を行っているときに、スレッド内で fork() を呼び出すのは悪いことだと言っている人を見つけました。同様のことを行うときに、スレッド内で fork() を呼び出したいのはなぜですか?
- 親プロセスと子プロセスが同時に実行されないため、fork() はマルチプロセッサ システムを利用できないというのは本当ですか?