기술면접 대비

메모리구조

닥치고개돌 2020. 10. 11. 18:37
728x90

프로그램 실행 순서

 

프로그램의 운영체제는 메모리(ram)에 메모리를 할당함

할당해주는 메모리는 총 4가지 이다 .

1. 코드(code) 영역

2. 데이터(data) 영역

3. 스택(stack) 영역

4. 힙(heap) 영역

 

코드(code) 영역

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

CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리함.

프로그램이 시작하고 끝날 때 까지 메모리에 계속 남아있는다.

 

데이터(data) 영역

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

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

 

힙(heap) 영역

메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역.

힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

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

malloc() 또는 new 연산자를 통해 할당하고 free() 또는 delete 연산자를 통해서 해제가 가능하다.

프로그램에 필요한 개체의 개수나 크기를 알 수 없거나, 너무 커서 스택에 할당 할 수 없을 때 사용하기 좋다.

단점으로는 할당, 해제, 손상, 경합으로 인한 속도저하 문제가 있고, 다중 프로세서시스템에서 힙 경합은 컨텍스트 스위칭을 야기해 리소스나 캐시데이터 손실을 일으킨다.

 

스택(stack) 영역

메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역, 임시메모리.

스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.

컴파일 시에 크기가 결정됨.

낭비되는 공간이 없지만, 한계를 초과하도록 삽입 할 수 없고 유연성이 부족하다.

 

 

 

728x90

'기술면접 대비' 카테고리의 다른 글

[자료구조] 힙이란?(heap)  (0) 2021.09.21
[자료구조] Tree란?  (0) 2021.09.19
스택(stack) 과 큐(queue)  (0) 2020.10.11