프로세스

itonse·2023년 12월 27일
0

CS 스터디

목록 보기
17/56
post-thumbnail

1. 프로세스 구조

Stack 영역

  • 함수 호출 시 생성되는 지역 변수, 매개변수, 반환 주소 등의 임시 데이터를 저장하는 공간입니다.
  • 함수 호출과 함께 생성되고 함수가 반환되면 해제됩니다.
  • 컴파일 시점에 최대 크기가 결정되지만, 실제 사용량은 런타임에 따라 동적으로 변합니다.

Heap 영역

  • 동적으로 할당되는 데이터를 저장하는 공간입니다.
  • 사용자에 의해 동적으로 메모리가 할당됩니다.
  • 런타임 시점에 크기가 동적으로 할당되고 해제됩니다.

Data 영역

  • 전역 변수와 정적(static) 변수가 저장되는 곳입니다.
  • Data 영역의 크기는 정적이지만, 내부에 저장된 변수들의 값은 실행 중에 변할 수 있습니다.
  • 더 세분화하면 초기화된 데이터는 데이터 영역에, 초기화되지 않은 데이터는 BSS 영역에 저장됩니다.

Code 영역

  • 실행할 프로그램의 코드가 저장되는 영역입니다.
  • CPU는 이 영역의 명령어를 순차적으로 가져와 처리합니다.
  • 컴파일 시점에 크기가 결정됩니다.

프로세스 메모리 구조에서 Stack, Data, Code 영역의 메모리 크기는 컴파일 시 결정되고, Heap 영역의 메모리 크기는 런타임 시 동적으로 할당됩니다.

Stack과 Heap 영역은 동적 메모리 할당이 가능해 두영역 사이에 빈 메모리 공간이 존재하는데, 이 영역은 서로 침범할 수 있습니다.
이로 인해 스택 오버플로우(스택이 힙을 침범)나 힙 오버플로우(힙이 스택을 침범)가 발생할 수 있습니다.

💡 (참고) 스택, 힙 오버플로우

Stack Overflow: 주로 재귀 호출이 과도하게 발생하거나 지나치게 큰 지역 변수가 할당될 때 발생
Heap Overflow: 동적 메모리 할당이 과도하게 이루어져 사용 가능한 메모리 공간을 초과할 때 발생


2. 프로세스 특징

  • 프로세스는 완전히 독립적인 수행단위라서, 하나의 프로세스에서 발생한 문제는 다른 프로세스에게 영향을 주지 않습니다.
  • 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근이 불가합니다.
  • 이러한 독립성 때문에 프로세스 간 통신을 위해서는 IPC(Inter Process Communication)가 사용됩니다.




ref.
완전히 정복하는 프로세스 vs 스레드 개념

0개의 댓글