Linuxで最初に実行または生成されるプロセスとスレッドの両方を使用するコマンドを実行する必要があるかどうかを知りたいです。私はそれらがすべてclone()を使用して実行していることを知っています。スレッドは基本的に定義上軽いプロセスです。
ベストアンサー1
スレッドはプロセスの一部であるため、オペレーティングシステムはスレッドを作成する前にプロセスを開始します。
プログラムを呼び出すと、オペレーティングシステムは次のことを行います。
- コードとデータをメモリにロードする
- プロセス制御ブロック(PCB)の生成と初期化
- 最初のスレッドとその呼び出しスタックの作成
- スレッドの「保存状態」に初期値を割り当てます。
- スケジューラにスレッドを通知する
スケジューラは、各コアで実行され、スケジューリング基準に従ってプロセスとスレッドの実行を制御するオペレーティングシステムの最も内側の部分です。
今ディスパッチャー -
- スレッドをしばらく実行します。
- 状態を保存する
- 他のスレッドの状態のロード
- しばらく実行..
オペレーティングシステムは割り込み/トラップを使用してスケジューラから制御を取得します。理解を助けるためにステップを簡素化しました。