プロセス、スレッド(単一スレッド、マルチスレッド)(feat.スレッド、プロセス内部の実行フロー)


プログラム
特定のタスクを実行するためのコマンドのセット.
プロセス
実行中のプログラム.
メモリで実行されるプログラム内のオブジェクト.
コマンドを上に移動する領域こまんどを上に移動するりょういき:コード領域こーどりょういき
グローバル変数;静的変数が割り当てられている領域:データ領域
関数パラメータ;領域変数を割り当てる領域:Stack領域
動的に割り当てられた領域(実行時にサイズを決定):Heap領域
ねじ山
プロセスで割り当てられたリソースを使用する実行フローの単位.

  • プロセスメモリ
    운영체제는 프로세스마다 각각 독립된 Code, Data, Stack, Heap 영역으로 메모리를 할당. 각각 독립적으로 할당되기 때문에 서로 공유되지 않음.

  • スレッドメモリ
    스레드는 각각 Stack영역은 따로 할당받고 나머지 영역은 공유. 

  • ねじ山
    プロセス内の複数の実行フロー

  • シングルスレッド싱글 스레드:プロセスは単一スレッドで動作します.スタックで表されるレジスタ.最も代表的なjavascriptは単一スレッド言語です.(正確にはjavascriptは単一スレッドですが、javascriptの実行時は単一スレッドではありません!)

    長所


  • リソースの同期を考慮する必要はありません
    マルチスレッドの場合、スタックとレジスタは別々ですが、リソースは共有されます.これは、リソースの同期を常に考慮する必要があります.ただし,単一スレッドでは,リソースの同期を全く考慮する必要はない.

  • コンテキストの切り替えなし
    단일 스레드로 동작하기 때문에 문맥을 교환할 필요가 전혀 없음.
    **コンテキストの切り替え
    CPUが1つのタスクを実行する場合、実行から別のタスクへの変換中に、既存のタスクのステータスと登録値に関する情報(コンテキスト)を格納し、新しいタスクの情報(コンテキスト)で置き換える操作を指す.
    このときTask(プロセスまたはスレッド)の情報はレジスタに格納され、PCBによって管理される**

    短所



  • CPUコアが十分に利用されていない
    単一スレッドでは1つの物理カーネルしか使用できず、マルチコアマシンでCPUの使用を最適化することはできません.

  • マルチスレッド멀티 스레드:2つ以上のスレッドがプロセス内でリソースを共有し、操作を実行します.各スレッドには独自のレジスタとスタックがあります

    長所


  • 同時処理可能
    聞きたい音楽リストがあります.単一スレッドの場合は、最初の音楽をダウンロードして音楽を実行し、その音楽の実行が終了した後に2番目の音楽をダウンロードできます.
    しかし、マルチスレッドを使用する場合は、まず最初の音楽をダウンロードし、最初の音楽を再生し、同時に2番目の音楽を事前にダウンロードすることができます.これにより、同時に処理したいことがある場合は、スレッドを使用することができます.

  • CPUをフル活用
    単一スレッドとは異なり、マルチCPU構造では、各スレッドを異なるプロセッサ上で並列に実行することができる.

  • コンテキストの切り替えは、高速プロセスよりも高速で低コストです.
    동시에 일을 처리하기 위해서, 프로세스를 두 개 띄울 수도 있다. 예를 들어, 프로그램을 두 개 실행시키는 것이다. 이렇게 프로그램을 두개 실행시키는 것은, 스레드를 두개 실행하는 것보다 느리고, 많은 자원을 필요로 하게 된다.
    
    레지스터와 스택만 스레드별로 각각 할당 받고, 공유자원을 공유하여 사용하기 때문에 더 빠르게 문맥교환이 가능하다. 멀티프로세스는 모두를 다 각각 할당받기 때문에 문맥교환이 느리다.

    短所



  • どうきもんだい
    複数のスレッドから共有リソースにアクセスして別のスレッドで使用している場合、値の取得時に同期の問題が発生する可能性があります.

  • プロセスとスレッドの重要な違い
    プロセスエラーが発生したためにプロセスが終了した場合、特別な場合を除き、他のプロセスは影響を受けません.ただし、スレッドの場合、1つのスレッドにエラーが発生すると、プロセス内の他のすべてのスレッドが強制的に終了します.