今回は下の透明から糸を置きます

  実務2年半は、断片的な学習とマルチスレッドコードの多くを書いたが、スレッドを理解するためのかすん状態になっています。スレッド、モデル、使用シナリオと使用より多くのおなじみの概念については、しかし、「最終的にどのようなスレッドがあり、」より多く、この問題の終わりではない、と今日私が散乱ポイントや概念になりますと、一緒に来て、地面からの層ごとエンドはいでどのスレッドを見てください。  

  

  まず、CPUのスタートから、我々は知っている、CPUの命令実行は、3つの段階に分かれています。ステージ命令は、命令デコードステージ、命令実行ステージをフェッチ。

  CPUの場合は、スレッドの概念が存在しない場合、CPUは命令とデータのための目をしています。データ・レジスタであり、ポインティングCSを決定するために、登録IP命令に完全に依存しているメモリ内の情報、のために。私たちは、CPUのコードは、彼らはちょうど2つの互いに独立したメモリ領域、問題ではないですです(両方ともシングルスレッドとの相互作用が存在しないと仮定して)二つのプログラムを持っています。タスク実行CPUがプログラムAにコードを実行され、Bは、コードを実行し、タスクBのプログラムで実行されます。それらが同時に実行されている場合は、ミッションBの一方で、その後、CPUのために、それは、タスクAの実装で瞬間です つまり交互に異なるタスクを実行しているスレッドがタスク切り替えスレッドCPUとは独立している、CPUの目に。

  異なるタスク間のこの概念とガイドラインCPUスイッチの本当のスレッドは、オペレーティング・システムです。このタスクとタスクのスケジューリングの説明の便宜のためにオペレーティング・システムに基づいて行われる(制御ブロック、スレッド制御ブロックスレッド)タスク特有のデータ構造TCBを維持します。TCBといえば、我々はPCB(プロセス制御ブロック)のタイミングを見ています。

  コンセプトは、オペレーティング・システム実装の初期のスレッドに存在しない、それが対応する処理です。タスクの全体的なオペレーティングシステムの無礼であったことを、実行線として記載単位として実行するようにリソース割り当ておよびタスクスケジューリングのシステムの作業ユニットを操作このような割り当ての結果は、同時に、スイッチングの各ランスケジューリングプロセスは、非常に大きなオーバーヘッドをもたらす、スイッチリソースに権限を持っています。

  それでは、オペレーティング・システム・リソース割当部と、タスクスケジューリング部が分離、つまり、我々はプロセスとスレッドについて話しています。スレッドタスクスケジューリングの処理ユニット割り当てシステムリソース。同じプロセス内のスレッド間の切り替え時に、彼らはスイッチのCPUリソースに同時にアクセス権を持っていないので、すべてのシステムリソーススレッドは、プロセスを所有しているが、プロセスにも同時にも、並列処理の中に(並列に処理するか、大きな課題を持っている能力を持っています大幅に作業の効率を向上させる同時サブタスクを処理する能力)。(オブジェクト指向プログラミングのアイデアは、同様の、ターゲットは責任のパーティションで行われ、さらに抽象化、だった単一責任の原則タスクを満たしていません。)

  元のトピックに、聞かせてのは、オペレーティング・システムが、以下はPCBのBaiduの百科事典の説明のプロセスとスレッドを記述するためのPCB及びTCBの使用である方法を参照してください。

  

 

   私たちは、PCBは、リソース割り当て情報と運用スケジューリング情報が含まれ、見ることができます。CPUスケジューリング方法は、操作、スケジューリングの時間に応じて行われる処理状態、CPUレジスタ、カウンタスケジューラ、メモリマネージャを実行する時間に応じてサイトの保存と復元は、リソースの課金情報、入力と出力の状態は、プロセスによって所有されています説明。

  TCBのために、異なるオペレーティングシステムは、異なる実装を持っていますが、一般的にのみ、このようなスレッドの状態、スケジューリングアルゴリズム、CPUレジスタ、PCカウンタとして、スケジュールを実行するために必要な情報が含まれています。下に示すように、TCBの関係を持つPCB:

 

   異なるタスク間のCPUスイッチを案内するために管理し、継続的の2つのデータ構造を介してシステムタスクを動作させる、我々ラウンドロビン方式は、ルックCPUのオペレーティングシステムのブートプロセスの一例は以下のとおりです。

  ------ CPUタスク>タイムスライスは、タスクAまで使用され、OSは> -------実行終了割り込みタスクAの前に現場(CPUレジスタ、PCカウンター保存終了をCPUクロックを発行特定のアルゴリズムに従って計算タスクBの下では、すべての有効なTCBから入手した実行される)---------> ----------> Bは、オンサイトの回復タスクになり、タスクBの実行を開始します(CS:IP最後の終了時に、タスクBへの命令の実行を指し、CPU Bは、そこから再びタスクを開始します)

  要約すると:

  1.プロセスおよびスレッドは、個々のタスクのシステムレベルの抽象化を操作しています。スレッドの切り替えは、異なるタスクを切り替えるには、CPUの命令です。

  2. OSのスレッドスケジューリングは、異なるタスクを実行するCPUのブート命令が異なるタスクの切り替えの効果を達成するために、中断されていません。

  前記プロセスは、リソース割り当ての基本単位であり、スレッドは操作スケジューリングの基本単位です。分離プロセスとスレッドはより抽象的なタスクの結果を成熟されます。

  オペレーティングシステムの発展に伴い、人々の抽象タスクの効率を向上させるために、さらにスレッドで洗練されたユーザスレッドとカーネルスレッドの概念を除去した後、我々は維持次号を引きます。

 

@author牛の肉、ソースを明記してください

おすすめ

転載: www.cnblogs.com/niuyourou/p/11877269.html