Skip to content

Latest commit

 

History

History
31 lines (21 loc) · 1.67 KB

processvsthread.md

File metadata and controls

31 lines (21 loc) · 1.67 KB

프로세스 vs 스레드

프로세스(Process)란?

image

메모리에 올라와 실행되고 있는 프로그램의 인스턴스
= 운영체제로부터 시스템 자원을 할당받는 작업의 단위
즉, 동적인 개념으로는 실행된 프로그램을 의미한다.

프로세스는 각각 별도의 독립적인 주소공간 할당

  • Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)

  • Data : 전역변수, 정적변수, 배열 등

    • 초기화 된 데이터는 data 영역에 저장
    • 초기화 되지 않은 데이터는 bss 영역에 저장
  • Heap : 동적 할당 시 사용 (new(), malloc() 등)

  • Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

스레드(Thread)란?

image

프로세스 내부에서 실행되는 작은 작업 단위
스케쥴러가 독립적으로 관리할 수 있는 프로그래밍 된 명령의 소규모 시퀀스이다.
스레드는 프로세스의 실행 흐름을 구성하는 단위로, 하나의 프로세스 내부에 여러개의 스레드 포함 가능

  • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유
  • 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유 (그러나 다른 프로세스의 메모리에 직접 접근 불가)
  • 한 스레드가 프로세스 자원을 변경 -> 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 조회 가능