프로세스 ( Process ) 란?


  • 실행 중인 프로그램을 의미하고 OS로부터 시스템 자원을 할당받는 작업의 단위입니다.

  • 프로세스는 1개 이상의 쓰레드를 가지고 있습니다.




쓰레드 ( Thread ) 란?


  • 프로세스의 메모리 공간을 사용하며, OS의 스케줄링 대상이 되어 퀀텀 타임을 할당받아 CPU에서 실행될 수 있는 단위를 말합니다.




프로세스의 메모리 구조



Code ( Text ) Segment

  • 코드 영역 또는 텍스트 영역이라고도 부릅니다. 해당 영역은 프로그래머가 작성한 명령어가 저장되고 읽기만 가능한 공간입니다.




.rodata Segment

  • 상수 데이터가 저장된 공간이며 읽기만 가능합니다.




Data Segment

  • 초기화된 전역 변수 데이터가 저장된 공간입니다.




BSS ( Block Started by Symbol ) Segment

  • 초기화되지 않은 전역 변수 데이터가 저장된 공간입니다.




Heap

  • 프로그래머가 직접 메모리를 할당하고 반환할 수 있는 공간이며 낮은 주소에서 높은 주소로 할당됩니다.




Stack

  • 지역 변수, 매개 변수, 콜 스택과 같이 데이터를 일시적으로 저장하는 공간이며 높은 주소에서 낮은 주소로 할당됩니다.

  • 스택의 기본 최대 크기는 1MB 입니다.




쓰레드와 프로세스와의 관계



  • 프로세스는 위와 같이 프로세스의 메모리 일부를 스택영역으로 사용하여 실행됩니다.

  • 프로세스는 독립적인 메모리 공간을 가지고 있으며 프로세스 내부에 있는 모든 쓰레드들은 해당 메모리 영역에 있는 모든 데이터에 접근할 수 있습니다.

+ Recent posts