프로세스의 메모리 주소 공간
코드
데이터
힙
스택
현대의 모든 운영체제는 가상 메모리 기반으로 동작함
각 프로세스는 독립적인 가상 메모리의 주소 공간을 갖는다.
- 프로세스는 자신만 메모리를 독점하고 있다고 생각
코드
- 실행할 프로그램의 코드가 저장
- 프로그램 시작부터 끝까지 메모리에 남아있음
데이터
초기화 된 데이터
- 전역변수, 정적(static)변수, 소스코드 상의 문자열
- 실행파일에 데이터를 기록해야함
- 실행 파일의 크기가 크다.
초기화 되지 않은 데이터 (BSS-Block Started by Symbol)
- 초기화 없이 해당 데이터의 사이즈만 기억함
- 해당 부분을 실행 할 때 할당 받으면서 0으로 초기화함
- 실행 파일의 크기가 작다.
힙 (Heap)
- 동적으로 할당한 메모리를 저장
- 개발자가 관리하는 메모리 영역 (할당 해제 안하면 memory leak)
- 런타임에 크기가 정해짐
- 위에서부터 채워짐
스택 (Stack)
- 함수 내의 지역변수, 매개변수, 리턴값, 함수 복귀 주소 등 로컬 값을 저장
- 컴파일타임에 크기가 정해
- 함수, 메서드 마다 쭉 쌓임
- 아래에서부터 채워짐
'Programming' 카테고리의 다른 글
Effective Java 2/E, 이펙티브 자바 책 핵심요약 (0) | 2021.12.28 |
---|---|
Linux 명령어: find (0) | 2021.12.22 |
Spring Security 5 OAuth 정리 (클라에서 서버까지) (0) | 2021.12.17 |
Oracle to MySQL 변환 시 고려사항 (RDBMS) (0) | 2021.12.15 |
[LeetCode] 1742. Maximum Number of Balls in a Box (TDD, 코테, 릿코드, tech interview) (0) | 2021.12.11 |