프로세스와 스레드

프로세스메모리 상에서 실행중인 작업의 단위, 즉 실행중인 프로그램을 말하며,스레드프로세스 안에서 실행되는 여러 흐름 단위를 말한다. 즉 스레드는 프로세스 안에 포함되며 프로세스는 최소 1개의 스레드를 보유한다.

주소공간에 따른 프로세스와 스레드의 차이

프로세스와 스레드의 주소공간

  • code: 코드 자체를 구성하는 메모리 영역
  • data: 전역변수, 정적변수, 배열 등
  • heap: 동적 할당에 사용
  • stack: 지역변수, 매개변수, 리턴 값(임시 메모리 영역)
    프로세스는 각각 별도의 주소공간을 할당 받지만 스레드는 stack만 할당 받고 나머지 영역은 공유한다.

즉, 프로세스는 자신만의 고유한 공간과 자원을 할당받아 사용하는 반면에, 스레드는 다른 스레드들과 공간, 자원을 공유하면서 사용한다.

멀티 프로세스와 멀티 스레드 차이

  1. 멀티 프로세스: 하나 이상의 프로세스들을 병렬 처리

    1. 장점: 안정성(메모리 침범 문제 x, 독자 공간을 가지기 때문)
    2. 단점: 각각 독립된 메모리 영역을 가지고 있어, 작업량이 많을 수록 오버헤드, *context switch로 인한 성능저하 발생

    *context switch: 하나의 프로세스가 cpu를 사용중인 상태에서 다른 프로세스가 cpu를 사용하기 위해 이전 프로세스 상태를 저장하고 새로운 프로세스의 상태를 적재하는 작업

  2. 멀티 스레드: 하나의 응용프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
    1. 장점: 공유 메모리만큼 시간 및 자원 손실 감소, 응답성과 자원 효율 증가
    2. 단점: 안전성(하나의 스레드가 데이터 공간을 망가트리면 모든 스레드 불능)

참고 자료

tech-interview-for-developer/Process vs Thread

Process와 Thread 이야기

profile
시야를 넓히자

0개의 댓글