os/161に精通していて、いくつかの質問に答えてくれる人はいますか?
子pid、親pidはどのように機能しますか。
現在のスレッドに別のスレッド ベースを作成している場合thread_fork()
、新しいスレッドには自分自身の一意の ID と別のファイル記述子テーブルが必要です。sys_fork
から子を作成する間curthread
、子は pid 以外は親と同じです。しかし、私は pid と親 pid がどのように機能するかについて混乱しています。
これがプロセステーブルの私の解釈です。システム全体で 1 つのプロセス テーブルしかありません。今のところparent_pid
、my_pid
すべてのスレッドについてあります。
-親スレッドは複数の子を持つことができます (呼び出し続けることによりsys_fork
)。
- 子は親を 1 人しか持つことができません。
- が呼び出されるたびsys_fork
に、子が作成され、parent_pid
この子の が、この子を作成したスレッドの pid に設定されます。
-pid 1 は、ブート/メニュー スレッド用です。
プロセステーブルがどのように機能するかを理解する上で、私は正しい軌道に乗っていますか?
最後の質問: For sys_waitpid()
: 親だけがwaitpid
?を使用できます。そして、彼らは子供たちを待つことしかできませんか?子waitpid
は親で使用できますか (または、これによりデッドロックが発生しますか)?
Google でいろいろ調べてみたのですが、矛盾が多すぎて、今でも疑問に対する明確な答えが見つかりません。