메모리의 종류(스택, 힙, 레지스터?)
■ 컴퓨터 구성품
컴퓨터는 위와 같이 여러 부품들이 조립되어 있습니다. 그래서 어떤 작업을 하려면 부품들 간의 협업이 필요합니다. '버스' 통로를 이용해서 연결될 수 있지요. 메모리에 대한 구체적인 설명에 앞서 일단 프로그램에서 주로 사용하는 부품 2개를 먼저 간단히 보겠습니다. CPU와 앞으로 계속 다루게 될 메모리입니다
CPU | 메모리 |
- 모든 연산을 처리하는 사람 뇌 같은 역할 - 어셈블리는 메모리랑 상관없이 씨피유가 이해하는 언어 |
- 실행 중인 코드 및 연산의 중간 결과 등을 저장하는 공간 |
■ 메모리 구분
메모리는 크게 두 가지로 나눌 수 있습니다. 스택(stack) 메모리와 힙(heap) 메모리입니다. 사실상 이 둘은 물리적으로 같은 메모리이고, 그 안에는 스택과 힙 외에 데이터 섹션, 코드 섹션 등이 있습니다. 프로그래머가 메모리를 다룬다고 하면 대부분 스택 아니면 힙 정도이기 때문에 이 글에서는 메모리를 스택과 힙, 이 둘로만 보겠습니다.
기본은 힙 메모리
- heap은 영어 단어로 쌓아 올린 더미를 뜻합니다
- 범용적인 기본 형태
- 그래서 메모리를 사용하려면 가져가고, 쓰고나면 다시 가져놔야 합니다.
특별한 용도를 가진 스택 메모리
- 쓰레드마다 특별한 용도로 사용하라고 별도로 떼어놔 준 메모리입니다.
- 예) 함수 호출할 때 매개변수 전달할 때 사용
■ 레지스터
앞서 컴퓨터는 여러 부품으로 이루어져 있다고 했습니다. 작업을 하려면 연결 통로가 필요하다고 했죠. 하지만 그렇게 여러 부품으로 연결 통로를 통해 작업을 한다는 것은 비효율적일 수 있습니다. 한 부품 안에서 모든 작업을 한 번에 끝낼 수 있으면 이동할 필요가 없고, 처리 시간 줄고, 그에 따른 효율도 증가할 테니까요. 그래서 CPU 안에는 CPU에서만 사용할 수 있는 고속 저장 공간, 레지스터가 있습니다. CPU가 계산하다가 필요한 값을 저장해두는 곳입니다. 레지스터는 메모리라고 볼 수 없는데 더 자세한 점은 다음 글에서 다루겠습니다.
-----------------------------------
-----------------------------------
'컴퓨터 공학 > C, C++' 카테고리의 다른 글
[ C ] 메모리 이해하기3 _register 키워드란? register 변수의 제약 (399) | 2020.07.14 |
---|---|
[ C ] 메모리 이해하기2_레지스터(Register)란? 필요한 이유 (413) | 2020.07.13 |
[ C 언어 ] 함수 포인터란? (397) | 2020.07.07 |
맥 Xcode에서 C/C++/Object-C언어 실습 환경 갖추기 (389) | 2020.07.06 |
[C# 실습 예제] 비주얼 스튜디오2019_ Delegate (0) | 2019.11.13 |
댓글