본문 바로가기
컴퓨터 공학/C, C++

[ C ] 메모리 이해하기1_메모리의 종류(스택, 힙, 레지스터?)

by hahehohoo 2020. 7. 12.
반응형

메모리의 종류(스택, 힙, 레지스터?)

 

■ 컴퓨터 구성품

컴퓨터 내부 단순 이미지화 / 출처: 하헤호후 

컴퓨터는 위와 같이 여러 부품들이 조립되어 있습니다. 그래서 어떤 작업을 하려면 부품들 간의 협업이 필요합니다. '버스' 통로를 이용해서 연결될 수 있지요. 메모리에 대한 구체적인 설명에 앞서 일단 프로그램에서 주로 사용하는 부품 2개를 먼저 간단히 보겠습니다. CPU와 앞으로 계속 다루게 될 메모리입니다

 

CPU 메모리
- 모든 연산을 처리하는 사람 뇌 같은 역할
어셈블리는 메모리랑 상관없이 씨피유가 이해하는 언어

- 실행 중인 코드 및 연산의 중간 결과 등을 저장하는 공간
- 변수나 배열 등에 대입되는 데이터가 저장됨
- 생각한 것을 '적어둔다'라는 점에서 메모장 같음

뇌 / 출쳐: freefik
메모장 / 출쳐: freefik

 


 

■ 메모리 구분

메모리는 크게 두 가지로 나눌 수 있습니다. 스택(stack) 메모리와 힙(heap) 메모리입니다. 사실상 이 둘은 물리적으로 같은 메모리이고, 그 안에는 스택과 힙 외에 데이터 섹션, 코드 섹션 등이 있습니다. 프로그래머가 메모리를 다룬다고 하면 대부분 스택 아니면 힙 정도이기 때문에 이 글에서는 메모리를 스택과 힙, 이 둘로만 보겠습니다. 

 

메모리 내부 / 출처: 하헤호후

기본은 힙 메모리

- heap은 영어 단어로 쌓아 올린 더미를 뜻합니다 

- 범용적인 기본 형태

- 그래서 메모리를 사용하려면 가져가고, 쓰고나면 다시 가져놔야 합니다. 

 

특별한 용도를 가진 스택 메모리

- 쓰레드마다 특별한 용도로 사용하라고 별도로 떼어놔 준 메모리입니다.

- 예) 함수 호출할 때 매개변수 전달할 때 사용

 


■ 레지스터

앞서 컴퓨터는 여러 부품으로 이루어져 있다고 했습니다. 작업을 하려면 연결 통로가 필요하다고 했죠. 하지만 그렇게 여러 부품으로 연결 통로를 통해 작업을 한다는 것은 비효율적일 수 있습니다. 한 부품 안에서 모든 작업을 한 번에 끝낼 수 있으면 이동할 필요가 없고, 처리 시간 줄고, 그에 따른 효율도 증가할 테니까요. 그래서 CPU 안에는 CPU에서만 사용할 수 있는 고속 저장 공간, 레지스터가 있습니다. CPU가 계산하다가 필요한 값을 저장해두는 곳입니다. 레지스터는 메모리라고 볼 수 없는데 더 자세한 점은 다음 글에서 다루겠습니다. 

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

반응형


댓글