질문 170 · 실전 면접 답변
프로세스 가상 주소 공간의 코드, 데이터, 힙, 스택 영역은 각각 무엇을 담나요?
이렇게 답해 보세요 (핵심 답변)
전형적인 프로세스 가상 주소 공간은 실행할 명령어를 담는 코드(Code) 영역, 전역·정적 변수를 담는 데이터 영역, 런타임 동적 할당을 위한 힙(Heap) 영역, 함수 호출 프레임을 쌓는 스택(Stack) 영역으로 설명합니다. 실제 환경에는 공유 라이브러리, 메모리 매핑(mmap) 영역과 여러 스레드의 개별 스택도 함께 존재합니다. 이들은 가상 주소 공간의 논리적 구획일 뿐이며, 실제 물리 RAM에 반드시 연속 배치되거나 고정된 방향으로만 자란다고 보장되지는 않습니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 보안과 안정성을 위해 코드 영역은 읽기·실행만 허용하고 쓰기를 막는 등 영역별로 페이지 보호 권한을 다르게 설정합니다.
- 자바스크립트나 자바 같은 관리형 언어의 런타임 객체 할당 방식은 C 언어의 단순 malloc/free 모델과 다르게 관리될 수 있습니다.
면접에서 자주 하는 실수
교과서의 4분할 주소 공간 도식을 운영체제 전체 물리 메모리의 고정 분할 구조로 오해하면 안 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 170번을 바탕으로 질문과 답변을 새로 정리했습니다.