CS

프로세스와 쓰레드

yeonlee 2023. 1. 19. 11:16

 

프로세스

실행중인 프로그램, 레지스터, 스택, 포인터, 데이터의 집합체이며 자원할당의 기본단위.

  • 구성
    • CPU시간 (프로그램이 CPU 차지한 시간)
    • 주소공간 (물리적 실체에 대응하는 주소의 범위를 정의한 공간)
    • 독립된 메모리
      • stack
        • 지역변수, 매개변수 등 임시메모리 저장.
        • 함수 호출시 생성, 종료 시 반환
      • heap
        • malloc, new 등 프로그래머 동적 사용 공간
      • data
        • 전역변수, 정적변수, 배열, 구조체 등 메모리 저장. 프로세스 종료까지 유지
      • code
        • 작성한 코드 저장. 프로세스 종료까지 유지
  • 특징
    • 프로세스 당 최소 1개 스레드 사용
    • 별도 주소공간에서 실행
    • 프로세스간 변수는 기본적으로 접근 불가하며 통신을 통해 접근해야함

 

스레드

프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스가 할당받은 자원을 공유받음. 

 

프로세스는 자원을 할당받는 단위인 반면 스레드는 할당받은 자원을 사용하는 실행의 단위.

 

  • 특징
    • 스택만 따로 할당받고 code, date, heap 공유
    • 기본적으로 process당 1개이나 pthread_create 등으로 직접 만들어 사용 가능