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

ssssm·2023년 2월 24일
post-thumbnail

📌process와 thread의 차이점

🎯목표

  • 프로세스와 스레드의 개념을 설명할 수 있다.
  • 프로세스와 스레드(Process vs Thread)의 차이를 이해할 수 있다.

프로세스(Process)란?

  • 컴퓨터의 운영체제 위에서 독립적으로 메모리에서 실행되고 있는 프로그램
  • 운영체제로부터 자원을 할당받은 작업의 단위.

✨특징

  • 각각의 프로세스는 독립된 메모리 영역(자원)을 할당 받음
  • 프로세스당 최소 1개의 스레드를 가지고 있음
  • 다른 Process의 변수나 자료구조에 접근할 수 없으며, 다른 Process에 접근 하려면 프로세스간의 통신을 사용해야 한다. ex) 파이프, 파일, 소켓

프로세스 한줄 요약

저장 장치에 저장되어 있지만 메모리에 올라가 있지 않은 정적인 상태인 프로그램이 실행한 순간 메모리에 올라가게 되고, 동적인 상태이며 이 상태를 프로세스라고 한다.


메모리 영역 (Code, Stack, Heap, Data)

  • Code : 프로그램을 실행하기 위한 코드를 저장하는 영역
  • Stack : Process안에서 함수들이 어떤 순서대로 실행되고, 호출이 끝난 함수 복귀 주소를 저장하는 영역
  • Heap : 오브젝트 또는 데이터들이 저장되는 영역
  • Data : 전역 변수 or 정적(static) 변수가 저장되는 영역

스레드(Thread)란?

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.

✨특징

  • 스레드는 프로세스내에서 Stack만 할당받고 Code, Data, Heap 영역은 공유한다.
  • 스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것이다.

스레드 한줄 요약

스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로다.


그렇다면 프로세스(Process)와 스레드(Thread)의 차이점은?

프로세스는 메모리에 올라갈 때 운영체제로부터 시스템 자원을 할당받는다. 이때 프로세스마다 각각 독립된 메모리 영역에 할당해 주게 되고 다른 프로세스의 변수 or 자료에 접근할 수 없다.

하지만 스레드는 프로세스가 할당받은 메모리 영역 내에서 Stack은 따로 할당받고, Data, Heap, Codes는 다른 스레드와 할당된 메모리 영역을 공유한다.

그래서!!!

한 프로세스를 실행하다 오류가 발생해서 강제 종료된다면 다른 프로세스에 영향을 주지 않지만, 스레드는 Stack을 제외한 다른 메모리 영역을 공유하기 때문에 어떤 스레드에서 오류가 발생한다면 같은 프로세스 내의 다른 스레드 모두 강제 종료된다.

0개의 댓글