Programming
프로세스의 메모리 주소 공간 (Memory address space of Process)
Ginjoe
2021. 12. 19. 20:49
프로세스의 메모리 주소 공간
코드
데이터
힙
스택
현대의 모든 운영체제는 가상 메모리 기반으로 동작함
각 프로세스는 독립적인 가상 메모리의 주소 공간을 갖는다.
- 프로세스는 자신만 메모리를 독점하고 있다고 생각
코드
- 실행할 프로그램의 코드가 저장
- 프로그램 시작부터 끝까지 메모리에 남아있음
데이터
초기화 된 데이터
- 전역변수, 정적(static)변수, 소스코드 상의 문자열
- 실행파일에 데이터를 기록해야함
- 실행 파일의 크기가 크다.
초기화 되지 않은 데이터 (BSS-Block Started by Symbol)
- 초기화 없이 해당 데이터의 사이즈만 기억함
- 해당 부분을 실행 할 때 할당 받으면서 0으로 초기화함
- 실행 파일의 크기가 작다.
힙 (Heap)
- 동적으로 할당한 메모리를 저장
- 개발자가 관리하는 메모리 영역 (할당 해제 안하면 memory leak)
- 런타임에 크기가 정해짐
- 위에서부터 채워짐
스택 (Stack)
- 함수 내의 지역변수, 매개변수, 리턴값, 함수 복귀 주소 등 로컬 값을 저장
- 컴파일타임에 크기가 정해
- 함수, 메서드 마다 쭉 쌓임
- 아래에서부터 채워짐