게임카레

0. 메모리 구조에 대하여 본문

윈도우즈 시스템 프로그래밍

0. 메모리 구조에 대하여

치킨용사 2017. 7. 16. 22:42

프로그래밍을 처음 배울때 가장 먼저 우리는 변수와 함수, 그리고 각종 명령문에 대해서 배우곤 합니다.


하지만 깊은 이해를 하기 위해서는 주먹구구식으로 외운 함수와 변수, 그리고 for, if 같은 명령어를 사용하기 전에 프로그램이 어떻게 동작하는지, 메모리에 어떻게 올라가는지, 메모리가 어떤식으로 동작하는지를 먼저 알아야 한다고 생각합니다.


무조건적으로 코딩하는 방법을 배워서 프로그래밍에 익숙해지는것도 좋지만, 한번쯤은 이에 대해 어떻게 동작하는지 이해하는 시간을 갖는것도 나쁘지 않을것 같습니다.


우리가 프로그램을 짜서 실행하게 되면 메모리의 크게는 4개의 영역에 프로그램이 올라가고 그로 인해 프로그램이 실행하게 됩니다.


위에서 말한 프로그램의 4가지 영역은 어떤것이 존재할까요?


우선 간단한 설명을 하도록 하겠습니다.


1.  코드영역 

코드영역은 우리가 프로그램을 실행할때 올라가는 영역을 말합니다.

프로그램이 실행되면 CPU 에서 코드영역에 있는 명령어들을 가져와 프로그램을 실행합니다.


CPU가 프로그램을 실행하게 하게 하기 위해 전달을 해주는 공간 입니다.


2. 데이터 영역

프로그램 전체에서 사용할수 있는 전역변수, 혹은 static 으로 선언된 정적 변수등이 저장되는 영역 입니다.

초기화 된 전역변수는 데이터 영역에 저장되고,

초기화 되지 않은 전역변수는 데이터 영역중에 BSS 라는 영역에 저장되게 됩니다.

구체적인 내용은 다음에 포스팅 하도록 하겠습니다.



3.  스택 영역

스택영역은 프로그램에서 사용되는 함수 에 호출되는 매개변수, 혹은 지역 변수 등이 저장되는 영역 입니다.

프로그램에서 사용하는 지역 변수와 함수들이 저장되는 영역이라고 할수 있겠죠?

스택에 대해서는 좀더 나중에 구체적으로 살펴보도록 하겟습니다.


우선은 함수와 지역변수가 저장되는 영역 이라고 생각 하시면 될것 같네요.


4., 힙 영역

프로그램이 실행중 동적할당 (프로그램 실행중에 메모리를 새로 할당하는 방식) 을 할때 사용되는 메모리 영역입니다.

C++ 을 공부하면 자주 보셧을 new 를 해주게 되면 힙 영역에 올라가 동적할당이 됩니다.


이렇게 컴퓨터가 프로그램을 실행할때 4가지의 메모리 영역을 통해 실행하게 됩니다.


간략한 설명이지만 어떤 방식으로 프로그램이 작동하는지를 생각해보는 시간이었습니다.




혹시 제가 잘못 이해하고 있는 부분이나 틀린점이 있다면 댓글로 지적해주시면 감사하겠습니다.


다음 포스팅 해야 할것.

Data 영역, Stack 영역에 대한 구체적인 설명.


이상 포스팅을 마치도록 하겠습니다. 공부하는데 많은 도움이 되셧으면 좋겠습니다.