Haberler

Windows 11, Windows 95’ten Kalan Bellek Yöneticisini Hâlâ Bünyesinde Barındırıyor

Microsoft, eski yazılımların yeni Windows sürümlerinde çalışmasını sağlamak amacıyla Windows 95 döneminden kalan bir bellek yönetimi bileşenini Windows 11’de de 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 de 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ış bir bellek alanındaki veriler daha sonra yeniden okunabiliyordu. Günümüzde use-after-free olarak adlandırılan bu yazılım hatası, Windows 3.x ortamında bellek yönetiminin farklı davranması nedeniyle belirgin bir sorun oluşturmamıştı.

Stack Overflow kurucu ortağı ve eski Microsoft mühendisi Joel Spolsky, 2000 yılında yayımladığı bir yazıda oyunun geliştiricisi Jon Ross’un bu 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 bir uyumluluk kodu ekledi. Sistem, SimCity’nin çalıştığını algıladığında bellek alanlarını hemen serbest bırakmayan farklı bir ayırma davranışına geçiyordu.

Söz konusu çözüm, Microsoft’un tek bir oyunun hatasını işletim sistemi düzeyinde telafi etmesi bakımından dikkat çekici bir örnek oluşturdu. Ancak EmulateHeap, SimCity için hazırlanan özel kodla aynı mekanizma değil; iki çözüm de 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 bir 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 bir süre daha kalacağını varsayabiliyordu. Daha yeni Windows sürümleri belleği farklı biçimde yönettiğinde bu 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 ve GlobalReAlloc gibi farklı bellek işlemlerini kapsayan bu 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 kaynak kodunu alıp yeniden derleyerek uygulama uyumluluğu altyapısına ekledi. Böylece Windows 95 çekirdeğinin önemli bir bölümü, güncel Windows sürümlerindeki uyumluluk sisteminin parçası olarak korunmuş oldu. 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 bir 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. Araç, 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 ve uyumluluk modu seçenekleri üzerinden EmulateHeap kaydına ulaşılabiliyor. Eski Windows 95 uygulamalarının önemli bir bölümü 32 bit mimariye dayandığı için bu sürüm, söz konusu yazılımları incelemek açısından önem taşıyor.

Bir 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ı ve 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’de eski bellek yönetimi kodunu tutması, geriye dönük uyumluluğun işletim sistemi tasarımında hâlâ önemli bir yer tuttuğunu gösteriyor. Şirket, modern arayüz bileşenlerine geçiş yaparken eski programların çalışma biçimlerini de korumaya çalışıyor. Örneğin Windows 95 döneminden kalan Özellikler iletişim kutusunun WinUI 3 tabanlı yeni bir 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ı. Bu örnek, Microsoft’un tüm eski yazılımları korumak yerine teknik maliyeti ve 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 bu uygulamaları güncel sistemlerde test etmesi, hangi düzeltmelerin etkin olduğunu belgelemesi ve 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.

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu