프로세스와 스레드의 차이

개비의 끄적끄적·2023년 3월 30일
0

🧩 프로세스와 스레드의 차이점

💡 프로세스
- 메모리 상에서 실행중인 프로그램의 독립적 개체
- 운영체제로부터 자신만의 고유 공간과 자원을 할당 받아 사용(작업 단위)



💡 스레드
- 프로세스 안에서 실행되는 세부 실행(흐름) 단위
- 다른 스레드와 공간과 자원을 공유하며 사용

  • 프로세스는 최소 하나의 스레드를 보유하고 있으며 각각 별도의 주소 공간을 독립적으로 할당 받음.

  • 운영체제가 프로세스에게 Code/Data/Stack/Heap 메모리 영역을 할당해주고 최소 작업 단위로 삼는다면, 스레드는 프로세스 내애세 Stack 메모리 영역을 '제외'한 다른 메모리 영역을 같은 프로세스 내에서 다른 스레드와 공유한다.
    - Code 영역(프로그래머가 작성한 프로그램이 저장되는 영역)
    - Data 영역(코드가 실행되면서 사용한 환경이나 파일들의 각종 데이터들이 모여 있는 영역)
    - Stack 영역(호출한 함수가 종료되면 되돌아올 메모리의 주소나 지역 변수 등이 저장되는 영역)
    - Heap 영역(동적으로 할당되는 데이터를 위해 존재)

💡 멀티 프로세스
- 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것

  • 특징
    - 여러 개의 자식 프로세스 중 하나의 프로세스에 문제가 발생해도 다른 프로세스에는 영향을 끼치지 않는다.

💡 멀티 스레드
- 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것

  • 특징
    - 자원을 효율적으로 관리할 수 있다.
    - 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들면서 처리 비용이 감소한다.
    - Stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적어 프로그램 응답 시간 단축이 가능!

🔎 멀티 프로세스 대신, 멀티 스레드를 사용하는 이유는 왜지뭐지?

      ▶ 프로그램을 여러 개 켜는 것보다 하나의 프로그램을 켜서 그 안에서 여러 작업을 해결하는 것으로 설명 가능한데, 
                          위에 적은 멀티 스레드의 특징이 바로 그 이유가 된다.

📢 참고
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

profile
앗녕하세요! 블비의 개적발적🐾

0개의 댓글