해결된 질문
작성
·
43
0
Window 힙 관리자가 힙 메모리 블럭들을 관리할때 일종의 연결리스트로 이런 메모리 블럭들을 관리 한다고 들었는데 이런 리스트가 1개뿐인지 궁금합니다(듣기로는 특정 크기의 메모리 블럭들 마다 연결리스트가 1개씩 있다고 들었습니다.)
그리고 힙 관리자가 할당 받은 페이지들을 유저가 힙 관리자에게 메모리 요청 하고 해제를 반복하면서 내부 단편화가 발생할텐데 이때 이런 단편화를 줄이기 위해 힙 관리자가 어떤 조치를 하는지 궁금합니다.
답변 2
0
윈도우 OS에서는 힙관리자가 아니라 '메모리 매니저'가 가상 메모리 시스템을 관리합니다. 일반적으로 메모리는 Page 단위로 관리되며 동적 할당되는 작은 메모리 조각(Chunk)들(Page단위 미만)은 비선형 구조로 관리됩니다. VAD(Virtual Address Descriptor)의 경우 AVL 트리 구조가 사용되는 것으로 알려져 있습니다. 다만 Free-list는 이름 그대로 선형 연결 리스트 이긴 합니다.
한 번 할당한 메모리를 빠르게 재할당 하면 새 메모리 조각을 확보하는 시간을 줄일 수 있어 효율적입니다.
인프런 AI 답변을 참고하시면 되겠습니다.
매우 중요한 질문이며 더 깊이 이해하려면 운영체제에 대한 깊은 이해가 수반되어야 합니다. 지금의 학습기조를 이어가시고 질문의 꼬리를 이어가시는 학습 방식을 추천드립니다. AI에게 '윈도우 메모리 매니저'에 대해 질문해보시고 Page단위, 메모리 Chunk 관리에 대해서도 알아 보시기 바랍니다. 이 과정에서 단편화 문제도 함께 논의될 것이며 원하시는 답을 포괄적으로 얻을 수 있을 것입니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
LoDf님, 힙 메모리 관리 방법에 대한 질문 감사드립니다.
Windows의 힙 관리자는 메모리 블럭을 효율적으로 관리하기 위해 다양한 크기의 블럭에 대해 각각 다른 연결 리스트(또는 비슷한 자료 구조)를 사용합니다. 이렇게 함으로써, 특정 크기의 메모리 요청이 들어왔을 때, 해당 크기의 블럭을 빠르게 찾아 할당할 수 있습니다. 따라서 여러 개의 리스트가 존재하며, 각각은 서로 다른 크기의 메모리 블럭들을 관리합니다. 이러한 구조는 메모리 할당 및 해제 작업의 효율성을 증대시킵니다.
힙 관리자는 내부 단편화를 줄이기 위해 여러 가지 전략을 사용합니다:
- Coalescing (병합): 메모리 블럭 해제 시 인접한 여유 블럭을 병합하여 더 큰 연속된 빈 공간을 만들어 내부 단편화를 줄입니다.
- Deferred Coalescing: 일부 시스템에서는 메모리 해제 시 바로 병합하지 않고, 메모리 부족이 발생했을 시점에 병합을 수행하기도 합니다.
- Best Fit, First Fit, Next Fit 등의 할당 전략을 사용하여 메모리 블럭을 적절히 분산시키고, 단편화가 덜 발생하도록 합니다.
각 방법은 특정 상황에서의 내•외부 단편화를 줄이기 위한 다양한 접근 방식을 제시합니다.
이러한 기법들은 시스템의 효율성을 유지하며, 프로그램의 성능 저하를 방지하는 데에 큰 역할을 합니다. 이해가 잘 되지 않는 부분이나 추가적으로 궁금한 사항이 있다면 질문을 계속해 주시기 바랍니다. 유사한 질문과 답변이 포함된 링크도 확인해 봐 주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!