본문 바로가기

TIL

TIL#69(프로세스와 쓰레드)

오늘 한일
  • 프로세스(Process)
    1. 정의 : 프로세스는 실행 중인 프로그램의 인스턴스이다. 운영 체제는 각 프로세스를 독립된 메모리 공간에서 실행하며, 프로세스는 CPU, 메모리, 파일 핸들, 네트워크 연결 등의 자원을 소유한다.
    2. 특징
    - 독립된 메모리 공간 : 각 프로세스는 운영 체제로부터 고유한 메모리 공간(주소 공간)을 할당받는다. 다른 프로세스의 메모리에 직접 접근할 수 없다.
    - 자원 관리 : 프로세스는 파일, 네트워크 연결 등 여러 자원을 소유하며 운영 체제는 이러한 자원을 각 프로세스에 대해 관리한다.
    - 오버헤드 : 새로운 프로세스를 생성하는 데는 많은 자원이 필요하며 프로세스 간의 통신(예: IPC, Inter-Process Communication)도 상대적으로 복잡하다.

 

  • 쓰레드(Thread)
    1. 정의 : 쓰레드는 프로세스 내에서 실행되는 더 작은 실행 단위이다. 프로세스의 코드, 데이터, 힙(Heap) 메모리를 공유하며 각 쓰레드는 독립적인 스택(Stack)과 프로그램 카운터를 가진다.
    2. 특징
    - 공유 메모리 : 같은 프로세스 내의 모든 쓰레드는 같은 메모리 공간을 공유하므로, 데이터를 공유하고 통신하는 데 상대적으로 효율적이다.
    - 경량성 : 쓰레드는 프로세스보다 생성 및 관리가 더 가볍고 빠르다. 프로세스 내에서 여러 쓰레드를 병렬로 실행하여 멀티태스킹을 수행할 수 있다.
    - 병렬 처리 : CPU의 멀티코어 환경에서 여러 쓰레드가 병렬로 실행될 수 있어 성능을 향상시킬 수 있다.

 

  • 프로세스와 쓰레드의 차이점
  프로세스 쓰레드
메모리 공간 각 프로세스는 독립된 메모리 공간을 가진다. 같은 프로세스 내에서 메모리 공간을 공유한다.
자원 소유 프로세스는 자원을 독립적으로 소유한다. 쓰레드는 프로세스의 자원을 공유한다.
생성 오버헤드 프로세스를 생성하는 데 많은 자원이 필요하다. 쓰레드는 상대적으로 적은 자원으로 생성할 수 있다.
통신 방식 프로세스 간의 통신은 복잡하며, 주로 IPC를 사용한다. 쓰레드는 같은 메모리 공간을 사용하여 쉽게 통신할 수 있다.
안전성 한 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않는다. 한 쓰레드가 실패하면 같은 프로세스 내의 다른 쓰레드에도 영향을 줄 수 있다.
병렬성 프로세스는 독립적으로 실행되므로 병렬성이 떨어진다. 여러 쓰레드는 병렬로 실행되어 성능을 향상시킬 수 있다.

 

오늘의 TIP
  • 멀티 프로세스는 독립된 메모리 공간을 가진 프로세스들이 동시에 실행되는 방식이다. 반면, 멀티 스레드는 하나의 프로세스 내에서 여러 스레드가 메모리를 공유하며 실행되는 방식이다.