본문 바로가기

COMPUTER SCIENCE/A piece of INFO.

프로그래밍을 위한 메모리 구조

1. 메모리의 종류?

우리가 어떤 프로그램을 실행하면, 그 프로그램은 일련의 지정된 명령을 수행하고 있습니다. 따라서 프로그램 동작을 하나의 프로세스로 볼 수 있죠. 프로세스가 일단 실행되면, 여러 가지 데이터들의 주소 혹은 정보를 할당시켜야 합니다. 또한, 메모리의 크기를 컴파일하는 순간에 결정해주어야 하죠. 따라서 우리가 저장된다고 생각하는 메모리는 단순한 정보의 덩어리가 아닌, 프로세스의 처리를 위한 정보 또한 담고 있어야 합니다. 다시 말해서, 메모리에는 정적 메모리(스택 영역, 데이터 영역)와 동적 메모리가(힙 영역) 존재합니다.

 

이 두 메모리는 어떠한 의미를 가지고 있을까요? 메모리의 구조를 한 번 자세히 알아봅시다.

 

메모리 구조

2. 메모리의 구조 _ 코드, 스택, 데이터, 힙 영역

우리가 흔히 데이터의 정보라고 생각하는 영역은 데이터 영역으로 전역 변수 혹은 정적 변수가 저장되는 영역입니다. 따라서 프로그램이 종료될 때까지 데이터 영역은 그 정보를 유지하죠. 그렇다면, 코드와 스택, 그리고 힙 영역은 어떤 영역일까요? 먼저, 코드 영역을 알아봅시다.

 

코드 영역은 프로그램의 실행코드나 함수들이 저장됩니다. 예를 들어, printf 함수가 프로그램 내에 명령어로 존재하면, 그 명령어의 정보가 실행코드에 저장되는 것입니다. 

 

다음으로 스택 영역은 사용되는 함수에서 사용되는 매개변수와 지역변수에 대한 데이터가 저장되는 영역입니다. 반복문이나 조건문 등에서 사용된 변수들 정보 또한 이곳에 저장되는데, 스택 영역은 지역변수의 데이터이므로 사용되고 나면 그 데이터를 삭제합니다. 

 

마지막으로 힙 영역은 동적 메모리를 할당시키는 영역입니다. 예를 들자면, 큐, 스택, 연결 리스트 같은 자료구조의 표현에 동적 영역이 사용됩니다. 보다 자세한 내용은 자료구조를 학습하면 알 수 있겠습니다!

 

* 메모리의 구조에 할당되는 데이터 크기는 컴퓨터의 운영체제에 달려있습니다.