プロセス、スレッド(単一スレッド、マルチスレッド)(feat.スレッド、プロセス内部の実行フロー)
プログラム
特定のタスクを実行するためのコマンドのセット.
プロセス
実行中のプログラム.
メモリで実行されるプログラム内のオブジェクト.
コマンドを上に移動する領域こまんどを上に移動するりょういき:コード領域こーどりょういき
グローバル変数;静的変数が割り当てられている領域:データ領域
関数パラメータ;領域変数を割り当てる領域:Stack領域
動的に割り当てられた領域(実行時にサイズを決定):Heap領域
ねじ山
プロセスで割り当てられたリソースを使用する実行フローの単位.
プロセスメモリ
スレッドメモリ
ねじ山
プロセス内の複数の実行フロー
シングルスレッド
リソースの同期を考慮する必要はありません
マルチスレッドの場合、スタックとレジスタは別々ですが、リソースは共有されます.これは、リソースの同期を常に考慮する必要があります.ただし,単一スレッドでは,リソースの同期を全く考慮する必要はない.
コンテキストの切り替えなし
CPUが1つのタスクを実行する場合、実行から別のタスクへの変換中に、既存のタスクのステータスと登録値に関する情報(コンテキスト)を格納し、新しいタスクの情報(コンテキスト)で置き換える操作を指す.
このときTask(プロセスまたはスレッド)の情報はレジスタに格納され、PCBによって管理される**
CPUコアが十分に利用されていない
単一スレッドでは1つの物理カーネルしか使用できず、マルチコアマシンでCPUの使用を最適化することはできません.
マルチスレッド
同時処理可能
聞きたい音楽リストがあります.単一スレッドの場合は、最初の音楽をダウンロードして音楽を実行し、その音楽の実行が終了した後に2番目の音楽をダウンロードできます.
しかし、マルチスレッドを使用する場合は、まず最初の音楽をダウンロードし、最初の音楽を再生し、同時に2番目の音楽を事前にダウンロードすることができます.これにより、同時に処理したいことがある場合は、スレッドを使用することができます.
CPUをフル活用
単一スレッドとは異なり、マルチCPU構造では、各スレッドを異なるプロセッサ上で並列に実行することができる.
コンテキストの切り替えは、高速プロセスよりも高速で低コストです.
どうきもんだい
複数のスレッドから共有リソースにアクセスして別のスレッドで使用している場合、値の取得時に同期の問題が発生する可能性があります.
プロセスとスレッドの重要な違い
プロセスエラーが発生したためにプロセスが終了した場合、特別な場合を除き、他のプロセスは影響を受けません.ただし、スレッドの場合、1つのスレッドにエラーが発生すると、プロセス内の他のすべてのスレッドが強制的に終了します.
特定のタスクを実行するためのコマンドのセット.
プロセス
実行中のプログラム.
メモリで実行されるプログラム内のオブジェクト.
コマンドを上に移動する領域こまんどを上に移動するりょういき:コード領域こーどりょういき
グローバル変数;静的変数が割り当てられている領域:データ領域
関数パラメータ;領域変数を割り当てる領域:Stack領域
動的に割り当てられた領域(実行時にサイズを決定):Heap領域
ねじ山
プロセスで割り当てられたリソースを使用する実行フローの単位.
プロセスメモリ
운영체제는 프로세스마다 각각 독립된 Code, Data, Stack, Heap 영역으로 메모리를 할당. 각각 독립적으로 할당되기 때문에 서로 공유되지 않음.
スレッドメモリ
스레드는 각각 Stack영역은 따로 할당받고 나머지 영역은 공유.
ねじ山
プロセス内の複数の実行フロー
シングルスレッド
싱글 스레드
:プロセスは単一スレッドで動作します.スタックで表されるレジスタ.最も代表的なjavascriptは単一スレッド言語です.(正確にはjavascriptは単一スレッドですが、javascriptの実行時は単一スレッドではありません!)長所
リソースの同期を考慮する必要はありません
マルチスレッドの場合、スタックとレジスタは別々ですが、リソースは共有されます.これは、リソースの同期を常に考慮する必要があります.ただし,単一スレッドでは,リソースの同期を全く考慮する必要はない.
コンテキストの切り替えなし
단일 스레드로 동작하기 때문에 문맥을 교환할 필요가 전혀 없음.
**コンテキストの切り替えCPUが1つのタスクを実行する場合、実行から別のタスクへの変換中に、既存のタスクのステータスと登録値に関する情報(コンテキスト)を格納し、新しいタスクの情報(コンテキスト)で置き換える操作を指す.
このときTask(プロセスまたはスレッド)の情報はレジスタに格納され、PCBによって管理される**
短所
CPUコアが十分に利用されていない
単一スレッドでは1つの物理カーネルしか使用できず、マルチコアマシンでCPUの使用を最適化することはできません.
マルチスレッド
멀티 스레드
:2つ以上のスレッドがプロセス内でリソースを共有し、操作を実行します.各スレッドには独自のレジスタとスタックがあります長所
同時処理可能
聞きたい音楽リストがあります.単一スレッドの場合は、最初の音楽をダウンロードして音楽を実行し、その音楽の実行が終了した後に2番目の音楽をダウンロードできます.
しかし、マルチスレッドを使用する場合は、まず最初の音楽をダウンロードし、最初の音楽を再生し、同時に2番目の音楽を事前にダウンロードすることができます.これにより、同時に処理したいことがある場合は、スレッドを使用することができます.
CPUをフル活用
単一スレッドとは異なり、マルチCPU構造では、各スレッドを異なるプロセッサ上で並列に実行することができる.
コンテキストの切り替えは、高速プロセスよりも高速で低コストです.
동시에 일을 처리하기 위해서, 프로세스를 두 개 띄울 수도 있다. 예를 들어, 프로그램을 두 개 실행시키는 것이다. 이렇게 프로그램을 두개 실행시키는 것은, 스레드를 두개 실행하는 것보다 느리고, 많은 자원을 필요로 하게 된다.
레지스터와 스택만 스레드별로 각각 할당 받고, 공유자원을 공유하여 사용하기 때문에 더 빠르게 문맥교환이 가능하다. 멀티프로세스는 모두를 다 각각 할당받기 때문에 문맥교환이 느리다.
短所
どうきもんだい
複数のスレッドから共有リソースにアクセスして別のスレッドで使用している場合、値の取得時に同期の問題が発生する可能性があります.
プロセスとスレッドの重要な違い
プロセスエラーが発生したためにプロセスが終了した場合、特別な場合を除き、他のプロセスは影響を受けません.ただし、スレッドの場合、1つのスレッドにエラーが発生すると、プロセス内の他のすべてのスレッドが強制的に終了します.
Reference
この問題について(プロセス、スレッド(単一スレッド、マルチスレッド)(feat.スレッド、プロセス内部の実行フロー)), 我々は、より多くの情報をここで見つけました https://velog.io/@yeonnex/프로세스-스레드싱글스레드-멀티스레드-feat.스레드란-프로세스-내부에서의-실행흐름이다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol