본문 바로가기

CS Study/자료구조

[자료구조] 메모리 구조

1. 코딩 실행 파일 동작 방식

1) 개발을 할 때 C, C++, Java 등의 언어들을 이용하여 코딩을 하고 실행파일로 만든다.(ex. .exe 파일 등 )
2) 이러한 실행파일을 사용자는 클릭을 하는 등의 방법으로 실행한다. 

3) 메모리에 로드되면서 코드에서 작성한 동작에 따라 메모리에 데이터들을 쓰고 읽게되는데 이는 운영체제가 해준다. 

운영체제가 프로그램의 정보들을 읽고 메인 메모리에 공간을 할당해주고, 프로그램의 코드(변수, 함수 등)을 메모리에 읽고 쓰면서 동작을 하게 된다. 

 

2. 메모리 구조

낮은 주소를 갖는 순서대로 나열하였다. 

[TEXT]

코드를 실행하기 위해 저장되어있는 영역이다. 흔히 코드 영역이라고 하는데 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이다. 명령문들이 저장된다고 볼 수 있는데, 제어문, 함수, 상수들이 이 영역에 저장된다. 

 

[DATA]

데이터 영역은 우리가 작성한 코드에서 전역변수, 정적변수 등이 저장되는 공간이다. 메인 함수 전에 선언되어 프로그램이 끝날 때까지 메모리에 남아있는 변수들이라는 특징이 있다. 초기화된 변수 영역과 초기화되지 않은 변수영역으로 나누어지게 된다. 

 

[HEAP]

사용자에 의해 관리되는 영역이다. 흔히 동적으로 할당 한 변수들이 저장된다. 추가로 자바나 C언어에서 NEW연산자로 생성하는 경우 HEAP 영역을 차지하게 된다. 

 

[STACK]

함수를 호출할 때 지역변수, 매개변수들이 저장되는 공간이다. 메인 함수안에서의 변수들도 포함된다. 그리고 함수가 종료되면 함수에 할당된 변수들을 메모리에서 해제시킨다. (pop()의 기능)

 

3. 메모리의 주소

프로그램을 다운로드할 때 32bit 운영체제용, 64bit 운용체제용이 있다. 이 둘의 차이점은 비트의 너비(폭)이다.  비유하자면 고속도로에 32개의 차선이 있는데 이를 더 넓혀 64개의 차선으로 만들었다고 볼 수 있다. 32비트는 2^32의 경우의 수를 갖고, 64비트는 2^64의 경우의 수를 갖는다. 

 64비트 운영체제가 데이터 처리 단위가 더 많다보니 당연히 CPU 처리도 고속화되고, 새로운 명령어들도 만들 수 있다. 

 

메모리 한칸은 1바이트, 즉 8비트의 크기를 갖기 때문에 32비트 운영체제에서는 32개의 비트 즉 4바이트의 길이의 주소를 갖는다. 

2^32까지의 경우의 수가 있으니 약 4,294,967,296개의 주소를 가리킬 수 있다는 의미이고, 이는 1바이트 크기의 메모리가  4,294,967,296까지 인식 가능하다.  (32자리로 표현된다.)

 

64비트의 운영체제의 경우 하나의 주소가 8바이트 길이의 주소를 갖는다. 이는 18,446,744,073,709,551,616개의 주소를 가리킬 수 있다. (64자리로 표현된다.)

 

참고) https://st-lab.tistory.com/198

'CS Study > 자료구조' 카테고리의 다른 글

[자료구조] DFS & BFS  (0) 2023.02.27
[자료구조] 큐, 스택  (0) 2023.02.27
힙 정렬  (0) 2022.08.25
기본 정렬 알고리즘  (0) 2022.07.07
DFS vs BFS  (0) 2022.07.05