# 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.