Uyumluluk katmanı

Yazılım mühendisliğinde, bir uyumluluk katmanı, bir ana sistem üzerinde, eski veya yabancı bir sistem için yazılmış ikili dosyaların çalıştırılmasını sağlayan bir arabirimdir. Bu, yabancı sistem çağrılarını, yerel sistem çağrılarına çevirir. Yabancı sisteme yönelik bazı kütüphaneler, ana sistem üzerinde yabancı ikili dosyaları çalıştırmak için yeterli olacaktır genellikle. Donanım uyumluluğu katmanıysa donanım emülasyonu sağlayan araçlardan oluşur.

Yazılım 
Örneklerden bazıları şunlardır:

 Wine, bir program yükleyicisi ve kütüphane dosyalarında gerçeklenen Windows UPA'larıyla Unix benzeri sistemlerde bazı Microsoft Windows ikili dosyalarını çalıştırır
 Windows'un uygulama uyumluluk katmanları (Uygulama Uyumluluğu Araçları), kötü gerçekleştirilmiş veya platformun önceki sürümleri için yazılmış uygulamaları çalıştırmayı dener
 Lina, bazı Linux ikili dosyalarını Windows, Mac OS X ve Unix benzeri sistemlerde yerel görünüm ve his ile çalıştırır
 KernelEx, Windows 98/Me'de bazı Windows 2000/XP programlarını çalıştırır
 Executor, Windows, Mac OS X ve Linux'ta 68k tabanlı klasik Mac OS programlarını çalıştırır
 Columbia Cycada, Android sistemlerde Apple iOS uygulamalarını çalıştırır
 Hybris, Bionic'i glibc çağrılarına çevirir
 Darling, Mac OS X ve Darwin ikili dosyalarını bir çeviri katmanı üzerinde Linux'ta çalıştırmayı dener

Çekirdekteki uyumluluk katmanları:

 FreeBSD'nin Linux uyumluluk katmanı, Linux için özel olarak üretilmiş ikili dosyaların yerel FreeBSD UPA katmanıyla aynı şekilde FreeBSD üzerinde çalışmasını sağlar. FreeBSD ayrıca bazı Unix benzeri sistem emülasyonlarına da sahiptir
 NetBSD, birkaç Unix benzeri sistem emülasyonuna sahiptir
 Linux için Windows Alt Sistemi, Microsoft tarafından geliştirilen ve Linux kodu içermeyen, üzerinde Ubuntu kullanıcı kipi ikili dosyaları bulunan Linux uyumlu bir çekirdek arayüzü sağlar
 Şu an aktif olmayan PEACE Project (diğer bir deyişle COMPAT_PECOFF), NetBSD için Win32 uyumluluk katmanı sunar

Bir uyumluluk katmanı, karmaşıklığı ve tam donanım emülasyonunun neden olabileceği yavaşlık sorununu ortadan kaldırır. Bazı programlar orijinalinden daha hızlı bile çalışabilir, örneğin FreeBSD'nin Linux uyumluluk katmanında çalışan bazı Linux uygulamaları, Red Hat Linux'ta çalışan aynı uygulamalardan daha iyi performans gösterebilir. Windows NT tabanlı işletim sistemleriyle karşılaştırmak için bazen de uygulamalar Wine üzerinde çalıştırılır.

Benzer sistemlerde bile bir uyumluluk katmanının uygulanmasının detayları epey karmaşık ve zahmetli olabilir. Buna iyi bir örnek, NetBSD'nin MIPS mimarisi sürümündeki IRIX ikili uyumluluk katmanıdır.

Bir uyumluluk katmanı, ana bilgisayar sisteminin MİB'inin, yabancı sisteminkiyle (yukarıya doğru) uyumlu olmasını gerektirir. Örneğin, Windows bir x86 MİB gerektirdiğinden, Microsoft Windows uyumluluk katmanı PowerPC donanımında mümkün değildir, bu durumda tam emülasyon gereklidir.

Donanım 
Donanım uyumluluğu katmanları, donanım emülasyonu sağlayan araçları içerir. Bağlantı terminalleri, makineyle uyumsuz olan bazı bilgisayar veriyolları için uyumluluk sağlayabildiği için bazı donanım uyumluluk katmanları bağlantı terminalleri içerir.

Ayrıca bakınız 

 Sanallaştırma
 Öykünücü
 Bilgisayar platformu

Kaynakça

Dış bağlantılar 

 Windows XP Uygulama Uyumluluğu Teknolojileri (Dave Morehouse ve Todd Phillips, Microsoft Corporation, 1 Haziran 2001)

Uyumluluk katmanları