본문 바로가기
Programming/기본기

메모리 구조 Code, Data, Stack, Heap

by Teshub 2021. 2. 7.

이번 포스팅은 메모리의 구조에 관한 포스팅입니다

www.tcpschool.com/php/intro과 기타 다른 문서를 참고하여 작성하였습니다

 

프로그램이 실행되기 위해서는 메모리에 로드(load)되어야 합니다

프로그램이 사용하는 변수들을 저장할 메모리도 필요합니다

 

프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은

1. 코드(code)

2. 데이터(data)

3. 스택(stack)

4. 힙(heap)

입니다

 

코드(code) 영역

메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다

cpu는 코드영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.

프로그램이 종료될때까지 계속 유지되는 영역입니다

 

 

데이터(data) 영역

메모리의 데이터영역은 프로그램의 전역 변수정적(static)변수가 저장되는 영역입니다.

데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

 

 

스택(stack) 영역

메모리의 스택 영역은 함수의 호출과 관계되는 지역변수매개변수가 저장되는 영역입니다 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.

이렇게 스택영역에 저장되는 함수의 호출 정보를 스택 프레임이라고 합니다

스택 영역은 푸시 동작으로 데이터를 저장하고 팝 동작으로 데이터를 인출합니다

스택은 후입선출(LIFO,Last-in First-out) 방식에 따라 동작하므로 가장 늦게 저장된 데이터가 먼저 인출됩니다.

스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다.

 

 

(heap)

메모리의 힙영역은 사용자가 직접 관리할 수 있는 메모리 영역입니다

힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.

자바에선 garbage collector가 관리를 해줍니다

728x90

'Programming > 기본기' 카테고리의 다른 글

테스트 코드의 중요성  (0) 2021.09.29
REST API  (0) 2021.02.25
알고리즘 Stack, Queue, Deque, Heap  (0) 2021.02.07
프로세스와 쓰레드의 차이  (0) 2021.02.04
프레임워크와 라이브러리의 차이  (0) 2021.01.16

댓글