プロセスとスレッド


📌 けいかく

  • プロジェクトは、ある仕事をするためにしなければならないことを順番にリストしています.
  • 任意の操作に使用できる「静的」ファイル(ex.exeファイル)
  • は、プログラム言語を使用して手順を正しく実行する命令セット/補助メモリに格納され、目的の処理を行う.
  • 👉 実行する前に、コード実装のファイルにすぎません.使用するには、セカンダリメモリで処理する材料をメモリに置く必要があります.

    📌 プロセス

  • プログラムが実行中です.
  • コンピュータ上で連続的に実行される「動的」コンピュータプログラム.

  • 👉 (ctrl+alt+delete)の「タスク管理」ウィンドウに表示される内容!

    コンピュータ、プロセス

  • プロセスは、オペレーティングシステムがメモリなどの必要なリソースを割り当てる「実行中のプログラム」です.
  • オペレーティングシステムは、システムリソースの作業単位を割り当てる.
  • メモリで実行されるプログラムの例.
  • 프로그램을 실행하면 -> 운영체제로부터 실행에 필요한 자원을 할당 받음 -> 프로세스

    プロセスフィーチャー

  • 独立したメモリ領域を割り当てます.
  • 1)コード:コード自体を構成するメモリ領域(プログラムコマンド)
    2)データ:グローバル変数、静的変数、配列など(初期化されたデータ)
    3)stack:領域変数、パラメータ、戻り値(一時メモリ領域)
    4)Heap:動的割当て用(new()、mallock()等)

  • このプロセス情報を含むPCBブロックは、プロセス作成時に一緒に作成される.


  • 各プロセスは独立したアドレス空間で実行され、互いに独立したメモリ空間を持っているため、互いのメモリ空間を共有することはできません.つまり、他のプロセスの変数やデータ構造にアクセスできません.

  • 他のプロセスのリソースにアクセスするには、プロセス間通信(IPC)を使用する必要があります.

  • プロセスには少なくとも1つのスレッドが含まれています.
  • 📌 ハンドラ


    🔍 プロセッサ:コンピュータ内でプログラムを実行するハードウェアユニット.これは中央プロセッサ(CPU)を指し、命令を解釈するコンピュータの一部である.
    以前、パソコンは一度に1つの動作しか実行していませんでした.マルチタスク処理機能が登場するにつれて、コンピュータは複数のプロセスを同時に処理できます.
    複数のプロセスを同時に処理するタスクは、同時、並列、または両方の混合であってもよい.
    🔍 Context Switching:プロセッサは一度に1つのプロセスしか実行できませんでした.
    AプロセスはBプロセスを上昇させるには、先に上昇してから降下しなければならないが、Aプロセスは再びBプロセスを上昇させなければならない.(重複性が増加するとCPU負担が増加し、重複するリソース管理効率が低下する.)

    プロセスの同期性と並列性


    1)同期(Concurrency)
    同時性は、1つのプロセッサが1、2、3、4つのプログラムを順番に実行する一部です.この過程が極めて速い速度で動くにつれて、人々にとって、これらの過程は同時に行われているようだ.
    2)並列性
    並列性は、1つのプロセッサに複数のコアがあり、各プロセッサが同時に動作する方法です.これは、デュアルコア、クアッドコア、8コアなどの名前のプロセッサを備えたコンピュータ上で行われる方法です.つまり、複数のコアに仕事を分担させるということです.
    1つのプロセスで複数のタスクが同時に実行されます.
    ブラウザが実行中の場合
    1)ファイルのダウンロード
    2)ネットサーフィン
    3)歌を聴くなどの仕事をすることもある.
    これらの様々な作業によって生じる分岐は、ねじ(Thread)と呼ばれる.

    📌 ねじ(Thread)

  • スレッド(Thread)
    -プロセスによって割り当てられたリソースの実行単位を使用します.
    -プロセスの特定の実行パス
    -プロセスで実行される複数のストリームの単位.
  • ねじフィーチャー


  • 各スレッドには独立したスタックメモリがあります.
  • スレッドは、プロセス内でスタックのみを割り当て、コード、データ、およびHeap領域を共有します.
  • スレッドは、同じプロセス内でプロセス内のアドレス空間またはリソースを共有および実行する1つのプロセス内で実行される複数の実行ストリームです.
  • 各スレッドには個別のレジスタとスタックがありますが、Hipメモリは互いに読み書きできます.
  • スレッドがプロセスリソースを変更した場合、他の隣接スレッド(兄弟スレッド)にも変更結果がすぐに表示されます.
  • スレッドはメモリを共有するため、同期、デッドロックなどの問題が発生する可能性があります.
  • スレッドは、POSIXスレッド、Windowsスレッド、Javaスレッドを含む多くの現代オペレーティングシステムによってサポートされています.
  • 🔍 다른 자원은 공유하지만 굳이 스택만 분리해서 사용하는 이유!
     - LIFO (Last In First Out) 후입 선출이라는 스택의 특성과 연관이 있다.
     - 코드와 데이터 힙 영역을 공유하는 것에는 큰 문제가 없음
     - 그러나 스택 영역은 스택이 쌓이면 위에서부터 프로세스가 섞인 채로 순서대로 나오게 되므로
     더 복잡해지기 때문에 원할한 실행 흐름을 위해 스택은 따로 독립적으로 존재하게 된다.

    📌 プロセスとスレッド!


    プロセスとスレッドの関係

  • プロセスはスレッドのコンテナです.トピックの情報が含まれています.
  • プロセスとスレッドの違い


    各タスクにはオペレーティングシステムからリソースを割り当てる負担がありますが、マルチスレッドを使用すると、システムプロトコルを1回実行するだけで効率が高くなります.また、IPC方式に比べてスレッド間の通信はそれほど複雑ではなく、システムリソースの使用が少ないため、通信負担を軽減することができる.

    Reference!


    https://velog.io/@gparkkii/ProgramProcessThread
    https://devuna.tistory.com/21
    https://www.youtube.com/watch?v=1grtWKqTn50
    https://www.youtube.com/watch?v=iks_Xb9DtTM