Process와 Thread의 차이

김준근·2023년 5월 9일
0

Process(작업)는 어떤 관리의 단위

- 관리의 주체는 운영체제(OS)가 한다.

Process

기본적으로 연산할 것들을 의미한다.
연산은 연속적으로 처리하게 되는데 이것이 하나의 흐름(Context) 라고 부른다.
또한 프로세스가 여러 개라면 -> Multi-tasking 이라고 한다.

Thread

프로세스에서 생선된 흐름 자체를 의미한다.
이 흐름이 한 개가 아니라 N개가 된다면? Multi-threading 이라고 한다.
이 N개의 흐름은 동시에 각자 실행된다.
그래서 연산의 경우 Thread 단위로 실행된다.

하나의 프로세스가 존재한다면, 반드시 하나 이상의 Thread가 존재한다.

운영체제(OS)는 Virtual Memory(가상 메모리 : 제한된 공간)를 Process에게 할당한다.
따라서 Process에 속한 모든 Thread는 Process의 Virtual Memory로 공간이 제약된다.

프로세스 안에 Thread가 N개가 있는 경우 Multi-threading이 일어나게 되는데, 이 때는 동시성 이슈 + 동기화 이슈가 나오게 된다.

쉬운 예로 설명하면 아래와 같다.
Process를 하나의 가구로 생각해보자.
1. 한 가구에는 집이 있다.
2. 집에는 가족들(세대원)이 존재한다.
3. 가족들(세대원)은 각자의 방이 있고, 함꼐 사용하는 거실, 화장실이 있다.

  • 집(Virtual Memory) : 공용 공간
  • 각 세대원 (Thread)
  • 각 세대원의 방 (Thread Local Storage - Stack 영역) : 각 Thread에 제공된 저장공간
  • 거실, 주방, 화장실 (Heap 영역) : 공용으로 사용하는 저장공간
profile
떠돌이 개발자

0개의 댓글