티스토리 뷰

기타

[자료구조] 메모리 구조

kr98gyeongim 2021. 7. 8. 09:41

메모리 구조

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)가 되어야 한다.

또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.

따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다.

 

이러한 메모리 공간이 어떤 용도로 언제, 어디서 할당되는가?

- 할당시기 : 프로그램이 실행될 때 마다

- 할당장소 : 메인 메모리(RAM)

- 할당용도 : 프로그램 실행 시 필요한 메모리 공간(지역변수, 전역변수 선언을 위해)을 제공

 

할당되는 메모리 공간은 아래와 같다.

1. 코드 영역

2. 데이터 영역

3. 스택 영역

4. 힙 영역


운영체제가 제공하는 메모리 공간을 표현


1. 코드(Code) 영역

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

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

 

2. 데이터 영역

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

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

 

3. 힙 영역

(런타임에(즉, 런타임을 하는 동안)  크기가 결정된다.)

메모리의 힙 영역은 사용자(즉, 프로그래머)가 직접 관리할 수 있는 그리고, 관리를 해야만 하는 메모리 영역이다.

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

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

 

정리하자면, 힙 영역은 할당을 해야할 메모리 크기를 프로그램이 실행되는 동안 결정해야 하는 경우(런타임)에 유용하게 사용되는 공간이다.

4. 스택 영역

(컴파일 타임(즉, 컴파일을 하는 동안) 크기가 결정된다.)

메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다.

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

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

 

스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출한다.

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

 

5. 큐 영역

이러한 큐는 (FIFO: First-In First-Out) 방식에 따라 동작하므로, 가장 먼저 저장된 데이터가 맨앞에서 대기하고 있다가 가장 먼저 인출된다.

 

런타임 : 프로그램이 실행 중

컴파일 : 내가 짠 코드를 해당 언어의 컴파일러가 기계어로 번역하는 것

 

static

왜 내가 스태틱을 함부로 쓰지않았을까

정적변수야

파라미터랑 아규먼트 차이점 공부.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함