토픽 111 / 111·코드 실행 체계 (Code Execution Model)
메모리 4영역 (Code/Data/Heap/Stack)
메모리 4영역 (Code/Data/Heap/Stack)
프로세스 실행 시 운영체제가 할당하는 가상 메모리 공간을 용도별로 구분한 4개 논리적 영역으로, 코드·데이터·힙·스택으로 구성
특징: 프로세스별 독립 주소 공간, 영역별 접근 권한 분리(R/W/X), 힙은 위로 성장, 스택은 아래로 성장
4개 영역
- •코드(Code/Text) 영역: 실행할 기계어 명령어 저장, 읽기 전용(Read+Execute), 컴파일 시 결정, 공유 가능
- •데이터(Data) 영역: 전역변수·정적변수 저장, 프로그램 시작 시 할당~종료 시 해제, 초기화(.data)/미초기화(.bss) 구분
- •힙(Heap) 영역: 동적 메모리 할당(malloc/new), 런타임 시 크기 결정, 낮은 주소→높은 주소 성장, 프로그래머가 관리(또는 GC)
- •스택(Stack) 영역: 지역변수·매개변수·복귀주소 저장, 함수 호출 시 할당/반환 시 해제, 높은 주소→낮은 주소 성장, LIFO
비교
- •코드(RX/고정/명령어) vs 데이터(RW/고정/전역·정적변수)
- •힙(RW/동적/개발자관리/느림) vs 스택(RW/자동/컴파일러관리/빠름)
오버플로우
- •스택 오버플로우: 재귀 과다·큰 지역변수로 스택 한계 초과, Segmentation Fault 발생
- •힙 오버플로우: 할당 버퍼 크기 초과 쓰기, 메모리 손상·보안 취약점(버퍼 오버플로우 공격)
연관: 가상 메모리, 프로세스 메모리 모델, 버퍼 오버플로우, GC, 메모리 누수