운영체제

프로세스 메모리 구조

2025-07-18 00:40


프로세스 메모리 구조

시작하기

우리가 매일 사용하는 컴퓨터와 스마트폰에서 수많은 프로그램이 동시에 실행되고 있다. 프로그램, 즉 프로세스들은 대체 어떻게 메모리를 사용하여 동작하는 걸까? 뇌가 정보를 저장하고 처리하는 방식처럼, 프로세스 또한 자신만의 규칙적인 메모리 공간을 가지고 효율적으로 작동하고 있다.

하나의 프로세스가 운영체제로부터 할당받아 사용하는 메모리 공간은 단순히 한 덩어리가 아니라, 목적과 특성에 따라 여러 개의 구역으로 나뉘는데, 이러한 구역을 메모리 세그먼트(Segment) 라고 부르고 대표적으로 다음과 같은 영역들로 나뉘어진다.

프로세스 메모리 구조 (Text / Data / BSS / Heap / Stack)

TEXT 섹션 (코드)

Data 영역

BSS 영역 (Block Started by Symbol)

Heap 영역

Stack 영역

  void foo() {
      int local = 0; // Stack 영역
  }

Stack Overflow가 생길 수 있는 경우

스택의 크기가 초과되면 발생한다!

V8 엔진 메모리 구조 Resident Set

힙(Heap) vs 스택(Stack) 의 차이

항목스택 (Stack)힙 (Heap)
📌 메모리 할당 방식컴파일러가 자동으로 할당/해제개발자가 직접 할당/해제
📦 저장 대상함수 호출 정보, 지역 변수동적으로 생성된 객체, 배열 등
🔄 구조LIFO (Last-In, First-Out)자유롭게 할당 및 해제
🧠 메모리 위치낮은 주소부터 위로 쌓임높은 주소부터 아래로 확장
⏱️ 속도빠름 (고정적, 구조적)느림 (단편화, GC 필요)
🛠️ 관리시스템/OS가 관리개발자 or GC(V8 등)이 관리
⚠️ 문제 사례Stack Overflow (재귀 깊을 때)Memory Leak (할당 후 해제 안함)
예시 코드 (C 기준)int x = 10; → 스택에 저장int* p = malloc(sizeof(int)); → 힙에 저장

요약하기




 프로세스  OS  Computer Science  메모리구조