공부/CS

메모리 구조의 개념

셩잇님 2023. 2. 11. 14:25
반응형

 

 

메모리는 크게 1. 코드 영역, 2. 데이터 영역, 3. 스택 영역, 4. 힙 영역으로 나뉘어져 있다.

 

1. 코드 영역

코드 영역은 프로그램의 컴파일된(=실행할 프로그램) 기계어 코드를 저장되는 영역이다. 일반적으로 이 영역은 읽기 전용이며, 프로세서가 실행하는 명령들을 포함시킵니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.

 

2. 데이터 영역

데이터 영역은 초기화된 데이터와, 초기화되지 않는 데이터를 포함하여 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 아울러 초기화된 데이터는 읽기 전용 섹션에 저장되고, 초기화되지 않은 데이터는 읽기-쓰기 섹션에 저장됩니다. 또한 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

 

3. 스택 영역

스택 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다.

 

스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다. 이러한 스택은 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다. 또한 스택 영역은 크기가 제한되어 있으며, 운영체제에서 관리하기 때문에 임시 데이터를 빠르게 저장하고 접근할 수 있습니다. 또 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다. 

 

4. 힙 영역

힙 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다. 이로인해 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다. 또한 저장된 함수 호출 또는 로컬 변수보다 더 오랜 기간 동안 지속되는 개체 및 데이터 구조에 대한 메모리를 할당하는 데 사용됩니다.

 

힙 영역은 스택보다 용량이 훨씬 크지만, 힙의 존재하는 데이터에 접근하는 것이 스택의 데이터에 접근하는 것 보다 느립니다. 아울러 스택과 반대로 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.

 

 

 

반응형