プロセス状態ロジック

プロセス状態ロジック

スレッドのみが予約されている場合、プロセスはどのように状態を持つことができますか(WindowsおよびLinux)。

  1. プロセスを作成するとしましょう。
  2. ワイヤーT1今割り当てられました
  3. T1これで実行可能な状態です。
  4. スケジューラの選択T1そして動作するように設定
  5. 新しいスレッドT2実行可能に作成および表示
  6. スケジューラの選択T2別のCPUコアに引き渡してください
  7. T1これでユーザー入力を待ちます。T2それでも他のコアで実行中

状態は何ですかブロック/実行?

プロセスの状態を決定するロジックは何ですか?

答え1

スレッドは既存のプロセスと同じ継承属性を共有しません。

少なくともPOSIXでは、スレッドは互いにピア*と見なされます。単一のプロセスでスレッドを作成すると、P1というコンテナの同じメモリ領域(およびアカウントスペース)にバインドされた2つのスレッドT1とT2があります。

これは実際にプログラム設計者に混乱を招く可能性があります。特に、信号が到着すると、最初に生成された最初のスレッドだけでなく、すべてのスレッドまたはすべてのスレッドが階層内で同じ「同じ」レベルにあるため、信号を受信できるためです。その他。

提示した例には、実際には3つのスレッドがあります。 T1(つまり、P1)、T2、およびT3(2つの生成されたスレッド)

P1(T1)の状態は、実行可能、スリープ、実行中、または他のスレッドを特に待たない限り、他の状態である可能性があるため、定義されません。

スレッドとプロセスの関係を理解するには、下の図を参照してください。

                         pthread_create()
   ┌──Pid┼P1──┐                                   ┌──Pid┼P1──┐
   │          │     clone(...CLONE_THREAD...)     │          │
   │ Thread T1│     clone(...CLONE_THREAD...)     │ Thread T1│
   │          │     ...                           │ Thread T2│
   │          │     clone(...CLONE_THREAD...)     │ ...      │
   │          │  ─────────────────────────────►   │ Thread TN│
   └──────────┘                                   └──────────┘

─────────────────────────────────────────────────────────────────

                       fork()
   ┌──Pid┼P1──┐                      ┌──Pid┼P1──┐
   │          │     clone()          │ Thread T1│    ...
   │ Thread T1│     clone()          └──────────┘
   │          │     ...
   │          │     clone()          ┌──Pid┼P2──┐ ┌──Pid┼PN──┐
   │          │  ───────────►        │ Thread T1│ │ Thread T1│
   └──────────┘                      └──────────┘ └──────────┘

PIDは、実際には内部で同じリソースを共有するすべてのスレッドを記録して記述するコンテナです。 **

実行するほとんどのPIDには、内部にスレッド(技術的には実行可能なコンテキスト)があります。新しいスレッドを作成したら、同じPIDコンテナ内で2つの実行可能なコンテキストを宣言するだけです。

これにより、fork()新しいコンテナとその中に新しいスレッドが作成されます。


*完全なPIDの動作を再説明する特定の呼び出しのみを許可する「基本」スレッド(プロセスの初期スレッド)があります。これは階層に最も近いものです。

**説明を明確にするために、スレッドとプロセスの基本的な特性を説明するために、スレッドの他の多くの属性と共有項目、プロセス階層、および共有項目を無視しました。

関連情報