프로그래밍
5시간 전
0
DOS 메모리 관리는 8086 아키텍처의 단순한 단편화 방지 기법을 기반으로 하며, 메모리를 16바이트 단위인 패러그래프(paragraph) 단위로 관리합니다.
**메모리 제어 블록(MCB)**은 각 메모리 블록을 관리하는 헤더로, 블록 소유자와 크기 정보를 포함하며, 메모리 할당 시 이 체인을 순차적으로 탐색하여 연속된 빈 공간을 찾아 할당합니다.
DOS 2.0부터 도입된 주요 함수인 ALLOC, DEALLOC, SETBLOCK은 각각 메모리 할당, 해제, 크기 조정을 담당하며, 해제 시에는 인접한 빈 블록을 합치는 코얼레싱(coalescing) 작업이 ALLOC과 SETBLOCK 호출 시 수행되어 단편화를 줄입니다.
DOS 5.0에서는 UMB(Upper Memory Blocks) 지원이 추가되어, 메모리 할당 전략이 다양해지고, UMB를 우선적으로 활용하는 옵션도 제공되어 TSR과 드라이버 메모리 관리가 개선되었습니다.
전반적으로 DOS 메모리 관리는 단순하지만, 소유자 검증 미흡, 0크기 블록 허용, 크기 조정 시 버그 등 특이점이 존재하며, 단일 작업 환경에 최적화된 설계임을 알 수 있습니다.