이번 항목에선 여러 수준의 메모리 관리 개념과, 중요성을 프로그래머에게 알려 준다.
1 ) 메모리 관리자 또는 메모리 할당자는 무엇이며, 그 기본 기능은 무엇인가? C++의 주된 동적 메모리 관리 전략 두가지를 간략히 서술하라.
메모리 관리자(memory manager) 또는 메모리 할당자(memory allocator)는 무엇인가?
말 그대로, 메모리를 관리해 주거나, 할당해 주는 녀석이다.
이 녀석들의 기본 기능은 무엇인가?
메모리를 얻어와 주거나, 메모리를 없애 준다. 경우에 따라선 쓰지 않으면 없애주기도 한다.
C++의 주된 동적 메모리 관리 전략 두가지는 무엇인가?
범용 할당(general-purpose allocation) : 요청된 크기 만큼 메모리를 할당하는 전략, 매우 범용 적으로 사용 할 수 있지만, 단점으론 다른 전략에 비해, 성능이 나쁘고, 메모리 단편화가 잘 일어 날 수 있다.
고정 크기 할당(fixed-size allocation) : 고정된 크기의 메모리를 할당하는 전략, 매우 빠르고, 메모리 단편화가 생기지 않지만, 단점으론 메모리 사용량이 많아 질 수 있다.
쓰레기 수거 할당(garbage-collected allocation)도 있으나, C++ 에선 아직 지원하지 않는다.(구현 할 순 있다. 예로 boost::pool )
2 ) C++ 표준 라이브러리와 그 라이브러리의 구현을 사용하는 전형적인 환경들에서, 어떤 메모리 관리 수준들이 존재하는가? 그 수준들 사이의 관계와 상호작용 방식, 그리고 그 수준들이 책임성을 갖는 방식은 어떤 것인가?
어떤 메모리 관리 수준이 존재 하는가?
운영체제 커널 수준 : 운영체제가 메모리를 관리하는 가장 낮은 수준, 운영체제 또는 하드웨어 마다 다를 수 있다고 책에 나와 있다. Windows 의 경우, 추상화 개층으로 통합된 인터페이스만 제공됨으로 하드웨어 특성은 타지 않는다고봐도 될 듯 싶다. Linux, Unix, Mac X 등등등은 안써봐서 모르겠으나, 역시 마찬가지가 아닐까 한다.
컴파일러 기본 라이브러리 수준 : 컴파일러 구현자가 운영체제 커널 관리를 기반하여, 메모리를 관리하는 중간 수준, 예로 new, malloc 이 여기에 속한다.
표준 컨테이너들과 할당자 수준 : 컴파일러의 기본 라이브러리 수준을 이용하여, 컨테이너 구현자의 입맛에 맞게 메모리를 잡아 주는 높은 수준, 예로 std::allocator 가 있다.
사용자 정의 컨테이너와 사용자 정의 할당자 수준 : 모든 수준들을 사용하여, 메모리를 관리하는 가장 높은 수준
각 수준들의 관계,상호작용,책임성을 갖는 방식은 어떤 것인가?
하위 사용성을 갖는다. 즉, 상위 수준은 하위 수준을 사용 할 수 있으며, 그것으로 구현 할 수 있다. 책임성 역시 높은 놈이 하위 책임을 모두 맡는다. 그러니까, 포함 방식이라 봐도 되겠다.
총평
이번 항목만으로 무엇을 할 수 있는지는 모르겠다. 다음 항목도 봐야 알 듯 싶다. 이번 항목 때문에, "할당자"란 녀석이 어떤 녀석인지 감이 온다.(감만 올 뿐 아직 구현은 못한다. )
'책 정리 > Exceptional C++ Style' 카테고리의 다른 글
항목 25 : inline 해부 ( 난이도 : 7 ) (0) | 2009.01.23 |
---|---|
항목 24 : const 최적화 ( 난이도 : 3 ) (0) | 2009.01.23 |
항목 23 : new와 예외, 2부 : 메모리 관리의 실질적인 문제들 ( 난이도 : 5 ) (0) | 2009.01.22 |
항목 22 : new와 예외, 1부 : 여러 종류의 new ( 난이도 : 4 ) (0) | 2009.01.22 |
항목 21 : 컨테이너의 메모리 사용, 2부 : 얼마나 큰가? ( 난이도 : 3 ) (0) | 2009.01.22 |
항목 19 : 파생된 클래스들에 대한 규칙 강제 ( 난이도 : 5 ) (0) | 2009.01.19 |
항목 18 : 가상성 ( 난이도 : 7 ) (2) | 2009.01.17 |
항목 17 : 캡슐화 ( 난이도 : 4 ) (0) | 2009.01.16 |
항목 16 : private는 얼마나 비공개적인가? ( 난이도 : 5 ) (0) | 2009.01.15 |
항목 15 : 접근 권한의 사용과 오용 ( 난이도 : 6 ) (1) | 2009.01.15 |
최근댓글