CS

[CS]프로세스의 메모리

programmer-faust 2025. 8. 27. 19:34
  • 순서
    1. 프로세스란?
    2. 프로세스 메모리 구조
    3. 프로세스 메모리의 핵심 메커니즘
    4. 프로세스 메모리의 동작
  • 프로세스란?
    1. 프로세스란 프로그램이 실행되어 운영체제에 의해 관리되는 실행 단위로, 독립적인 가상 주소 공간을 가짐.
    2. 프로세스가 보는 주소는 물리 메모리와 1:1이 아니라 페이지 단위로 매핑되어 있고, 이 매핑을 통해 프로세스마다 격리와 보호가 이뤄집니다.
    3. 큰 흐름: 로더(또는 런타임) > 세그먼트(코드. 데이터 등) 적재 > 실행 중에 동적 할당.매핑 > 페이지 폴트/스왑/캐시 관리
  • 프로세스 메모리 구조
    1. 낮은주소에서 높은주소 순으로 코드, 데이터, 힙, 스택 네 부분으로 나뉘며, 실행 중 확장/축소됨
    2. 코드(code) 영역
      • 실행할 프로그램의 기계어 명령어 저장
      • 보통 읽기 전용(Read-only임)이며 실행 권한이 있음.
      • 함수 정의, 제어 흐름, 명령어 등이 여기 들어감
      • 여러 프로세스가 같은 프로그램을 실행하면 해당 코드 영역은 공유 가능함
    3. 데이터(data) 영역
      • 전역 변수, static 변수 저장
      • 초기값이 있으면 .data, 초기 값이 없으면 .bss로 구분되지만, 보통 묶어서 데이터 영역이라고 부름
      • 실행 중에 값이 바뀔 수 있음(읽기/쓰기 가능)
    4. 스택(stack) 영역
      • 함수 호출 시 생성되는지역 변수, 매개변수, 리턴 주소 저장
      • 함수가 끝나면 자동으로 해제됨
      • 보통 아래쪽 방향으로 감소하면서 확장됨(힙과 반대 방향임)
      • 너무 깊은 함수 호출이나 큰 지역 배열 사용 시 스택 오버플로우 발생
    5. 힙(heap) 영역
      • 프로그램 실행 중 동적 할당되는 메모리(malloc, new 등) 저장
      • 런타임에 크기가 유동적으로 변환
      • 일반적으로 주소가 위쪽 방향으로 증가하면서 확장됨
      • 사용자가 (free, delete로)직접 해제하지 않으면 메모리 누수가 발생함
  • 프로세스 메모리의 핵심 메커니즘
    1. 가상 메모리: 프로세스는 가상 주소를 보고, CPU와 OS가 페이지 테이블로 물리 프레임에 매핑. > 주소 공간 격리와 메모리 보호 제공
    2. 페이지와 페이지 테이블: 보통 4KB페이지, 다단계 페이지테이블
    3. TLB: 주소 변환 캐시 > 성능에 영항
    4. 페이지 폴트: 접근한 페이지가 물리에 없으면 커널이 파일/스왑에서 로드하거나 오류 처리
    5. 스왑: 메모리 부족 시 디스크로 비활성 페이지를 내보냄(성능 저하 요인임)
    6. Copy-On-Write: fork()시 부모.자식이 페이지를 공유하고, 쓰기 시점에 복사함(효율적임)
    7. 동적 링킹/로더: 실행 시 공유 라이브러리 매핑 및 심볼 바인딩(즉시/지연)
  • 프로세스 메모리의 동작
    1. 프로세스가 실행될 때 OS가 프로그램을 메모리에 적재하고, 코드/데이터/스택/힙을 준비한 뒤 main()부터 실행함..

'CS' 카테고리의 다른 글

[CS] 프로세스와 스레드  (2) 2025.08.28
[CS]메모리 단편화  (1) 2025.08.28
[CS]빌드 프로세스  (0) 2025.08.27
[CS] CPU와 GPU  (4) 2025.08.26
[CS] 컴퓨터의 메모리 구조  (4) 2025.08.22