Windows 95 코드가 여전히 Windows 11 내부에 남아 있는 이유

Windows 11에는 여전히 Windows 95 커널의 일부가 실제로 작동하는 형태로 포함되어 있습니다. EmulateHeap이라는 호환성 수정 기능은 일부 구형 애플리케이션에 Windows 95의 보다 관대한 메모리 관리자와 유사한 동작을 제공합니다. 이 수정 기능은 Windows 11 26H2 시스템에도 여전히 등록되어 있습니다.
이러한 하위 호환성에 대한 노력은 SimCity로 거슬러 올라갑니다. SimCity는 MS가 전용 운영 체제 코드를 만든 후에야 Windows 95에서 정상적으로 실행되었습니다.

MS는 SimCity를 위해 Windows 95의 메모리 관리 방식을 변경했습니다
애플리케이션은 실행 중 Windows에 메모리를 요청하고, 더 이상 필요하지 않으면 해당 메모리를 해제합니다. 해제된 메모리를 다시 읽는 것은 해제 후 사용으로 알려진 버그이며, Windows 3.x용으로 출시된 최초의 SimCity에는 이러한 결함이 있었습니다.
Stack Overflow 공동 창립자이자 전 MS 엔지니어인 Joel Spolsky는 2000년에 작성한 에세이에서 해당 버전의 SimCity를 개발한 Jon Ross의 말을 인용하며 이 문제를 설명했습니다. Ross는 게임이 메모리를 해제한 직후 실수로 해당 메모리를 읽었다고 인정했습니다. Windows 3.x에서는 그 메모리의 내용이 그대로 남아 있었기 때문에 문제가 발견되지 않았습니다.

SimCity는 Windows 95 베타 빌드에서 제대로 작동하지 않았습니다. MS는 게임이 패치되기를 기다리는 대신 SimCity가 실행 중인지 감지하고, 메모리를 즉시 해제하지 않는 특수 모드로 메모리 할당자를 전환하는 코드를 추가했습니다.
결과적으로 MS는 단일 게임의 버그를 보완하기 위해 Windows를 수정했습니다.
MS는 구형 애플리케이션을 위해 Windows 95 힙 관리자를 다시 컴파일했습니다
SimCity용 해결책은 하나의 프로그램을 위해 설계됐지만, 다른 애플리케이션도 이와 유사한 동작에 의존하고 있었습니다. MS 엔지니어 Raymond Chen은 2010년 Windows Confidential 칼럼에서 일부 소프트웨어가 해제된 메모리를 읽고 이전 값이 변경되지 않은 상태로 남아 있는 것을 확인할 수 있는 기능을 비롯해 Windows 95 힙의 특이한 동작에 의존했다고 설명했습니다.
이후 버전의 Windows는 메모리를 다르게 처리했기 때문에 이러한 애플리케이션은 충돌할 수 있었습니다.

MS는 EmulateHeap으로 이 문제를 해결했습니다. 이 호환성 수정 기능은 HeapCreate부터 LocalLock 및 GlobalReAlloc에 이르는 함수를 포함해 애플리케이션의 힙 관련 호출을 Windows 95의 동작을 재현하는 대체 구현으로 리디렉션합니다.
Chen은 이 해결책이 매우 단순하면서도 극히 이례적이었다고 평가했습니다. MS가 Windows 95 힙 관리자의 소스 코드를 가져와 다시 컴파일한 뒤 애플리케이션 호환성 인프라에 통합했기 때문입니다.
그 결과 Windows 95 커널의 상당 부분이 Windows 애플리케이션 호환성 프레임워크 내부에 존재하게 됐습니다. 다만 이 레거시 코드는 특정 애플리케이션에 EmulateHeap이 활성화된 경우에만 저장 장치에서 로드됩니다. Windows 11이 백그라운드에서 Windows 95 코드를 계속 실행하는 것은 아닙니다.
EmulateHeap은 최초의 SimCity 해결책과는 별개입니다. 두 기능 모두 MS가 하위 호환성을 얼마나 중시하는지를 보여주며, 이러한 노력은 이후 Windows XP의 숨겨진 애플리케이션 수정 데이터베이스에서도 확인됐지만 서로 다른 해결책입니다.
Windows 11에서 EmulateHeap을 찾는 방법
EmulateHeap은 Windows에 포함된 호환성 수정 기능을 나열하는 IT 관리자용 MS 무료 도구인 호환성 관리자에서 확인할 수 있습니다. MS는 shim이라고도 하는 호환성 수정 기능을 애플리케이션의 API 호출을 가로채는 작은 코드 조각으로 정의합니다.
호환성 관리자는 Windows 평가 및 배포 키트(ADK)에 포함되어 있습니다. 2026년 9월 릴리스는 Windows 11 26H2를 공식 지원하며, 다음 절차를 통해 EmulateHeap을 찾을 수 있습니다.
Windows ADK를 설치하고 애플리케이션 호환성 도구를 선택합니다.

시작 메뉴에서 32비트 호환성 관리자를 엽니다.

새 호환성 데이터베이스를 만듭니다.

사용 가능한 호환성 수정 기능을 검토하고 EmulateHeap을 찾습니다.

EmulateHeap에는 최신 환경에서의 한계가 있습니다
호환성 수정 기능이 존재한다고 해서 모든 상황에서 올바르게 작동하는 것은 아닙니다. Windows 11 22H2 업데이트 이후 사용자들은 이 shim을 활성화하면 GTA: Vice City와 같은 게임에서 소리가 나오지 않고, Need for Speed: Most Wanted는 충돌할 수 있다고 보고했습니다.
MS는 Windows 95 시대의 속성 대화 상자를 WinUI 3로 교체하고 있지만, 소수의 레거시 애플리케이션을 위해 Windows 95 힙 관리자는 계속 유지하고 있습니다. 하지만 이러한 수준의 호환성 작업은 3D Pinball까지 이어지지 않았습니다. 3D Pinball은 개발팀이 며칠을 들여 수정할 타당성이 없다고 판단한 64비트 버그로 인해 제거됐습니다.

