프로세스 vs 스레드

newVelog·2024년 4월 10일
0

CS

목록 보기
9/31

프로세스

컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.

특징

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

  • Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
  • Data : 전역변수, 정적변수, 배열 등
    • 초기화 된 데이터는 data 영역에 저장
    • 초기화 되지 않은 데이터는 BSS(block started by symbol) 영역에 저장
      해당 내용은 아래 참고글에 더 자세히 나와있다.
  • Heap : 동적 할당 시 사용 (new(), malloc() 등)
  • Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

스레드

프로세스 내 작업의 흐름을 지칭한다.

특징

스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유

  • Stack 영역만 따로 할당 받는 이유
    • 스레드는 독립적인 동작을 수행하기 위해 존재 한다.
    • 즉, 독립적으로 함수를 호출 할 수 있어야 한다.
    • 때문에 함수의 매개변수, 지역변수 등을 저장하는 스택 메모리 영역은 독립적으로 할당 받아야 한다.

하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성

프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해,
스레드는 다른 스레드와 공간, 자원을 공유하면서 사용하는 차이가 존재함

참고 : https://dev-game-standalone.tistory.com/71
출처 : https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Process%20vs%20Thread.md

0개의 댓글