핵심 요약
- 윈도우 11 최신 버전(26H2)에도 윈도우 95 커널의 힙 관리자 소스코드를 재컴파일해 넣은 호환성 수정 기능(EmulateHeap)이 여전히 포함되어 있습니다.
- 과거 메모리 버그가 있던 고전 게임 심시티를 윈도우 95에서 억지로 돌리기 위해 OS를 수정했던 관행이 옛날 앱 지원용 프레임워크로 굳어진 결과입니다.
- 평소 작동하지 않고 호환성 모드가 켜진 앱에서만 로드되지만, 최근 윈도우 11 버전에서는 오히려 구작 게임이 충돌하는 사례도 나타나고 있습니다.
요약 최신 윈도우 11 26H2 환경에도 약 30년 전 출시된 윈도우 95의 커널 일부 코드가 여전히 탑재되어 있다는 흥미로운 사실이 전해졌습니다. 이는 과거 소프트웨어와의 하위 호환성을 유지하기 위해 마이크로소프트(MS)가 마련해 둔 '에뮬레이트힙(EmulateHeap)'이라는 호환성 패치 때문입니다.
이러한 기묘한 전통의 출발점은 유명 시뮬레이션 게임 '심시티(SimCity)'였습니다. 스택 오버플로 공동 창립자이자 전직 MS 엔지니어인 조엘 스폴스키의 글에 따르면, 윈도우 3.x용 심시티에는 메모리를 해제한 직후 다시 읽어 들이는 '해제 후 사용(use-after-free)' 버그가 있었습니다. 윈도우 3.x에서는 해제된 메모리 값이 바로 사라지지 않아 문제가 없었지만, 메모리 관리 체계가 바뀐 윈도우 95 베타에서는 게임이 튕겨버렸습니다. 이에 MS는 게임 패치를 기다리는 대신, 윈도우 95에 심시티 실행을 감지해 메모리를 즉시 해제하지 않는 특수 코드를 직접 심어 문제를 우회시켰습니다.
이후 MS 엔지니어 레이먼드 첸이 밝힌 바에 따르면, 다른 옛날 프로그램들도 윈도우 95 힙(Heap)의 이러한 특성에 의존하도록 작성되어 후속 윈도우에서 충돌하는 일이 잦았습니다. 결국 MS는 윈도우 95의 힙 관리자 소스코드를 통째로 가져와 다시 컴파일한 뒤, 앱 호환성 프레임워크에 집어넣는 파격적인 해결책(EmulateHeap)을 도입했습니다. 앱의 메모리 호출을 윈도우 95 방식의 대체 코드로 우회시키는 원리입니다.
다만 이 코드는 평소 백그라운드에서 상시 구동되는 것은 아니며, 특정 앱에 해당 호환성 옵션이 켜졌을 때만 디스크에서 로드됩니다. IT 관리자용 툴인 '호환성 관리자(Compatibility Administrator)'를 설치하면 윈도우 11에서도 이 EmulateHeap 항목을 직접 확인할 수 있습니다. 그러나 윈도우 11 22H2 이후에는 이 옵션을 켰을 때 GTA 바이스 시티의 사운드가 사라지거나 니드 포 스피드: 모스트 원티드가 충돌하는 등 부작용도 보고되고 있습니다.
Sponsored · 광고