Microsoft, eski yazılımların yeni Windows sürümlerinde çalışmasını sağlamak amacıyla Windows 95 döneminden kalan bellek yönetimi bileşenini Windows 11’ koruyor. EmulateHeap adı verilen uyumluluk düzeltmesi, belirli uygulamaların eski işletim sisteminin bellek davranışına ihtiyaç duyduğu durumlarda devreye giriyor. Windows 11 26H2 sürümünde bulunan bileşen, Microsoft’un geçmiş yazılımlarla geriye dönük uyumluluğu sürdürmek için başvurduğu yöntemlerden birini ortaya koyuyor.

SimCity İçin Geliştirilen Özel Çözüm Eski Windows Davranışını Korudu

Microsoft’un eski uygulamalara yönelik uyumluluk yaklaşımının bilinen örneklerinden biri, ilk SimCity oyununun Windows 95 üzerindeki çalışma sorunlarına dayanıyor. Windows 3.x için hazırlanan SimCity sürümünde, oyun tarafından serbest bırakılmış bellek alanındaki veriler daha sonra yeniden okunabiliyordu. Günümüzde use-after-free olarak adlandırılan yazılım hatası, Windows 3.x ortamında bellek yönetiminin farklı davranması nedeniyle belirgin sorun oluşturmamıştı.

Stack Overflow kurucu ortağı eski Microsoft mühendisi Joel Spolsky, 2000 yılında yayımladığı yazıda oyunun geliştiricisi Jon Ross’un hatayı farkında olmadan bıraktığını aktarmıştı. Windows 95’in deneme sürümlerinde sorun ortaya çıkınca Microsoft, oyunu bekleyerek düzeltmek yerine işletim sistemine özel uyumluluk kodu ekledi. Sistem, SimCity’nin çalıştığını algıladığında bellek alanlarını hemen serbest bırakmayan farklı ayırma davranışına geçiyordu.

Söz konusu çözüm, Microsoft’un tek oyunun hatasını işletim sistemi düzeyinde telafi etmesi bakımından dikkat çekici örnek oluşturdu. Ancak EmulateHeap, SimCity için hazırlanan özel kodla aynı mekanizma değil; iki çözüm eski uygulamaların beklediği davranışları korumaya yönelik daha geniş uyumluluk yaklaşımının ayrı parçaları olarak geliştirildi.

Eski Windows uygulamalarının bölümü, Windows 95’in bellek ayırıcısının belirli davranışlarına güvenerek geliştirildi. Uygulamalar serbest bırakılan bellek alanlarında eski verilerin süre daha kalacağını varsayabiliyordu. Daha yeni Windows sürümleri belleği farklı biçimde yönettiğinde varsayımlar geçerliliğini yitirdiği için bazı eski programlar beklenmedik biçimde kapanmaya başladı.

Microsoft mühendisi Raymond Chen, 2010 yılında yayımladığı Windows Confidential yazısında EmulateHeap çözümünün çalışma biçimini açıklamıştı. Uyumluluk katmanı, uygulamaların bellek yönetimi çağrılarını Windows 95 dönemindeki davranışı taklit eden alternatif işlevlere yönlendiriyor. HeapCreate, LocalLock GlobalReAlloc gibi farklı bellek işlemlerini kapsayan yaklaşım, eski programların yeni sistemlerde karşılaştığı davranış farklılıklarını azaltmayı hedefliyor.

Chen’in aktardığına göre Microsoft, Windows 95’in bellek yöneticisinin kodunu alıp yeniden derleyerek uygulama uyumluluğu altyapısına ekledi. Böylece Windows 95 çekirdeğinin önemli bölümü, güncel Windows sürümlerindeki uyumluluk sisteminin parçası olarak korunmuş. Ancak ilgili kod sürekli arka planda çalışmıyor; Windows, eski bellek davranışını taklit eden bileşeni yalnızca EmulateHeap düzeltmesi belirli uygulama için etkinleştirildiğinde yüklüyor.

Windows yöneticileri, EmulateHeap kaydını Microsoft’un Windows Assessment and Deployment Kit (ADK) paketinde bulunan Compatibility Administrator aracı üzerinden inceleyebiliyor. Windows uygulama uyumluluğu için sunulan düzeltmeleri listeleyerek yöneticilerin belirli programların hangi yöntemlerle desteklendiğini görmesine yardımcı oluyor. Microsoft’un tanımına göre uyumluluk düzeltmeleri, uygulamaların API çağrıları arasına girerek işletim sisteminin davranışını belirli programlar için değiştiren küçük kod parçalarından oluşuyor.

Windows 11 26H2 üzerinde düzeltmeyi bulmak için Microsoft’un ADK paketindeki Application Compatibility Tools bileşeninin kurulması gerekiyor. Kurulumun ardından Başlat menüsünden Compatibility Administrator açılarak özellikle 32 bit sürümde özel veritabanı oluşturma uyumluluk modu seçenekleri üzerinden EmulateHeap kaydına ulaşılabiliyor. Eski Windows 95 uygulamalarının önemli bölümü 32 bit mimariye dayandığı için sürüm, söz konusu yazılımları incelemek açısından önem taşıyor.

düzeltmenin listede bulunması, her uygulamada sorunsuz çalışacağı anlamına gelmiyor. Windows 11 22H2 güncellemesinden sonra bazı kullanıcılar, EmulateHeap etkin durumdayken GTA Vice City oyununda ses kaybı Need for Speed: Most Wanted oyununda çökme gibi sorunlar bildirmişti. Dolayısıyla yöneticilerin eski yazılımlarda uyumluluk düzeltmelerini kontrollü biçimde test etmesi gerekiyor.

Microsoft’un Windows 11’ eski bellek yönetimi kodunu tutması, geriye dönük uyumluluğun işletim sistemi tasarımında hâlâ önemli yer tuttuğunu gösteriyor. Şirket, modern arayüz bileşenlerine geçiş yaparken eski programların çalışma biçimlerini korumaya çalışıyor. Örneğin Windows 95 döneminden kalan Özellikler iletişim kutusunun WinUI 3 tabanlı yeni arayüzle değiştirilmesi gündemdeyken EmulateHeap gibi eski bileşenler belirli uygulamaların çalışması için sistemde kalmayı sürdürüyor.

Her eski program aynı düzeyde destek görmüyor. Windows’un geçmiş sürümlerinde yer alan 3D Pinball oyunu, 64 bit uyumluluğuyla ilgili sorunlar nedeniyle sonraki sürümlere taşınmamıştı. örnek, Microsoft’un tüm eski yazılımları korumak yerine teknik maliyeti kullanıcı ihtiyaçlarını dikkate alarak seçim yaptığını gösteriyor.

Kurumsal ortamlarda eski uygulamalara bağımlı iş akışları sürdükçe benzer uyumluluk katmanlarının önemi devam edecek. BT ekiplerinin uygulamaları güncel sistemlerde test etmesi, hangi düzeltmelerin etkin olduğunu belgelemesi mümkün olduğunda yazılımları desteklenen sürümlere taşıması gerekiyor. Windows’un eski bellek yöneticisini koruması, geçmişten gelen kodların yeni platformlarda çalışmayı sürdürmesinin çoğu zaman görünmeyen teknik çalışmalar gerektirdiğini ortaya koyuyor.