Today I Learned

프로세스(Process)와 쓰레드(Thread)

진추 2021. 3. 10. 20:56

프로그램

  • 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음
  • 어떤 작업을 위해 실행할 수 있는 파일

 

프로세스

  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램(음악 재생 프로그램, 문서 작성 프로그램 등)
  • 프로그램을 구동하여 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭
  • 운영체제로부터 시스템의 자원을 할당받는 작업의 단위
  • 운영체제 위에서 독립적으로 실행되고 있는 프로그램
  • Code, Data, Stack, Heap 으로 구성된다

 

프로세스의 구성

  • Code: 프로그램을 실행하기 위해 작성된 코드
  • Stack: 프로세스 안에서 함수들의 실행 순서에 대한 정보를 저장
  • Heap: 동적으로 할당된 변수들을 저장
  • Data: 전역 변수, 스태틱 변수들을 저장

 

쓰레드

  • 프로세스에서 실행되는 여러 흐름의 단위 ("프로세스 안에서 동작하는 일꾼들")
  • 한 프로세스 안에서 여러 개의 쓰레드를 실행할 수 있다
  • 쓰레드는 각각 할 일을 배정받아 각자의 작업을 수행한다
  • 쓰레드마다 각자의 일을 수행하기 위해 각자의 Stack이 할당된다
  • 쓰레드들은 프로세스에 지정된 Code, Data, Heap에 공통적으로 접근할 수 있다

 

두 개의 스레드를 실행하고 있는 하나의 프로세스. (출처 : 위키백과)