Process와 Thread

박지훈·2022년 5월 1일
3

Back-end study

목록 보기
1/1

1. Process

  • Program : 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음
  • Process : 메모리에 올라와 실행중인 프로그램의 인스턴스. 즉, 이 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 프로세스가 된다.
  • 특징 :
    • 프로세스가 실행될 때 운영체제로부터 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 핟당받는다.
    • 기본적으로 하나의 프로세스가 생성되면 하나의 스레드가 같이 생성되는데, 이를 메인 스레드라고 부르며 스레드를 추가로 생성하지 않는 한 모든 프로그램 코드는 메인 스레드에서 실행된다.
    • 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근할 수 없으며, 접근하기 위해선 프로세스간 통신(IPC, inter-process communication)을 사용해야 한다.

2. Thread

  • 프로세스가 할당받은 자원을 이용하는 실행 단위
  • 프로세스는 최소 한 개 이상의 스레드를 갖게 된다.
  • 특징 :
    • 프로세스 내에서 각각 Stack만 따로 할당 받고 Code, Data, Heap 영역은 공유한다.
    • 한 프로세스 내에서 스레드끼리는 주소 공간이나 자원들을 공유한다.

3. multiProcess

  • 멀티 프로세싱 : 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리.
  • 장점 : 여러 개의 자식 프로세스 중 하나에 문제가 발생하면, 다른 프로세스에 영향이 확산되지 않는다.
  • 단점 : 각각의 독립된 메모리 영역을 할당받았기 때문에 시스템 자원을 많이 사용하고 프로세스들끼리의 통신이 어렵다.

4. multiThread

  • 멀티 쓰레딩 : 하나의 프로그램의 여러 스레드로 구성하여 각 스레드가 하나의 작업을 처리.
  • 장점 : 프로세스에 할당되는 자원이 줄어들어 자원을 효율적으로 관리할 수 있고, 프로세스 내에 있는 메모리를 공유하기 때문에 통신의 부담이 적다.
  • 단점 : 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받게 된다. 공통된 변수를 쓰기 때문에 오류의 가능성이 높아져 설계 시 주의가 더욱 필요하고, 공유 메모리의 동기화에 주의를 요한다.


출처 :

1개의 댓글

comment-user-thumbnail
2022년 5월 1일

^^7

답글 달기